
    2Rj*                    J    d dl mZ d dlZd dlmZmZ edef   Z G d d      Zy)    )annotationsN)AnyCallable.c                  \    e Zd ZdZddddZddZddZddddZdd	Zdd
Z	ddZ
ddZy)EventHandlerRegistryz2Thread-safe (optional) registry of event handlers.F)use_lockc               v    i | _         t               | _        |rt        j                         | _        y d | _        y N)	_handlersset	_once_ids	threadingLock_lock)selfr   s     ]/var/www/html/meridian/meridian-ai/venv/lib/python3.12/site-packages/openai/_event_handler.py__init__zEventHandlerRegistry.__init__   s(    8:#&5@HINN,<
d
    c                R    | j                   | j                   j                          y y r
   )r   acquirer   s    r   _acquirezEventHandlerRegistry._acquire   !    ::!JJ  "r   c                R    | j                   | j                   j                          y y r
   )r   releaser   s    r   _releasezEventHandlerRegistry._release   r   r   oncec                  | j                          	 | j                  j                  |g       }|j                  |       |r$| j                  j                  t        |             | j                          y # | j                          w xY wr
   )r   r   
setdefaultappendr   addidr   )r   
event_typehandlerr   handlerss        r   r"   zEventHandlerRegistry.add   s^    	~~00R@HOOG$""2g;/MMODMMOs   AA6 6Bc                4   | j                          	 | j                  j                  |      }|6	 |j                  |       | j
                  j                  t        |             | j                          y # t        $ r Y @w xY w# | j                          w xY wr
   )	r   r   getremove
ValueErrorr   discardr#   r   )r   r$   r%   r&   s       r   r)   zEventHandlerRegistry.remove%   s|    		~~))*5H#OOG, &&r'{3MMO	 "  MMOs.   B A6 $B 6	B?B BB Bc                   | j                          	 | j                  j                  |      }|sg | j                          S t	        |      }|D cg c]  }t        |      | j                  v s| }}|D ]7  }|j                  |       | j                  j                  t        |             9 || j                          S c c}w # | j                          w xY w)zOReturn a snapshot of handlers for the given event type, removing once-handlers.)	r   r   r(   r   listr#   r   r)   r+   )r   r$   r&   resulth	to_removes         r   get_handlersz!EventHandlerRegistry.get_handlers2   s    	~~))*5H MMO (^F$*Fqbet~~.EFIF ."&&r!u-. MMO G MMOs)   C C C-C1?C C Cc                    | j                          	 | j                  j                  |      }t        |      | j	                          S # | j	                          w xY wr
   )r   r   r(   boolr   )r   r$   r&   s      r   has_handlersz!EventHandlerRegistry.has_handlersB   s>    	~~))*5H>MMODMMOs   %A Ac                   | j                          	 | j                  j                         D ]7  \  }}|D ]-  }t        |      | j                  v }|j                  |||       / 9 | j                  j                          | j                  j                          | j                          y# | j                          w xY w)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_intozEventHandlerRegistry.merge_intoJ   s    	(,(<(<(> ?$
H' ?Gg;$..8DJJz7J>?? NN  "NN  "MMODMMOs   BB+ +B=N)r   r3   returnNone)r:   r;   )r$   strr%   EventHandlerr   r3   r:   r;   )r$   r<   r%   r=   r:   r;   )r$   r<   r:   zlist[EventHandler])r$   r<   r:   r3   )r8   r   r:   r;   )__name__
__module____qualname____doc__r   r   r   r"   r)   r1   r4   r9    r   r   r   r      s8    <+0 S
!! KP  r   r   )
__future__r   r   typingr   r   r=   r   rB   r   r   <module>rE      s*    #   S!J Jr   