ó
    Ñ]jUT  ã                  ó  • S r SSKJr  SSKrSSKJr  SSK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	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%  SS!K&J'r'  \" S"\
S#9r(\	RR                  (       a  SS$K*J+r+  SS%K*J,r,  SS&K*J-r-   " S' S(\#R\                  \\   5      r/ " S) S*\\(   5      r0\\\(   \0\(   4   r1 " S+ S,\/\   5      r2 " S- S.\/\   \\!   5      r3 " S/ S0\3\   5      r4 " S1 S2\'5      r5 " S3 S4\3\   5      r6 " S5 S6\6\   5      r7 " S7 S8\6\   5      r8g)9a•  Attribute implementation for _Dispatch classes.

The various listener targets for a particular event class are represented
as attributes, which refer to collections of listeners to be fired off.
These collections can exist at the class level as well as at the instance
level.  An event is fired off using code like this::

    some_object.dispatch.first_connect(arg1, arg2)

Above, ``some_object.dispatch`` would be an instance of ``_Dispatch`` and
``first_connect`` is typically an instance of ``_ListenerCollection``
if event listeners are present, or ``_EmptyListener`` if none are present.

The attribute mechanics here spend effort trying to ensure listener functions
are available with a minimum of function call overhead, that unnecessary
objects aren't created (i.e. many empty per-instance listener collections),
as well as that everything is garbage collectable when owning references are
lost.  Other features such as "propagation" of listener functions across
many ``_Dispatch`` instances, "joining" of multiple ``_Dispatch`` instances,
as well as support for subclass propagation (e.g. events assigned to
``Pool`` vs. ``QueuePool``) are all implemented here.

é    )ÚannotationsN)Úchain)ÚTracebackType)ÚAny)Úcast)Ú
Collection)ÚDeque)Ú	FrozenSet)ÚGeneric)ÚIterator)ÚMutableMapping)ÚMutableSequence)ÚNoReturn)ÚOptional)ÚSequence)ÚSet)ÚTuple)ÚType)ÚTypeVar)ÚUnioné   )Úlegacy)Úregistry)Ú_ET)Ú	_EventKey)Ú_ListenerFnTypeé   )Úexc)Úutil)ÚAsyncAdaptedLock)ÚProtocolÚ_T)Úbound)Ú	_Dispatch)Ú_DispatchCommon)Ú_HasEventsDispatchc                  ó.   • \ rS rSr% SrS\S'   SS jrSrg)	ÚRefCollectionéK   )Úrefúweakref.ref[RefCollection[_ET]]r*   c                óL   • [         R                  " U [        R                  5      $ ©N)Úweakrefr*   r   Ú_collection_gced©Úselfs    ÚR/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sqlalchemy/event/attr.pyÚ_memoized_attr_refÚ RefCollection._memoized_attr_refP   s   € Ü�{Š{˜4¤×!:Ñ!:Ó;Ð;ó    © N)Úreturnr+   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú	__slots__Ú__annotations__r3   Ú__static_attributes__r6   r5   r2   r(   r(   K   s   ‡ Ø€Ià	(Ó(÷<r5   r(   c                  ód   • \ rS rSrSS jrSS jrSS jrSS jrSS jrSS jr	SS jr
SS	 jrS
rg)Ú_empty_collectionéT   c                ó   • g r-   r6   ©r1   Úelements     r2   ÚappendÚ_empty_collection.appendU   ó   € Ør5   c                ó   • g r-   r6   rC   s     r2   Ú
appendleftÚ_empty_collection.appendleftX   rG   r5   c                ó   • g r-   r6   )r1   Úothers     r2   ÚextendÚ_empty_collection.extend[   rG   r5   c                ó   • g r-   r6   rC   s     r2   ÚremoveÚ_empty_collection.remove^   rG   r5   c                ó   • g©NFr6   rC   s     r2   Ú__contains__Ú_empty_collection.__contains__a   s   € Ør5   c                ó   • [        / 5      $ r-   )Úiterr0   s    r2   Ú__iter__Ú_empty_collection.__iter__d   s   € Ü�B‹xˆr5   c                ó   • g r-   r6   r0   s    r2   ÚclearÚ_empty_collection.clearg   rG   r5   c                ó   • g©Nr   r6   r0   s    r2   Ú__len__Ú_empty_collection.__len__j   s   € Ør5   r6   N)rD   r"   r7   ÚNone)rL   zSequence[_T]r7   ra   )rD   r   r7   Úbool)r7   zIterator[_T]©r7   ra   ©r7   Úint)r8   r9   r:   r;   rE   rI   rM   rP   rT   rX   r[   r_   r>   r6   r5   r2   r@   r@   T   s*   † ôôôôôôô÷r5   r@   c                  óÞ   • \ rS rSr% SrSrS\S'   S\S'   S\S'   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rSS jrS S jrS!S jrS"S jrS#S jrSrg)$Ú_ClsLevelDispatchéq   z2Class-level events on :class:`._Dispatch` classes.)ÚclsnameÚnameÚ	arg_namesÚhas_kwÚlegacy_signaturesÚ	_clslevelÚ__weakref__Ústrri   rj   zSequence[str]rk   rb   rl   z,MutableSequence[legacy._LegacySignatureType]rm   zCMutableMapping[Type[_ET], _ListenerFnSequenceType[_ListenerFnType]]rn   c                ó–  • UR                   U l        UR                   U l        [        R                  " U5      nUR
                  SS  U l        [        UR                  5      U l	        [        [        [        [        US/ 5      S S95      5      U l        [        R                   " XU5      Ul        [$        R&                  " 5       U l        g )Nr   Ú_legacy_signaturesc                ó   • U S   $ r^   r6   )Úss    r2   Ú<lambda>Ú,_ClsLevelDispatch.__init__.<locals>.<lambda>”   s   € ÈÈ1Êr5   )Úkey)r8   rj   ri   r   Úinspect_getfullargspecÚargsrk   rb   Úvarkwrl   ÚlistÚreversedÚsortedÚgetattrrm   r   Ú_augment_fn_docsÚ__doc__r.   ÚWeakKeyDictionaryrn   )r1   Úparent_dispatch_clsÚfnÚargspecs       r2   Ú__init__Ú_ClsLevelDispatch.__init__‡   s    € ð
 —K‘KˆŒ	Ø*×3Ñ3ˆŒÜ×-Ò-¨bÓ1ˆØ Ÿ™ a bÐ)ˆŒÜ˜7Ÿ=™=Ó)ˆŒÜ!%ÜÜÜ˜BÐ 4°bÓ9¹~ñóó"
