
    _j*                    J    S SK Jr  S SKrS SKJrJr  \S\4   r " S S5      rg)    )annotationsN)AnyCallable.c                  x    \ rS rSrSrSS.SS jjrSS jrSS jrSS.SS	 jjrSS
 jr	SS jr
SS jrSS jrSrg)EventHandlerRegistry   z2Thread-safe (optional) registry of event handlers.F)use_lockc                   0 U l         [        5       U l        U(       a  [        R                  " 5       U l        g S U l        g N)	_handlersset	_once_ids	threadingLock_lock)selfr	   s     J/home/rurouni/.local/lib/python3.13/site-packages/openai/_event_handler.py__init__EventHandlerRegistry.__init__   s(    8:#&5@HINN,<
d
    c                T    U R                   b  U R                   R                  5         g g r   )r   acquirer   s    r   _acquireEventHandlerRegistry._acquire   !    ::!JJ  "r   c                T    U R                   b  U R                   R                  5         g g r   )r   releaser   s    r   _releaseEventHandlerRegistry._release   r   r   oncec                   U R                  5          U R                  R                  U/ 5      nUR                  U5        U(       a$  U R                  R                  [        U5      5        U R                  5         g ! U R                  5         f = fr   )r   r   
setdefaultappendr   addidr   )r   
event_typehandlerr"   handlerss        r   r&   EventHandlerRegistry.add   s^    	~~00R@HOOG$""2g;/MMODMMOs   AA; ;Bc                8   U R                  5          U R                  R                  U5      nUb6   UR                  U5        U R
                  R                  [        U5      5        U R                  5         g ! [         a     NAf = f! U R                  5         f = fr   )	r   r   getremove
ValueErrorr   discardr'   r   )r   r(   r)   r*   s       r   r.   EventHandlerRegistry.remove%   s|    		~~))*5H#OOG, &&r'{3MMO	 "  MMOs.   B A7 $B 7
BB BB Bc                   U R                  5          U R                  R                  U5      nU(       d  / U R                  5         $ [	        U5      nU Vs/ s H   n[        U5      U R                  ;   d  M  UPM"     nnU H8  nUR                  U5        U R                  R                  [        U5      5        M:     UU R                  5         $ s  snf ! U R                  5         f = f)zOReturn a snapshot of handlers for the given event type, removing once-handlers.)	r   r   r-   r   listr'   r   r.   r0   )r   r(   r*   resulth	to_removes         r   get_handlers!EventHandlerRegistry.get_handlers2   s    	~~))*5H MMO (^F$*FFqbet~~.EFIF"&&r!u-  MMO G MMOs*   #C C C6C<AC C C%c                    U R                  5          U R                  R                  U5      n[        U5      U R	                  5         $ ! U R	                  5         f = fr   )r   r   r-   boolr   )r   r(   r*   s      r   has_handlers!EventHandlerRegistry.has_handlersB   s>    	~~))*5H>MMODMMOs   %A Ac                   U R                  5          U R                  R                  5        H6  u  p#U H+  n[        U5      U R                  ;   nUR                  X$US9  M-     M8     U R                  R                  5         U R                  R                  5         U R                  5         g! U R                  5         f = f)zDMove all handlers from this registry into *target*, then clear self.r!   N)r   r   itemsr'   r   r&   clearr   )r   targetr(   r*   r)   r"   s         r   
merge_intoEventHandlerRegistry.merge_intoJ   s    	(,(<(<(>$
'Gg;$..8DJJzJ>  ( )? NN  "NN  "MMODMMOs   BB+ +B=)r   r   r   N)r	   r:   returnNone)rC   rD   )r(   strr)   EventHandlerr"   r:   rC   rD   )r(   rE   r)   rF   rC   rD   )r(   rE   rC   zlist[EventHandler])r(   rE   rC   r:   )r@   r   rC   rD   )__name__
__module____qualname____firstlineno____doc__r   r   r   r&   r.   r7   r;   rA   __static_attributes__ r   r   r   r      s8    <+0 S
!! KP  r   r   )
__future__r   r   typingr   r   rF   r   rM   r   r   <module>rP      s*    #   S!J Jr   