
    ^f.                    J   U 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 dd	lmZmZ dd
lmZ ddlmZ ddlmZmZmZmZ ddlmZ ddlmZ dZ ee           Z!da"de#d<   dZ$ G d de%          Z&d Z'ed             Z(ddZ)ddZ* G d d          Z+dS ) zEvent loop implementation.    )annotationsN)contextmanager)copy)Empty)sleep)GeneratorType)Thenablepromise)
get_logger)fileno)ERRREADWRITEpoll)cached_property   )Timer)Hubget_event_loopset_event_loop
Hub | None_current_loopz<Received unknown event %r for fd %r, please contact support!c                      e Zd ZdZdS )StopzStops the event loop.N)__name__
__module____qualname____doc__     H/var/www/html/env/lib/python3.11/site-packages/kombu/asynchronous/hub.pyr   r       s        r    r   c                     t                      N)r   r   r    r!   _raise_stop_errorr$   $   s    
&&Lr    c               /     K   d V  d S r#   r   )argskwargss     r!   _dummy_contextr(   (   s      	EEEEEr    returnc                     t           S )zGet current event loop object.r   r   r    r!   r   r   -   s    r    loopc                
    | a | S )z"Set the current event loop object.r+   )r,   s    r!   r   r   2   s     MKr    c            
      L   e Zd ZdZeZeZeZdZd'dZe	d             Z
e
j        d             Z
d Zd Zd Zd	 Zd
 Z	 	 d(dZd Zd)dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#e$e%e&e'e(e)e*eeef
d"Z+d# Z,d$ Z-e.d%             Z/e	d&             Z0dS )*r   z~Event loop object.

    Arguments:
    ---------
        timer (kombu.asynchronous.Timer): Specify custom timer instance.
    Nc                x   ||nt                      | _        i | _        i | _        t	                      | _        t	                      | _        t	                      | _        t          j	                    | _
        d| _        d | _        t	                      | _        d | _        d| _        |                                  d S )NFr   )r   timerreaderswritersseton_tickon_close_ready	threadingLock_ready_lock_running_loopconsolidateconsolidate_callbackpropagate_errors_create_poller)selfr0   s     r!   __init__zHub.__init__N   s    #/UUUWW
uuee$>++
 55$(! "r    c                F    | j         s|                                  | j         S r#   )_pollerr?   r@   s    r!   pollerz
Hub.polleri   s&    | 	"!!!|r    c                    || _         d S r#   )rC   )r@   values     r!   rE   z
Hub.pollero   s    r    c                V    |                                   |                                  d S r#   )closer?   rD   s    r!   resetz	Hub.resets   s'    

r    c                p    t                      | _        | j        j        | _        | j        j        | _        d S r#   )r   rC   register_register_fd
unregister_unregister_fdrD   s    r!   r?   zHub._create_pollerw   s-    vv L1"l5r    c                t    | j         0| j                                          d | _         d | _        d | _        d S d S r#   )rC   rI   rM   rO   rD   s    r!   _close_pollerzHub._close_poller|   sC    <#L   DL $D"&D	 $#r    c                :    |                      t                     d S r#   )	call_soonr$   rD   s    r!   stopzHub.stop   s    ()))))r    c                    d                     t          |           t          | j                  t          | j                            S )Nz<Hub@{:#x}: R:{} W:{}>)formatidlenr1   r2   rD   s    r!   __repr__zHub.__repr__   s;    '..tHHc$,''T\):):
 
 	
r    r   
   r   c                   | j         }d }|r|j        rt          |          D ]}t          | j                  \  }}| n	  |             )# |$ r  t
          t          f$ r  t          $ r=}	|	j        t          j	        k    r t                              d|	d           Y d }	~	d }	~	wt          $ r'}	t                              d|	d           Y d }	~	d }	~	ww xY wt          |p||          S )NzError in timer: %rr   exc_info)r0   _queuerangenext	schedulerMemoryErrorAssertionErrorOSErrorerrnoENOMEMloggererror	Exceptionmin)
r@   	min_delay	max_delay
max_timers	propagater0   delayientryexcs
             r!   fire_timerszHub.fire_timers   sL   
 	HU\ 	H:&& H H#DN33u=EHEGGGG    #^4    H H HyEL00LL!5sQLGGGGGGGG  H H HLL!5sQLGGGGGGGGH5%Iy111s$    