ˆÔô ×,Ò,¨TÈÓKˆŒ
ä ×2Ò2Ó4ˆ�r5   c                óØ   • U(       a  U R                  U5      nU R                  (       a/   [        R                  " USS9n[        R
                  " XU5      nU$ U$ ! [         a     U$ f = f)NT)Úno_self)Ú_wrap_fn_for_kwrm   r   Úget_callable_argspecr   Ú_wrap_fn_for_legacyÚ	TypeError)r1   rƒ   Únamedr„   s       r2   Ú_adjust_fn_specÚ!_ClsLevelDispatch._adjust_fn_specœ   sp   € ö Ø×%Ñ% bÓ)ˆBØ×!×!ðCÜ×3Ò3°BÀÑE�ô ×/Ò/°¸'ÓB�Øˆ	ˆrˆ	øô	 ó Øð ˆ	ð	ús   «A Á
A)Á(A)c                ó   ^ ^• SUU 4S jjnU$ )Nc                 ót   >• [        [        TR                  U 5      5      nUR                  U5        T" S0 UD6$ )Nr6   )ÚdictÚziprk   Úupdate)ry   ÚkwÚargdictrƒ   r1   s      €€r2   Úwrap_kwÚ2_ClsLevelDispatch._wrap_fn_for_kw.<locals>.wrap_kw«   s0   ø€ Üœ3˜tŸ~™~¨tÓ4Ó5ˆGØ�N‰N˜2ÔÙ‘=˜‘=Ð r5   )ry   r   r•   r   r7   r   r6   )r1   rƒ   r—   s   `` r2   r‰   Ú!_ClsLevelDispatch._wrap_fn_for_kwª   s   ù€ ÷	!ð 	!ð
 ˆr5   c                óP  • UR                   n[        U[        5      (       d   S5       e[        USS5      (       d  [        R
                  " SU S35      e[        R                  " U5       H¢  nXCLa"  X@R                  ;  a  U R                  U5        M)  X@R                  ;  a  U R                  U5        U(       a*  U R                  U   R                  UR                  5        Mz  U R                  U   R                  UR                  5        M¤     [        R                  " X5        g )Nz*Class-level Event targets must be classes.Ú_sa_propagate_class_eventsTz&Can't assign an event directly to the z class)Údispatch_targetÚ
isinstanceÚtyper~   r   ÚInvalidRequestErrorr   Úwalk_subclassesrn   Úupdate_subclassrE   Ú
_listen_fnrI   r   Ú_stored_in_collection)r1   Ú	event_keyÚ	is_appendÚtargetÚclss        r2   Ú_do_insert_or_appendÚ&_ClsLevelDispatch._do_insert_or_append²   sý   € ð ×*Ñ*ˆÜØ”D÷
ñ 
ð 	8à7ó	8ð 
ô �vÐ;¸T×BÑBÜ×)Ò)Ø8¸¸ÀÐGóð ô ×'Ò'¨Ö/ˆCØÒ  S·±Ó%>Ø×$Ñ$ SÖ)àŸn™nÓ,Ø×(Ñ(¨Ô-ÞØ—N‘N 3Ñ'×.Ñ.¨y×/CÑ/CÖDà—N‘N 3Ñ'×2Ñ2°9×3GÑ3GÖHñ 0ô 	×&Ò& yÕ7r5   c                ó$   • U R                  USS9  g )NF©r¥   ©r¨   ©r1   r¤   Ú	propagates      r2   ÚinsertÚ_ClsLevelDispatch.insertÌ   s   € Ø×!Ñ! )°uÐ!Ò=r5   c                ó$   • U R                  USS9  g )NTr«   r¬   r­   s      r2   rE   Ú_ClsLevelDispatch.appendÏ   s   € Ø×!Ñ! )°tÐ!Ò<r5   c                óœ  • XR                   ;  aL  [        USS5      (       a#  [        R                  " 5       U R                   U'   O[	        5       U R                   U'   U R                   U   nUR
                  SS   HJ  nX0R                   ;   d  M  UR                  U R                   U    Vs/ s H  oDU;  d  M
  UPM     sn5        ML     g s  snf )Nr›   Tr   )rn   r~   ÚcollectionsÚdequer@   Ú__mro__rM   )r1   r¦   Úclslevelr§   rƒ   s        r2   r¡   Ú!_ClsLevelDispatch.update_subclassÒ   s¥   € ØŸ™Ó'Ü�vÐ;¸T×BÑBÜ)4×):Ò):Ó)<�—‘˜vÒ&ä):Ó)<�—‘˜vÑ&à—>‘> &Ñ)ˆà—>‘> ! "Ó%ˆCØ—n‘nÕ$Ø—‘Ø"&§.¡.°Ò"5ÓLÒ"5˜BÀ8Ñ9K—RÑ"5ÑLöò &ùò Ms   Â*	C	
Â7C	
c                óô   • UR                   n[        R                  " U5       H<  nX0R                  ;   d  M  U R                  U   R	                  UR
                  5        M>     [        R                  " X5        g r-   )rœ   r   r    rn   rP   r¢   r   Ú_removed_from_collection)r1   r¤   r¦   r§   s       r2   rP   Ú_ClsLevelDispatch.removeá   sY   € Ø×*Ñ*ˆä×'Ò'¨Ö/ˆCØ—n‘nÕ$Ø—‘˜sÑ#×*Ñ*¨9×+?Ñ+?Ö@ñ 0ô 	×)Ò)¨)Õ:r5   c                óÈ   • [        5       nU R                  R                  5        H$  nUR                  U5        UR	                  5         M&     [
        R                  " X5        g)zClear all class level listenersN)Úsetrn   Úvaluesr”   r[   r   Ú_clear)r1   Úto_clearÚ
dispatchers      r2   r[   Ú_ClsLevelDispatch.clearé   sH   € ô *-«ˆØŸ.™.×/Ñ/Ö1ˆJØ�O‰O˜JÔ'Ø×ÑÖñ 2ô 	�Š˜Õ'r5   c                ó   • U $ ©z�Return an event collection which can be modified.

For _ClsLevelDispatch at the class level of
a dispatcher, this returns self.

r6   ©r1   Úobjs     r2   Ú
for_modifyÚ_ClsLevelDispatch.for_modifyò   s	   € ð ˆr5   )rn   rk   ri   rl   rm   rj   N)r‚   zType[_HasEventsDispatch[_ET]]rƒ   r   ©rƒ   r   r�   rb   r7   r   )rƒ   r   r7   r   )r¤   ú_EventKey[_ET]r¥   rb   r7   ra   ©r¤   rÊ   r®   rb   r7   ra   )r¦   ú	Type[_ET]r7   ra   ©r¤   rÊ   r7   ra   rc   )rÆ   ú_Dispatch[_ET]r7   ú_ClsLevelDispatch[_ET])r8   r9   r:   r;   r€   r<   r=   r…   rŽ   r‰   r¨   r¯   rE   r¡   rP   r[   rÇ   r>   r6   r5   r2   rg   rg   q   s§   ‡ Ù<ð€Ið ƒLØ
ƒIØÓØƒLØCÓCðó ð5à:ð5ð ô5ð*Ø!ðØ*.ðà	ôôð8Ø'ð8Ø48ð8à	ô8ô4>ô=ôô;ô(÷r5   rg   c                  óº   • \ rS rSr% S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
 jrSS jrSS jrSS jrSS jrSS jrSS jr    SS jrSrg)Ú_InstanceLevelDispatchéü   r6   rÏ   Úparentc                ó8   • U R                   R                  X5      $ r-   )rÓ   rŽ   ©r1   rƒ   r�   s      r2   rŽ   Ú&_InstanceLevelDispatch._adjust_fn_spec  s   € ð �{‰{×*Ñ*¨2Ó5Ð5r5   c                ó   • [        5       er-   ©ÚNotImplementedError©r1   Úitems     r2   rT   Ú#_InstanceLevelDispatch.__contains__  ó   € Ü!Ó#Ð#r5   c                ó   • [        5       er-   rØ   r0   s    r2   r_   Ú_InstanceLevelDispatch.__len__	  rÝ   r5   c                ó   • [        5       er-   rØ   r0   s    r2   rX   Ú_InstanceLevelDispatch.__iter__  rÝ   r5   c                ó   • [        5       er-   rØ   r0   s    r2   Ú__bool__Ú_InstanceLevelDispatch.__bool__  rÝ   r5   c                ó   • [        5       er-   rØ   ©r1   ry   r•   s      r2   Ú	exec_onceÚ _InstanceLevelDispatch.exec_once  rÝ   r5   c                ó   • [        5       er-   rØ   ræ   s      r2   Úexec_once_unless_exceptionÚ1_InstanceLevelDispatch.exec_once_unless_exception  rÝ   r5   c                ó   • [        5       er-   rØ   ræ   s      r2   Ú_exec_w_sync_on_first_runÚ0_InstanceLevelDispatch._exec_w_sync_on_first_run  rÝ   r5   c                ó   • [        5       er-   rØ   ræ   s      r2   Ú__call__Ú_InstanceLevelDispatch.__call__  rÝ   r5   c                ó   • [        5       er-   rØ   r­   s      r2   r¯   Ú_InstanceLevelDispatch.insert  rÝ   r5   c                ó   • [        5       er-   rØ   r­   s      r2   rE   Ú_InstanceLevelDispatch.append!  rÝ   r5   c                ó   • [        5       er-   rØ   ©r1   r¤   s     r2   rP   Ú_InstanceLevelDispatch.remove$  rÝ   r5   c                ó   • U $ rÄ   r6   rÅ   s     r2   rÇ   Ú!_InstanceLevelDispatch.for_modify'  ó	   € ð ˆr5   NrÉ   ©rÛ   r   r7   rb   rd   ©r7   zIterator[_ListenerFnType]©r7   rb   ©ry   r   r•   r   r7   ra   rË   rÍ   )rÆ   ú_DispatchCommon[_ET]r7   ú_InstanceLevelDispatch[_ET])r8   r9   r:   r;   r<   r=   rŽ   rT   r_   rX   rã   rç   rê   rí   rð   r¯   rE   rP   rÇ   r>   r6   r5   r2   rÑ   rÑ   ü   sv   ‡ Ø€Ià"Ó"ð6Ø!ð6Ø*.ð6à	ô6ô
$ô$ô$ô$ô$ô$ô$ô$ô$ô$ô$ð	Ø'ð	à	$÷	r5   rÑ   c                  óö   • \ rS rSr% SrSr\" 5       rS\S'   Sr	S\S'   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rS!S jrS!S jrS!S jrS!S jrS"S jrS#S jrS$S jrS%S jrS&S jrSrg)'Ú_EmptyListeneri3  zÅServes as a proxy interface to the events
served by a _ClsLevelDispatch, when there are no
instance-level events present.

Is replaced by _ListenerCollection when instance-level
events are added.

)rÓ   Úparent_listenersrj   zFrozenSet[_ListenerFnType]r®   r6   z	Tuple[()]Ú	listenersrÏ   rÓ   z(_ListenerFnSequenceType[_ListenerFnType]r  rp   rj   c                óš   • X!R                   ;  a  UR                  U5        Xl        UR                   U   U l        UR                  U l        g r-   )rn   r¡   rÓ   r  rj   )r1   rÓ   Ú
target_clss      r2   r…   Ú_EmptyListener.__init__E  s?   € Ø×-Ñ-Ó-Ø×"Ñ" :Ô.ØŒØ &× 0Ñ 0°Ñ <ˆÔØ—K‘Kˆ�	r5   c                ó¨  • [        SU5      nUR                  c   e[        XR                  5      n[        R
                     X L d  [        U[        5      (       a!  [        U R                  UR                  5      nO"[        U[        5      (       d   eUsSSS5        $ X L a  [        XR                  U5        SSS5        U$ ! , (       d  f       W$ = f)zÄReturn an event collection which can be modified.

For _EmptyListener at the instance level of
a dispatcher, this generates a new
_ListenerCollection, applies it to the instance,
and returns it.

rÎ   N)r   Ú_instance_clsr~   rj   r   Úmini_gilr�   Ú_JoinedListenerÚ_ListenerCollectionrÓ   Úsetattr)r1   rÆ   ÚexistingÚresults       r2   rÇ   Ú_EmptyListener.for_modifyL  s±   € ô Ð# SÓ)ˆà× Ñ Ñ,Ð,Ð,Ü˜3§	¡	Ó*ˆä�]‹]ØÒ¤:¨h¼×#HÑ#HÜ,¨T¯[©[¸#×:KÑ:KÓL‘ô
 " (Ô,?×@Ñ@Ð@Ð@Ø÷ ‰]ð ÒÜ˜ŸY™Y¨Ô/÷ ð ˆ÷ Œ]ð ˆús   ÁACÂCÃ
Cc                ó   • [        S5      e)Nzneed to call for_modify()rØ   ræ   s      r2   Ú_needs_modifyÚ_EmptyListener._needs_modifyj  s   € Ü!Ð"=Ó>Ð>r5   c                ó(   • U R                   " U0 UD6  g r-   ©r  ræ   s      r2   rç   Ú_EmptyListener.exec_oncem  ó   € Ø×Ò˜DÐ' BÓ'r5   c                ó(   • U R                   " U0 UD6  g r-   r  ræ   s      r2   rê   Ú)_EmptyListener.exec_once_unless_exceptionp  r  r5   c                ó(   • U R                   " U0 UD6  g r-   r  ræ   s      r2   r¯   Ú_EmptyListener.inserts  r  r5   c                ó(   • U R                   " U0 UD6  g r-   r  ræ   s      r2   rE   Ú_EmptyListener.appendv  r  r5   c                ó(   • U R                   " U0 UD6  g r-   r  ræ   s      r2   rP   Ú_EmptyListener.removey  r  r5   c                ó(   • U R                   " U0 UD6  g r-   r  ræ   s      r2   r[   Ú_EmptyListener.clear|  r  r5   c                ó:   • U R                    H  nU" U0 UD6  M     g©zExecute this event.N©r  ©r1   ry   r•   rƒ   s       r2   rð   Ú_EmptyListener.__call__  s   € ð ×'Ô'ˆBÙ�ˆO˜ŒOò (r5   c                ó   • XR                   ;   $ r-   r%  rÚ   s     r2   rT   Ú_EmptyListener.__contains__…  s   € Ø×,Ñ,Ñ,Ð,r5   c                ó,   • [        U R                  5      $ r-   )Úlenr  r0   s    r2   r_   Ú_EmptyListener.__len__ˆ  s   € Ü�4×(Ñ(Ó)Ð)r5   c                ó,   • [        U R                  5      $ r-   )rW   r  r0   s    r2   rX   Ú_EmptyListener.__iter__‹  ó   € Ü�D×)Ñ)Ó*Ð*r5   c                ó,   • [        U R                  5      $ r-   )rb   r  r0   s    r2   rã   Ú_EmptyListener.__bool__Ž  r/  r5   )rj   rÓ   r  N©rÓ   rÏ   r  rÌ   ©rÆ   r   r7   ú_ListenerCollection[_ET])ry   r   r•   r   r7   r   rÿ   rü   rd   rý   rþ   )r8   r9   r:   r;   r€   r<   Ú	frozensetr®   r=   r  r…   rÇ   r  rç   rê   r¯   rE   rP   r[   rð   rT   r_   rX   rã   r>   r6   r5   r2   r  r  3  sŒ   ‡ ñð 5€Iá,5«K€IÐ)Ó7Ø€IˆyÓØ"Ó"Ø>Ó>Ø
ƒIô ðØ'ðà	!ôô<?ô(ô(ô(ô(ô(ô(ôô-ô*ô+÷+r5   r  c                  ó8   • \ rS rSrSS jr        SS jrSrg)Ú_MutexProtocoli’  c                ó   • g r-   r6   r0   s    r2   Ú	__enter__Ú_MutexProtocol.__enter__“  s   €  r5   c                ó   • g r-   r6   )r1   Úexc_typeÚexc_valÚexc_tbs       r2   Ú__exit__Ú_MutexProtocol.__exit__•  s   € ð
 r5   r6   Nrþ   )r<  zOptional[Type[BaseException]]r=  zOptional[BaseException]r>  zOptional[TracebackType]r7   zOptional[bool])r8   r9   r:   r;   r9  r?  r>   r6   r5   r2   r7  r7  ’  s0   † Ü$ðà/ðð )ðð (ð	ð
 
÷r5   r7  c                  óâ   ^ • \ rS rSr% SrS\S'   S\S'   S\S'   S\S	'   S\S
'   SU 4S jjrSS jrSS jr        SS jr	SS jr
SS jrSS jrSS jrSS jrSS jrSS jrS S jrSrU =r$ )!Ú_CompoundListeneri�  )Ú_exec_once_mutexÚ
_exec_onceÚ_exec_w_sync_onceÚ_is_asynciozOptional[_MutexProtocol]rC  úCollection[_ListenerFnType]r  r  rb   rD  rE  c                ó4   >• [         TU ]  " U0 UD6  SU l        g rS   )Úsuperr…   rF  )r1   Úargr•   Ú	__class__s      €r2   r…   Ú_CompoundListener.__init__«  s   ø€ Ü‰Ò˜#Ð$ Ò$Ø ˆÕr5   c                ó   • SU l         g )NT)rF  r0   s    r2   Ú_set_asyncioÚ_CompoundListener._set_asyncio¯  s
   € ØˆÕr5   c                ó  • [         R                     U R                  b  U R                  sS S S 5        $ U R                  (       a  [	        5       nO[
        R                  " 5       nXl        UsS S S 5        $ ! , (       d  f       g = fr-   )r   r  rC  rF  r    Ú	threadingÚLock)r1   Úmutexs     r2   Ú_get_exec_once_mutexÚ&_CompoundListener._get_exec_once_mutex²  sW   € Ü�]‹]Ø×$Ñ$Ñ0Ø×,Ñ,÷ ‰]ð ××Ü(Ó*‘ä!ŸšÓ(�Ø$)Ô!à÷ �]�]ús   ‘A6´8A6Á6
Bc                ó  • U R                  5          U R                  (       d!   U " U0 UD6  Sn U(       a  U(       d  SU l        S S S 5        g !   Sne = f! W(       a  U(       d  SU l        f f = f! , (       d  f       g = f)NFT)rT  rD  )r1   Úretry_on_exceptionry   r•   Ú	exceptions        r2   Ú_exec_once_implÚ!_CompoundListener._exec_once_impl¿  sp   € ð ×&Ñ&Õ(Ø—?—?ð/Ù˜$Ð% "Ò%Ø %‘Iö
 %Ö,>Ø*.˜œ÷ )Ð(øð
Ø $�IØûæ$Ö,>Ø*.˜�ð -?ú÷ )Õ(ús-   ‘A0¤
A¯A0ÁAÁAÁA-Á-A0Á0
A>c                óT   • U R                   (       d  U R                  " S/UQ70 UD6  gg)zUExecute this event, but only if it has not been
executed already for this collection.FN©rD  rY  ræ   s      r2   rç   Ú_CompoundListener.exec_onceÎ  s(   € ð ��Ø× Ò  Ð4¨Ò4°Ó4ð r5   c                óT   • U R                   (       d  U R                  " S/UQ70 UD6  gg)a<  Execute this event, but only if it has not been
executed already for this collection, or was called
by a previous exec_once_unless_exception call and
raised an exception.

If exec_once was already called, then this method will never run
the callable regardless of whether it raised or not.

.. versionadded:: 1.3.8

TNr\  ræ   s      r2   rê   Ú,_CompoundListener.exec_once_unless_exceptionÕ  s(   € ð ��Ø× Ò  Ð3¨Ò3°Ó3ð r5   c                óº   • U R                   (       d+  U R                  5           U " U0 UD6  SU l          SSS5        gU " U0 UD6  g!   e = f! , (       d  f       g= f)aœ  Execute this event, and use a mutex if it has not been
executed already for this collection, or was called
by a previous _exec_w_sync_on_first_run call and
raised an exception.

If _exec_w_sync_on_first_run was already called and didn't raise an
exception, then a mutex is not used.  It's not guaranteed
the mutex won't be used more than once in the case of very rare
race conditions.

.. versionadded:: 1.4.11

TN)rE  rT  ræ   s      r2   rí   Ú+_CompoundListener._exec_w_sync_on_first_runä  s_   € ð ×%×%Ø×*Ñ*Õ,ð2Ù˜$Ð% "Ò%ð .2�DÕ*÷ -Ð,ñ �$Ð˜"ÓøðØú÷	 -Õ,ús!   ¢A¤A¬AÁA	Á	AÁ
Ac                óp   • U R                    H  nU" U0 UD6  M     U R                   H  nU" U0 UD6  M     gr$  ©r  r  r&  s       r2   rð   Ú_CompoundListener.__call__ý  s8   € ð ×'Ô'ˆBÙ�ˆO˜ŒOñ (à—.”.ˆBÙ�ˆO˜ŒOò !r5   c                óH   • XR                   ;   =(       d    XR                  ;   $ r-   rc  rÚ   s     r2   rT   Ú_CompoundListener.__contains__  s   € Ø×,Ñ,Ñ,×F°¿¹Ñ0FÐFr5   c                óX   • [        U R                  5      [        U R                  5      -   $ r-   )r+  r  r  r0   s    r2   r_   Ú_CompoundListener.__len__  s!   € Ü�4×(Ñ(Ó)¬C°·±Ó,?Ñ?Ð?r5   c                óB   • [        U R                  U R                  5      $ r-   )r   r  r  r0   s    r2   rX   Ú_CompoundListener.__iter__  s   € Ü�T×*Ñ*¨D¯N©NÓ;Ð;r5   c                óR   • [        U R                  =(       d    U R                  5      $ r-   )rb   r  r  r0   s    r2   rã   Ú_CompoundListener.__bool__  s   € Ü�D—N‘N×; d×&;Ñ&;Ó<Ð<r5   )rD  rC  rE  rF  )rJ  r   r•   r   rc   )r7   r7  )rW  rb   ry   r   r•   r   r7   ra   rÿ   rü   rd   rý   rþ   )r8   r9   r:   r;   r<   r=   r…   rN  rT  rY  rç   rê   rí   rð   rT   r_   rX   rã   r>   Ú__classcell__©rK  s   @r2   rB  rB  �  s�   ø‡ ð€Ið /Ó.Ø1Ó1Ø*Ó*ØÓØÓ÷!ô ôð/Ø"&ð/Ø/2ð/Ø:=ð/à	ô/ô5ô4ôô2ôGô@ô<÷=ò =r5   rB  c                  ó¼   ^ • \ rS rSr% SrSrS\S'   S\S'   S\S	'   S
\S'   S\S'   SU 4S jjr    SS jr S     SS jjr	SS jr
SS jrSS jrSS jrSrU =r$ )r  i  zËInstance-level attributes on instances of :class:`._Dispatch`.

Represents a collection of listeners.

As of 0.7.9, _ListenerCollection is only first
created via the _EmptyListener.for_modify() method.

)r  rÓ   rj   r  r®   ro   rG  r  rÏ   rÓ   rp   rj   zDeque[_ListenerFnType]r  zSet[_ListenerFnType]r®   c                ó4  >• [         TU ]  5         X!R                  ;  a  UR                  U5        SU l        SU l        S U l        UR                  U   U l        Xl        UR                  U l	        [        R                  " 5       U l        [        5       U l        g rS   )rI  r…   rn   r¡   rD  rE  rC  r  rÓ   rj   r´   rµ   r  r½   r®   )r1   rÓ   r  rK  s      €r2   r…   Ú_ListenerCollection.__init__+  s{   ø€ Ü‰ÑÔØ×-Ñ-Ó-Ø×"Ñ" :Ô.ØˆŒØ!&ˆÔØ $ˆÔØ &× 0Ñ 0°Ñ <ˆÔØŒØ—K‘KˆŒ	Ü$×*Ò*Ó,ˆŒÜ›ˆ�r5   c                ó   • U $ )z†Return an event collection which can be modified.

For _ListenerCollection at the instance level of
a dispatcher, this returns self.

r6   rÅ   s     r2   rÇ   Ú_ListenerCollection.for_modify8  rû   r5   c                óÀ  • U R                   n[        U5      nU R                  R                  UR                  5        UR                    Vs/ s H"  nXT;  a  U(       a  XPR                  ;   d  M   UPM$     nnUR	                  U5        UR
                  (       a  U R                  5         UR                  R                  U5      n[        R                  " XU5        gs  snf )zAPopulate from the listeners in another :class:`_Dispatch`
object.N)
r  r½   r®   r”   rM   rF  rN  Úunionr   Ú_stored_in_collection_multi)r1   rL   Úonly_propagateÚexisting_listenersÚexisting_listener_setÚlÚother_listenersÚto_associates           r2   Ú_updateÚ_ListenerCollection._updateC  s·   € ð
 "Ÿ^™^ÐÜ #Ð$6Ó 7ÐØ�‰×Ñ˜eŸo™oÔ.ð —_’_ó
â$�ØÓ-Þ"Ø—N‘NÑ"÷	 Ù$ð 	ð 
ð 	×!Ñ! /Ô2à××Ø×ÑÔà—‘×,Ñ,¨_Ó=ˆÜ×,Ò,¨T¸,ÕGùò
s   ÁCÁ.Cc                ó    • UR                  X R                  5      (       a.  U(       a&  U R                  R                  UR                  5        g g g r-   )Úprepend_to_listr  r®   Úaddr¢   r­   s      r2   r¯   Ú_ListenerCollection.insert[  s<   € Ø×$Ñ$ T¯>©>×:Ñ:ÞØ—‘×"Ñ" 9×#7Ñ#7Õ8ð ð ;r5   c                ó    • UR                  X R                  5      (       a.  U(       a&  U R                  R                  UR                  5        g g g r-   )Úappend_to_listr  r®   r�  r¢   r­   s      r2   rE   Ú_ListenerCollection.append`  s<   € Ø×#Ñ# D¯.©.×9Ñ9ÞØ—‘×"Ñ" 9×#7Ñ#7Õ8ð ð :r5   c                óÄ   • U R                   R                  UR                  5        U R                  R	                  UR                  5        [
        R                  " X5        g r-   )r  rP   r¢   r®   Údiscardr   rº   r÷   s     r2   rP   Ú_ListenerCollection.removee  s@   € Ø�‰×Ñ˜i×2Ñ2Ô3Ø�‰×Ñ˜y×3Ñ3Ô4Ü×)Ò)¨)Õ:r5   c                ó¬   • [         R                  " X R                  5        U R                  R	                  5         U R                  R	                  5         g r-   )r   r¿   r  r®   r[   r0   s    r2   r[   Ú_ListenerCollection.clearj  s2   € Ü�Š˜Ÿn™nÔ-Ø�‰×ÑÔØ�‰×ÑÕr5   )rD  rC  rE  r  rj   rÓ   r  r®   r2  r3  )T)rL   r4  rw  rb   r7   ra   rË   rÍ   rc   )r8   r9   r:   r;   r€   r<   r=   r…   rÇ   r}  r¯   rE   rP   r[   r>   rm  rn  s   @r2   r  r    s‰   ø‡ ñð€Ið 2Ó1Ø"Ó"Ø
ƒIØ%Ó%Ø#Ó#÷ð	Ø'ð	à	!ô	ð GKðHØ-ðHØ?CðHà	õHô09ô
9ô
;÷
ò r5   r  c                  óÖ   • \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'         SS jr\R                  (       d
  \	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 jrSrg)r  ip  )Úparent_dispatchrj   Úlocalr  r   rŒ  rp   rj   r  r�  rG  r  c                ót   • SU l         SU l        S U l        Xl        X l        X0l        U R
                  U l        g rS   )rD  rE  rC  rŒ  rj   r�  r  )r1   rŒ  rj   r�  s       r2   r…   Ú_JoinedListener.__init__x  s7   € ð  ˆŒØ!&ˆÔØ $ˆÔØ.ÔØŒ	ØŒ
Ø $§
¡
ˆÕr5   c                óB   • [        U R                  U R                  5      $ r-   )r~   rŒ  rj   r0   s    r2   r  Ú_JoinedListener.listeners�  s   € ä˜4×/Ñ/°·±Ó;Ð;r5   c                ó8   • U R                   R                  X5      $ r-   )r�  rŽ   rÕ   s      r2   rŽ   Ú_JoinedListener._adjust_fn_spec‘  s   € ð �z‰z×)Ñ)¨"Ó4Ð4r5   c                óT   • U R                   R                  U5      =U l         U l        U $ r-   )r�  rÇ   r  rÅ   s     r2   rÇ   Ú_JoinedListener.for_modify–  s%   € Ø-1¯Z©Z×-BÑ-BÀ3Ó-GÐGˆŒ
�TÔ*Øˆr5   c                ó:   • U R                   R                  X5        g r-   )r�  r¯   r­   s      r2   r¯   Ú_JoinedListener.insertš  ó   € Ø�
‰
×Ñ˜)Õ/r5   c                ó:   • U R                   R                  X5        g r-   )r�  rE   r­   s      r2   rE   Ú_JoinedListener.append�  r˜  r5   c                ó:   • U R                   R                  U5        g r-   )r�  rP   r÷   s     r2   rP   Ú_JoinedListener.remove   s   € Ø�
‰
×Ñ˜)Õ$r5   c                ó   • [        5       er-   rØ   r0   s    r2   r[   Ú_JoinedListener.clear£  rÝ   r5   )rD  rC  rE  r�  rj   rŒ  r  N)rŒ  r   rj   rp   r�  z_EmptyListener[_ET])r7   rG  rÉ   )rÆ   r   r7   z_JoinedListener[_ET]rË   rÍ   rc   )r8   r9   r:   r;   r<   r=   r…   ÚtypingÚTYPE_CHECKINGÚpropertyr  rŽ   rÇ   r¯   rE   rP   r[   r>   r6   r5   r2   r  r  p  s”   ‡ ØF€Ià)Ó)Ø
ƒIØ&Ó&Ø1Ó1ð+à-ð+ð ð+ð #ô	+ð ××ð 
ó	<ó 
ð	<ð5Ø!ð5Ø*.ð5à	ô5ô
ô0ô0ô%÷$r5   r  )9r€   Ú
__future__r   r´   Ú	itertoolsr   rQ  Útypesr   rŸ  r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r.   Ú r   r   r   r   r   r   r   Úutil.concurrencyr    Úutil.typingr!   r"   r   Úbaser$   r%   r&   ÚMemoizedSlotsr(   r@   Ú_ListenerFnSequenceTyperg   rÑ   r  r7  rB  r  r  r6   r5   r2   Ú<module>r«     s[  ðñõ. #ã Ý Û Ý Û Ý Ý Ý Ý Ý Ý Ý Ý !Ý "Ý Ý Ý Ý Ý Ý Ý Ý Û å Ý Ý Ý Ý %Ý Ý Ý /Ý "áˆT˜Ñ€à	××ÝÝ%Ý(ô<�D×&Ñ&¨°©ô <ô˜
 2™ô ð4    b¡	Ð+<¸RÑ+@Ð @ÑAÐ ôH˜ cÑ*ô HôV4˜]¨3Ñ/°¸OÑ1Lô 4ôn\+Ð+¨CÑ0ô \+ô~�Xô ôr=Ð.¨sÑ3ô r=ôj[Ð+¨CÑ0ô [ô|4$Ð'¨Ñ,õ 4$r5   