a
    xd                     @   s
  d Z ddlZddlZddlmZ ddlmZ zddlmZ	 W n e
yV   ddl	Z	Y n0 ddlmZ ddlmZ eeefZzddlmZ W n: e
y   zddlmZ W n e
y   dZY n0 Y n0 dad	d
 Zdd Zdd Zdd Zdd Zdd Zedd ZdS )zPython Compatibility Utilities.    N)contextmanagerwraps)metadata)UnsupportedOperation)reraise)register_after_forkc                    s   t   fdd}|S )z*Decorator to mark generator as co-routine.c                     s    | i |}t | |S N)next)argskwargsitgen J/var/www/html/Ranjet/env/lib/python3.9/site-packages/kombu/utils/compat.pywind_up"   s    zcoro.<locals>.wind_upr   )r   r   r   r   r   coro    s    r   c                  C   s   dt jv rDz&dd l} ddlm} || r.W dS W n tyB   Y n0 dt jv rz*dd l} ddlm} | j|ju rvW dS W n ty   Y n0 dS )NZeventletr   )is_monkey_patchedgevent)socketdefault)sysmodulesr   Zeventlet.patcherr   ImportErrorr   )r   Zis_eventletZ_gsocketr   r   r   _detect_environment*   s"    



r   c                   C   s   t du rt a t S )z=Detect the current environment: default, eventlet, or gevent.N)_environmentr   r   r   r   r   detect_environmentF   s    r   c                 C   s   dd t  | g D S )z,Return setuptools entrypoints for namespace.c                 s   s   | ]}||  fV  qd S r	   )load).0epr   r   r   	<genexpr>P   s   zentrypoints.<locals>.<genexpr>)importlib_metadataZentry_pointsget)	namespacer   r   r   entrypointsN   s    r%   c                 C   s   t | tjr| S |  S )z!Get fileno from file-like object.)
isinstancenumbersIntegralfilenofr   r   r   r)   V   s    r)   c                 C   s"   z
t | W S  ty   Y n0 dS )z3Get object fileno, or :const:`None` if not defined.N)r)   FILENO_ERRORSr*   r   r   r   maybe_fileno]   s    
r-   c                  g   s  g }g }d}zzz6| D ]&}|j }|j}||  || q|V  W n   t }Y n0 W |r| }z|| rzd}W q`   t }Y q`0 q`|dkrt|d |d |d  nX|r| }z|| rd}W q   t }Y q0 q|dkrt|d |d |d  0 W ~n~0 dS )zNest context managers.)NNNr         N)__exit__	__enter__appendr   exc_infopopr   )ZmanagersZexitsvarsexcZmgrexitZenterr   r   r   nestede   s@    

r8   )__doc__r'   r   
contextlibr   	functoolsr   	importlibr   r"   r   ior   Zkombu.exceptionsr   AttributeError
ValueErrorr,   Zbilliard.utilr   Zmultiprocessing.utilr   r   r   r   r%   r)   r-   r8   r   r   r   r   <module>   s6   