A C+3B##C0CCc                    	 |                      |           |                     |           d S # |                     |           w xY wr#   )_unregister_discardr@   fds     r!   _remove_from_loopzHub._remove_from_loop   sK    	R   MM"DMM"s	   . AFc                (   t          |          }	 | j                            ||           |t          z  r| j        n| j        }|r!| j                            |           d ||<   d S ||f||<   d S # t          $ r | 	                    |            w xY wr#   )
r   rE   rL   r   r1   r2   r<   add
ValueErrorry   )r@   rx   callbackflagsr&   r<   dests          r!   r{   zHub.add   s    BZZ	*K  U+++
 $)4<A4<<T\D * $$R(((R#T>R  	 	 	""2&&&	s   A0 0!Bc                N    t          |          }|                     |           d S r#   )r   ry   rw   s     r!   removez
Hub.remove   s'    BZZr"""""r    c                    d| _         	 	 	 |                                  n# t          $ r Y nw xY w'	 d| _         d S # d| _         w xY w)NTr   F)r:   run_oncer   rD   s    r!   run_foreverzHub.run_forever   so    	"MMOOOO   E !DMMMEDM!!!!s!   ;   ; 
-; -; 	Ac                `    	 t          | j                   d S # t          $ r d | _        Y d S w xY wr#   )r`   r,   StopIterationr;   rD   s    r!   r   zHub.run_once   s@    	OOOOO 	 	 	DJJJJ	s    --c                    t          |t                    st          ||          }| j        5  | j                            |           d d d            n# 1 swxY w Y   |S r#   )
isinstancer	   r
   r9   r6   r{   )r@   r}   r&   s      r!   rS   zHub.call_soon   s    (H-- 	/x..H 	& 	&KOOH%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&s   AAAc                :    | j                             |||          S r#   )r0   
call_afterr@   ro   r}   r&   s       r!   
call_laterzHub.call_later   s    z$$UHd;;;r    c                :    | j                             |||          S r#   )r0   call_at)r@   whenr}   r&   s       r!   r   zHub.call_at   s    z!!$$777r    c                :    | j                             |||          S r#   )r0   call_repeatedlyr   s       r!   r   zHub.call_repeatedly   s    z))%4@@@r    c                L    |                      ||t          t          z  |          S r#   )r{   r   r   r@   fdsr}   r&   s       r!   
add_readerzHub.add_reader   s    xxXtcz4888r    c                <    |                      ||t          |          S r#   )r{   r   r   s       r!   
add_writerzHub.add_writer   s    xxXud333r    c                   || j         v }| j                             |          }	 |                     |           |r$|\  }}|                     ||t          |           d S d S # |r#|\  }}|                     ||t          |           w w xY wr#   )r2   getry   r{   r   )r@   rx   writableon_writecbr&   s         r!   remove_readerzHub.remove_reader   s    %<##B''	.""2&&& .#DR-----. .x .#DR----.s   A" "'B	c                8   || j         v }| j                             |          }	 |                     |           |r,|\  }}|                     ||t          t
          z  |           d S d S # |r+|\  }}|                     ||t          t
          z  |           w w xY wr#   )r1   r   ry   r{   r   r   )r@   rx   readableon_readr   r&   s         r!   remove_writerzHub.remove_writer   s    %,""2&&	3""2&&& 3"DRT222223 3x 3"DRT22223s   A* */Bc                x    	 | j                             |           d S # t          t          t          f$ r Y d S w xY wr#   )rE   rN   AttributeErrorKeyErrorrd   rw   s     r!   ru   zHub._unregister   sL    	K""2&&&&&'2 	 	 	DD	s    99c                |    | j         5  | j        }t                      | _        |cd d d            S # 1 swxY w Y   d S r#   )r9   r6   r3   )r@   readys     r!   
_pop_readyzHub._pop_ready   s     	 	KE%%DK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   155c                     fd j         D               j                                           fd j        D               j                                          j                                                                            j        D ]} |                                             }|D ]} |             d S )Nc                :    g | ]}                     |          S r   ru   .0rx   r@   s     r!   
<listcomp>zHub.close.<locals>.<listcomp>  '    555"		"		555r    c                :    g | ]}                     |          S r   r   r   s     r!   r   zHub.close.<locals>.<listcomp>  r   r    )r1   clearr2   r<   rQ   r5   r   )r@   r&   r}   todositems   `    r!   rI   z	Hub.close  s    5555555555555555    	 	HHTNNNN !! 	 	DDFFFF	 	r    c                    t          |          }| j                            |d            | j                            |d            | j                            |           d S r#   )r   r1   popr2   r<   discardrw   s     r!   rv   zHub._discard  sZ    BZZT"""T"""  $$$$$r    c                B    t                               d||d           d S )Nz Callback %r raised exception: %rr   r\   )rg   rh   )r@   r}   rr   s      r!   on_callback_errorzHub.on_callback_error  s0    .# 	 	
 	
 	
 	
 	
r    c              #  @  K   | j         | j        }}| j        j        }| j        }| j        }| j        j        }| j        }| j	        }| j
        }	 |                                 }|D ]}|r
 |             |r ||          nd}t          | j                  D ]} |             |s|rg }	  ||          }n# t          $ r Y d S w xY w|pdD ]\  }}d}||v r+|                    |          |                    |           7d x}}||z  r-	 ||         \  }}n}# |$ r |                     |           Y iw xY w||	z  r-	 ||         \  }}nK# |$ r |                     |           Y w xY w||
