� l\�g�+��H�UdZddlmZddlZddlZddlZddlmZddlmZddlmZddlm Z ddlm Z dd lm Z dd lm Z dd lm Z dd lmZdd lmZddlmZddlZddlmZddlmZejr ddlmZddlmZedefZeeeeeffZeeeefZedd���ZGd�d��Z e dZ!ej"e#��Z$de%d< e defZ&ej"e#��Z'de%d< d4d$�Z(d5d*�Z)d6d+�Z*d7d0�Z+d8d1�Z,Gd2�d3e e��Z-dS)9aJProvides 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�"�eZdZUdZdZded<dS)rz�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. �zdispatcher[Any]�dispatchN)�__name__� __module__� __qualname__�__doc__� __slots__�__annotations__r��i/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/sqlalchemy/event/registry.pyrr2s/����������I������r!)zweakref.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�:�tr |tvrdStd|��}t�|��}|���D]I}|tvr>t|}|�|��|st�|���JdS)Nz'weakref.ref[RefCollection[EventTarget]])r%r�pop�valuesr$)r&�listener_to_key�key� dispatch_regs r"�_collection_gcedr0gs��� ���,>�!>�!>��� �8�#� >� >�C�(�,�,�S�1�1�O��%�%�'�'�,�,�� �$� $� $�-�c�2�L� � � �S� !� !� !�� ,�"�&�&�s�+�+�+�� ,�,r!� event_key�_EventKey[_ET]�owner�RefCollection[_ET]�boolc��|j}t|}|j}tj|j��}||vrdS|||<t |}|||<dS)NFT)�_keyr$r&�weakref� _listen_fnr%)r1r3r.r/� owner_ref� listen_refr-s r"�_stored_in_collectionr<xsa�� �.�C�%�c�*�L�� �I���Y�1�2�2�J��L� � ��u�(�L���(��3�O�"%�O�J�� �4r!c� �|j}t|}tj|j��}|j}|�|d��|st|=|t vr%t |}|�|d��dSdS�N)r7r$r8r&r9r+r%)r1r3r.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�<�|sdS|j}|j}t|}t|}|D]l}tj|��} ||} n#t$rY�,wxYw t| } n#t$rY�KwxYw|| vr| ||ksJ�n|| |<| ||<�mdSr>)r&r%r8�KeyErrorr$) r@rArB� 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���|sdS|j}t|}|D]K}tj|��}||}t|}|�|d��|st|=�LdSr>)r&r%r8r$r+)r3rBr:r-rJr;r.r/s r"�_clearrM�s��� ����� �I�(��3�O��(�(� ��[��+�+� ��j�)��)�#�.� �����D�)�)�)�� (�"�3�'��(�(r!c���eZdZUdZdZded<ded<ded<d ed <d ed <d ed< d/d0d�Zed1d���Zd2d�Z d3d�Z d4d�Z d5d�Z d6d�Z d7d8d&�Zed9d'���Zd:d,�Zd;d-�Zd:d.�ZdS)<� _EventKeyz$Represent :func:`.listen` arguments.)�target� identifier�fn�fn_key�fn_wrap�dispatch_targetrrP�strrQ�_ListenerFnTyperR�_ListenerFnKeyTyperSrrU�Optional[_ListenerFnType]�_fn_wrapNc��||_||_||_t|tj��r.t |j��t |j��f|_ nt |��|_ ||_ ||_ dSr>) rPrQrR� isinstance�types� MethodType�id�__func__�__self__rSrTrU)�selfrPrQrRrUrZs r"�__init__z_EventKey.__init__�sn���� �$������ �b�%�*� +� +� !��R�[�/�/�2�b�k�?�?�:�D�K�K��R�&�&�D�K��� �.����r!r(�_EventKeyTupleTypec�D�t|j��|j|jfSr>)r_rPrQrS�rbs r"r7z_EventKey._keys���4�;�����$�+�>�>r!rTr2c�h�||jur|St|j|j|j|j|���S�N)rZ)r9rOrPrQrRrU)rbrTs r"� with_wrapperz_EventKey.with_wrappersC�� �d�o� %� %��K��� ������$� � ��� r!c�h�||jur|St|j|j|j||j���Srh)rUrOrPrQrRrT)rbrUs r"�with_dispatch_targetz_EventKey.with_dispatch_targetsC�� �d�2� 2� 2��K��� �������� ��� r!�args�kwr)c�x�|�dd��}|�dd��}|�dd��}|j|j|j}}}t |j|��} | �||��} |�| ��}t |jjj|j��} t| d��r| � ��|s|r;|�tj |j|�����j |i|��dS|jjj|g|�Ri|��dS)N�onceF�_once_unless_exception�named�_sa_warn)�retry_on_exception)r+rUrQr9�getattrr�_adjust_fn_specri�_events�hasattrrrr� only_once�listen�_listen) rbrlrmro�once_unless_exceptionrqrPrQrR�dispatch_collection� adjusted_fn� stub_functions r"ryz_EventKey.listensy���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}|tvr-tjd|j�d|j�d|j�d����t�|��}|���D]E\}}|��}|��}|�*|�(|� |� |�����FdS)NzNo listeners found for event z / � ) r7r$r�InvalidRequestErrorrPrQrRr+�items�removeri)rbr.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� Br!r5c��|jtvS)z6Return True if this event key is registered to listen.)r7r$rfs r"�containsz_EventKey.containsMs���y�.�.�.r!F� propagate�insertrq�retval�Optional[bool]�asyncioc� �|j|j}}t|j|��}|�|j��} |r| ���|r| �||��dS| �||��dSr>)rUrQrtr� for_modify� _set_asyncior��append) rbr�r�rqr�r�rPrQr|r�s r"� base_listenz_EventKey.base_listenQs���"�1�4�?� ��%�f�o�z�B�B��(�3�3�F�O�D�D� � � &� � #� #� %� %� %� � /� � � �d�I� .� .� .� .� .� � � �d�I� .� .� .� .� .r!c��|jp|jSr>)rTrRrfs r"r9z_EventKey._listen_fnfs���|�&�t�w�&r!r3r4�list_�Deque[_ListenerFnType]c�^�t||��r|�|j��dSdS�NTF)r<r�r9�rbr3r�s r"�append_to_listz_EventKey.append_to_listjs4�� !��u� -� -� � �L�L��� )� )� )��4��5r!c�Z�t||��|�|j��dSr>)r?r�r9r�s r"�remove_from_listz_EventKey.remove_from_listus.�� !��u�-�-�-� � � �T�_�%�%�%�%�%r!c�^�t||��r|�|j��dSdSr�)r<� appendleftr9r�s r"�prepend_to_listz_EventKey.prepend_to_list}s6�� !��u� -� -� � � � �T�_� -� -� -��4��5r!r>) rPrrQrVrRrWrUrrZrY)r(rd)rTrWr(r2)rUrr(r2)rlrrmrr(r))r(r))r(r5)FFFNF) r�r5r�r5rqr5r�r�r�r5r(r))r(rW)r3r4r�r�r(r5)r3r4r�r�r(r))rrrrrr rc�propertyr7rirkryr�r�r�r9r�r�r�rr!r"rOrO�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))r1r2r3r4r(r5)r1r2r3r4r(r))r@r4rAr4rBrCr(r))r3r4rBrCr(r)).r� __future__r� collectionsr]�typingrrrrrr r r r r rr8�rr� TYPE_CHECKING�attrr�baserrW�intrXrVrdrr�_RefCollectionToListenerType� defaultdict�dictr$r �_ListenerToEventKeyTyper%r0r<r?rKrMrOrr!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�kr!
Memory