
    ,h;                    <   % S r SSKJ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Jr  SSKJ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  \R<                  " \5      r S\!S'   S/S jr" " S S5      r# " S  S!\\   5      r$ " S" S#\$\   5      r%S0S$ jr& " S% S&\\   5      r' " S' S(\$\   5      r( " S) S*\'\   5      r) " S+ S,\\   5      r* " S- S.\*\   5      r+g)1a  Base implementation classes.

The public-facing ``Events`` serves as the base class for an event interface;
its public attributes represent different kinds of events.   These attributes
are mirrored onto a ``_Dispatch`` class, which serves as a container for
collections of listener functions.   These collections are represented both
at the class level of a particular ``_Dispatch`` class as well as within
instances of ``_Dispatch``.

    )annotationsN)Any)cast)Dict)Generic)Iterator)List)Mapping)MutableMapping)Optional)overload)Tuple)Type)Union   )_ClsLevelDispatch)_EmptyListener)_InstanceLevelDispatch)_JoinedListener)_ET)	_EventKey   )util)Literalz8MutableMapping[str, List[Type[_HasEventsDispatch[Any]]]]_registrarsc                v    U R                  S5      (       + =(       a    U S:g  =(       d    U R                  S5      $ )N_dispatch	_sa_event)
startswith)names    M/var/www/auris/envauris/lib/python3.13/site-packages/sqlalchemy/event/base.py_is_event_namer#   2   s3     OOC  7TZ%7&		%&    c                  "    \ rS rSrSrSS jrSrg)_UnpickleDispatch<   zySerializable callable that re-generates an instance of
:class:`_Dispatch` given a particular :class:`.Events` subclass.

