
    Iht                        d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	m
Z ddlmZ ddlmZ eeefZ	 dd	lmZ dad
 Zd Zd Zd Zd Zd Zed        Zy# e$ r 	 dd	lmZ n# e$ r dZY nw xY wY 9w xY w)zPython Compatibility Utilities.    )annotationsN)contextmanagerwraps)metadata)UnsupportedOperation)reraise)register_after_forkc                .     t                fd       }|S )z*Decorator to mark generator as co-routine.c                 .     | i |}t        |       |S N)next)argskwargsitgens      K/var/www/html/planif/env/lib/python3.12/site-packages/kombu/utils/compat.pywind_upzcoro.<locals>.wind_up   s    $!&!R	    r   )r   r   s   ` r   coror      s     
3Z  Nr   c                     dt         j                  v r	 dd l} ddlm}  ||       ry	 dt         j                  v r&	 dd l} ddlm} | j                  |j                  u ry	 yy# t
        $ r Y Dw xY w# t
        $ r Y yw xY w)Neventletr   )is_monkey_patchedgevent)socketdefault)sysmodulesr   eventlet.patcherr   ImportErrorr   )r   is_eventlet_gsockets      r   _detect_environmentr#   &   s    S[[ 	I6"! # 3;;	1}}/ 0
   		  		s"   A! "A0 !	A-,A-0	A<;A<c                 .    t         
t               a t         S )z=Detect the current environment: default, eventlet, or gevent.)_environmentr#    r   r   detect_environmentr'   B   s     *,r   c                    t         j                  dk\  rt        j                  |       }n't        j                         }	 |j	                  | g       }d |D        S # t
        $ r |j                  |       }Y &w xY w)z,Return setuptools entrypoints for namespace.)   
   )groupc              3  @   K   | ]  }||j                         f  y wr   )load).0eps     r   	<genexpr>zentrypoints.<locals>.<genexpr>U   s"       
RWWYs   )r   version_infoimportlib_metadataentry_pointsgetAttributeErrorselect)	namespacer3   s     r   entrypointsr8   J   s~    
6!)66YG)668	@'++Ir:L   	@'..Y.?L	@s    A A98A9c                Z    t        | t        j                        r| S | j                         S )z!Get fileno from file-like object.)
isinstancenumbersIntegralfilenofs    r   r=   r=   [   s#    !W%%&88:r   c                8    	 t        |       S # t        $ r Y yw xY w)z3Get object fileno, or :const:`None` if not defined.N)r=   FILENO_ERRORSr>   s    r   maybe_filenorB   b   s#    ay s   
 	c               '  V  K   g }g }d}	 	 | D ]A  }|j                   }|j                  }|j                   |              |j                  |       C | |r|j                         }	  || rd}|r|dk7  rt        |d   |d   |d          	 ~y	 ~y#  t        j                         }Y VxY w#  t        j                         }Y WxY w# |r7|j                         }	  || rd}n#  t        j                         }Y nxY w|r7|dk7  rt        |d   |d   |d          w w xY w# ~w xY ww)zNest context managers.)NNNr         N)__exit__	__enter__appendr   exc_infopopr	   )managersexitsvarsexcmgrexitenters          r   nestedrR   j   sF     ED
C	0 #||EG$T"	#
 J yy{)Sz0	  (( AAA/ ) !	!,,.C),,.C yy{)Sz0),,.C  (( AAA/	 ) s}   D)A
B D# (B. /D# 2D# D)D)B+)C	 .CD# 	D C%$D %C=;D D  D# #D&&D))__doc__
__future__r   r;   r   
contextlibr   	functoolsr   	importlibr   r2   ior   kombu.exceptionsr	   r5   
ValueErrorrA   billiard.utilr
   r    multiprocessing.utilr%   r   r#   r'   r8   r=   rB   rR   r&   r   r   <module>r]      s    % "  
 %  4 # $-AB#1 8"  s  ##< #"##s5   A A5A%$A5%A/,A5.A//A54A5