� l\�g# ��6�dZddlmZddlZddlmZddlmZddlmZddlmZddlmZdd lm Z d d l m Z d d l m Z d dl mZd dlmZejr d dlmZd dlmZeeeeeedeffZ d.d/d�Zd0d"�Zd1d%�Zd2d(�Zd3d)�Zd4d,�Zd5d-�ZdS)6zhRoutines to handle adaption of legacy call signatures, generation of deprecation notes and docstrings. �)� annotationsN)�Any)�Callable)�List)�Optional)�Tuple)�Type�)�_ET)�_ListenerFnType�)�util)� FullArgSpec)�_ClsLevelDispatch)�_HasEventsDispatch.�since�str�argnames� List[str]� converter�Optional[Callable[..., Any]]�return�2Callable[[Callable[..., Any]], Callable[..., Any]]c�����d���fd� }|S)a_legacy sig decorator :param since: string version for deprecation warning :param argnames: list of strings, which is *all* arguments that the legacy version accepted, including arguments that are still there :param converter: lambda that will accept tuple of this full arg signature and return tuple of new arg signature. �fn�Callable[..., Any]rc�p��t|d��sg|_|j����f��|S)N�_legacy_signatures)�hasattrr�append)rrrrs ����g/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/sqlalchemy/event/legacy.py�legz_legacy_signature.<locals>.leg3sA����r�/�0�0� '�$&�B� !� ��$�$�e�X�y�%A�B�B�B�� �)rrrr�)rrrr"s``` r!�_legacy_signaturer%#s4����� �������� �Jr#�dispatch_collection�_ClsLevelDispatch[_ET]rr �argspecrc �������� ��jD]�\����ddkr d��dd��nd�t���t|j��krz�t|j��urdd�j�dd��j����rd nd �d �}d �j�d �j�d��d|�d� � ���rJ�d���� fd� }n d������ fd� }|cS���S)N�����z**kwTrFzdef �(�, �, **kw��)z The argument signature for the "�.z+" event listener has changed as of version zl, and conversion for the old argument signature will be removed in a future release. The new signature is "�"�argsr�kwrc�H��tj�������J���|��S)N��version)r�warn_deprecated)r2r3�convrr� warning_txts ����r!�wrap_legz%_wrap_fn_for_legacy.<locals>.wrap_leg`s8����(��e�D�D�D�D��+�+�+��2�t�t�T�{�+�+r#c����tj� ����tt�j|������fd��D��}�r�|i|��S�|�S)Nr5c� ��g|] }�|�� Sr$r$)�.0�name�argdicts �r!� <listcomp>z9_wrap_fn_for_legacy.<locals>.wrap_leg.<locals>.<listcomp>js���%I�%I�%I��g�d�m�%I�%I�%Ir#)rr7�dict�zip� arg_names) r2r3�args_from_dictr?rr&r�has_kwrr9s @������r!r:z%_wrap_fn_for_legacy.<locals>.wrap_leggsx�����(��e�D�D�D�D�"�3�':�'D�d�#K�#K�L�L�G�%I�%I�%I�%I��%I�%I�%I�N��3�!�r�>�8�R�8�8�8�!�r�>�2�2r#)r2rr3rrr) �legacy_signatures�lenr2�bool�varkwr>�joinrC�clsname) r&rr(� formatted_defr:rr8rErr9s `` @@@@@r!�_wrap_fn_for_legacyrM<s���������� "5�!F�1�1���x�� �B�<�6� !� !��F���"��~�H�H��F� �x�=�=�C�� �-�-� -� -�&�D� �M�= �= �3 �3 �3 �$�(�(�(�� � �-�7�8�8�8�"�*����*�*��M�M�(�/�/�/�'�,�,�,��E�E�!�M�M� � ���!�!�!�z�,�,�,�,�,�,�,�,�,�,�3�3�3�3�3�3�3�3�3�3�3��O�O�O��� r#�text�indentc�l��d��fd�|�d��D����S)N� c3�"�K�|] }�|zV�� dS�Nr$)r=�linerOs �r!� <genexpr>z_indent.<locals>.<genexpr>vs'�����@�@�t�V�d�]�@�@�@�@�@�@r#)rJ�split)rNrOs `r!�_indentrWus6��� �9�9�@�@�@�@�t�z�z�$�/?�/?�@�@�@� @� @�@r#� sample_targetrc�@�td�d�|jdd�D����d��}|jrt d�|jD����}nd}d}||rd|znd |j|jrd nd d �|j��||d �z}|S) NrQc3�$K�|] }dd|izV�� dS)z%(arg)s = kw['%(arg)s']�argNr$)r=r[s r!rUz+_standard_listen_example.<locals>.<genexpr>s?���� � �� &��� � 4� � � � � � r#rr z c3�"K�|] \}}}|V�� dSrSr$)r=rr2r8s r!rUz+_standard_listen_example.<locals>.<genexpr>�s<���� � �!��t�T� � � � � � � r#z�from sqlalchemy import event @event.listens_for(%(sample_target)s, '%(event_name)s') def receive_%(event_name)s(%(named_event_arguments)s%(has_kw_arguments)s): "listen for the '%(event_name)s' event" # ... (event handling logic) ... z (arguments as of %s)r.r-r,)� current_since� event_name�has_kw_arguments�named_event_arguments�example_kw_argrX)rWrJrCrF�max�__name__rE)r&rXrrar]rNs r!�_standard_listen_examplerdys��� � � � � � �*�4�Q�q�S�9� � � � � � � ��N��,��� � �%8�%J� � � � � � � � � � 3� � �7D� L� #�m� 3� 3�"��k�(;�(B�J�H�H��!%���+>�+H�!I�!I�(�&� � � �D� �Kr#c ��d}|jD]5\}}}|d||j|jrdndd�|��|d�zz }�6|S)Nr.a& # DEPRECATED calling style (pre-%(since)s, will be removed in a future release) @event.listens_for(%(sample_target)s, '%(event_name)s') def receive_%(event_name)s(%(named_event_arguments)s%(has_kw_arguments)s): "listen for the '%(event_name)s' event" # ... (event handling logic) ... z **kwr,)rr^r_r`rX)rFrcrErJ)r&rXrrNrr2r8s r!�_legacy_listen_examplesrf�sr�� �D�0�B� � ���t�T� � 7�� �k�2�9�A�G�G�r�)-���4���!.��� � ���$ �Kr#�parent_dispatch_cls�Type[_HasEventsDispatch[_ET]]c�����jd\}}}d|�j�jd���fd��jD�����jrdndd�zS)Nra= .. versionchanged:: %(since)s The :meth:`.%(clsname)s.%(event_name)s` event now accepts the arguments %(named_event_arguments)s%(has_kw_arguments)s. Support for listener functions which accept the previous argument signature(s) listed above as "deprecated" will be removed in a future release.r,c3�>�K�|]}d�j�j|d�zV��dS)z6:paramref:`.%(clsname)s.%(event_name)s.%(param_name)s`)rKr^� param_nameN)rcr>)r=rkr&rgs ��r!rUz-_version_signature_changes.<locals>.<genexpr>�sX�����/�/�� I�2�;�"5�":�",����/�/�/�/�/�/r#r-r.)rrKr^r`r_)rFrcr>rJrCrE)rgr&rr2r8s`` r!�_version_signature_changesrl�s�����,�=�a�@��E�4�� +��*�3�-�2�%)�Y�Y�/�/�/�/�/�#6�"?�/�/�/�&�&�-@�,F� N���B� � �  �r#c��d}t|dd��}|tt|||��d��z}|jr5|tt |||��d��z }|t ||��z }t j|j|d��S)Nz@.. container:: event_signatures Example argument forms:: �_target_class_doc�objz r ) �getattrrWrdrFrfrlr�inject_docstring_text�__doc__)r&rgr�headerrXrNs r!�_augment_fn_docsrt�s���  � � �/�1D�e�L�L�M� �G� �!4�m�R�H�H���� �D��,� � �� #�$7��� K� K� � � � �� �*� �!4� � � �� � %�b�j�$�� :� :�:r#rS)rrrrrrrr)r&r'rr r(rrr )rNrrOrrr)r&r'rXrrr rr)r&r'rXrrr rr)rgrhr&r'rr)r&r'rgrhrr rr)rr� __future__r�typingrrrrrr �registryr r r.r� util.compatr� TYPE_CHECKING�attrr�baserr�_LegacySignatureTyper%rMrWrdrfrlrtr$r#r!�<module>r}s�����#�"�"�"�"�"� � � � �������������������������������������������%�%�%�%�%�%�������%�%�%�%�%�%� ��)�'�'�'�'�'�'�(�(�(�(�(�(��S�$�s�)�X�h�s�C�x�6H�-I�I�J�� /3������26�6�6�6�rA�A�A�A�&�&�&�&�R����8����<;�;�;�;�;�;r#
Memory