§
    eŠtjVT  ã                  ót  — d Z ddlmZ ddlZddlmZ ddlZddlmZ ddl	Z	ddl	m
Z
 ddl	mZ ddl	mZ dd	l	mZ dd
l	mZ ddl	mZ ddl	mZ ddl	mZ ddl	mZ ddl	mZ ddl	mZ ddl	mZ ddl	mZ ddl	mZ ddl	mZ ddl	mZ ddl	mZ ddlZddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddlm"Z" ddlm#Z# dd l$m%Z% dd!l&m'Z'  ed"e
¬#¦  «        Z(e	j)        rdd$l*m+Z+ dd%l*m,Z, dd&l*m-Z-  G d'„ d(e#j.        ee         ¦  «        Z/ G d)„ d*ee(         ¦  «        Z0eee(         e0e(         f         Z1 G d+„ d,e/e         ¦  «        Z2 G d-„ d.e/e         ee!         ¦  «        Z3 G d/„ d0e3e         ¦  «        Z4 G d1„ d2e'¦  «        Z5 G d3„ d4e3e         ¦  «        Z6 G d5„ d6e6e         ¦  «        Z7 G d7„ d8e6e         ¦  «        Z8dS )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                  ó&   — e Zd ZU dZded<   dd„ZdS )ÚRefCollection)Úrefúweakref.ref[RefCollection[_ET]]r)   Úreturnc                ó@   — t          j        | t          j        ¦  «        S ©N)Úweakrefr)   r   Ú_collection_gced©Úselfs    úS/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sqlalchemy/event/attr.pyÚ_memoized_attr_refz RefCollection._memoized_attr_refQ   s   € ÝŒ{˜4¥Ô!:Ñ;Ô;Ð;ó    N)r+   r*   )Ú__name__Ú
__module__Ú__qualname__Ú	__slots__Ú__annotations__r3   © r4   r2   r(   r(   L   s;   € € € € € € Ø€Ià(Ð(Ð(Ñ(ð<ð <ð <ð <ð <ð <r4   r(   c                  óN   — e Zd Zdd„Zdd„Zdd	„Zdd
„Zdd„Zdd„Zdd„Z	dd„Z
dS )Ú_empty_collectionÚelementr"   r+   ÚNonec                ó   — d S r-   r:   ©r1   r=   s     r2   Úappendz_empty_collection.appendV   ó   € Øˆr4   c                ó   — d S r-   r:   r@   s     r2   Ú
appendleftz_empty_collection.appendleftY   rB   r4   ÚotherúSequence[_T]c                ó   — d S r-   r:   )r1   rE   s     r2   Úextendz_empty_collection.extend\   rB   r4   c                ó   — d S r-   r:   r@   s     r2   Úremovez_empty_collection.remove_   rB   r4   r   Úboolc                ó   — dS ©NFr:   r@   s     r2   Ú__contains__z_empty_collection.__contains__b   s   € Øˆur4   úIterator[_T]c                ó    — t          g ¦  «        S r-   )Úiterr0   s    r2   Ú__iter__z_empty_collection.__iter__e   s   € Ý�B‰xŒxˆr4   c                ó   — d S r-   r:   r0   s    r2   Úclearz_empty_collection.clearh   rB   r4   Úintc                ó   — dS ©Nr   r:   r0   s    r2   Ú__len__z_empty_collection.__len__k   s   € Øˆqr4   N)r=   r"   r+   r>   )rE   rF   r+   r>   )r=   r   r+   rK   )r+   rO   ©r+   r>   ©r+   rU   )r5   r6   r7   rA   rD   rH   rJ   rN   rR   rT   rX   r:   r4   r2   r<   r<   U   s´   € € € € € ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð ð r4   r<   c                  ó¤   — e Zd ZU dZdZded<   ded<   ded<   ded	<   d
ed<   ded<   d)d„Zd*d„Zd+d„Zd,d„Z	d-d„Z
d-d„Zd.d!„Zd/d"„Zd0d#„Zd1d'„Zd(S )2Ú_ClsLevelDispatchz2Class-level events on :class:`._Dispatch` classes.)ÚclsnameÚnameÚ	arg_namesÚhas_kwÚlegacy_signaturesÚ	_clslevelÚ__weakref__Ústrr]   r^   zSequence[str]r_   rK   r`   z,MutableSequence[legacy._LegacySignatureType]ra   zCMutableMapping[Type[_ET], _ListenerFnSequenceType[_ListenerFnType]]rb   Úparent_dispatch_clsúType[_HasEventsDispatch[_ET]]Úfnr   c                óž  — |j         | _        |j         | _        t          j        |¦  «        }|j        dd …         | _        t          |j        ¦  «        | _	        t          t          t          t          |dg ¦  «        d„ ¬¦  «        ¦  «        ¦  «        | _        t          j        | ||¦  «        |_        t%          j        ¦   «         | _        d S )Nr   Ú_legacy_signaturesc                ó   — | d         S rW   r:   )Úss    r2   ú<lambda>z,_ClsLevelDispatch.__init__.<locals>.<lambda>•   s
   € ÈÈ1Ì€ r4   )Úkey)r5   r^   r]   r   Úinspect_getfullargspecÚargsr_   rK   Úvarkwr`   ÚlistÚreversedÚsortedÚgetattrra   r   Ú_augment_fn_docsÚ__doc__r.   ÚWeakKeyDictionaryrb   )r1   re   rg   Úargspecs       r2   Ú__init__z_ClsLevelDispatch.__init__ˆ   s¼   € ð
 ”KˆŒ	Ø*Ô3ˆŒÝÔ-¨bÑ1Ô1ˆØ œ a b bÔ)ˆŒÝ˜7œ=Ñ)Ô)ˆŒÝ!%ÝÝÝ˜BÐ 4°bÑ9Ô9¸~¸~ðñ ô ñô ñ"
ô "
ˆÔõ Ô,¨TÐ3FÈÑKÔKˆŒ
å Ô2Ñ4Ô4ˆŒˆˆr4   Únamedr+   c                ó¾   — |r|                       |¦  «        }| j        r>	 t          j        |d¬¦  «        }t	          j        | ||¦  «        }n# t          $ r Y nw xY w|S )NT)Úno_self)Ú_wrap_fn_for_kwra   r   Úget_callable_argspecr   Ú_wrap_fn_for_legacyÚ	TypeError)r1   rg   rz   rx   s       r2   Ú_adjust_fn_specz!_ClsLevelDispatch._adjust_fn_spec�   s‡   € ð ð 	*Ø×%Ò% bÑ)Ô)ˆBØÔ!ð 	CðCÝÔ3°BÀÐEÑEÔE�õ Ô/°°b¸'ÑBÔB��øõ ð ð ð Ø�ðøøøð ˆ	s    A Á
AÁAc                ó   ‡ ‡— dˆˆ fd„}|S )Nro   r   Úkwr+   c                 ó‚   •— t          t          ‰j        | ¦  «        ¦  «        }|                     |¦  «          ‰di |¤ŽS )Nr:   )ÚdictÚzipr_   Úupdate)ro   rƒ   Úargdictrg   r1   s      €€r2   Úwrap_kwz2_ClsLevelDispatch._wrap_fn_for_kw.<locals>.wrap_kw¬   s@   ø€ Ý�3˜tœ~¨tÑ4Ô4Ñ5Ô5ˆGØ�NŠN˜2ÑÔÐØ�2�=�=˜�=�=Ð r4   )ro   r   rƒ   r   r+   r   r:   )r1   rg   r‰   s   `` r2   r}   z!_ClsLevelDispatch._wrap_fn_for_kw«   s.   øø€ ð	!ð 	!ð 	!ð 	!ð 	!ð 	!ð 	!ð
 ˆr4   Ú	event_keyú_EventKey[_ET]Ú	is_appendr>   c                ó  — |j         }t          |t          ¦  «        s
J d¦   «         ‚t          |dd¦  «        st	          j        d|› d�¦  «        ‚t          j        |¦  «        D ]�}||ur|| j        vr|  	                    |¦  «         Œ%|| j        vr|  	                    |¦  «         |r&| j        |          
                    |j        ¦  «         Œk| j        |                              |j        ¦  «         Œ‘t          j        || ¦  «         d S )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Útypert   r   ÚInvalidRequestErrorr   Úwalk_subclassesrb   Úupdate_subclassrA   Ú
_listen_fnrD   r   Ú_stored_in_collection)r1   rŠ   rŒ   ÚtargetÚclss        r2   Ú_do_insert_or_appendz&_ClsLevelDispatch._do_insert_or_append³   sE  € ð Ô*ˆÝØ•Dñ
ô 
ð 	8ð 	8à7ñ	8ô 	8ð 
õ �vÐ;¸TÑBÔBð 	ÝÔ)ØG¸ÐGÐGÐGñô ð õ Ô'¨Ñ/Ô/ð 		Ið 		IˆCØ˜&Ð Ð  S°´Ð%>Ð%>Ø×$Ò$ SÑ)Ô)Ð)Ð)à˜dœnÐ,Ð,Ø×(Ò(¨Ñ-Ô-Ð-Øð IØ”N 3Ô'×.Ò.¨yÔ/CÑDÔDÐDÐDà”N 3Ô'×2Ò2°9Ô3GÑHÔHÐHÐHÝÔ& y°$Ñ7Ô7Ð7Ð7Ð7r4   Ú	propagatec                ó4   — |                       |d¬¦  «         d S )NF©rŒ   ©r™   ©r1   rŠ   rš   s      r2   Úinsertz_ClsLevelDispatch.insertÍ   s!   € Ø×!Ò! )°uÐ!Ñ=Ô=Ð=Ð=Ð=r4   c                ó4   — |                       |d¬¦  «         d S )NTrœ   r�   rž   s      r2   rA   z_ClsLevelDispatch.appendÐ   s!   € Ø×!Ò! )°tÐ!Ñ<Ô<Ð<Ð<Ð<r4   r—   ú	Type[_ET]c                óH  ‡— || j         vrCt          |dd¦  «        rt          j        ¦   «         | j         |<   nt	          ¦   «         | j         |<   | j         |         Š|j        dd …         D ]7}|| j         v r,‰                     ˆfd„| j         |         D ¦   «         ¦  «         Œ8d S )NrŽ   Tr   c                ó   •— g | ]}|‰v¯|‘Œ	S r:   r:   )Ú.0rg   Úclslevels     €r2   ú
<listcomp>z5_ClsLevelDispatch.update_subclass.<locals>.<listcomp>ß   s#   ø€ ÐLÐLÐL˜B¸À8Ð9KÐ9K�RÐ9KÐ9KÐ9Kr4   )rb   rt   ÚcollectionsÚdequer<   Ú__mro__rH   )r1   r—   r˜   r¥   s      @r2   r”   z!_ClsLevelDispatch.update_subclassÓ   sÁ   ø€ Ø˜œÐ'Ð'Ý�vÐ;¸TÑBÔBð =Ý)4Ô):Ñ)<Ô)<�”˜vÑ&Ð&å):Ñ)<Ô)<�”˜vÑ&à”> &Ô)ˆà”> ! " "Ô%ð 	ð 	ˆCØ�d”nÐ$Ð$Ø—’ØLÐLÐLÐL $¤.°Ô"5ÐLÑLÔLñô ð øð	ð 	r4   c                óÈ   — |j         }t          j        |¦  «        D ]0}|| j        v r%| j        |                              |j        ¦  «         Œ1t          j        || ¦  «         d S r-   )r�   r   r“   rb   rJ   r•   r   Ú_removed_from_collection)r1   rŠ   r—   r˜   s       r2   rJ   z_ClsLevelDispatch.removeâ   sk   € ØÔ*ˆåÔ'¨Ñ/Ô/ð 	Að 	AˆCØ�d”nÐ$Ð$Ø”˜sÔ#×*Ò*¨9Ô+?Ñ@Ô@Ð@øÝÔ)¨)°TÑ:Ô:Ð:Ð:Ð:r4   c                óÖ   — t          ¦   «         }| j                             ¦   «         D ]+}|                     |¦  «         |                     ¦   «          Œ,t          j        | |¦  «         dS )zClear all class level listenersN)Úsetrb   Úvaluesr‡   rT   r   Ú_clear)r1   Úto_clearÚ
dispatchers      r2   rT   z_ClsLevelDispatch.clearê   si   € õ *-©¬ˆØœ.×/Ò/Ñ1Ô1ð 	ð 	ˆJØ�OŠO˜JÑ'Ô'Ð'Ø×ÒÑÔÐÐÝŒ˜˜hÑ'Ô'Ð'Ð'Ð'r4   Úobjú_Dispatch[_ET]ú_ClsLevelDispatch[_ET]c                ó   — | S ©z™Return an event collection which can be modified.

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

        r:   ©r1   r²   s     r2   Ú
for_modifyz_ClsLevelDispatch.for_modifyó   s	   € ð ˆr4   N)re   rf   rg   r   ©rg   r   rz   rK   r+   r   )rg   r   r+   r   )rŠ   r‹   rŒ   rK   r+   r>   ©rŠ   r‹   rš   rK   r+   r>   )r—   r¡   r+   r>   ©rŠ   r‹   r+   r>   rY   )r²   r³   r+   r´   )r5   r6   r7   rv   r8   r9   ry   r�   r}   r™   rŸ   rA   r”   rJ   rT   r¸   r:   r4   r2   r\   r\   r   s4  € € € € € € Ø<Ð<ð€Ið €L€L�LØ€I€I�IØÐÐÑØ€L€L�LØCÐCÐCÑCðð ð ñ ð5ð 5ð 5ð 5ð*ð ð ð ðð ð ð ð8ð 8ð 8ð 8ð4>ð >ð >ð >ð=ð =ð =ð =ðð ð ð ð;ð ;ð ;ð ;ð(ð (ð (ð (ðð ð ð ð ð r4   r\   c                  ó†   — e Zd ZU dZded<   d$d	„Zd%d„Zd&d„Zd'd„Zd(d„Z	d)d„Z
d)d„Zd)d„Zd)d„Zd*d„Zd*d„Zd+d„Zd,d"„Zd#S )-Ú_InstanceLevelDispatchr:   r´   Úparentrg   r   rz   rK   r+   c                ó8   — | j                              ||¦  «        S r-   )r¾   r�   ©r1   rg   rz   s      r2   r�   z&_InstanceLevelDispatch._adjust_fn_spec  s   € ð Œ{×*Ò*¨2¨uÑ5Ô5Ð5r4   Úitemr   c                ó   — t          ¦   «         ‚r-   ©ÚNotImplementedError©r1   rÁ   s     r2   rN   z#_InstanceLevelDispatch.__contains__  ó   € Ý!Ñ#Ô#Ð#r4   rU   c                ó   — t          ¦   «         ‚r-   rÃ   r0   s    r2   rX   z_InstanceLevelDispatch.__len__
  rÆ   r4   úIterator[_ListenerFnType]c                ó   — t          ¦   «         ‚r-   rÃ   r0   s    r2   rR   z_InstanceLevelDispatch.__iter__  rÆ   r4   c                ó   — t          ¦   «         ‚r-   rÃ   r0   s    r2   Ú__bool__z_InstanceLevelDispatch.__bool__  rÆ   r4   ro   rƒ   r>   c                ó   — t          ¦   «         ‚r-   rÃ   ©r1   ro   rƒ   s      r2   Ú	exec_oncez _InstanceLevelDispatch.exec_once  rÆ   r4   c                ó   — t          ¦   «         ‚r-   rÃ   rÍ   s      r2   Úexec_once_unless_exceptionz1_InstanceLevelDispatch.exec_once_unless_exception  rÆ   r4   c                ó   — t          ¦   «         ‚r-   rÃ   rÍ   s      r2   Ú_exec_w_sync_on_first_runz0_InstanceLevelDispatch._exec_w_sync_on_first_run  rÆ   r4   c                ó   — t          ¦   «         ‚r-   rÃ   rÍ   s      r2   Ú__call__z_InstanceLevelDispatch.__call__  rÆ   r4   rŠ   r‹   rš   c                ó   — t          ¦   «         ‚r-   rÃ   rž   s      r2   rŸ   z_InstanceLevelDispatch.insert  rÆ   r4   c                ó   — t          ¦   «         ‚r-   rÃ   rž   s      r2   rA   z_InstanceLevelDispatch.append"  rÆ   r4   c                ó   — t          ¦   «         ‚r-   rÃ   ©r1   rŠ   s     r2   rJ   z_InstanceLevelDispatch.remove%  rÆ   r4   r²   ú_DispatchCommon[_ET]ú_InstanceLevelDispatch[_ET]c                ó   — | S r¶   r:   r·   s     r2   r¸   z!_InstanceLevelDispatch.for_modify(  ó	   € ð ˆr4   Nr¹   ©rÁ   r   r+   rK   rZ   ©r+   rÈ   ©r+   rK   ©ro   r   rƒ   r   r+   r>   rº   r»   )r²   rÙ   r+   rÚ   )r5   r6   r7   r8   r9   r�   rN   rX   rR   rË   rÎ   rÐ   rÒ   rÔ   rŸ   rA   rJ   r¸   r:   r4   r2   r½   r½   ý   s+  € € € € € € Ø€Ià"Ð"Ð"Ñ"ð6ð 6ð 6ð 6ð
$ð $ð $ð $ð$ð $ð $ð $ð$ð $ð $ð $ð$ð $ð $ð $ð$ð $ð $ð $ð$ð $ð $ð $ð$ð $ð $ð $ð$ð $ð $ð $ð$ð $ð $ð $ð$ð $ð $ð $ð$ð $ð $ð $ð	ð 	ð 	ð 	ð 	ð 	r4   r½   c                  óÒ   — e Zd ZU dZdZ e¦   «         Zded<   dZded<   ded	<   d
ed<   ded<   d,d„Z	d-d„Z
d.d„Zd.d„Zd.d„Zd.d„Zd.d„Zd.d„Zd.d „Zd/d"„Zd0d%„Zd1d'„Zd2d)„Zd3d*„Zd+S )4Ú_EmptyListenerzÙ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_listenersr^   zFrozenSet[_ListenerFnType]rš   r:   z	Tuple[()]Ú	listenersr´   r¾   z(_ListenerFnSequenceType[_ListenerFnType]rã   rd   r^   Ú
target_clsr¡   c                óŒ   — ||j         vr|                     |¦  «         || _        |j         |         | _        |j        | _        d S r-   )rb   r”   r¾   rã   r^   )r1   r¾   rå   s      r2   ry   z_EmptyListener.__init__F  sH   € Ø˜VÔ-Ð-Ð-Ø×"Ò" :Ñ.Ô.Ð.ØˆŒØ &Ô 0°Ô <ˆÔØ”KˆŒ	ˆ	ˆ	r4   r²   rÙ   r+   ú_ListenerCollection[_ET]c                ó�  — t          d|¦  «        }|j        €J ‚t          || j        ¦  «        }t          j        5  || u st          |t          ¦  «        rt          | j	        |j        ¦  «        }n%t          |t          ¦  «        sJ ‚|cddd¦  «         S || u rt          || j        |¦  «         ddd¦  «         n# 1 swxY w Y   |S )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_clsrt   r^   r   Úmini_gilr�   Ú_JoinedListenerÚ_ListenerCollectionr¾   Úsetattr)r1   r²   ÚexistingÚresults       r2   r¸   z_EmptyListener.for_modifyM  s-  € õ Ð# SÑ)Ô)ˆàÔ Ð,Ð,Ð,Ý˜3 ¤	Ñ*Ô*ˆåŒ]ð 	0ð 	0Ø˜4ÐÐ¥:¨h½Ñ#HÔ#HÐÝ,¨T¬[¸#Ô:KÑLÔL��õ
 " (Õ,?Ñ@Ô@Ð@Ð@Ð@Øð	0ð 	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð ˜4ÐÐÝ˜˜TœY¨Ñ/Ô/Ð/ð	0ð 	0ð 	0ñ 	0ô 	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0øøøð 	0ð 	0ð 	0ð 	0ð ˆs   »AB;ÂB;Â;B?ÃB?ro   r   rƒ   r   c                ó    — t          d¦  «        ‚)Nzneed to call for_modify()rÃ   rÍ   s      r2   Ú_needs_modifyz_EmptyListener._needs_modifyk  s   € Ý!Ð"=Ñ>Ô>Ð>r4   c                ó    —  | j         |i |¤Ž d S r-   ©rñ   rÍ   s      r2   rÎ   z_EmptyListener.exec_oncen  ó    € ØˆÔ˜DÐ' BÐ'Ð'Ð'Ð'Ð'r4   c                ó    —  | j         |i |¤Ž d S r-   ró   rÍ   s      r2   rÐ   z)_EmptyListener.exec_once_unless_exceptionq  rô   r4   c                ó    —  | j         |i |¤Ž d S r-   ró   rÍ   s      r2   rŸ   z_EmptyListener.insertt  rô   r4   c                ó    —  | j         |i |¤Ž d S r-   ró   rÍ   s      r2   rA   z_EmptyListener.appendw  rô   r4   c                ó    —  | j         |i |¤Ž d S r-   ró   rÍ   s      r2   rJ   z_EmptyListener.removez  rô   r4   c                ó    —  | j         |i |¤Ž d S r-   ró   rÍ   s      r2   rT   z_EmptyListener.clear}  rô   r4   r>   c                ó*   — | j         D ]
} ||i |¤Ž ŒdS ©zExecute this event.N©rã   ©r1   ro   rƒ   rg   s       r2   rÔ   z_EmptyListener.__call__€  s3   € ð Ô'ð 	ð 	ˆBØˆB�ˆO˜ˆOˆOˆOˆOð	ð 	r4   rÁ   rK   c                ó   — || j         v S r-   rü   rÅ   s     r2   rN   z_EmptyListener.__contains__†  s   € Ø�tÔ,Ð,Ð,r4   rU   c                ó*   — t          | j        ¦  «        S r-   )Úlenrã   r0   s    r2   rX   z_EmptyListener.__len__‰  s   € Ý�4Ô(Ñ)Ô)Ð)r4   rÈ   c                ó*   — t          | j        ¦  «        S r-   )rQ   rã   r0   s    r2   rR   z_EmptyListener.__iter__Œ  ó   € Ý�DÔ)Ñ*Ô*Ð*r4   c                ó*   — t          | j        ¦  «        S r-   )rK   rã   r0   s    r2   rË   z_EmptyListener.__bool__�  r  r4   N©r¾   r´   rå   r¡   ©r²   rÙ   r+   rç   )ro   r   rƒ   r   r+   r   rà   rÝ   rZ   rÞ   rß   )r5   r6   r7   rv   r8   Ú	frozensetrš   r9   rä   ry   r¸   rñ   rÎ   rÐ   rŸ   rA   rJ   rT   rÔ   rN   rX   rR   rË   r:   r4   r2   râ   râ   4  sˆ  € € € € € € ðð ð 5€Ià,5¨I©K¬K€IÐ7Ð7Ð7Ñ7Ø€IÐÐÐÑØ"Ð"Ð"Ñ"Ø>Ð>Ð>Ñ>Ø€I€I�Ið ð  ð  ð  ðð ð ð ð<?ð ?ð ?ð ?ð(ð (ð (ð (ð(ð (ð (ð (ð(ð (ð (ð (ð(ð (ð (ð (ð(ð (ð (ð (ð(ð (ð (ð (ðð ð ð ð-ð -ð -ð -ð*ð *ð *ð *ð+ð +ð +ð +ð+ð +ð +ð +ð +ð +r4   râ   c                  ó   — e Zd Zdd„Zdd„ZdS )Ú_MutexProtocolr+   rK   c                ó   — d S r-   r:   r0   s    r2   Ú	__enter__z_MutexProtocol.__enter__”  s   € € € r4   Úexc_typeúOptional[Type[BaseException]]Úexc_valúOptional[BaseException]Úexc_tbúOptional[TracebackType]úOptional[bool]c                ó   — d S r-   r:   )r1   r  r  r  s       r2   Ú__exit__z_MutexProtocol.__exit__–  s	   € ð
 ˜r4   Nrß   )r  r  r  r  r  r  r+   r  )r5   r6   r7   r
  r  r:   r4   r2   r  r  “  s4   € € € € € Ø$Ð$Ð$Ð$ðð ð ð ð ð r4   r  c                  ó°   ‡ — e Zd ZU dZded<   ded<   ded<   ded<   ded	<   d!ˆ fd„Zd"d„Zd#d„Zd$d„Zd%d„Z	d%d„Z
d%d„Zd%d„Zd&d„Zd'd„Zd(d„Zd)d „Zˆ xZS )*Ú_CompoundListener)Ú_exec_once_mutexÚ
_exec_onceÚ_exec_w_sync_onceÚ_is_asynciozOptional[_MutexProtocol]r  úCollection[_ListenerFnType]rã   rä   rK   r  r  Úargr   rƒ   c                óH   •—  t          ¦   «         j        |i |¤Ž d| _        d S rM   )Úsuperry   r  )r1   r  rƒ   Ú	__class__s      €r2   ry   z_CompoundListener.__init__¬  s-   ø€ Ø�‰ŒÔ˜#Ð$ Ð$Ð$Ð$Ø ˆÔÐÐr4   r+   r>   c                ó   — d| _         d S )NT)r  r0   s    r2   Ú_set_asyncioz_CompoundListener._set_asyncio°  s   € ØˆÔÐÐr4   r  c                óæ   — t           j        5  | j        �| j        cd d d ¦  «         S | j        rt	          ¦   «         }nt          j        ¦   «         }|| _        |cd d d ¦  «         S # 1 swxY w Y   d S r-   )r   rê   r  r  r    Ú	threadingÚLock)r1   Úmutexs     r2   Ú_get_exec_once_mutexz&_CompoundListener._get_exec_once_mutex³  s×   € ÝŒ]ð 
	ð 
	ØÔ$Ð0ØÔ,ð
	ð 
	ð 
	ð 
	ñ 
	ô 
	ð 
	ð 
	ð Ôð )Ý(Ñ*Ô*��å!œÑ(Ô(�Ø$)ˆDÔ!àð
	ð 
	ð 
	ð 
	ñ 
	ô 
	ð 
	ð 
	ð 
	ð 
	ð 
	ð 
	øøøð 
	ð 
	ð 
	ð 
	ð 
	ð 
	s   �A&¨1A&Á&A*Á-A*Úretry_on_exceptionro   c                óÐ   — |                       ¦   «         5  | j        s1	  | |i |¤Ž d}n#  d}‚ xY w	 |r|sd| _        n# |r|sd| _        w xY wd d d ¦  «         d S # 1 swxY w Y   d S )NFT)r%  r  )r1   r&  ro   rƒ   Ú	exceptions        r2   Ú_exec_once_implz!_CompoundListener._exec_once_implÀ  sû   € ð ×&Ò&Ñ(Ô(ð 
	/ð 
	/Ø”?ð 	/ð/Ø�D˜$Ð% "Ð%Ð%Ð%Ø %�I�IøðØ $�IØøøøð ð
 %ð /Ð,>ð /Ø*.˜œøøð %ð /Ð,>ð /Ø*.˜œÐ.Ð.Ð.Ð.ð
	/ð 
	/ð 
	/ñ 
	/ô 
	/ð 
	/ð 
	/ð 
	/ð 
	/ð 
	/ð 
	/ð 
	/øøøð 
	/ð 
	/ð 
	/ð 
	/ð 
	/ð 
	/s1   •Až
)¨>©.®>²A¾AÁAÁAÁ"Ac                ó:   — | j         s | j        dg|¢R i |¤Ž dS dS )z]Execute this event, but only if it has not been
        executed already for this collection.FN©r  r)  rÍ   s      r2   rÎ   z_CompoundListener.exec_onceÏ  sA   € ð Œð 	5Ø ˆDÔ  Ð4¨Ð4Ð4Ð4°Ð4Ð4Ð4Ð4Ð4ð	5ð 	5r4   c                ó:   — | j         s | j        dg|¢R i |¤Ž dS dS )at  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Ð   z,_CompoundListener.exec_once_unless_exceptionÖ  sA   € ð Œð 	4Ø ˆDÔ  Ð3¨Ð3Ð3Ð3°Ð3Ð3Ð3Ð3Ð3ð	4ð 	4r4   c                ó²   — | j         sG|                      ¦   «         5  	  | |i |¤Ž d| _         n#  ‚ xY w	 ddd¦  «         dS # 1 swxY w Y   dS  | |i |¤Ž dS )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)r  r%  rÍ   s      r2   rÒ   z+_CompoundListener._exec_w_sync_on_first_runå  sØ   € ð Ô%ð 		Ø×*Ò*Ñ,Ô,ð 2ð 2ð2Ø�D˜$Ð% "Ð%Ð%Ð%ð .2�DÔ*Ð*øðØøøøà*ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 2ð 2ð ˆD�$Ð˜"ÐÐÐÐÐs#   œAž.¦A®1±AÁAÁ	Ac                óN   — | j         D ]
} ||i |¤Ž Œ| j        D ]
} ||i |¤Ž ŒdS rû   ©rã   rä   rý   s       r2   rÔ   z_CompoundListener.__call__þ  sW   € ð Ô'ð 	ð 	ˆBØˆB�ˆO˜ˆOˆOˆOˆOØ”.ð 	ð 	ˆBØˆB�ˆO˜ˆOˆOˆOˆOð	ð 	r4   rÁ   c                ó&   — || j         v p|| j        v S r-   r/  rÅ   s     r2   rN   z_CompoundListener.__contains__  s   € Ø�tÔ,Ð,ÐF°¸¼Ð0FÐFr4   rU   c                óT   — t          | j        ¦  «        t          | j        ¦  «        z   S r-   )r   rã   rä   r0   s    r2   rX   z_CompoundListener.__len__	  s"   € Ý�4Ô(Ñ)Ô)­C°´Ñ,?Ô,?Ñ?Ð?r4   rÈ   c                ó6   — t          | j        | j        ¦  «        S r-   )r   rã   rä   r0   s    r2   rR   z_CompoundListener.__iter__  s   € Ý�TÔ*¨D¬NÑ;Ô;Ð;r4   c                ó8   — t          | j        p| j        ¦  «        S r-   )rK   rä   rã   r0   s    r2   rË   z_CompoundListener.__bool__  s   € Ý�D”NÐ; dÔ&;Ñ<Ô<Ð<r4   )r  r   rƒ   r   rY   )r+   r  )r&  rK   ro   r   rƒ   r   r+   r>   rà   rÝ   rZ   rÞ   rß   )r5   r6   r7   r8   r9   ry   r   r%  r)  rÎ   rÐ   rÒ   rÔ   rN   rX   rR   rË   Ú__classcell__©r  s   @r2   r  r  ž  sh  ø€ € € € € € ð€Ið /Ð.Ð.Ñ.Ø1Ð1Ð1Ñ1Ø*Ð*Ð*Ñ*ØÐÐÑØÐÐÑð!ð !ð !ð !ð !ð !ð ð  ð  ð  ðð ð ð ð/ð /ð /ð /ð5ð 5ð 5ð 5ð4ð 4ð 4ð 4ðð ð ð ð2ð ð ð ðGð Gð Gð Gð@ð @ð @ð @ð<ð <ð <ð <ð=ð =ð =ð =ð =ð =ð =ð =r4   r  c                  ó�   ‡ — e Zd ZU dZdZded<   ded<   ded<   d	ed
<   ded<   d!ˆ fd„Zd"d„Z	 d#d$d„Zd%d„Z	d%d„Z
d&d„Zd'd „Zˆ xZS )(rì   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¾   r^   rä   rš   rc   r  rã   r´   r¾   rd   r^   zDeque[_ListenerFnType]rä   zSet[_ListenerFnType]rš   rå   r¡   c                óN  •— t          ¦   «                              ¦   «          ||j        vr|                     |¦  «         d| _        d| _        d | _        |j        |         | _        || _        |j	        | _	        t          j        ¦   «         | _        t          ¦   «         | _        d S rM   )r  ry   rb   r”   r  r  r  rã   r¾   r^   r§   r¨   rä   r­   rš   )r1   r¾   rå   r  s      €r2   ry   z_ListenerCollection.__init__,  s‘   ø€ Ý‰Œ×ÒÑÔÐØ˜VÔ-Ð-Ð-Ø×"Ò" :Ñ.Ô.Ð.ØˆŒØ!&ˆÔØ $ˆÔØ &Ô 0°Ô <ˆÔØˆŒØ”KˆŒ	Ý$Ô*Ñ,Ô,ˆŒÝ™œˆŒˆˆr4   r²   rÙ   r+   rç   c                ó   — | S )zžReturn an event collection which can be modified.

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

        r:   r·   s     r2   r¸   z_ListenerCollection.for_modify9  rÜ   r4   TrE   Úonly_propagaterK   r>   c                ó`  ‡ ‡‡— ‰ j         }t          |¦  «        Š‰ j                             |j        ¦  «         ˆˆˆ fd„|j         D ¦   «         }|                     |¦  «         |j        r‰                      ¦   «          |j                             |¦  «        }t          j	        ‰ ||¦  «         dS )zIPopulate from the listeners in another :class:`_Dispatch`
        object.c                ó2   •— g | ]}|‰vr‰r	|‰j         v ¯|‘ŒS r:   )rš   )r¤   ÚlÚexisting_listener_setr9  r1   s     €€€r2   r¦   z/_ListenerCollection._update.<locals>.<listcomp>L  sF   ø€ ð 
