§
    eŠtj‰+  ã                  óH  — U d Z ddlmZ ddlZddl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ZddlmZ ddlmZ ej        rddlmZ ddlmZ edef         Zeeeeef         f         Zeeeef         Z edd¬¦  «        Z G d„ d¦  «        Z e
d         Z! ej"        e#¦  «        Z$de%d<   	 e
def         Z& ej"        e#¦  «        Z'de%d<   	 d4d$„Z(d5d*„Z)d6d+„Z*d7d0„Z+d8d1„Z, G d2„ d3ee         ¦  «        Z-dS )9aJ  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                  ó"   — e Zd ZU dZdZded<   dS )r   zírepresents 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__Ú__doc__Ú	__slots__Ú__annotations__r   ó    úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sqlalchemy/event/registry.pyr   r   3   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_keyÚrefúweakref.ref[Any]ÚreturnÚNonec                ó:  — t           r	| t           vrd S t          d| ¦  «        } t                                | ¦  «        }|                     ¦   «         D ]I}|t          v r>t          |         }|                     | ¦  «         |st                               |¦  «         ŒJd S )Nz'weakref.ref[RefCollection[EventTarget]])r%   r   ÚpopÚvaluesr$   )r&   Úlistener_to_keyÚkeyÚdispatch_regs       r"   Ú_collection_gcedr0   h   s©   € åð  Õ,>Ð!>Ð!>Øˆå
Ð8¸#Ñ
>Ô
>€Cå(×,Ò,¨SÑ1Ô1€OØ×%Ò%Ñ'Ô'ð ,ð ,ˆØÕ$Ð$Ð$å-¨cÔ2ˆLØ×Ò˜SÑ!Ô!Ð!Øð ,Ý"×&Ò& sÑ+Ô+Ð+øð,ð ,r!   Ú	event_keyú_EventKey[_ET]ÚownerúRefCollection[_ET]Úboolc                ó¨   — | j         }t          |         }|j        }t          j        | j        ¦  «        }||v rdS |||<   t
          |         }|||<   dS )NFT)Ú_keyr$   r&   ÚweakrefÚ
_listen_fnr%   )r1   r3   r.   r/   Ú	owner_refÚ
listen_refr-   s          r"   Ú_stored_in_collectionr<   y   sa   € ð Œ.€Cå% cÔ*€Là”	€IÝ”˜YÔ1Ñ2Ô2€Jà�LÐ Ð Øˆuà(€L�Ñå(¨Ô3€OØ"%€O�JÑàˆ4r!   c                ó
  — | j         }t          |         }t          j        | j        ¦  «        }|j        }|                     |d ¦  «         |st          |= |t          v r%t          |         }|                     |d ¦  «         d S d S ©N)r7   r$   r8   r&   r9   r+   r%   )r1   r3   r.   r/   r;   r:   r-   s          r"   Ú_removed_from_collectionr?   Ž   s�   € ð Œ.€Cå% cÔ*€Lå”˜YÔ1Ñ2Ô2€Jà”	€IØ×Ò�Y Ñ%Ô%Ð%Øð $Ý˜sÐ#àÕ&Ð&Ð&Ý,¨YÔ7ˆð
 	×Ò˜J¨Ñ-Ô-Ð-Ð-Ð-ð 'Ð&r!   ÚnewownerÚoldownerÚelementsúIterable[_ListenerFnType]c                ó<  — |sd S |j         }| j         }t          |         }t          |         }|D ]l}t          j         |¦  «        }	 ||         }	n# t          $ r Y Œ,w xY w	 t          |	         }
