
    ,h+                    ^   % S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJr  SSKJr  SSKJ	r	  SSKJ
r
  SS	KJr  SS
KJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKrSSKJr  SSKJr  \R*                  (       a  SSKJr  SSKJr  \S\4   r\\\\\4   4   r\\\\4   r\" SSS9r " S S5      r \
S   r!\RD                  " \#5      r$S\%S'    \
S\4   r&\RD                  " \#5      r'S\%S'    S'S  jr(      S(S! jr)      S)S" jr*        S*S# jr+      S+S$ jr, " S% S&\\   5      r-g),aJ  Provides managed registration services on behalf of :func:`.listen`
arguments.

By "managed registration", we mean that event listening functions and
other objects can be added to various collections in such a way that their
membership in all those collections can be revoked at once, based on
an equivalent :class:`._EventKey`.

    )annotationsN)Any)Callable)cast)Deque)Dict)Generic)Iterable)Optional)Tuple)TypeVar)Union   )exc)util   )RefCollection)
dispatcher._ETEventTarget)boundc                  (    \ rS rSr% SrSrS\S'   Srg)r   2   zrepresents an event target, that is, something we can listen on
either with that target as a class or as an instance.

Examples include:  Connection, Mapper, Table, Session,
InstrumentedAttribute, Engine, Pool, Dialect.

 zdispatcher[Any]dispatchN)__name__
