Best Python code snippet using playwright-python
advanced_square_curve.py
Source:advanced_square_curve.py  
...15        }16        nb = NumberBox(scale_factor=1).move_to(2*UP, DOWN)17        self.add(nb)18        self.wait()19        nb.start_tracing(self, flash_dict)20        self.embed()212223class Happy2022(Scene):24    def construct(self):25        flash_dict = {26            "line_length": 0.5,27            "num_lines": 12,28            "flash_radius": 0.5,29            "line_stroke_width": 3,30            "run_time": 2,31        }32        TWO = NumberBoxGroup([3, 4, 10, 11])33        self.add(TWO)34        # TWO.start_tracing(self, flash_dict)353637class FinalWay2022(Scene):38    def construct(self):39        flash_dict = {40            "line_length": 0.5,41            "num_lines": 12,42            "flash_radius": 0.5,43            "line_stroke_width": 3,44            "run_time": 2,45        }46        nb = VGroup()47        nb_sub = VGroup()48        v = [2*UP, UP, ORIGIN, DOWN, 2*DOWN]49        h = [LEFT, ORIGIN, RIGHT]50        for i in v:51            for j in h:52                nb_sub.add(NumberBox(scale_factor=0.5).move_to(i+j))53            nb.add(nb_sub)54        nb = nb[0]55        nb2 = nb.copy()56        # NumberBox().start_tracing(self, flash_dict, 4, False)57        emp_list = [3, 4, 10, 11]58        emp_list2 = [4,7,10]59        just = 060        for i in emp_list:61            nb.remove(nb[i-just])62            just += 163        just = 064        for k in emp_list2:65            nb2.remove(nb2[k-just])66            just += 167        nb3 = nb.copy()68        nb4 = nb.copy() 69        self.add(nb.shift(5*RIGHT), nb2.shift(1.7*LEFT), nb3.shift(1.7*RIGHT), nb4.shift(5*LEFT))70        for i in range(len(nb)):71            if isinstance(nb[i], NumberBox):72                nb[i].start_tracing(self, flash_dict, 4, False)737475class Hope(Scene):76    def construct(self):77        flash_dict = {78            "line_length": 0.5,79            "num_lines": 12,80            "flash_radius": 0.5,81            "line_stroke_width": 3,82            "run_time": 2,83        }84        nb = VGroup()85        nb_sub = VGroup()86        v = [2*UP, UP, ORIGIN, DOWN, 2*DOWN]87        h = [LEFT, ORIGIN, RIGHT]88        for i in v:89            for j in h:90                nb_sub.add(NumberBox(scale_factor=0.5).move_to(i+j))91            nb.add(nb_sub)92        nb = nb[0]93        emp_list = [3, 4, 10, 11]94        just = 095        for i in emp_list:96            nb.remove(nb[i-just])97            just += 198        def get_2():99            return nb.copy()100        def doit(mob):101            for i in range(len(mob)):102                mob[i].start_tracing(self, flash_dict, 4, False)103        a = get_2()104        self.add(a)105        doit(a)106        self.wait(4)107108109class NumberBox(VGroup):110    def __init__(self, line_width: int = 0.6, scale_factor: int = 3.5, *vmobjects, **kwargs):111        super().__init__(*vmobjects, **kwargs)112        x, y = RIGHT, UP113        self.line_width = line_width114        self.scale_factor = scale_factor115        color_code = f"""116            vec3 blue = vec3{tuple(hex_to_rgb(BLUE))};117            vec3 red = vec3{tuple(hex_to_rgb(RED))};118            vec3 green = vec3{tuple(hex_to_rgb(GREEN))};119            color.rgb = mix(blue, red, (point.x));120            """121        self.square = Square().scale(self.scale_factor).set_color_by_code(122            color_code123        )124        self.dot_a = Dot(color=BLUE).move_to((-x+y)*self.scale_factor).scale(scale_factor*1.5)125        self.dot_b = Dot(color=RED).move_to((x+y)*self.scale_factor).scale(scale_factor*1.5)126        self.dot_c = Dot(color=RED).move_to((x-y)*self.scale_factor).scale(scale_factor*1.5)127        self.dot_d = Dot(color=BLUE).move_to((-x-y)*self.scale_factor).scale(scale_factor*1.5)128        self.dot_a.add_updater(129            lambda mob: mob.move_to(self.square.get_center() + (-x+y)*self.scale_factor)130        )131        self.dot_b.add_updater(132            lambda mob: mob.move_to(self.square.get_center() + (x+y)*self.scale_factor)133        )134        self.dot_c.add_updater(135            lambda mob: mob.move_to(self.square.get_center() + (x-y)*self.scale_factor)136        )137        self.dot_d.add_updater(138            lambda mob: mob.move_to(self.square.get_center() + (-x-y)*self.scale_factor)139        )140        self.dots = VGroup(141            self.dot_a,142            self.dot_b,143            self.dot_c,144            self.dot_d145        )146        self.ab = Line().set_color_by_code(color_code)147        self.bc = Line().set_color(RED)148        self.cd = Line().set_color_by_code(color_code)149        self.da = Line().set_color(BLUE)150        self.lines = VGroup(151            self.ab,152            self.bc,153            self.cd,154            self.da155        )156        self.trace = VGroup()157        self.add(158            self.square,159            self.trace,160            *self.dots161        )162        # self.scale(0.1)163    '''164    def move_to(self, point_or_mobject, aligned_edge=ORIGIN, coor_mask=np.array([1, 1, 1])):165        x, y = RIGHT, UP166        self.square.move_to(point_or_mobject, aligned_edge=aligned_edge, coor_mask=coor_mask)167        self.trace.move_to(point_or_mobject, aligned_edge=aligned_edge, coor_mask=coor_mask)168        self.dot_a.move_to(point_or_mobject + (-x+y)*self.scale_factor)169        self.dot_b.move_to(point_or_mobject + (x+y)*self.scale_factor)170        self.dot_c.move_to(point_or_mobject + (x-y)*self.scale_factor)171        self.dot_d.move_to(point_or_mobject + (-x-y)*self.scale_factor)172        return self 173        '''174175    def _get_dot_updater(self, tar: Mobject, rate: int = 0.07) -> FunctionType:176        return lambda mob, dt: mob.shift((tar.get_center() - mob.get_center()) * dt* rate * 1/self.scale_factor)177178    @staticmethod179    def _get_line_connection_updater(a: Dot, b: Dot):180        return lambda line: line.put_start_and_end_on(a.get_center(), b.get_center())181182    def _get_center(self):183        return (sum(self.square.get_center()))184185    def start_tracing(self, scene: Scene, flash_dict: dict = None, _time: float = 4, end_effect = True):186        # NOTE Using add(self.dots) will appear bugs!! Have to add them all187        self.add(*self.dots, self.lines)188        self.dot_a.clear_updaters()189        self.dot_b.clear_updaters()190        self.dot_c.clear_updaters()191        self.dot_d.clear_updaters()192        # self.add_updater(lambda mob, dt: mob.shift(dt*LEFT))193        # assert(self.dots[0] is self.dot_a)194        self.dot_a.add_updater((self._get_dot_updater(self.dot_b)))195        self.dot_b.add_updater((self._get_dot_updater(self.dot_c)))196        self.dot_c.add_updater((self._get_dot_updater(self.dot_d)))197        self.dot_d.add_updater((self._get_dot_updater(self.dot_a)))198        self.ab.add_updater(NumberBox._get_line_connection_updater(self.dot_a, self.dot_b))199        self.bc.add_updater(NumberBox._get_line_connection_updater(self.dot_b, self.dot_c))200        self.cd.add_updater(NumberBox._get_line_connection_updater(self.dot_c, self.dot_d))201        self.da.add_updater(NumberBox._get_line_connection_updater(self.dot_d, self.dot_a))202        self.trace.add_updater(203            lambda a, dt: a.add(204                *[mob.copy().clear_updaters().set_stroke(width=self.line_width) for mob in self.lines]205            )206        )207        if end_effect:208            scene.wait(_time)209            # scene.play(*[FadeOut(mb) for mb in [*self.dots]])210            scene.play(211                Flash(212                    self.get_center(),213                    **flash_dict214                ) if flash_dict else215                Flash(216                    self.get_center(),217                )218            )219        return self220221class NumberBoxGroup(VGroup):222    def __init__(223        self, 224        null_array: list =[],225        scale_factor_: float=.5, 226        *vmobjects, 227        **kwargs):228        super().__init__(*vmobjects, **kwargs)229        # self.scale_factor_ = scale_factor_230        self.nb = NumberBox(scale_factor=scale_factor_)231        self.null_array = null_array232        num_array: VGroup = (self.nb*15).arrange_in_grid(5, 3, buff=0)233        # num_array: VGroup = self._form_group()234        '''for i in range(num_array.__len__()):235            if i in null_array:236                num_array[i].set_color(BLACK)'''237        self.add(*num_array)238239    def _form_group(self, row=5, col=3):240        nb = VGroup()241        v = [2*UP, UP, ORIGIN, DOWN, 2*DOWN]242        h = [LEFT, ORIGIN, RIGHT]243        for n1, i in enumerate(v):244            for n2, j in enumerate(h):245                if not (n1*3+n2) in self.null_array:246                    nb.add(NumberBox(scale_factor=0.5).move_to(i+j))247        return nb248249    def start_tracing(self, scene: Scene, flash_dict: dict = None, _time: float = 4, end_effect=True):250        print(len(self))251        for i in range(len(self)):252            self[i].start_tracing(253                scene,254                flash_dict,255                # end_effect=False256            )257            if not end_effect:258                return self259        scene.wait(_time)260        scene.play(261            *[Flash(262                n._get_center(),263                **flash_dict264            ) if flash_dict else265            Flash(266                n._get_center(),267            ) for n in self]268        )269270271class CoolNumber(VGroup):272    def __init__(self, emp_list = [3, 4, 10, 11], *vmobjects, **kwargs):273        self.flash_dict = {274            "line_length": 0.5,275            "num_lines": 12,276            "flash_radius": 0.5,277            "line_stroke_width": 3,278            "run_time": 2,279        }280        super().__init__(*vmobjects, **kwargs)281        self.nb = VGroup()282        self.nb_sub = VGroup()283        v = [2*UP, UP, ORIGIN, DOWN, 2*DOWN]284        h = [LEFT, ORIGIN, RIGHT]285        for i in v:286            for j in h:287                self.nb_sub.add(NumberBox(scale_factor=0.5).move_to(i+j))288            self.nb.add(self.nb_sub)289        self.nb = self.nb[0]290        print(*self.nb)291        # NumberBox().start_tracing(self, flash_dict, 4, False)292        self.emp_list = emp_list293        just = 0294        for i in self.emp_list:295            self.nb.remove(self.nb[i-just])296            just += 1297        self.add(*self.nb)298299    def start_tracing(self):300        for i in range(len(self.nb)):301            if isinstance(self.nb[i], NumberBox):302                self.nb[i].start_tracing(self, self.flash_dict, 4, False)303304305class NormalNumber(VGroup):306    def __init__(self, emp_list = [3, 4, 10, 11], sf=0.5, *vmobjects, **kwargs):307        self.flash_dict = {308            "line_length": 0.5,309            "num_lines": 12,310            "flash_radius": 0.5,311            "line_stroke_width": 3,312            "run_time": 2,313        }314        super().__init__(*vmobjects, **kwargs)315        self.nb = VGroup()316        self.nb_sub = VGroup()317        v = [2*UP, UP, ORIGIN, DOWN, 2*DOWN]318        h = [LEFT, ORIGIN, RIGHT]319        for i in v:320            for j in h:321                self.nb_sub.add(Square(color=GREY).move_to(i+j).scale(sf))322            self.nb.add(self.nb_sub)323        self.nb = self.nb[0]324        print(*self.nb)325        # NumberBox().start_tracing(self, flash_dict, 4, False)326        self.emp_list = emp_list327        just = 0328        for i in self.emp_list:329            self.nb.remove(self.nb[i-just])330            just += 1331        self.add(*self.nb)332333334class LastTry(Scene):335    def construct(self):336        a = CoolNumber()337        self.add(a.move_to(5*LEFT))338        b = CoolNumber([4,7,10]).move_to(1.7*LEFT)339        c = CoolNumber().move_to(1.7*RIGHT)340        d = CoolNumber().move_to(5*RIGHT)341        self.add(b, c, d)342        a.start_tracing()343        b.start_tracing()344        c.start_tracing()345        d.start_tracing()346        self.wait(10)347348349class Final(Scene):350    def construct(self):351        fr: CameraFrame = self.camera.frame352        fr.save_state()353        a0 = NormalNumber()354        self.add(a0.move_to(5*LEFT))355        b0 = NormalNumber([4,7,10]).move_to(1.7*LEFT)356        c0 = NormalNumber().move_to(1.7*RIGHT)357        d0 = NormalNumber().move_to(5*RIGHT)358        e0 = NormalNumber([0,1,3,4,6,7,9,10,12,13]).move_to(5*RIGHT)359        self.add(b0, c0, e0)360        self.wait(2)361        tx1 = Text('æ°å¹´å¿«ä¹!', font='楷ä½', color=RED).scale(3).shift(4.2*UP)362        bx1 = SurroundingRectangle(tx1, color=YELLOW)363        p = VGroup(364            Text('åé¦2021', font='楷ä½'),365            Text('ä¹è®¸å¯¹ä½ ææ¥è¯´å¹¶æ ä¹è¶£', font='楷ä½'),366            Text('åæè
ä½ éå°äºå¾å¤ç¦æ¼', font='楷ä½'),367            Text('ä½å³ä¾¿å¦æ¤', font='楷ä½'),368            Text('æ¥æä¸ä¸ªç°è²çè¿å»', font='楷ä½'),369            Text('ä¹ä¸æ¯«ä¸ä¼å¦æä»¬', font='楷ä½'),370            Text('æçæªæ¥çç¿çè²å½©', font='楷ä½'),371        )372        fr.scale(1.5)373        self.play(fr.animate.scale(1.5), fr.animate.shift(4*RIGHT))374        p.arrange(DOWN)375        p.move_to(10.5*RIGHT + UP)376        self.play(Write(p[0]), run_time = 1.5)377        self.play(Write(p[1]), Write(p[2]), run_time =2)378        self.play(379            Write(p[3]),380            TransformMatchingShapes(e0, d0), run_time=3381        )382        a = CoolNumber()383        a.move_to(5*LEFT)384        b = CoolNumber([4,7,10]).move_to(1.7*LEFT)385        c = CoolNumber().move_to(1.7*RIGHT)386        d = CoolNumber().move_to(5*RIGHT)387        olds = [a0, b0, c0, d0]388        news = [a,b,c,d]389        self.play(390            Write(p[4]),391            *[TransformMatchingShapes(m1, m2) for m1, m2 in zip(olds, news)],392            rate_func=rush_into393        )394        self.wait(2)395        self.play(Write(p[5]))396        #a.start_tracing()397        #b.start_tracing()398        #c.start_tracing()399        #d.start_tracing()400        self.wait(1)401        self.play(Write(p[6]), run_time = 3)402        self.play(fr.animate.restore())403        self.play(404            fr.animate.shift(1.3*UP), 405            Write(tx1), 406            ShowCreation(bx1),407            *[FadeOut(mob) for mob in p]408        )409        flash_dict = {410            "line_length": 0.5,411            "num_lines": 12,412            "flash_radius": 0.5,413            "line_stroke_width": 3,
...test_docgen.py
Source:test_docgen.py  
...30def test_basic():31    descs = {"fun":fun}32    ds = DocStorage().from_dict(descs)33    t = Tracer(ds)34    t.start_tracing()35    fun(1, ("g", 3), 8)36    fun(2., ("a", 1.), "a")37    t.end_tracing()38    desc = ds.descs['fun']39    inputcells = desc.inputcells40    assert len(inputcells) == 341    assert isinstance(inputcells[0], model.SomeUnion)42    assert isinstance(inputcells[1], model.SomeTuple)43    assert isinstance(inputcells[2], model.SomeUnion)44    assert isinstance(desc.retval, model.SomeString)45    cs = sorted(desc.call_sites.keys())46    assert len(cs) == 247    f_name = cut_pyc(__file__)48    assert len(cs[0]) == 149    assert len(cs[1]) == 150    assert cs[1][0].filename == f_name51    # lines are counted from 052    num = test_basic.func_code.co_firstlineno53    assert cs[1][0].lineno == num + 4 or cs[1][0].lineno == num + 554    assert cs[0][0].filename == f_name55    assert cs[0][0].lineno == num + 5 or cs[0][0].lineno == num + 456    if 0:57        pds = PermaDocStorage(DocStorageAccessor(ds))58        assert pds.get_function_names() == ['fun']59        sig = pds.get_function_signature('fun')60        assert sig[0][0][0] == 'a'61        assert isinstance(sig[0][0][1], model.SomeUnion)62        assert len(pds.get_function_callpoints('fun')) == 26364class AClass(object):65    """ Class docstring66    """67    def __init__(self, b="blah"):68        pass69    70    def exposed_method(self, a, b, c):71        """ method docstring72        """73        return self._hidden_method()74    75    def _hidden_method(self):76        """ should not appear77        """78        return "z"7980class ANotherClass(AClass):81    def another_exposed_method(self, a):82        # no docstring83        return a8485def test_class():86    descs = {'AClass':AClass}87    ds = DocStorage().from_dict(descs)88    t = Tracer(ds)89    t.start_tracing()90    s = AClass()91    s.exposed_method(1, 2., [1,2,3])92    t.end_tracing()93    desc = ds.descs['AClass']94    inputcells = desc.fields['__init__'].inputcells95    assert len(inputcells) == 296    assert isinstance(inputcells[0], model.SomeInstance)97    #assert inputcells[0].classdef.classdesc.pyobj is SomeClass98    # XXX: should work99    assert isinstance(inputcells[1], model.SomeString)100    f_name = __file__101    if f_name.endswith('.pyc'):102        f_name = f_name[:-1]103    cs = sorted(desc.fields['__init__'].call_sites.keys())104    assert len(cs) == 1105    assert len(cs[0]) == 1106    assert cs[0][0].filename == f_name107    assert cs[0][0].lineno == test_class.func_code.co_firstlineno + 4108    # method check109    assert sorted(desc.getfields()) == ['__init__', 'exposed_method']110    inputcells = desc.fields['exposed_method'].inputcells111    assert len(inputcells) == 4112    assert isinstance(inputcells[0], model.SomeInstance)113    #assert inputcells[0].classdef.classdesc.pyobj is SomeClass114    # XXX should work115    assert isinstance(inputcells[1], model.SomeInt)116    assert isinstance(inputcells[2], model.SomeFloat)117    assert isinstance(inputcells[3], model.SomeList)118    assert isinstance(desc.fields['exposed_method'].retval, model.SomeString)119    if 0:120        pds = PermaDocStorage(DocStorageAccessor(ds))121        assert pds.get_class_names() == ['AClass']122        assert len(pds.get_function_signature('AClass.exposed_method')[0]) == 4123124def other_fun():125    pass126127def test_add_desc():128    ds = DocStorage().from_dict({})129    ds.add_desc("one", fun)130    ds.add_desc("one", other_fun)131    assert sorted(ds.descs.keys()) == ["one", "one_1"]132    assert isinstance(ds.descs["one"], FunctionDesc)133    assert isinstance(ds.descs["one_1"], FunctionDesc)134    assert ds.descs["one"].pyobj is fun135    assert ds.descs["one_1"].pyobj is other_fun136    assert ds.desc_cache[ds.descs["one"]] is ds.descs["one"]137    assert ds.desc_cache[ds.descs["one_1"]] is ds.descs["one_1"]138139def test_while_call():140    ds = DocStorage().from_dict({"other_fun":other_fun})141    t = Tracer(ds)142    t.start_tracing()143    for x in xrange(8):144        other_fun()145    t.end_tracing()146    desc = ds.descs["other_fun"]147    assert len(desc.call_sites.keys()) == 1148    #assert isinstance(desc.call_sites.values()[0][0], py.code.Frame)149    if 0:150        pds = PermaDocStorage(DocStorageAccessor(ds))151        assert len(pds.get_function_callpoints("other_fun")) == 1152153class A(object):154    def method(self, x):155        self.x = x156157class B:158    def method(self, x):159        self.x = x160161def test_without_init():162    ds = DocStorage().from_dict({'A':A, 'B':B})163    t = Tracer(ds)164    t.start_tracing()165    x = A()166    y = B()167    x.method(3)168    y.method(4)169    t.end_tracing()170    assert isinstance(ds.descs['A'].fields['method'].inputcells[1],171                      model.SomeInt)172    assert isinstance(ds.descs['B'].fields['method'].inputcells[1],173                      model.SomeInt)174    if 0:175        pds = PermaDocStorage(DocStorageAccessor(ds))176177def test_local_changes():178    class testclass(object):179        def __init__(self):180            self.foo = 0181        def bar(self, x):182            self.foo = x183    ds = DocStorage().from_dict({'testclass': testclass})184    t = Tracer(ds)185    t.start_tracing()186    c = testclass()187    c.bar(1)188    t.end_tracing()189    desc = ds.descs['testclass']190    methdesc = desc.fields['bar']191    #assert methdesc.old_dict != methdesc.new_dict192    assert methdesc.get_local_changes() == {'foo': set(['changed'])}193    return ds194195def test_local_changes_nochange():196    class testclass(object):197        def __init__(self):198            self.foo = 0199        def bar(self, x):200            self.foo = x201    ds = DocStorage().from_dict({'testclass': testclass})202    t = Tracer(ds)203    t.start_tracing()204    c = testclass()205    t.end_tracing()206    desc = ds.descs['testclass']207    methdesc = desc.fields['bar']208    assert methdesc.get_local_changes() == {}209    return ds210211def test_multiple_classes_with_same_init():212    class A:213        def __init__(self, x):214            self.x = x215    216    class B(A):217        pass218    219    ds = DocStorage().from_dict({'A':A, 'B':B})220    t = Tracer(ds)221    t.start_tracing()222    c = A(3)223    d = B(4)224    t.end_tracing()225    assert len(ds.descs['A'].fields['__init__'].call_sites) == 1226    assert len(ds.descs['B'].fields['__init__'].call_sites) == 1227    return ds228229def test_exception_raise():230    def x():231        1/0232    233    def y():234        try:235            x()236        except ZeroDivisionError:237            pass238    239    def z():240        y()241    242    ds = DocStorage().from_dict({'x':x, 'y':y, 'z':z})243    t = Tracer(ds)244    t.start_tracing()245    z()246    t.end_tracing()247    assert ds.descs['x'].exceptions.keys() == [ZeroDivisionError]248    assert ds.descs['y'].exceptions.keys() == [ZeroDivisionError]249    assert ds.descs['z'].exceptions.keys() == []250    return ds251252def test_subclass():253    descs = {'ANotherClass': ANotherClass}254    ds = DocStorage().from_dict(descs)255    t = Tracer(ds)256    t.start_tracing()257    s = ANotherClass('blah blah')258    s.another_exposed_method(1)259    t.end_tracing()260    desc = ds.descs['ANotherClass']261    assert len(desc.fields) == 4262    inputcells = desc.fields['__init__'].inputcells263    assert len(inputcells) == 2264    inputcells = desc.fields['another_exposed_method'].inputcells265    assert len(inputcells) == 2266    bases = desc.bases267    assert len(bases) == 2268    return ds269    270def test_bases():271    class A:272        pass273    274    class B:275        pass276    277    class C(A,B):278        pass279    280    ds = DocStorage().from_dict({'C':C, 'B':B})281    dsa = DocStorageAccessor(ds)282    for desc in dsa.get_possible_base_classes('C'):283        assert desc is ds.descs['B'] or desc.is_degenerated284    return ds285286def test_desc_from_pyobj():287    class A:288        pass289290    class B(A):291        pass292293    ds = DocStorage().from_dict({'A': A, 'B': B})294    dsa = DocStorageAccessor(ds)295    assert dsa.desc_from_pyobj(A, 'A') is ds.descs['A']296    return ds297298def test_method_origin():299    class A:300        def foo(self):301            pass302303    class B(A):304        def bar(self):305            pass306307    class C(B):308        pass309310    ds = DocStorage().from_dict({'C': C, 'B': B})311    dsa = DocStorageAccessor(ds)312    origin = dsa.get_method_origin('C.bar')313    assert origin is ds.descs['B']314    return ds315316def test_multiple_methods():317    class A(object):318        def meth(self):319            pass320    321    class B(A):322        pass323    324    class C(A):325        pass326    327    ds = DocStorage().from_dict({'C':C, 'B':B})328    dsa = DocStorageAccessor(ds)329    t = Tracer(ds)330    t.start_tracing()331    B().meth()332    C().meth()333    t.end_tracing()334    assert len(ds.descs['B'].fields['meth'].call_sites) == 1335    assert len(ds.descs['C'].fields['meth'].call_sites) == 1336    return ds337338def test_is_private():339    # XXX implicit test, but so are the rest :|340    class Foo(object):341        def foo(self):342            pass343        def _foo(self):344            pass345        def __foo(self):346            pass347        def trigger__foo(self):348            self.__foo()349        def __foo__(self):350            pass351352    ds = DocStorage().from_dict({'Foo': Foo})353    dsa = DocStorageAccessor(ds)354    t = Tracer(ds)355    t.start_tracing()356    f = Foo()357    f.foo()358    f._foo()359    f.trigger__foo()360    f.__foo__()361    t.end_tracing()362    assert sorted(ds.descs['Foo'].getfields()) == ['__foo__', 'foo',363                                                     'trigger__foo']364365def setup_fs_project():366    temp = py.test.ensuretemp('test_get_initpkg_star_items')367    temp.ensure("pkg/func.py").write(py.code.Source("""\368        def func(arg1):369            "docstring"370    """))371    temp.ensure('pkg/someclass.py').write(py.code.Source("""\372        class SomeClass(object):373            " docstring someclass "374            def __init__(self, somevar):375                self.somevar = somevar376                377            def get_somevar(self):378                " get_somevar docstring "379                return self.somevar380        SomeInstance = SomeClass(10)381    """))382    temp.ensure('pkg/somesubclass.py').write(py.code.Source("""\383        from someclass import SomeClass384        class SomeSubClass(SomeClass):385            " docstring somesubclass "386            #def get_somevar(self):387            #    return self.somevar + 1388    """))389    temp.ensure('pkg/somenamespace.py').write(py.code.Source("""\390        from pkg.main.sub import func391        import py392    393        def foo():394            return 'bar'395396        def baz(qux):397            return qux398399        quux = py.code.Source('print "foo"')400    """))401    temp.ensure("pkg/__init__.py").write(py.code.Source("""\402        from py.initpkg import initpkg403        initpkg(__name__, exportdefs = {404            'main.sub.func': ("./func.py", "func"),405            'main.SomeClass': ('./someclass.py', 'SomeClass'),406            #'main.SomeInstance': ('./someclass.py', 'SomeInstance'),407            'main.SomeSubClass': ('./somesubclass.py', 'SomeSubClass'),408            'other':             ('./somenamespace.py', '*'),409        })410    """))411    return temp, 'pkg'412413def setup_pkg_docstorage():414    pkgdir, pkgname = setup_fs_project()415    py.std.sys.path.insert(0, str(pkgdir))416    # XXX test_get_initpkg_star_items depends on package not417    #     being imported already418    for key in py.std.sys.modules.keys():419        if key == pkgname or key.startswith(pkgname + "."):420            del py.std.sys.modules[key]421    pkg = __import__(pkgname)422    ds = DocStorage().from_pkg(pkg)423    return pkg, ds424425def test_get_initpkg_star_items():426    pkg, ds = setup_pkg_docstorage()427    sit = get_star_import_tree(pkg.other, 'pkg.other')428    assert sorted(sit.keys()) == ['pkg.other.baz', 'pkg.other.foo']429    t = Tracer(ds)430    t.start_tracing()431    pkg.main.sub.func("a1")432    pkg.main.SomeClass(3).get_somevar()433    pkg.main.SomeSubClass(4).get_somevar()434    t.end_tracing()435    assert isinstance(ds.descs['main.sub.func'].inputcells[0], model.SomeString)436    desc = ds.descs['main.SomeClass']437    assert ds.descs['main.SomeClass.get_somevar'] is desc.fields['get_somevar']438    cell = desc.fields['get_somevar'].inputcells[0]439    assert isinstance(cell, model.SomeInstance)440    assert cell.classdef.cls is desc.pyobj441    desc = ds.descs['main.SomeSubClass']442    assert ds.descs['main.SomeSubClass.get_somevar'] is desc.fields['get_somevar']443    cell = desc.fields['get_somevar'].inputcells[0]444    assert isinstance(cell, model.SomeInstance)
...log_helping.py
Source:log_helping.py  
...38        if type(traces) == list:39            self.traces.extend(traces)40        if type(traces) == str:41            self.traces.append(traces)42    def start_tracing(self):43        for trace in self.traces:44            LOGGER.debug("setting traces for %s", trace)45            self.tracer.enable_logging(trace, self.log_level)46    def stop_tracing(self):47        for trace in self.traces:48            LOGGER.debug("stopping traces for %s", trace)49            self.tracer.disable_logging(trace)50    def get_logging(self):51        return self.tracer.get_messages()52    def wait_until_message_received(self, message, timeout):53        self.tracer.wait_until_message_received(message, timeout)54    def _format_event_data(self, e, format="string"):55        if format == "string":56            message = " reception date: {} message: '{}' error:{}".format(57                e.reception_date, e.attr_value.value, e.err58            )59        elif format == "dict":60            message = {61                "reception date": e.reception_date,62                "message": e.attr_value.value,63                "error": e.err,64            }65        return message66    def get_printable_messages(self):67        messages = self.tracer.get_messages()68        msg_counter = 069        printout = ""70        for message in messages:71            msg_counter += 172            printout += str(msg_counter) + self._format_event_data(message) + "\n"73        return printout74    def get_messages_as_list_dict(self):75        messages = self.tracer.get_messages()76        return [self._format_event_data(message, format="dict") for message in messages]77# abstraction of Device logging implemenetation is set by implementation object and mappoing is defined in shim dictionary78class DeviceLogging:79    def __init__(self, implementation="TracerHelper"):80        if implementation == "TracerHelper":81            self.implementation = DeviceLoggingImplWithTraceHelper()82            self._shim = {83                "set_logging_level": self.implementation.set_logging_level,84                "update_traces": self.implementation.update_traces,85                "stop_tracing": self.implementation.stop_tracing,86                "get_logging": self.implementation.get_logging,87                "start_tracing": self.implementation.start_tracing,88                "wait_until_message_received": self.implementation.wait_until_message_received,89                "get_printable_messages": self.implementation.get_printable_messages,90                "get_messages_as_list_dict": self.implementation.get_messages_as_list_dict,91            }92        elif implementation == "DeviceLoggingImplWithDBDirect":93            self.implementation = DeviceLoggingImplWithDBDirect()94            self._shim = {95                "set_logging_level": self.implementation.set_logging_level,96                "update_traces": self.implementation.update_devices_to_be_logged,97                "stop_tracing": self.implementation.stop_tracing,98                "get_logging": self.implementation.get_logging,99                "start_tracing": self.implementation.start_tracing,100                "wait_until_message_received": self.implementation.wait_until_message_received,101                "get_printable_messages": self.implementation.get_printable_messages,102                "get_messages_as_list_dict": self.implementation.get_messages_as_list_dict,103            }104        else:105            raise Exception(106                "unknown implentation of Device logging {}".format(implementation)107            )108    def set_logging_level(self, level):109        self._shim["set_logging_level"](level)110    def update_traces(self, traces):111        self._shim["update_traces"](traces)112    def start_tracing(self):113        self._shim["start_tracing"]()114    def stop_tracing(self):115        self._shim["stop_tracing"]()116    def get_logging(self):117        return self._shim["get_logging"]()118    def wait_until_message_received(self, message, timeout):119        self._shim["wait_until_message_received"](message, timeout)120    def get_printable_messages(self):121        return self._shim["get_printable_messages"]()122    def get_messages_as_list_dict(self):123        return self._shim["get_messages_as_list_dict"]()124class DeviceLoggingImplWithDBDirect:125    def __init__(self, es=None):126        if es == None:127            self.local = self.is_local()128            if self.local:129                es = Elasticsearch(130                    [131                        {132                            "host": "{}-{}".format(133                                "elastic-logging", os.environ.get("HELM_RELEASE")134                            ),135                            "port": 9200,136                        }137                    ]138                )139            else:140                es = Elasticsearch([{"host": "192.168.93.94", "port": 9200}])141        else:142            # injected es is assumed to be local143            self.local = True144        self.es = es145        # assumes the search is always only on todays logs146        if self.local:147            index = "logstash-{}".format(date.today().strftime("%Y.%m.%d"))148        else:149            index = "filebeat-{}".format(date.today().strftime("%Y.%m.%d"))150        self.search = Search(using=es, index=index)151        self.containers_to_devices = {}152        self.Qs = None153        self.start_time = None154        self.running = False155        self.source_includes = [156            "ska_log_message",157            "ska_log_timestamp",158            "kubernetes.container_name",159            "kubernetes.pod_name",160        ]161    def is_local(self, port=9200, elastic_name="elastic-logging"):162        HELM_RELEASE = os.environ.get("HELM_RELEASE")163        elastic_host = "{}-{}".format(elastic_name, HELM_RELEASE)164        tracer = TraceHelper()165        return tracer.check_port(elastic_host, port) == 0166    def start_tracing(self):167        self.start_time = datetime.now()168        self.running = True169    def set_logging_level(self, level):170        # TODO implement filtering based on log level171        self.logging = level172    def get_logging(self):173        # TODO implement filtering based on log level174        return self.logging175    def wait_until_message_received(self, message, timeout):176        # returns immediately as this behaviour cant be done by this object177        return178    def _update_containers_to_devices(self, device, container):179        if container in self.containers_to_devices.keys():180            self.containers_to_devices[container] += "/{}".format(device)...panic.py
Source:panic.py  
...52        self._debug_print("PanicLogger::initialize")53        # Initialize Logger base class54        Logger.initialize(self)55        # Call start_tracing earlier to stop execution earlier56        self.start_tracing()57    def start_tracing(self):58        self._debug_print("start_tracing")59        trace_name, trace_path = self.get_trace_name("Enter <<trace name>> to start panic tracing? :")60        if trace_name:61            self.set_trace_path(trace_path, trace_name)62            self.get_build_info()63            # TODO Problem, there is no Sideband.bin info yet64            # Quick Fix65            # Start tracing, wait 100ms, Stop tracing, fetch sideband info66            Logger.start_tracing(self)67            time.sleep(0.2)68            Logger.stop_tracing(self)69            time.sleep(0.2)70            Logger.get_sideband_data(self)71            self.dump_kernel()72            self.dump_linux_gate()73            self.dump_kernel_modules()74            Logger.start_tracing(self)75            print ""76            print "Panic tracing activated"77            print "If panic happens, wait 10s and reboot device."78            print ""79            print "When device boot up run following command:"80            print "sat-panic-fetch " + self.trace_name81            sys.exit(0)82        else:83            print "Panic Tracer did not get started"84    def stop_tracing(self):85        return86    def get_data(self):87        return88    def get_trace_data(self):...LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!