n# t          $ r Y ŒKw xY w||
v r|
|         |k    sJ ‚n||
|<   |	||<   Œmd S r>   )r&   r%   r8   ÚKeyErrorr$   )r@   rA   rB   Úoldowner_refÚnewowner_refÚold_listener_to_keyÚnew_listener_to_keyÚ	listen_fnr;   r.   r/   s              r"   Ú_stored_in_collection_multirK   ¥   sÿ   € ð
 ð Øˆà”<€LØ”<€Lå,¨\Ô:ÐÝ,¨\Ô:Ðàð .ð .ˆ	Ý”[ Ñ+Ô+ˆ
ð	Ø% jÔ1ˆCˆCøÝð 	ð 	ð 	ð ˆHð	øøøð
	Ý-¨cÔ2ˆLˆLøÝð 	ð 	ð 	ØˆHð	øøøð ˜<Ð'Ð'Ø Ô-°Ò;Ð;Ð;Ð;Ð;à)3ˆL˜Ñ&à*-Ð˜JÑ'Ð'ð'.ð .s$   ÁAÁ
AÁAÁ A.Á.
A;Á:A;c                óÒ   — |sd S | j         }t          |         }|D ]K}t          j         |¦  «        }||         }t          |         }|                     |d ¦  «         |st          |= ŒLd S r>   )r&   r%   r8   r$   r+   )r3   rB   r:   r-   rJ   r;   r.   r/   s           r"   Ú_clearrM   É   s…   € ð ð Øˆà”	€IÝ(¨Ô3€OØð (ð (ˆ	Ý”[ Ñ+Ô+ˆ
Ø˜jÔ)ˆÝ)¨#Ô.ˆØ×Ò˜ DÑ)Ô)Ð)àð 	(Ý" 3Ð'øð(ð (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/d0d„Zed1d„¦   «         Zd2d„Z	d3d„Z
d4d„Zd5d„Zd6d„Z	 	 	 	 	 d7d8d&„Zed9d'„¦   «         Zd:d,„Zd;d-„Zd:d.„ZdS )<Ú	_EventKeyz$Represent :func:`.listen` arguments.)ÚtargetÚ
identifierÚfnÚfn_keyÚfn_wrapÚdispatch_targetr   rP   ÚstrrQ   Ú_ListenerFnTyperR   Ú_ListenerFnKeyTyperS   r   rU   úOptional[_ListenerFnType]Ú_fn_wrapNc                ó  — || _         || _        || _        t          |t          j        ¦  «        r.t          |j        ¦  «        t          |j        ¦  «        f| _	        nt          |¦  «        | _	        || _
        || _        d S r>   )rP   rQ   rR   Ú
isinstanceÚtypesÚ
MethodTypeÚidÚ__func__Ú__self__rS   rT   rU   )ÚselfrP   rQ   rR   rU   rZ   s         r"   Ú__init__z_EventKey.__init__ï   sn   € ð ˆŒØ$ˆŒØˆŒÝ�b�%Ô*Ñ+Ô+ð 	!Ý˜Rœ[™/œ/­2¨b¬k©?¬?Ð:ˆDŒKˆKå˜R™&œ&ˆDŒKØˆŒØ.ˆÔÐÐr!   r(   Ú_EventKeyTupleTypec                óD   — t          | j        ¦  «        | j        | j        fS r>   )r_   rP   rQ   rS   ©rb   s    r"   r7   z_EventKey._key  s   € å�4”;‘” ¤°$´+Ð>Ð>r!   rT   r2   c                óh   — || j         u r| S t          | j        | j        | j        | j        |¬¦  «        S ©N)rZ   )r9   rO   rP   rQ   rR   rU   )rb   rT   s     r"   Úwith_wrapperz_EventKey.with_wrapper  sC   € Ø�d”oÐ%Ð%ØˆKåØ”Ø”Ø”ØÔ$Ø ðñ ô ð r!   c                óh   — || j         u r| S t          | j        | j        | j        || j        ¬¦  «        S rh   )rU   rO   rP   rQ   rR   rT   )rb   rU   s     r"   Úwith_dispatch_targetz_EventKey.with_dispatch_target  sC   € Ø˜dÔ2Ð2Ð2ØˆKåØ”Ø”Ø”ØØœðñ ô ð r!   ÚargsÚkwr)   c                óx  — |                      dd¦  «        }|                      dd¦  «        }|                      dd¦  «        }| j        | j        | j        }}}t	          |j        |¦  «        }	|	                     ||¦  «        }
|                      |
¦  «        } t	          | j        j        j        | j        ¦  «        }t          |d¦  «        r| 
                    ¦   «          |s|r; |                      t          j        | j        |¬¦  «        ¦  «        j        |i |¤Ž d S  | j        j        j        | g|¢R i |¤Ž d S )NÚonceFÚ_once_unless_exceptionÚnamedÚ_sa_warn)Úretry_on_exception)r+   rU   rQ   r9   Úgetattrr   Ú_adjust_fn_specri   Ú_eventsÚhasattrrr   r   Ú	only_onceÚlistenÚ_listen)rb   rl   rm   ro   Úonce_unless_exceptionrq   rP   rQ   rR   Údispatch_collectionÚadjusted_fnÚstub_functions               r"   ry   z_EventKey.listen  sy  € Ø�vŠv�f˜eÑ$Ô$ˆØ "§¢Ð'?ÀÑ GÔ GÐØ—’�w Ñ&Ô&ˆð Ô ØŒOØŒOð �
ˆõ & f¤o°zÑBÔBÐà)×9Ò9¸"¸eÑDÔDˆà× Ò  Ñ-Ô-ˆåØÔ Ô)Ô1°4´?ñ
ô 
ˆõ �= *Ñ-Ô-ð 	%Ø×"Ò"Ñ$Ô$Ð$àð 	EÐ(ð 	EðˆD×ÒÝ”Ø”OÐ8Mðñ ô ñô ô �dð	"ð !ð	"ð "ð "ð "ð "ð 2ˆDÔ Ô)Ô1°$ÐD¸ÐDÐDÐDÀÐDÐDÐDÐDÐDr!   c           	     óh  — | j         }|t          vr-t          j        d| j        ›d| j        ›d| j        ›d�¦  «        ‚t                               |¦  «        }|                     ¦   «         D ]E\  }} |¦   «         } |¦   «         }|�*|�(| 	                    |  
                    |¦  «        ¦  «         ŒFd S )NzNo listeners found for event z / ú )r7   r$   r   ÚInvalidRequestErrorrP   rQ   rR   r+   ÚitemsÚremoveri   )rb   r.   r/   Úcollection_refÚlistener_refÚ
collectionÚlistener_fns          r"   rƒ   z_EventKey.remove=  sÔ   € ØŒiˆàÕ(Ð(Ð(ÝÔ)Ð)à”;�;�; ¤  °´°°ð:ñô ð õ
 *×-Ò-¨cÑ2Ô2ˆà,8×,>Ò,>Ñ,@Ô,@ð 	Bð 	BÑ(ˆN˜LØ'˜Ñ)Ô)ˆJØ&˜,™.œ.ˆKØÐ%¨+Ð*AØ×!Ò! $×"3Ò"3°KÑ"@Ô"@ÑAÔAÐAøð		Bð 	Br!   r5   c                ó   — | j         t          v S )z6Return True if this event key is registered to listen.)r7   r$   rf   s    r"   Úcontainsz_EventKey.containsN  s   € àŒyÕ.Ð.Ð.r!   FÚ	propagateÚinsertrq   ÚretvalúOptional[bool]Úasyncioc                ó  — | j         | j        }}t          |j        |¦  «        }|                     |j        ¦  «        }	|r|	                     ¦   «          |r|	                     | |¦  «         d S |	                     | |¦  «         d S r>   )rU   rQ   rt   r   Ú
for_modifyÚ_set_asyncior‹   Úappend)
rb   rŠ   r‹   rq   rŒ   rŽ   rP   rQ   r|   r�   s
             r"   Úbase_listenz_EventKey.base_listenR  s“   € ð "Ô1°4´?�
