o
    Á¿iŒX  ã                   @   s†  d dl Z d dlmZ d dlZd dlmZ e jdd… Zeƒ Z	eƒ Z
dZedkr+edƒ‚edkrBeƒ Ze d¡ e	 d	¡ e
 d
¡ noedkrYeƒ Ze d¡ e	 d	¡ e
 d¡ nXedkrpeƒ Ze d¡ e	 d¡ e
 d¡ nAedkr‡eƒ Ze d¡ e	 d¡ e
 d¡ n*edkr–e	 d¡ e
 d¡ nedkr¥e	 d¡ e
 d¡ ndedd…  Zeeƒ‚deej dededdfdd„ZdS )é    N)ÚCodeType)ÚAssemblyé   )é   é   z,This version of CPython is not supported yet)r   é   z:
            return_generator
            pop_top
        a`  
            get_awaitable                   0
            load_const                      None

        presend:
            send                            @send
            yield_value                     0
            resume                          3
            jump_backward_no_interrupt      @presend
        send:
            end_send
        a6  
        try                                 @stopiter
            copy                            1
            store_fast                      $__ddgen
            load_attr                       (False, 'asend')
            store_fast                      $__ddgensend
            load_fast                       $__ddgen
            load_attr                       (True, '__anext__')
            call                            0

        loop:
            get_awaitable                   0
            load_const                      None
        presend0:
            send                            @send0
        tried

        try                                 @genexit lasti
            yield_value                     0
            resume                          3
            jump_backward_no_interrupt      @loop
        send0:
            end_send

        yield:
            call_intrinsic_1                asm.Intrinsic1Op.INTRINSIC_ASYNC_GEN_WRAP
            yield_value                     0
            resume                          1
            push_null
            load_fast                       $__ddgensend
            swap                            3
            call                            1
            jump_backward                   @loop
        tried

        genexit:
        try                                 @stopiter
            push_exc_info
            load_const                      GeneratorExit
            check_exc_match
            pop_jump_if_false               @exc
            pop_top
            load_fast                       $__ddgen
            load_attr                       (True, 'aclose')
            call                            0
            get_awaitable                   0
            load_const                      None

        presend1:
            send                            @send1
            yield_value                     0
            resume                          3
            jump_backward_no_interrupt      @presend1
        send1:
            end_send
            pop_top
            pop_except
            load_const                      None
            return_value

        exc:
            pop_top
            load_fast                       $__ddgen
            load_attr                       (False, 'athrow')
            push_null
            load_const                      sys.exc_info
            push_null
            call                            0
            push_null
            call_function_ex
            get_awaitable                   0
            load_const                      None

        presend2:
            send                            @send2
            yield_value                     0
            resume                          3
            jump_backward_no_interrupt      @presend2
        send2:
            end_send
            swap                            2
            pop_except
            jump_backward                   @yield
        tried

        stopiter:
            push_exc_info
            load_const                      StopAsyncIteration
            check_exc_match
            pop_jump_if_false               @propagate
            pop_top
            pop_except
            load_const                      None
            return_value

        propagate:
            reraise                         0
        )r   é   a1  
        try                                 @stopiter
            copy                            1
            store_fast                      $__ddgen
            load_attr                       (False, 'asend')
            store_fast                      $__ddgensend
            load_fast                       $__ddgen
            load_attr                       (True, '__anext__')
            call                            0

        loop:
            get_awaitable                   0
            load_const                      None
        presend0:
            send                            @send0
        tried

        try                                 @genexit lasti
            yield_value                     0
            resume                          3
            jump_backward_no_interrupt      @loop
        send0:
            end_send

        yield:
            call_intrinsic_1                asm.Intrinsic1Op.INTRINSIC_ASYNC_GEN_WRAP
            yield_value                     0
            resume                          1
            push_null
            load_fast                       $__ddgensend
            swap                            3
            call                            1
            jump_backward                   @loop
        tried

        genexit:
        try                                 @stopiter
            push_exc_info
            load_const                      GeneratorExit
            check_exc_match
            pop_jump_if_false               @exc
            pop_top
            load_fast                       $__ddgen
            load_attr                       (True, 'aclose')
            call                            0
            get_awaitable                   0
            load_const                      None

        presend1:
            send                            @send1
            yield_value                     0
            resume                          3
            jump_backward_no_interrupt      @presend1
        send1:
            end_send
            pop_top
            pop_except
            load_const                      None
            return_value

        exc:
            pop_top
            load_fast                       $__ddgen
            load_attr                       (False, 'athrow')
            push_null
            load_const                      sys.exc_info
            push_null
            call                            0
            call_function_ex                0
            get_awaitable                   0
            load_const                      None

        presend2:
            send                            @send2
            yield_value                     0
            resume                          3
            jump_backward_no_interrupt      @presend2
        send2:
            end_send
            swap                            2
            pop_except
            jump_backward                   @yield
        tried

        stopiter:
            push_exc_info
            load_const                      StopAsyncIteration
            check_exc_match
            pop_jump_if_false               @propagate
            pop_top
            pop_except
            load_const                      None
            return_value

        propagate:
            reraise                         0
        )r   é   a`  
            get_awaitable                   0
            load_const                      None

        presend:
            send                            @send
            yield_value                     2
            resume                          3
            jump_backward_no_interrupt      @presend
        send:
            end_send
        a-  
        try                                 @stopiter
            copy                            1
            store_fast                      $__ddgen
            load_attr                       (False, 'asend')
            store_fast                      $__ddgensend
            load_fast                       $__ddgen
            load_attr                       (True, '__anext__')
            call                            0

        loop:
            get_awaitable                   0
            load_const                      None
        presend0:
            send                            @send0
        tried

        try                                 @genexit lasti
            yield_value                     3
            resume                          3
            jump_backward_no_interrupt      @loop
        send0:
            end_send

        yield:
            call_intrinsic_1                asm.Intrinsic1Op.INTRINSIC_ASYNC_GEN_WRAP
            yield_value                     3
            resume                          1
            push_null
            swap                            2
            load_fast                       $__ddgensend
            swap                            2
            call                            1
            jump_backward                   @loop
        tried

        genexit:
        try                                 @stopiter
            push_exc_info
            load_const                      GeneratorExit
            check_exc_match
            pop_jump_if_false               @exc
            pop_top
            load_fast                       $__ddgen
            load_attr                       (True, 'aclose')
            call                            0
            get_awaitable                   0
            load_const                      None

        presend1:
            send                            @send1
            yield_value                     4
            resume                          3
            jump_backward_no_interrupt      @presend1
        send1:
            end_send
            pop_top
            pop_except
            return_const                    None

        exc:
            pop_top
            push_null
            load_fast                       $__ddgen
            load_attr                       (False, 'athrow')
            push_null
            load_const                      sys.exc_info
            call                            0
            call_function_ex                0
            get_awaitable                   0
            load_const                      None

        presend2:
            send                            @send2
            yield_value                     4
            resume                          3
            jump_backward_no_interrupt      @presend2
        send2:
            end_send
            swap                            2
            pop_except
            jump_backward                   @yield
        tried

        stopiter:
            push_exc_info
            load_const                      StopAsyncIteration
            check_exc_match
            pop_jump_if_false               @propagate
            pop_top
            pop_except
            return_const                    None

        propagate:
            reraise                         0
        )r   é   a5  
            get_awaitable                   0
            load_const                      None

        presend:
            send                            @send
            yield_value
            resume                          3
            jump_backward_no_interrupt      @presend
        send:
        a  
        try                                 @stopiter
            copy                            1
            store_fast                      $__ddgen
            load_attr                       $asend
            store_fast                      $__ddgensend
            load_fast                       $__ddgen
            load_method                     $__anext__
            precall                         0
            call                            0

        loop:
            get_awaitable                   0
            load_const                      None
        presend0:
            send                            @send0
        tried

        try                                 @genexit lasti
            yield_value
            resume                          3
            jump_backward_no_interrupt      @loop
        send0:

        yield:
            async_gen_wrap
            yield_value
            resume                          1
            push_null
            swap                            2
            load_fast                       $__ddgensend
            swap                            2
            precall                         1
            call                            1
            jump_backward                   @loop
        tried

        genexit:
        try                                 @stopiter
            push_exc_info
            load_const                      GeneratorExit
            check_exc_match
            pop_jump_forward_if_false       @exc
            pop_top
            load_fast                       $__ddgen
            load_method                     $aclose
            precall                         0
            call                            0
            get_awaitable                   0
            load_const                      None

        presend1:
            send                            @send1
            yield_value
            resume                          3
            jump_backward_no_interrupt      @presend1
        send1:
            pop_top
            pop_except
            load_const                      None
            return_value

        exc:
            pop_top
            push_null
            load_fast                       $__ddgen
            load_attr                       $athrow
            push_null
            load_const                      sys.exc_info
            precall                         0
            call                            0
            call_function_ex                0
            get_awaitable                   0
            load_const                      None

        presend2:
            send                            @send2
            yield_value
            resume                          3
            jump_backward_no_interrupt      @presend2
        send2:
            swap                            2
            pop_except
            jump_backward                   @yield
        tried

        stopiter:
            push_exc_info
            load_const                      StopAsyncIteration
            check_exc_match
            pop_jump_forward_if_false       @propagate
            pop_top
            pop_except
            load_const                      None
            return_value

        propagate:
            reraise                         0
        )r   é
   zk
            get_awaitable
            load_const                      None
            yield_from
        a¶  
        setup_finally                       @stopiter
            dup_top
            store_fast                      $__ddgen
            load_attr                       $asend
            store_fast                      $__ddgensend
            load_fast                       $__ddgen
            load_attr                       $__anext__
            call_function                   0

        loop:
            get_awaitable
            load_const                      None
            yield_from

        yield:
        setup_finally                       @genexit
            yield_value
        pop_block
            load_fast                       $__ddgensend
            rot_two
            call_function                   1
            jump_absolute                   @loop

        genexit:
            dup_top
            load_const                      GeneratorExit
            jump_if_not_exc_match           @exc
            pop_top
            pop_top
            pop_top
            pop_top
            load_fast                       $__ddgen
            load_attr                       $aclose
            call_function                   0
            get_awaitable
            load_const                      None
            yield_from
        pop_except
            return_value

        exc:
            pop_top
            pop_top
            pop_top
            pop_top
            load_fast                       $__ddgen
            load_attr                       $athrow
            load_const                      sys.exc_info
            call_function                   0
            call_function_ex                0
            get_awaitable
            load_const                      None
            yield_from
            rot_four
        pop_except
            jump_absolute                   @yield

        stopiter:
            dup_top
            load_const                      StopAsyncIteration
            jump_if_not_exc_match           @propagate
            pop_top
            pop_top
            pop_top
            pop_except
            load_const                      None
            return_value

        propagate:
            reraise                         0
        )r   é	   aœ  
        setup_finally                       @stopiter
            dup_top
            store_fast                      $__ddgen
            load_attr                       $asend
            store_fast                      $__ddgensend
            load_fast                       $__ddgen
            load_attr                       $__anext__
            call_function                   0

        loop:
            get_awaitable
            load_const                      None
            yield_from

        yield:
        setup_finally                       @genexit
            yield_value
        pop_block
            load_fast                       $__ddgensend
            rot_two
            call_function                   1
            jump_absolute                   @loop

        genexit:
            dup_top
            load_const                      GeneratorExit
            jump_if_not_exc_match           @exc
            pop_top
            pop_top
            pop_top
            pop_top
            load_fast                       $__ddgen
            load_attr                       $aclose
            call_function                   0
            get_awaitable
            load_const                      None
            yield_from
        pop_except
            return_value

        exc:
            pop_top
            pop_top
            pop_top
            pop_top
            load_fast                       $__ddgen
            load_attr                       $athrow
            load_const                      sys.exc_info
            call_function                   0
            call_function_ex                0
            get_awaitable
            load_const                      None
            yield_from
            rot_four
        pop_except
            jump_absolute                   @yield

        stopiter:
            dup_top
            load_const                      StopAsyncIteration
            jump_if_not_exc_match           @propagate
            pop_top
            pop_top
            pop_top
            pop_except
            load_const                      None
            return_value

        propagate:
            reraise
        z*No async wrapping support for Python %d.%dÚinstrsÚcodeÚlinenoÚreturnc                 C   sz   t jjt jjB |j@ r9td urt ¡ | dd…< t jj|j@ r(t ¡ | dd…< d S t jj|j@ r;t ¡ | dd …< d S d S d S )Nr   éÿÿÿÿ)	ÚbcÚCompilerFlagsÚASYNC_GENERATORÚ	COROUTINEÚco_flagsÚASYNC_HEAD_ASSEMBLYÚbindÚCOROUTINE_ASSEMBLYÚASYNC_GEN_ASSEMBLY)r   r   r   © r   úT/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/internal/wrapping/asyncs.pyÚ
wrap_asyncÊ  s   ö	r   )ÚsysÚtypesr   Úbytecoder   Úddtrace.internal.assemblyr   Úversion_infoÚPYr   r   r   ÚNotImplementedErrorÚparseÚmsgÚRuntimeErrorÚlistÚInstrÚintr   r   r   r   r   Ú<module>   sŽ    ÿÿÿeÿÿÿdÿÿÿdÿÿÿgÿÿLÿÿL$