o
    ?Zc                     @   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
y+   ddl	Z	Y nw ddlmZ ddlmZ eeefZzddlmZ W n e
yb   zddlmZ W n e
y_   dZY nw Y nw 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 H/var/www/chikooza/env/lib/python3.10/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 r"zdd l} ddlm} || rW dS W n	 ty!   Y nw dt jv rHzdd l} ddlm} | j|ju r;W dS W dS  tyG   Y dS w dS )Neventletr   )is_monkey_patchedgevent)socketdefault)sysmodulesr   eventlet.patcherr   ImportErrorr   )r   is_eventlet_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_metadata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 dS w )z3Get object fileno, or :const:`None` if not defined.N)r.   FILENO_ERRORSr/   r   r   r   maybe_fileno]   s
   
r2   c                  g   s   g }g }d}zzVz| D ]}|j }|j}||  || q|V  W n   t }Y W |rG| }z|| r;d}W n   t }Y |s0|dkr[t|d |d |d  W ~dS W ~dS |rx| }z|| rld}W n   t }Y |sa|dkrt|d |d |d  w w ~w )zNest context managers.)NNNr         N)__exit__	__enter__appendr   exc_infopopr   )managersexitsvarsexcmgrexitenterr   r   r   nestede   sT   



rA   )__doc__r,   r   
contextlibr   	functoolsr   	importlibr   r&   r   ior   kombu.exceptionsr   AttributeError
ValueErrorr1   billiard.utilr   multiprocessing.utilr    r   r   r!   r*   r.   r2   rA   r   r   r   r   <module>   s@    

