� l\�gQ��t�dZddlmZddlZddlmZddlZddlmZddl Z ddl m Z ddl m Z ddl m Z dd l m Z dd l mZdd l mZdd l mZdd l mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZddl mZddlZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#dd l$m%Z%dd!l&m'Z'ed"e �#��Z(e j)rdd$l*m+Z+dd%l*m,Z,dd&l*m-Z-Gd'�d(e#j.ee��Z/Gd)�d*e e(��Z0ee e(e0e(fZ1Gd+�d,e/e��Z2Gd-�d.e/ee e!��Z3Gd/�d0e3e��Z4Gd1�d2e'��Z5Gd3�d4e3e��Z6Gd5�d6e6e��Z7Gd7�d8e6e��Z8dS)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�&�eZdZUdZded<dd�ZdS)� RefCollection)�ref�weakref.ref[RefCollection[_ET]]r)�returnc�@�tj|tj��S�N)�weakrefr)r�_collection_gced��selfs �e/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/sqlalchemy/event/attr.py�_memoized_attr_refz RefCollection._memoized_attr_refPs���{�4��!:�;�;�;�N)r+r*)�__name__� __module__� __qualname__� __slots__�__annotations__r3�r4r2r(r(Ks;��������I�(�(�(�(�<�<�<�<�<�<r4r(c�N�eZdZdd�Zdd�Zdd �Zdd �Zdd �Zdd�Zdd�Z dd�Z dS)�_empty_collection�elementr"r+�Nonec��dSr-r:�r1r=s r2�appendz_empty_collection.appendU��� �r4c��dSr-r:r@s r2� appendleftz_empty_collection.appendleftXrBr4�other� Sequence[_T]c��dSr-r:)r1rEs r2�extendz_empty_collection.extend[rBr4c��dSr-r:r@s r2�removez_empty_collection.remove^rBr4r�boolc��dS�NFr:r@s r2� __contains__z_empty_collection.__contains__as���ur4� Iterator[_T]c� �tg��Sr-)�iterr0s r2�__iter__z_empty_collection.__iter__ds ���B�x�x�r4c��dSr-r:r0s r2�clearz_empty_collection.cleargrBr4�intc��dS�Nrr:r0s r2�__len__z_empty_collection.__len__js���qr4N)r=r"r+r>)rErFr+r>)r=rr+rK)r+rO�r+r>�r+rU) r5r6r7rArDrHrJrNrRrTrXr:r4r2r<r<Ts������� � � � � � � � � � � � � � � � ��������� � � � ������r4r<c��eZdZUdZdZded<ded<ded<ded <d ed <d ed <d)d�Zd*d�Zd+d�Zd,d�Z d-d�Z d-d�Z d.d!�Z d/d"�Z d0d#�Zd1d'�Zd(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_rKr`z,MutableSequence[legacy._LegacySignatureType]razCMutableMapping[Type[_ET], _ListenerFnSequenceType[_ListenerFnType]]rb�parent_dispatch_cls�Type[_HasEventsDispatch[_ET]]�fnrc ��|j|_|j|_tj|��}|jdd�|_t|j��|_ tttt|dg��d��������|_tj|||��|_t%j��|_dS)Nr�_legacy_signaturesc��|dSrWr:)�ss r2�<lambda>z,_ClsLevelDispatch.__init__.<locals>.<lambda>�s ���1��r4)�key)r5r^r]r�inspect_getfullargspec�argsr_rK�varkwr`�list�reversed�sorted�getattrrar�_augment_fn_docs�__doc__r.�WeakKeyDictionaryrb)r1rerg�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|�|��}|jr> tj|d���}t j|||��}n#t $rYnwxYw|S)NT)�no_self)�_wrap_fn_for_kwrar�get_callable_argspecr�_wrap_fn_for_legacy� TypeError)r1rgrzrxs r2�_adjust_fn_specz!_ClsLevelDispatch._adjust_fn_spec�s��� � *��%�%�b�)�)�B� � !� C� C��3�B��E�E�E���/��b�'�B�B����� � � ��� ����� s�A � A�Ac����d��fd� }|S)Nror�kwr+c���tt�j|����}|�|���di|��S)Nr:)�dict�zipr_�update)ror��argdictrgr1s ��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)rorr�rr+rr:)r1rgr�s`` r2r}z!_ClsLevelDispatch._wrap_fn_for_kw�s.���� !� !� !� !� !� !� !� �r4� event_key�_EventKey[_ET]� is_appendr>c��|j}t|t��s Jd���t|dd��st jd|�d����t j|��D]�}||ur||jvr|� |���%||jvr|� |��|r&|j|� |j ���k|j|� |j ����tj||��dS)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�typertr�InvalidRequestErrorr�walk_subclassesrb�update_subclassrA� _listen_fnrDr�_stored_in_collection)r1r�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���dS)NF�r��r��r1r�r�s r2�insertz_ClsLevelDispatch.insert�s!�� �!�!�)�u�!�=�=�=�=�=r4c�4�|�|d���dS)NTr�r�r�s r2rAz_ClsLevelDispatch.append�s!�� �!�!�)�t�!�<�<�<�<�<r4r�� Type[_ET]c�H��||jvrCt|dd��rtj��|j|<nt ��|j|<|j|�|jdd�D]7}||jvr,���fd�|j|D�����8dS)Nr�Trc���g|]}|�v�|�� Sr:r:)�.0rg�clslevels �r2� <listcomp>z5_ClsLevelDispatch.update_subclass.<locals>.<listcomp>�s#���L�L�L�B��8�9K�9K�R�9K�9K�9Kr4)rbrt� collections�dequer<�__mro__rH)r1r�r�r�s @r2r�z!_ClsLevelDispatch.update_subclass�s���� ��� '� '��v�;�T�B�B� =�)4�):�)<�)<���v�&�&�):�)<�)<���v�&��>�&�)���>�!�"�"�%� � �C��d�n�$�$����L�L�L�L�$�.��"5�L�L�L����� � r4c���|j}tj|��D]0}||jvr%|j|�|j���1t j||��dSr-)r�rr�rbrJr�r�_removed_from_collection)r1r�r�r�s r2rJz_ClsLevelDispatch.remove�sk���*���'��/�/� A� A�C��d�n�$�$���s�#�*�*�9�+?�@�@�@���)�)�T�:�:�:�:�:r4c���t��}|j���D]+}|�|��|����,t j||��dS)zClear all class level listenersN)�setrb�valuesr�rTr�_clear)r1�to_clear� dispatchers r2rTz_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:�r1r�s r2� for_modifyz_ClsLevelDispatch.for_modify�s ��� r4N)rerfrgr�rgrrzrKr+r)rgrr+r)r�r�r�rKr+r>�r�r�r�rKr+r>)r�r�r+r>�r�r�r+r>rY)r�r�r+r�)r5r6r7rvr8r9ryr�r}r�r�rAr�rJrTr�r:r4r2r\r\qs4�������<�<��I��L�L�L� �I�I�I������L�L�L�C�C�C�C�����5�5�5�5�* � � � �����8�8�8�8�4>�>�>�>�=�=�=�=� � � � �;�;�;�;�(�(�(�(������r4r\c��eZdZUdZded<d$d �Zd%d �Zd&d�Zd'd�Zd(d�Z d)d�Z d)d�Z d)d�Z d)d�Z d*d�Zd*d�Zd+d�Zd,d"�Zd#S)-�_InstanceLevelDispatchr:r��parentrgrrzrKr+c�8�|j�||��Sr-)r�r��r1rgrzs r2r�z&_InstanceLevelDispatch._adjust_fn_specs���{�*�*�2�u�5�5�5r4�itemrc��t���r-��NotImplementedError�r1r�s r2rNz#_InstanceLevelDispatch.__contains__���!�#�#�#r4rUc��t���r-r�r0s r2rXz_InstanceLevelDispatch.__len__ r�r4�Iterator[_ListenerFnType]c��t���r-r�r0s r2rRz_InstanceLevelDispatch.__iter__ r�r4c��t���r-r�r0s r2�__bool__z_InstanceLevelDispatch.__bool__r�r4ror�r>c��t���r-r��r1ror�s r2� exec_oncez _InstanceLevelDispatch.exec_oncer�r4c��t���r-r�r�s r2�exec_once_unless_exceptionz1_InstanceLevelDispatch.exec_once_unless_exceptionr�r4c��t���r-r�r�s r2�_exec_w_sync_on_first_runz0_InstanceLevelDispatch._exec_w_sync_on_first_runr�r4c��t���r-r�r�s r2�__call__z_InstanceLevelDispatch.__call__r�r4r�r�r�c��t���r-r�r�s r2r�z_InstanceLevelDispatch.insertr�r4c��t���r-r�r�s r2rAz_InstanceLevelDispatch.append!r�r4c��t���r-r��r1r�s r2rJz_InstanceLevelDispatch.remove$r�r4r��_DispatchCommon[_ET]�_InstanceLevelDispatch[_ET]c��|Sr�r:r�s r2r�z!_InstanceLevelDispatch.for_modify'� ��� r4Nr��r�rr+rKrZ�r+r��r+rK�rorr�rr+r>r�r�)r�r�r+r�)r5r6r7r8r9r�rNrXrRr�r�r�r�r�r�rArJr�r:r4r2r�r��s+��������I�"�"�"�"�6�6�6�6� $�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$�$� � � � � � r4r�c���eZdZUdZdZe��Zded<dZded<ded <d ed <d ed <d,d�Z d-d�Z d.d�Z d.d�Z d.d�Z d.d�Zd.d�Zd.d�Zd.d �Zd/d"�Zd0d%�Zd1d'�Zd2d)�Zd3d*�Zd+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^zFrozenSet[_ListenerFnType]r�r:z Tuple[()]� listenersr�r�z(_ListenerFnSequenceType[_ListenerFnType]r�rdr^� target_clsr�c��||jvr|�|��||_|j||_|j|_dSr-)rbr�r�r�r^)r1r�r�s r2ryz_EmptyListener.__init__EsH�� �V�-� -� -� � "� "�:� .� .� .��� � &� 0�� <����K�� � � r4r�r�r+�_ListenerCollection[_ET]c��td|��}|j�J�t|j|j��}t ||j��|urt ||j|��n*tt ||j��t��sJ�|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�) r� _instance_cls�_ListenerCollectionr�rtr^�setattrr��_JoinedListener)r1r��results r2r�z_EmptyListener.for_modifyLs����#�S�)�)��� �,�,�,�$�T�[�#�2C�D�D�� �3�� � "� "�d� *� *� �C���F� +� +� +� +��g�c�4�9�5�5��G�G� G� G�G�� r4rorr�rc� �td���)Nzneed to call for_modify()r�r�s r2� _needs_modifyz_EmptyListener._needs_modifyas��!�"=�>�>�>r4c� �|j|i|��dSr-�r�r�s r2r�z_EmptyListener.exec_onced� �����D�'�B�'�'�'�'�'r4c� �|j|i|��dSr-r�r�s r2r�z)_EmptyListener.exec_once_unless_exceptiongr�r4c� �|j|i|��dSr-r�r�s r2r�z_EmptyListener.insertjr�r4c� �|j|i|��dSr-r�r�s r2rAz_EmptyListener.appendmr�r4c� �|j|i|��dSr-r�r�s r2rJz_EmptyListener.removepr�r4c� �|j|i|��dSr-r�r�s r2rTz_EmptyListener.clearsr�r4r>c�*�|jD] }||i|��� dS�zExecute this event.N�r��r1ror�rgs r2r�z_EmptyListener.__call__vs3���'� � �B� �B��O��O�O�O�O� � r4r�rKc��||jvSr-r�r�s r2rNz_EmptyListener.__contains__|s���t�,�,�,r4rUc�*�t|j��Sr-)�lenr�r0s r2rXz_EmptyListener.__len__s���4�(�)�)�)r4r�c�*�t|j��Sr-)rQr�r0s r2rRz_EmptyListener.__iter__�����D�)�*�*�*r4c�*�t|j��Sr-)rKr�r0s r2r�z_EmptyListener.__bool__�rr4N�r�r�r�r��r�r�r+r�)rorr�rr+rr�r�rZr�r�)r5r6r7rvr8� frozensetr�r9r�ryr�r�r�r�r�rArJrTr�rNrXrRr�r:r4r2r�r�3s����������5�I�,5�I�K�K�I�7�7�7�7��I�����"�"�"�"�>�>�>�>� �I�I�I� � � � �����*?�?�?�?�(�(�(�(�(�(�(�(�(�(�(�(�(�(�(�(�(�(�(�(�(�(�(�(����� -�-�-�-�*�*�*�*�+�+�+�+�+�+�+�+�+�+r4r�c��eZdZd d�Zdd �Zd S)�_MutexProtocolr+rKc��dSr-r:r0s r2� __enter__z_MutexProtocol.__enter__�s���r4�exc_type�Optional[Type[BaseException]]�exc_val�Optional[BaseException]�exc_tb�Optional[TracebackType]�Optional[bool]c��dSr-r:)r1r r r s r2�__exit__z_MutexProtocol.__exit__�s �� �r4Nr�)r r r r r rr+r)r5r6r7rrr:r4r2rr�s4������$�$�$�$������r4rc���eZdZUdZded<ded<ded<ded<ded <d �fd � Zd!d�Zd"d�Zd#d�Zd$d�Z d$d�Z d$d�Z d$d�Z d%d�Z d&d�Zd'd�Zd(d�Z�xZS))�_CompoundListener)�_exec_once_mutex� _exec_once�_exec_w_sync_once� _is_asynciorr�Collection[_ListenerFnType]r�r�rKrr�argrr�c�H��t��j|i|��d|_dSrM)�superryr)r1rr�� __class__s �r2ryz_CompoundListener.__init__�s-��������#�$��$�$�$� ����r4r+r>c��d|_dS)NT)rr0s r2� _set_asyncioz_CompoundListener._set_asyncio�s������r4c�R�|jrt��Stj��Sr-)rr � threading�Lockr0s r2�_memoized_attr__exec_once_mutexz1_CompoundListener._memoized_attr__exec_once_mutex�s'�� � � $�#�%�%� %��>�#�#� #r4�retry_on_exceptionroc��|j5|js1 ||i|��d}n#d}�xYw |r|sd|_n#|r|sd|_wxYwddd��dS#1swxYwYdS)NFT)rr)r1r#ror�� exceptions r2�_exec_once_implz!_CompoundListener._exec_once_impl�s���� "� /� /��?� /�/��D�$�%�"�%�%�%� %�I�I��� $�I������ %�/�,>�/�*.�����%�/�,>�/�*.���.�.�.�.� /� /� /� /� /� /� /� /� /� /� /� /���� /� /� /� /� /� /s/�A� �1�!�1� A� >�A�A�Ac�:�|js|jdg|�Ri|��dSdS)z]Execute this event, but only if it has not been executed already for this collection.FN�rr&r�s r2r�z_CompoundListener.exec_once�sA���� 5� �D� �� 4�� 4� 4� 4�� 4� 4� 4� 4� 4� 5� 5r4c�:�|js|jdg|�Ri|��dSdS)atExecute 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 r2r�z,_CompoundListener.exec_once_unless_exception�sA���� 4� �D� �� 3�� 3� 3� 3�� 3� 3� 3� 3� 3� 4� 4r4c��|js:|j5 ||i|��d|_n#�xYw ddd��dS#1swxYwYdS||i|��dS)anExecute 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. .. versionadded:: 1.4.11 TN)rrr�s r2r�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�5�!�5�$�5�9�9c�N�|jD] }||i|��� |jD] }||i|��� dSr��r�r�r�s r2r�z_CompoundListener.__call__�sW���'� � �B� �B��O��O�O�O�O��.� � �B� �B��O��O�O�O�O� � r4r�c�&�||jvp||jvSr-r,r�s r2rNz_CompoundListener.__contains__�s���t�,�,�F����0F�Fr4rUc�T�t|j��t|j��zSr-)r�r�r�r0s r2rXz_CompoundListener.__len__�s"���4�(�)�)�C���,?�,?�?�?r4r�c�6�t|j|j��Sr-)rr�r�r0s r2rRz_CompoundListener.__iter__�s���T�*�D�N�;�;�;r4c�8�t|jp|j��Sr-)rKr�r�r0s r2r�z_CompoundListener.__bool__�s���D�N�;�d�&;�<�<�<r4)rrr�rrY)r+r)r#rKrorr�rr+r>r�r�rZr�r�)r5r6r7r8r9ryrr"r&r�r�r�r�rNrXrRr�� __classcell__�rs@r2rr�sh���������I�%�$�$�$�1�1�1�1�*�*�*�*���������!�!�!�!�!�!� � � � �$�$�$�$� /� /� /� /�5�5�5�5� 4� 4� 4� 4�����.����G�G�G�G�@�@�@�@�<�<�<�<�=�=�=�=�=�=�=�=r4rc���eZdZUdZdZded<ded<ded<d ed <d ed <d!�fd� Zd"d�Z d#d$d�Zd%d�Z d%d�Z d&d�Z d'd �Z �xZ 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�rcrr�r�r�rdr^zDeque[_ListenerFnType]r�zSet[_ListenerFnType]r�r�r�c�@��t�����||jvr|�|��d|_d|_|j||_||_|j|_tj ��|_ t��|_ dSrM)rryrbr�rrr�r�r^r�r�r�r�r�)r1r�r�rs �r2ryz_ListenerCollection.__init__s���� �������� �V�-� -� -� � "� "�:� .� .� .����!&��� &� 0�� <����� ��K�� �$�*�,�,���������r4r�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 r2r�z_ListenerCollection.for_modify%r�r4TrE�only_propagaterKr>c�`�����j}t|����j�|j�����fd�|jD��}|�|��|jr����|j�|��}tj �||��dS)zIPopulate from the listeners in another :class:`_Dispatch` object.c�2��g|]}|�vr�r |�jv�|��Sr:)r�)r��l�existing_listener_setr6r1s ���r2r�z/_ListenerCollection._update.<locals>.<listcomp>8sF��� � � ���-�-�-�"�.��D�N�"�"� �#�"�"r4N) r�r�r�r�rHrr�unionr�_stored_in_collection_multi)r1rEr6�existing_listeners�other_listeners� to_associater:s` ` @r2�_updatez_ListenerCollection._update0s������ "�^�� #�$6� 7� 7�� ����e�o�.�.�.� � � � � � ��_� � � �� �!�!�/�2�2�2� � � � � � � � � ���,�,�_�=�=� ��,�T�5�,�G�G�G�G�Gr4r�r�c��|�||j��r#|r#|j�|j��dSdSdSr-)�prepend_to_listr�r��addr�r�s r2r�z_ListenerCollection.insertHsW�� � $� $�T�4�>� :� :� 9�� 9���"�"�9�#7�8�8�8�8�8� 9� 9� 9� 9r4c��|�||j��r#|r#|j�|j��dSdSdSr-)�append_to_listr�r�rCr�r�s r2rAz_ListenerCollection.appendMsW�� � #� #�D�$�.� 9� 9� 9�� 9���"�"�9�#7�8�8�8�8�8� 9� 9� 9� 9r4c��|j�|j��|j�|j��t j||��dSr-)r�rJr�r��discardrr�r�s r2rJz_ListenerCollection.removeRsM�� ����i�2�3�3�3� ����y�3�4�4�4��)�)�T�:�:�:�:�:r4c��tj||j��|j���|j���dSr-)rr�r�r�rTr0s r2rTz_ListenerCollection.clearWsD�����d�n�-�-�-� ������� ��������r4rr)T)rEr�r6rKr+r>r�r�rY)r5r6r7rvr8r9ryr�r@r�rArJrTr1r2s@r2r�r�s�����������I�2�1�1�1�"�"�"�"� �I�I�I�%�%�%�%�#�#�#�#� � � � � � � � � � �GK�H�H�H�H�H�09�9�9�9� 9�9�9�9� ;�;�;�;� �������r4r�c��eZdZUdZded<ded<ded<ded <dd �Zejs ed d ���Z d!d�Z d"d�Z d#d�Z d#d�Z d$d�Zd%d�ZdS)&r�)�parent_dispatchr^�localr�r�rJrdr^r�rKrr��_EmptyListener[_ET]c�V�d|_||_||_||_|j|_dSrM)rrJr^rKr�)r1rJr^rKs r2ryz_JoinedListener.__init__es1��  ���.����� ��� � $� ����r4r+c�6�t|j|j��Sr-)rtrJr^r0s r2r�z_JoinedListener.listenersxs���4�/���;�;� ;r4rgrrzrKc�8�|j�||��Sr-)rKr�r�s r2r�z_JoinedListener._adjust_fn_spec|s���z�)�)�"�e�4�4�4r4r��_JoinedListener[_ET]c�R�|j�|��x|_|_|Sr-)rKr�r�r�s r2r�z_JoinedListener.for_modify�s&��-1�Z�-B�-B�3�-G�-G�G�� �T�*�� r4r�r�r�r>c�<�|j�||��dSr-)rKr�r�s r2r�z_JoinedListener.insert�� �� � ���)�Y�/�/�/�/�/r4c�<�|j�||��dSr-)rKrAr�s r2rAz_JoinedListener.append�rSr4c�:�|j�|��dSr-)rKrJr�s r2rJz_JoinedListener.remove�s�� � ���)�$�$�$�$�$r4c��t���r-r�r0s r2rTz_JoinedListener.clear�r�r4N)rJr�r^rdrKrL)r+rr�)r�r�r+rPr�r�rY)r5r6r7r8r9ry�typing� TYPE_CHECKING�propertyr�r�r�r�rArJrTr:r4r2r�r�]s�������F�I�)�)�)�)� �I�I�I�&�&�&�&�1�1�1�1� +� +� +� +� � � <� � <� <� <� �� <�5�5�5�5� ����0�0�0�0�0�0�0�0�%�%�%�%�$�$�$�$�$�$r4r�)9rv� __future__rr�� itertoolsrr �typesrrWrrrr r r r r rrrrrrrrrr.�rrrrrrr�util.concurrencyr � util.typingr!r"rX�baser$r%r&� MemoizedSlotsr(r<�_ListenerFnSequenceTyper\r�r�rrr�r�r:r4r2�<module>rcs�����.#�"�"�"�"�"��������������������� � � � �������������������������������������������!�!�!�!�!�!�"�"�"�"�"�"�����������������������������������������������������������������������������%�%�%�%�%�%�������������/�/�/�/�/�/�"�"�"�"�"�"� �W�T������ ��)�������%�%�%�%�%�%�(�(�(�(�(�(�<�<�<�<�<�D�&��� �<�<�<������ �2�����4 ��b� �+<�R�+@� @�A��H�H�H�H�H� �c�*�H�H�H�V4�4�4�4�4�]�3�/��O�1L�4�4�4�nS+�S+�S+�S+�S+�+�C�0�S+�S+�S+�l�����X����i=�i=�i=�i=�i=�.�s�3�i=�i=�i=�XZ�Z�Z�Z�Z�+�C�0�Z�Z�Z�z2$�2$�2$�2$�2$�'��,�2$�2$�2$�2$�2$r4
Memory