ˆå% f¤o°zÑBÔBÐà(×3Ò3°F´OÑDÔDˆ
Øð 	&Ø×#Ò#Ñ%Ô%Ð%àð 	/Ø×Ò˜d IÑ.Ô.Ð.Ð.Ð.à×Ò˜d IÑ.Ô.Ð.Ð.Ð.r!   c                ó   — | j         p| j        S r>   )rT   rR   rf   s    r"   r9   z_EventKey._listen_fng  s   € àŒ|Ð&˜tœwÐ&r!   r3   r4   Úlist_úDeque[_ListenerFnType]c                ó^   — t          | |¦  «        r|                     | j        ¦  «         dS dS ©NTF)r<   r’   r9   ©rb   r3   r•   s      r"   Úappend_to_listz_EventKey.append_to_listk  s4   € õ
 !  uÑ-Ô-ð 	Ø�LŠL˜œÑ)Ô)Ð)Ø�4à�5r!   c                óZ   — t          | |¦  «         |                     | j        ¦  «         d S r>   )r?   rƒ   r9   r™   s      r"   Úremove_from_listz_EventKey.remove_from_listv  s.   € õ
 	!  uÑ-Ô-Ð-Ø�Š�T”_Ñ%Ô%Ð%Ð%Ð%r!   c                ó^   — t          | |¦  «        r|                     | j        ¦  «         dS dS r˜   )r<   Ú
appendleftr9   r™   s      r"   Úprepend_to_listz_EventKey.prepend_to_list~  s6   € õ
 !  uÑ-Ô-ð 	Ø×Ò˜Tœ_Ñ-Ô-Ð-Ø�4à�5r!   r>   )
rP   r   rQ   rV   rR   rW   rU   r   rZ   rY   )r(   rd   )rT   rW   r(   r2   )rU   r   r(   r2   )rl   r   rm   r   r(   r)   )r(   r)   )r(   r5   )FFFNF)rŠ   r5   r‹   r5   rq   r5   rŒ   r�   rŽ   r5   r(   r)   )r(   rW   )r3   r4   r•   r–   r(   r5   )r3   r4   r•   r–   r(   r)   )r   r   r   r   r   r    rc   Úpropertyr7   ri   rk   ry   rƒ   r‰   r“   r9   rš   rœ   rŸ   r   r!   r"   rO   rO   Ü   s˜  € € € € € € Ø.Ð.ð€Ið €K€K�KØ€O€O�OØÐÐÑØÐÐÑØÐÐÑØ'Ð'Ð'Ñ'ð /3ð/ð /ð /ð /ð /ð$ ð?ð ?ð ?ñ „Xð?ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ðEð Eð Eð Eð@Bð Bð Bð Bð"/ð /ð /ð /ð  ØØØ!%Øð/ð /ð /ð /ð /ð* ð'ð 'ð 'ñ „Xð'ð	ð 	ð 	ð 	ð&ð &ð &ð &ð	ð 	ð 	ð 	ð 	ð 	r!   rO   )r&   r'   r(   r)   )r1   r2   r3   r4   r(   r5   )r1   r2   r3   r4   r(   r)   )r@   r4   rA   r4   rB   rC   r(   r)   )r3   r4   rB   rC   r(   r)   ).r   Ú
__future__r   Úcollectionsr]   Útypingr   r   r   r   r   r	   r
   r   r   r   r   r8   Ú r   r   ÚTYPE_CHECKINGÚattrr   Úbaser   rW   ÚintrX   rV   rd   r   r   Ú_RefCollectionToListenerTypeÚdefaultdictÚdictr$   r    Ú_ListenerToEventKeyTyper%   r0   r<   r?   rK   rM   rO   r   r!   r"   ú<module>r­      s  ððð ð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à	Ôð !Ø#Ð#Ð#Ð#Ð#Ð#Ø Ð Ð Ð Ð Ð à˜3 ˜8Ô$€Ø˜3  c¨3 h¤Ð/Ô0Ð Ø˜3 Ð%7Ð7Ô8Ð ð €gˆe˜=Ð)Ñ)Ô)€ðð ð ð ð ñ ô ð ð  $ð$ô Ð ð €KÔ˜DÑ!Ô!ð ð ð ð ñ ð	ð Ø"ØðôÐ ð €KÔ˜DÑ!Ô!ð ð "ð "ð "ñ "ð	ð,ð ,ð ,ð ,ð"ð ð ð ð*.ð .ð .ð .ð.!.ð !.ð !.ð !.ðH(ð (ð (ð (ð&kð kð kð kð k�˜”ñ kô kð kð kð kr!   