c                    UR                    HG  nSUR                  ;   d  M  [        SUR                  S   R                  5      R	                  U5      s  $    [        S5      e)Nr   _Dispatch[_ET]z*No class with a 'dispatch' member present.)__mro____dict__r   r   
_for_classAttributeError)self_instance_clsclss      r"   __call___UnpickleDispatch.__call__B   sW     ((CS\\)$cll:&>&G&G*]+, ) !!MNNr$    N)r/   	Type[_ET]returnr)   )__name__
__module____qualname____firstlineno____doc__r1   __static_attributes__r3   r$   r"   r&   r&   <   s    
Or$   r&   c                  L    \ rS rSr% SrS\S'   S	S jrS
S jr\SS j5       r	Sr
g)_DispatchCommonL   r3   Optional[Type[_ET]]r/   c                    [        5       eNNotImplementedErrorr.   others     r"   _join_DispatchCommon._joinQ       !##r$   c                    [        5       erA   rB   r.   r!   s     r"   __getattr___DispatchCommon.__getattr__T   rH   r$   c                    [        5       erA   rB   r.   s    r"   _events_DispatchCommon._eventsW   s    !##r$   NrE   _DispatchCommon[_ET]r5   _JoinedDispatcher[_ET]r!   strr5   z_InstanceLevelDispatch[_ET]r5   Type[_HasEventsDispatch[_ET]])r6   r7   r8   r9   	__slots____annotations__rF   rK   propertyrO   r;   r3   r$   r"   r=   r=   L   s+    I&&$$ $ $r$   r=   c                     \ rS rSr% SrSrS\S'   \R                  " 5       r	S\S'   S\S	'   S
\S'   S\S'   S\S'   S\S'     S   SS jjr
S S 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rSrg)*	_Dispatch\   a  Mirror the event listening definitions of an Events class with
listener collections.

Classes which define a "dispatch" member will return a
non-instantiated :class:`._Dispatch` subclass when the member
is accessed at the class level.  When the "dispatch" member is
accessed at the instance level of its owner, an instance
of the :class:`._Dispatch` class is returned.

A :class:`._Dispatch` class is generated for each :class:`.Events`
class defined, by the :meth:`._HasEventsDispatch._create_dispatcher_class`
method.  The original :class:`.Events` classes remain untouched.
This decouples the construction of :class:`.Events` subclasses from
the implementation used by the event internals, and allows
inspecting tools like Sphinx to work in an unsurprising
way against the public API.

)_parentr/   r+   _empty_listenersbool_active_historyz9MutableMapping[Type[_ET], Dict[str, _EmptyListener[_ET]]]_empty_listener_regzDict[str, _EmptyListener[_ET]]r_   z	List[str]_event_namesr?   r/   zType[_JoinedDispatcher[_ET]]_joined_dispatch_clsrW   rO   Nc           	     $   Xl         X l        U(       a  Uc   e U R                  U   U l        g 0 U l        g ! [         aN    UR
                   Vs0 s H  nUR                  [        X25      _M     Os  snf sn=U l        U R                  U'    g f = frA   )r^   r/   rb   r_   KeyError_event_descriptorsr!   r   )r.   parentinstance_clslss       r"   __init___Dispatch.__init__   s    
 )%%%(,(@(@(N% %'D!  
 %777 GG^B==7%(@(@ )s   7 B A0/BBc                     U R                   U   n[        XR                  U5        U$ ! [         a    [	        U5      ef = frA   )r_   setattrr!   rf   r-   )r.   r!   rj   s      r"   rK   _Dispatch.__getattr__   sH    	&&t,B D''2&I	  	' &&	's   ) ?c              #  L   #    U R                    H  n[        X5      v   M     g 7frA   )rc   getattr)r.   ks     r"   rg   _Dispatch._event_descriptors   s"     ""A $"" #s   "$c                <    U R                   R                  " U40 UD6$ rA   )rO   _listenr.   	event_keykws      r"   ru   _Dispatch._listen   s    ||##I444r$   c                $    U R                  X5      $ rA   )	__class__)r.   ri   s     r"   r,   _Dispatch._for_class   s    ~~d11r$   c                <    UR                   nU R                  U5      $ rA   )r{   r,   )r.   instanceri   s      r"   _for_instance_Dispatch._for_instance   s    ))|,,r$   c                \    SU R                   R                  ;   d   eU R                  X5      $ )zCreate a 'join' of this :class:`._Dispatch` and another.

This new dispatcher will dispatch events to both
:class:`._Dispatch` objects.

rd   )r{   r+   rd   rD   s     r"   rF   _Dispatch._join   s-     &)@)@@@@((55r$   c                0    [        5       U R                  44$ rA   )r&   r/   rN   s    r"   
__reduce___Dispatch.__reduce__   s     "T%7%7$999r$   c                    UR                    HK  n[        U[        5      (       a  M  [        XR                  5      R                  U 5      R                  X2S9  MM     g)zAPopulate from the listeners in another :class:`_Dispatch`
object.)only_propagateN)rg   
isinstancer   rq   r!   
for_modify_update)r.   rE   r   rj   s       r"   r   _Dispatch._update   sN    
 **B"n--D''"--d3;; <  +r$   c                h    U R                    H"  nUR                  U 5      R                  5         M$     g rA   )rg   r   clear)r.   rj   s     r"   _clear_Dispatch._clear   s'    ))BMM$%%' *r$   )r_   r/   r^   rA   )rh   zOptional[_Dispatch[_ET]]ri   r?   rT   )r5   z Iterator[_ClsLevelDispatch[_ET]]rw   _EventKey[_ET]rx   r   r5   None)ri   r4   r5   r)   )r~   r   r5   r)   rQ   )r5   zUnion[str, Tuple[Any, ...]])T)rE   r)   r   r`   r5   r   r5   r   )r6   r7   r8   r9   r:   rX   rY   weakrefWeakKeyDictionaryrb   rk   rK   rZ   rg   ru   r,   r   rF   r   r   r   r;   r3   r$   r"   r\   r\   \   s    * KI 	!!#   $ 54&&66** -1'(' *',	 # #52-	6: =A
#
59
	
(r$   r\   c                    U R                   R                   H2  n[        U   R                  U 5        [        U   (       a  M+  [        U	 M4     g rA   )r   rc   r   remove)r0   rr   s     r"   _remove_dispatcherr      s8    \\&&Ac"1~~A 'r$   c                      \ rS rSr% S\S'    S\S'    \R                  (       a  SS jrSS jr\	      SS j5       r
\	S	S	S	S	S
.           SS jj5       r\      SS j5       r\	        SS j5       rSrg)_HasEventsDispatch   r?   _dispatch_targetr)   r   c                    g rA   r3   rJ   s     r"   rK   _HasEventsDispatch.__getattr__   s    r$   c                f    U R                  U R                  U R                  U R                  5        g)zGIntercept new Event subclasses and create associated _Dispatch
classes.N)_create_dispatcher_classr6   	__bases__r+   r0   s    r"   __init_subclass__$_HasEventsDispatch.__init_subclass__   s"     	$$S\\3==#,,Or$   c                    [        5       erA   rB   )r0   target
identifiers      r"   _accept_with_HasEventsDispatch._accept_with   s     "##r$   F	propagateinsertnamedasyncioc                   [        5       erA   rB   r0   rw   r   r   r   r   s         r"   ru   _HasEventsDispatch._listen   s     "##r$   c                @    U" S 5      U l         Xl        U R                   $ rA   )r   rO   )klassdispatch_clss     r"   _set_dispatch _HasEventsDispatch._set_dispatch  s      &d+$~~r$   c           
        [        U S5      (       a  U R                  R                  nO[        nU Vs/ s H  n[	        U5      (       d  M  UPM     nn[        S[        SU-  U4SU05      5      nXgl        U R                  X5      nUR                   H3  n[        X[        XU   5      5        [        U   R                  U 5        M5     UR                   H  n	[        U	[        5      (       d  M  U	[        Ld  M%  U	R                  R                  R                    H>  n
[        XR"                  U
5        UR                  R                  U
R"                  5        M@     M     [%        U SS5      (       aS  U R&                  nUc   e[        US5      (       a!  SUR(                  ;   a  [+        U 5      Ul        O[-        U 5      Ul        [        SUR.                  -  [0        4SU05      nXl        U[5        5       UR.                  '   gs  snf )	zNCreate a :class:`._Dispatch` class corresponding to an
:class:`.Events` class.r   Type[_Dispatch[_ET]]z
%sDispatchrX   r   N_slots_dispatchzJoined%s)hasattrr   r{   r\   r#   r   typerc   r   rn   r   r   appendr   
issubclassrO   rg   r!   rq   r   rX   slots_dispatcher
dispatcherr6   _JoinedDispatcherrd   globals)r0   	classnamebasesdict_dispatch_baserr   event_namesr   dispatch_instsuper_rj   dispatch_target_clsr   s                r"   r   +_HasEventsDispatch._create_dispatcher_class  s    3
##LL22M%M"'=%Q>!+<q%="y( k*
 %0!))#<**AM&71X&FGN!!#& + #,,F&),,y1H ..11DDBM77B7 --44RWW= E - 3*D11"%"6"6&222+[99%)<)F)FF/?/D#,/9##,... +&

 -2) %*	%..!S >s   HHr3   NrT   r   r   zUnion[_ET, Type[_ET]]r   rU   r5   zOptional[Union[_ET, Type[_ET]]]rw   r   r   r`   r   r`   r   r`   r   r`   r5   r   )r   rW   r   r   r5   r)   )r   rU   r   zTuple[type, ...]r   zMapping[str, Any]r5   r   )r6   r7   r8   r9   rY   typingTYPE_CHECKINGrK   r   classmethodr   ru   staticmethodr   r   r;   r3   r$   r"   r   r      s   )); LP $*$8;$	($ $
 
  	$!	$ 		$
 	$ 	$ 	$ 
	$ 	$ ,* 
  7*7*$47*=N7*	7* 7*r$   r   c                      \ rS rSr% SrSrS\S'   S\S'   S\S'       SS	 jrSS
 jrSS jr	SS jr
\SS j5       rSrg)r   iQ  z5Represent a connection between two _Dispatch objects.localrh   r/   rR   r   rh   r?   r/   c                R    Xl         X l        U R                   R                  U l        g rA   r   )r.   r   rh   s      r"   rk   _JoinedDispatcher.__init__Z  s      
!ZZ55r$   c                J    U R                   U R                  U R                  44$ rA   )r{   r   rh   rN   s    r"   r   _JoinedDispatcher.__reduce__a  s    T[[ 9::r$   c                    [        U R                  U5      n[        U R                  UR                  U5      n[        XR                  U5        U$ rA   )rq   r   r   rh   r!   rn   )r.   r!   rj   jls       r"   rK   _JoinedDispatcher.__getattr__d  s=     TZZ&T[["''26ggr"	r$   c                <    U R                   R                  " U40 UD6$ rA   )rh   ru   rv   s      r"   ru   _JoinedDispatcher._listenl  s    {{""9333r$   c                .    U R                   R                  $ rA   )rh   rO   rN   s    r"   rO   _JoinedDispatcher._eventso  s    {{"""r$   )r/   r   rh   N)r   rR   rh   rR   )r5   r   )r!   rU   r5   z_JoinedListener[_ET]r   rV   )r6   r7   r8   r9   r:   rX   rY   rk   r   rK   ru   rZ   rO   r;   r3   r$   r"   r   r   Q  sT    ?2I  &&6)63G6;4 # #r$   r   c                      \ rS rSrSr\      SS j5       r\SSSSS.           SS jj5       r\SS j5       r\SS j5       r	S	r
g
)Eventsit  z>Define event listening functions for a particular target type.c                >  ^ SU4S jjnSU4S jjn[        TS5      (       a{  U" U R                  R                  5      (       dX  U" [        U R                  R                  5      (       d2  U" [        5      (       a#  U" U R                  R                  5      (       a  T$ g )Nc                 .   > [        U4S jU  5       5      $ )Nc              3  P   >#    U  H  n[        TR                  U5      v   M     g 7frA   )r   r   ).0tr   s     r"   	<genexpr>;Events._accept_with.<locals>.dispatch_is.<locals>.<genexpr>|  s     Eu!z&//155us   #&)all)typesr   s    r"   dispatch_is(Events._accept_with.<locals>.dispatch_is{  s    EuEEEr$   c                   > [        STR                  5      R                  n[        U[        5      (       a-  [        SU5      R                  n[        U[        5      (       a  M-  [        X5      $ )NrS   )r   r   rh   r   r   )r   rh   r   s     r"   dispatch_parent_is/Events._accept_with.<locals>.dispatch_parent_is~  sX    2FOODKKFV%6776?FF V%677 f((r$   r   )r   	Type[Any]r5   r`   )r   r   r5   r`   )r   r   r{   r   r   )r0   r   r   r   r   s    `   r"   r   Events._accept_withw  st    	F	) 6:&&CLL2233tS\\%;%;<< 122*3<<+A+ABB r$   Fr   c               $    UR                  X#XES9  g )Nr   )base_listenr   s         r"   ru   Events._listen  s     	e 	 	
r$   c                $    UR                  5         g rA   )r   )r0   rw   s     r"   _removeEvents._remove  s    r$   c                8    U R                   R                  5         g rA   )r   r   r   s    r"   r   Events._clear  s    r$   r3   Nr   r   )rw   r   r5   r   r   )r6   r7   r8   r9   r:   r   r   ru   r   r   r;   r3   r$   r"   r   r   t  s    H*8;	( 8 
  