z  rd}n#t&                              t*          ||           d}|r?	 |                    |          p|                    |          \  }}n# t,          $ r Y nw xY w||                     |           $t/          ||          rc	  ||           B# t0          $ r,}|j        t2          j        k    r  ||           Y d }~sd }~w|$ r Y ~t6          $ r  ||            w xY w	  ||  # |$ r Y w xY w|r ||           n | ||d                     d V  S)Nr   )rn   r   FTg?)r1   r2   rE   r   rs   r   r0   r^   r<   r=   r>   r   r   r4   r|   r   appendr   r   rg   infoW_UNKNOWN_EVENT	TypeErrorr   rd   re   EBADFri   ) r@   	generatorr   rj   r`   r   r   r   r   r   r   r1   r2   r   rs   
hub_remove	scheduledr<   r=   rn   todor   poll_timeouttick_callbackto_consolidateeventsrx   eventgeneral_errorr   cbargsrr   s                                    r!   create_loopzHub.create_loop   s       <{&[
J%	&#8)	P	??$$D   DFFF?HO;;;;;;aL!%dl!3!3      B.' B.!#!T,//FF!   FF "(2 5! 5!IB$)M[((#KKOO3&--b111 "&&Bt| -%)0JB' % % % ..r222$H%  
-%)0JB' % % % ..r222$H%  -(,OUB???(,$ !!*1++b// +:*1++b// 'B( ! ! ! D! zB !"i00 !
" DHHHH& + + +"yEK77 %&JrNNNNNNNN, ! ! ! D( " " "&JrNNN!"!BKKK$ ! ! ! D!! 9((888 cc,,,---EEEaP	sx   +B7 7
CCDD65D6?EE('E(-G
GGH
I !H??I 
I $I++I43I4c                $    ddl m}  ||           S )Nr   )repr_active)debugr   )r@   r   s     r!   r   zHub.repr_active  s$    &&&&&&{4   r    c                *    ddl m}  || |pg           S )Nr   )repr_events)r   r   )r@   r   r   s      r!   r   zHub.repr_events  s*    &&&&&&{42...r    c                *    t          | j                  S r#   )iterr0   rD   s    r!   ra   zHub.scheduler  s    DJr    c                P    | j         |                                 | _         | j         S r#   )r;   r   rD   s    r!   r,   zHub.loop  s%    :))++DJzr    r#   )r   rZ   rZ   r   )r   F)1r   r   r   r   r   r   r   r5   rA   propertyrE   setterrJ   r?   rQ   rT   rY   rs   ry   r{   r   r   r   rS   r   r   r   r   r   r   r   ru   r   rI   rv   r   r   r   rj   r`   r   r   r   r   r   r   r   ra   r,   r   r    r!   r   r   9   s         D E C H   6   X
 ]  ]  6 6 6
' ' '* * *
 
 

 AC 2 2 2 2.  * * * *# # #	" 	" 	"    < < <8 8 8A A A9 9 94 4 4. . .3 3 3      &% % %
 
 
 (u#D}%D3] ] ] ]~! ! !/ / /     _    X  r    r   )r)   r   )r,   r   r)   r   ),r   
__future__r   re   r7   
contextlibr   r   queuer   timer   typesr   r   viner	   r
   	kombu.logr   kombu.utils.compatr   kombu.utils.eventior   r   r   r   kombu.utils.objectsr   r0   r   __all__r   rg   r   __annotations__r   BaseExceptionr   r$   r(   r   r   r   r   r    r!   <module>r      s         " " " " " "      % % % % % %                   , , , , , , " " " " " " " "             % % % % % % 6 6 6 6 6 6 6 6 6 6 6 6 / / / / / /      
5	H		         
         =         
 
 
   
   V V V V V V V V V Vr    