ð 
ð 
àØÐ-Ð-Ð-Ø"ð .à�D”NÐ"Ð"ð	 ð #Ð"Ð"r4   N)
rä   r­   rš   r‡   rH   r  r   Úunionr   Ú_stored_in_collection_multi)r1   rE   r9  Úexisting_listenersÚother_listenersÚto_associater=  s   ` `   @r2   Ú_updatez_ListenerCollection._updateD  sÍ   øøø€ ð
 "œ^ÐÝ #Ð$6Ñ 7Ô 7ÐØŒ×Ò˜eœoÑ.Ô.Ð.ð
ð 
ð 
ð 
ð 
ð 
à”_ð
ñ 
ô 
ˆð 	×!Ò! /Ñ2Ô2Ð2àÔð 	 Ø×ÒÑÔÐà”×,Ò,¨_Ñ=Ô=ˆÝÔ,¨T°5¸,ÑGÔGÐGÐGÐGr4   rŠ   r‹   c                ó†   — |                      | | j        ¦  «        r#|r#| j                             |j        ¦  «         d S d S d S r-   )Úprepend_to_listrä   rš   Úaddr•   rž   s      r2   rŸ   z_ListenerCollection.insert\  sW   € Ø×$Ò$ T¨4¬>Ñ:Ô:ð 	9Øð 9Ø”×"Ò" 9Ô#7Ñ8Ô8Ð8Ð8Ð8ð	9ð 	9ð9ð 9r4   c                ó†   — |                      | | j        ¦  «        r#|r#| j                             |j        ¦  «         d S d S d S r-   )Úappend_to_listrä   rš   rF  r•   rž   s      r2   rA   z_ListenerCollection.appenda  sW   € Ø×#Ò# D¨$¬.Ñ9Ô9ð 	9Øð 9Ø”×"Ò" 9Ô#7Ñ8Ô8Ð8Ð8Ð8ð	9ð 	9ð9ð 9r4   c                ó¬   — | j                              |j        ¦  «         | j                             |j        ¦  «         t          j        || ¦  «         d S r-   )rä   rJ   r•   rš   Údiscardr   r«   rØ   s     r2   rJ   z_ListenerCollection.removef  sM   € ØŒ×Ò˜iÔ2Ñ3Ô3Ð3ØŒ×Ò˜yÔ3Ñ4Ô4Ð4ÝÔ)¨)°TÑ:Ô:Ð:Ð:Ð:r4   c                óž   — t          j        | | j        ¦  «         | j                             ¦   «          | j                             ¦   «          d S r-   )r   r¯   rä   rš   rT   r0   s    r2   rT   z_ListenerCollection.cleark  sD   € ÝŒ˜˜dœnÑ-Ô-Ð-ØŒ×ÒÑÔÐØŒ×ÒÑÔÐÐÐr4   r  r  )T)rE   rç   r9  rK   r+   r>   rº   r»   rY   )r5   r6   r7   rv   r8   r9   ry   r¸   rC  rŸ   rA   rJ   rT   r4  r5  s   @r2   rì   rì     s  ø€ € € € € € ðð ð€Ið 2Ð1Ð1Ñ1Ø"Ð"Ð"Ñ"Ø€I€I�IØ%Ð%Ð%Ñ%Ø#Ð#Ð#Ñ#ðð ð ð ð ð ð	ð 	ð 	ð 	ð GKðHð Hð Hð Hð Hð09ð 9ð 9ð 9ð
9ð 9ð 9ð 9ð
;ð ;ð ;ð ;ð
ð ð ð ð ð ð ð r4   rì   c                  óš   — e Zd ZU dZded<   ded<   ded<   ded	<   dd„Zej        sed d„¦   «         Z	d!d„Z
d"d„Zd#d„Zd#d„Zd$d„Zd%d„ZdS )&rë   )Úparent_dispatchr^   Úlocalrã   rÙ   rM  rd   r^   rÚ   rN  r  rã   ú_EmptyListener[_ET]c                ór   — d| _         d| _        d | _        || _        || _        || _        | j        | _        d S rM   )r  r  r  rM  r^   rN  rã   )r1   rM  r^   rN  s       r2   ry   z_JoinedListener.__init__y  sA   € ð  ˆŒØ!&ˆÔØ $ˆÔØ.ˆÔØˆŒ	ØˆŒ
Ø $¤
ˆÔÐÐr4   r+   c                ó6   — t          | j        | j        ¦  «        S r-   )rt   rM  r^   r0   s    r2   rä   z_JoinedListener.listenersŽ  s   € å˜4Ô/°´Ñ;Ô;Ð;r4   rg   r   rz   rK   c                ó8   — | j                              ||¦  «        S r-   )rN  r�   rÀ   s      r2   r�   z_JoinedListener._adjust_fn_spec’  s   € ð Œz×)Ò)¨"¨eÑ4Ô4Ð4r4   r²   ú_JoinedListener[_ET]c                óR   — | j                              |¦  «        x| _         | _        | S r-   )rN  r¸   rã   r·   s     r2   r¸   z_JoinedListener.for_modify—  s&   € Ø-1¬Z×-BÒ-BÀ3Ñ-GÔ-GÐGˆŒ
�TÔ*Øˆr4   rŠ   r‹   rš   r>   c                ó<   — | j                              ||¦  «         d S r-   )rN  rŸ   rž   s      r2   rŸ   z_JoinedListener.insert›  ó    € ØŒ
×Ò˜) YÑ/Ô/Ð/Ð/Ð/r4   c                ó<   — | j                              ||¦  «         d S r-   )rN  rA   rž   s      r2   rA   z_JoinedListener.appendž  rV  r4   c                ó:   — | j                              |¦  «         d S r-   )rN  rJ   rØ   s     r2   rJ   z_JoinedListener.remove¡  s   € ØŒ
×Ò˜)Ñ$Ô$Ð$Ð$Ð$r4   c                ó   — t          ¦   «         ‚r-   rÃ   r0   s    r2   rT   z_JoinedListener.clear¤  rÆ   r4   N)rM  rÙ   r^   rd   rN  rO  )r+   r  r¹   )r²   rÙ   r+   rS  rº   r»   rY   )r5   r6   r7   r8   r9   ry   ÚtypingÚTYPE_CHECKINGÚpropertyrä   r�   r¸   rŸ   rA   rJ   rT   r:   r4   r2   rë   rë   q  s  € € € € € € ØF€Ià)Ð)Ð)Ñ)Ø€I€I�IØ&Ð&Ð&Ñ&Ø1Ð1Ð1Ñ1ð+ð +ð +ð +ð Ôð 	<ð 
ð	<ð 	<ð 	<ñ 
Œð	<ð5ð 5ð 5ð 5ð
ð ð ð ð0ð 0ð 0ð 0ð0ð 0ð 0ð 0ð%ð %ð %ð %ð$ð $ð $ð $ð $ð $r4   rë   )9rv   Ú
__future__r   r§   Ú	itertoolsr   r"  Útypesr   rZ  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<   Ú_ListenerFnSequenceTyper\   r½   râ   r  r  rì   rë   r:   r4   r2   ú<module>rf     s•  ððð ð0 #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø !Ð !Ð !Ð !Ð !Ð !Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ø "Ð "Ð "Ð "Ð "Ð "à€WˆT˜ÐÑÔ€à	Ôð )ØÐÐÐÐÐØ%Ð%Ð%Ð%Ð%Ð%Ø(Ð(Ð(Ð(Ð(Ð(ð<ð <ð <ð <ð <�DÔ&¨°¬ñ <ô <ð <ðð ð ð ð ˜
 2œñ ô ð ð4    b¤	Ð+<¸RÔ+@Ð @ÔAÐ ðHð Hð Hð Hð H˜ cÔ*ñ Hô Hð HðV4ð 4ð 4ð 4ð 4˜]¨3Ô/°¸OÔ1Lñ 4ô 4ð 4ðn\+ð \+ð \+ð \+ð \+Ð+¨CÔ0ñ \+ô \+ð \+ð~ð ð ð ð �Xñ ô ð ðr=ð r=ð r=ð r=ð r=Ð.¨sÔ3ñ r=ô r=ð r=ðj[ð [ð [ð [ð [Ð+¨CÔ0ñ [ô [ð [ð|4$ð 4$ð 4$ð 4$ð 4$Ð'¨Ô,ñ 4$ô 4$ð 4$ð 4$ð 4$r4   