!
 	

 
 
 
 

 
    r$   r   c                  `    \ rS rSrSrS	S jr\      S
S j5       r\SS j5       rSS jrSrg)r   i  zDescriptor used by target classes to
deliver the _Dispatch class at the class level
and produce new _Dispatch instances for target
instances.

c                2    UR                   U l         Xl        g rA   r   events)r.   r   s     r"   rk   dispatcher.__init__  s    r$   c                    g rA   r3   r.   objr0   s      r"   __get__dispatcher.__get__  s      #r$   c                    g rA   r3   r   s      r"   r  r    s    ILr$   c                    Uc  U R                   $ U R                   R                  U5      n X1R                  S'   U$ ! [         a  n[	        SU< S35      UeS nAff = f)Nr   ztarget z> doesn't have __dict__, should it be defining _slots_dispatch?)r   r   r+   r-   	TypeError)r.   r   r0   dispaes        r"   r  r    si    ;== }}**3/	'+LL$   	/25 	s   < 
AAAr   N)r   rW   )r   zLiteral[None]r0   r   r5   r   )r   r   r0   r   r5   rR   r   r   r0   r   r5   r   )	r6   r7   r8   r9   r:   rk   r   r  r;   r3   r$   r"   r   r     sM     # #'0#	# # L Lr$   r   c                      \ rS rSrSS jrSrg)r   i  c                    Uc  U R                   $ [        US5      (       a  UR                  $ U R                   R                  U5      nX1l        U$ )Nr   )r   r   r   r   )r.   r   r0   r  s       r"   r  slots_dispatcher.__get__  sJ    ;== 3)**&&&}}**3/"r$   r3   Nr  )r6   r7   r8   r9   r  r;   r3   r$   r"   r   r     s    	r$   r   )r!   rU   r5   r`   )r0   rW   r5   r   ),r:   
__future__r   r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   attrr   r   r   r   registryr   r    r   util.typingr   defaultdictlistr   rY   r#   r&   r=   r\   r   r   r   r   r   r   r3   r$   r"   <module>r     s  	 #         !       #   ( !    ! 	T E 
&O O $gcl $ {($ {(|m* m*` #,  #F4$ 4n   F
z# 
r$   