o
    Á¿i—  ã                   @   sv   d dl Z d dlmZ e jd d… ZG dd„ deƒZG dd„ dee jƒZG dd	„ d	ee j	j
ƒZG d
d„ dee j	jƒZdS )é    N)Ú_DD_CONTEXTVARé   c                       s(   e Zd Z‡ fdd„Z‡ fdd„Z‡  ZS )ÚTracingMixinc                    s$   t  ¡ | _tt| ƒj|i |¤Ž d S ©N)r   ÚgetÚtrace_contextÚsuperr   Ú__init__©ÚselfÚargsÚkwargs©Ú	__class__© ú\/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/contrib/internal/gevent/greenlet.pyr	   
   s   
zTracingMixin.__init__c                    s   t  | j¡ tt| ƒ ¡  d S r   )r   Úsetr   r   r   Úrun)r   r   r   r   r      s   zTracingMixin.run)Ú__name__Ú
__module__Ú__qualname__r	   r   Ú__classcell__r   r   r   r   r   	   s    r   c                       s    e Zd ZdZ‡ fdd„Z‡  ZS )ÚTracedGreenletaÑ  
    ``Greenlet`` class that is used to replace the original ``gevent``
    class. This class ensures any greenlet inherits the contextvars from the parent Greenlet.

    There is no need to inherit this class to create or optimize greenlets
    instances, because this class replaces ``gevent.greenlet.Greenlet``
    through the ``patch()`` method. After the patch, extending the gevent
    ``Greenlet`` class means extending automatically ``TracedGreenlet``.
    c                    ó   t t| ƒj|i |¤Ž d S r   )r   r   r	   r
   r   r   r   r	   #   ó   zTracedGreenlet.__init__)r   r   r   Ú__doc__r	   r   r   r   r   r   r      s    
r   c                       ó   e Zd Z‡ fdd„Z‡  ZS )ÚTracedIMapUnorderedc                    r   r   )r   r   r	   r
   r   r   r   r	   (   r   zTracedIMapUnordered.__init__©r   r   r   r	   r   r   r   r   r   r   '   ó    r   c                       r   )Ú
TracedIMapc                    r   r   )r   r    r	   r
   r   r   r   r	   -   r   zTracedIMap.__init__r   r   r   r   r   r    ,   r   r    )ÚgeventÚddtrace._trace.providerr   Úversion_infoÚGEVENT_VERSIONÚobjectr   ÚGreenletr   ÚpoolÚIMapUnorderedr   ÚIMapr    r   r   r   r   Ú<module>   s    