__module____qualname____firstlineno____doc__	__slots____annotations____static_attributes__r       Q/var/www/auris/envauris/lib/python3.13/site-packages/sqlalchemy/event/registry.pyr   r   2   s     Ir$   )zweakref.ref[RefCollection[Any]]weakref.ref[_ListenerFnType]z6Dict[_EventKeyTupleType, _RefCollectionToListenerType]_key_to_collectionr&   z>Dict[weakref.ref[RefCollection[Any]], _ListenerToEventKeyType]_collection_to_keyc                (   [         (       a
  U [         ;  a  g [        SU 5      n [         R                  U 5      nUR                  5        HG  nU[        ;   d  M  [        U   nUR                  U 5        U(       a  M2  [        R                  U5        MI     g )Nz'weakref.ref[RefCollection[EventTarget]])r(   r   popvaluesr'   )reflistener_to_keykeydispatch_regs       r%   _collection_gcedr0   g   sw    ,>!>
8#
>C(,,S1O%%'$$-c2LS!<"&&s+ (r$   c                    U R                   n[        U   nUR                  n[        R                  " U R                  5      nXC;   a  gXSU'   [
        U   nX&U'   g)NFT)_keyr'   r,   weakref
_listen_fnr(   )	event_keyownerr.   r/   	owner_ref
listen_refr-   s          r%   _stored_in_collectionr9   x   sZ     ..C%c*L		IY112J ((3O"%Jr$   c                   U R                   n[        U   n[        R                  " U R                  5      nUR                  nUR                  US 5        U(       d  [        U	 U[        ;   a  [        U   nUR                  US 5        g g N)r2   r'   r3   r,   r4   r*   r(   )r5   r6   r.   r/   r8   r7   r-   s          r%   _removed_from_collectionr<      sy     ..C%c*LY112J		IY%s#&&,Y7
 	J- 'r$   c                8   U(       d  g UR                   nU R                   n[        U   n[        U   nU H@  n[        R                   " U5      n XX   n	 [        U	   n
XJ;   a  X   U:X  d   eOXU'   XU'   MB     g ! [         a     MR  f = f! [         a     Mc  f = fr;   )r,   r(   r3   KeyErrorr'   )newowneroldownerelementsoldowner_refnewowner_refold_listener_to_keynew_listener_to_key	listen_fnr8   r.   r/   s              r%   _stored_in_collection_multirG      s    
 <<L<<L,\:,\:	[[+
	%1C	-c2L '-;;;)3&*-J''   	 	  		s$   A:	B:
BB
BBc                    U(       d  g U R                   n[        U   nU HH  n[        R                   " U5      nX5   n[        U   nUR	                  US 5        U(       a  MA  [        U	 MJ     g r;   )r,   r(   r3   r'   r*   )r6   rA   r7   r-   rF   r8   r.   r/   s           r%   _clearrI      sd     		I(3O	[[+
))#.D)|"3' r$   c                  F   \ rS rSr% SrSrS\S'   S\S'   S\S	'   S
\S'   S\S'   S\S'    S         SS jjr\S S j5       r	S!S jr
S"S jrS#S jrS$S jrS%S jr     S&           S'S jjr\S(S j5       r      S)S jr      S*S jr      S)S jrSrg)+	_EventKey   z$Represent :func:`.listen` arguments.)target
identifierfnfn_keyfn_wrapdispatch_targetr   rM   strrN   _ListenerFnTyperO   _ListenerFnKeyTyperP   r   rR   Optional[_ListenerFnType]_fn_wrapNc                    Xl         X l        X0l        [        U[        R
                  5      (       a0  [        UR                  5      [        UR                  5      4U l	        O[        U5      U l	        XPl
        X@l        g r;   )rM   rN   rO   
isinstancetypes
MethodTypeid__func____self__rP   rQ   rR   )selfrM   rN   rO   rR   rW   s         r%   __init___EventKey.__init__   sX     $b%**++R[[/2bkk?:DKR&DK.r$   c                Z    [        U R                  5      U R                  U R                  4$ r;   )r\   rM   rN   rP   r_   s    r%   r2   _EventKey._key   s    4;;$++>>r$   c                    XR                   L a  U $ [        U R                  U R                  U R                  U R
                  US9$ N)rW   )r4   rK   rM   rN   rO   rR   )r_   rQ   s     r%   with_wrapper_EventKey.with_wrapper  s?    oo%K$$  r$   c                    XR                   L a  U $ [        U R                  U R                  U R                  UU R
                  S9$ rf   )rR   rK   rM   rN   rO   rQ   )r_   rR   s     r%   with_dispatch_target_EventKey.with_dispatch_target  s?    222K r$   c                   UR                  SS5      nUR                  SS5      nUR                  SS5      nU R                  U R                  U R                  pn[	        UR
                  U5      n	U	R                  X5      n
U R                  U
5      n [	        U R                  R
                  R                  U R                  5      n[        US5      (       a  UR                  5         U(       d  U(       a?  U R                  [        R                  " U R                  US95      R                  " U0 UD6  g U R                  R
                  R                  " U /UQ70 UD6  g )NonceF_once_unless_exceptionnamed_sa_warn)retry_on_exception)r*   rR   rN   r4   getattrr   _adjust_fn_specrg   _eventshasattrrp   r   	only_oncelisten_listen)r_   argskwrm   once_unless_exceptionro   rM   rN   rO   dispatch_collectionadjusted_fnstub_functions               r%   rw   _EventKey.listen  s7   vvfe$ "'? Gw&   OOOO  &foozB)99"D  -  ))114??
 =*--""$(OO8M f	 	" !	"   ))11$DDDr$   c           	     ~   U R                   nU[        ;  aA  [        R                  " SU R                  < SU R
                  < SU R                  < S35      e[        R                  U5      nUR                  5        H=  u  p4U" 5       nU" 5       nUc  M  Uc  M  UR                  U R                  U5      5        M?     g )NzNo listeners found for event z /  )r2   r'   r   InvalidRequestErrorrM   rN   rO   r*   itemsremoverg   )r_   r.   r/   collection_reflistener_ref
collectionlistener_fns          r%   r   _EventKey.remove<  s    ii(());;: 
 *--c2,8,>,>,@(N')J&.K%+*A!!$"3"3K"@A	 -Ar$   c                (    U R                   [        ;   $ )z6Return True if this event key is registered to listen.)r2   r'   rc   s    r%   contains_EventKey.containsM  s    yy...r$   c                   U R                   U R                  pv[        UR                  U5      nUR	                  UR                  5      n	U(       a  U	R                  5         U(       a  U	R                  X5        g U	R                  X5        g r;   )rR   rN   rr   r   
for_modify_set_asyncioinsertappend)
r_   	propagater   ro   retvalasynciorM   rN   r|   r   s
             r%   base_listen_EventKey.base_listenQ  sh     "114??
%foozB(33FOOD
##%d.d.r$   c                @    U R                   =(       d    U R                  $ r;   )rQ   rO   rc   s    r%   r4   _EventKey._listen_fnf  s    ||&tww&r$   c                \    [        X5      (       a  UR                  U R                  5        ggNTF)r9   r   r4   r_   r6   list_s      r%   append_to_list_EventKey.append_to_listj  s%    
 !--LL)r$   c                P    [        X5        UR                  U R                  5        g r;   )r<   r   r4   r   s      r%   remove_from_list_EventKey.remove_from_listu  s    
 	!-T__%r$   c                \    [        X5      (       a  UR                  U R                  5        ggr   )r9   
appendleftr4   r   s      r%   prepend_to_list_EventKey.prepend_to_list}  s'    
 !--T__-r$   )rR   rO   rP   rQ   rN   rM   r;   )
rM   r   rN   rS   rO   rT   rR   r   rW   rV   )return_EventKeyTupleType)rQ   rT   r   _EventKey[_ET])rR   r   r   r   )ry   r   rz   r   r   None)r   r   )r   bool)FFFNF)r   r   r   r   ro   r   r   zOptional[bool]r   r   r   r   )r   rT   )r6   RefCollection[_ET]r   Deque[_ListenerFnType]r   r   )r6   r   r   r   r   r   )r   r   r   r   r    r!   r"   r`   propertyr2   rg   rj   rw   r   r   r   r4   r   r   r   r#   r   r$   r%   rK   rK      sa   .I KO'' /3// / 	/
 / ,/$ ? ?

E@B"/  !%// / 	/
 / / 
/* ' '	!	 &	 
		&!& && 
	&	!	 &	 
		r$   rK   )r,   zweakref.ref[Any]r   r   )r5   r   r6   r   r   r   )r5   r   r6   r   r   r   )r?   r   r@   r   rA   Iterable[_ListenerFnType]r   r   )r6   r   rA   r   r   r   ).r    
__future__r   collectionsrZ   typingr   r   r   r   r   r	   r
   r   r   r   r   r3    r   r   TYPE_CHECKINGattrr   baser   rT   intrU   rS   r   r   r   _RefCollectionToListenerTypedefaultdictdictr'   r"   _ListenerToEventKeyTyper(   r0   r9   r<   rG   rI   rK   r   r$   r%   <module>r      s   #                 	# 38$3c3h/0 3%778  e=)   $$   D! J 	 "  D!   "	,"&8	*..&8.	..!. !. !. (!. 
	!.H(('( 
(&k kr$   