HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/local/lib/python3.10/dist-packages/sqlalchemy/event/__pycache__/legacy.cpython-310.pyc
o

���g# �@sdZddlmZddlZddlmZddlmZddlmZddlmZddlmZdd	lm	Z	d
dl
mZd
dl
mZd
dl
mZd
dlmZejrWd
dlmZd
dlmZeeeeeedeffZ	d5d6dd�Zd7d#d$�Zd8d'd(�Zd9d+d,�Zd:d-d.�Zd;d1d2�Zd<d3d4�ZdS)=zhRoutines 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]]csd���fdd�}|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]rcs&t|d�sg|_|j����f�|S)N�_legacy_signatures)�hasattrr�append)r�rrr��B/usr/local/lib/python3.10/dist-packages/sqlalchemy/event/legacy.py�leg3s
z_legacy_signature.<locals>.legN)rrrrr)rrrr!rrr �_legacy_signature#sr"�dispatch_collection�_ClsLevelDispatch[_ET]rr�argspecrcs��jD]f\����ddkrd��dd��nd�t��t|j�kri�t|j�urid�jd��j��r5dnd	f}d
�j�j�|f��durY�rKJ�d����fdd�}|Sd������fdd�}|Sq�S)N���z**kwTrFzdef %s(%s%s)�, �, **kw�z�The argument signature for the "%s.%s" event listener has changed as of version %s, and conversion for the old argument signature will be removed in a future release.  The new signature is "%s"�argsr�kwrcs&tj��d��dus
J���|��S)N��version)r
�warn_deprecated)r*r+)�convrr�warning_txtrr �wrap_leg`sz%_wrap_fn_for_legacy.<locals>.wrap_legcsJtj��d�tt�j|����fdd��D�}�r!�|i|��S�|�S)Nr,csg|]}�|�qSrr)�.0�name��argdictrr �
<listcomp>jsz9_wrap_fn_for_legacy.<locals>.wrap_leg.<locals>.<listcomp>)r
r.�dict�zip�	arg_names)r*r+�args_from_dict)rr#r�has_kwrr0r4r r1gs)r*rr+rrr)	�legacy_signatures�lenr*�bool�varkwr3�joinr9�clsname)r#rr%�
formatted_defr1r)rr/r#rr;rr0r �_wrap_fn_for_legacy<s:�

����
�	�rC�text�indentcsd��fdd�|�d�D��S)N�
c3s�|]}�|VqdS�Nr)r2�line�rErr �	<genexpr>vs�z_indent.<locals>.<genexpr>)r@�split)rDrErrIr �_indentusrL�
sample_targetrcCs�td�dd�|jdd�D��d�}|jr tdd�|jD��}nd}d}||r+d	|nd
|j|jr3dnd
d�|j�||d
�;}|S)NrFcss�|]	}dd|iVqdS)z%(arg)s = kw['%(arg)s']�argNr)r2rNrrr rJs
�
�
�z+_standard_listen_example.<locals>.<genexpr>rrz    css�|]\}}}|VqdSrGr)r2rr*r/rrr rJ�s
��
�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_argrM)rLr@r9r<�max�__name__r;)r#rMrrSrOrDrrr �_standard_listen_exampleys,
��
��	
�
rVc	CsDd}|jD]\}}}|d||j|jrdndd�|�|d�7}q|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')rrPrQrRrM)r<rUr;r@)r#rMrrDrr*r/rrr �_legacy_listen_examples�s���rW�parent_dispatch_cls�Type[_HasEventsDispatch[_ET]]c	sP�jd\}}}d|�j�jd���fdd��jD���jr#dd�Sdd�S)	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'c3s$�|]
}d�j�j|d�VqdS)z6:paramref:`.%(clsname)s.%(event_name)s.%(param_name)s`)rArP�
param_nameN)rUr3)r2rZ�r#rXrr rJ�s����
�z-_version_signature_changes.<locals>.<genexpr>r(r))rrArPrRrQ)r<rUr3r@r9r;)rXr#rr*r/rr[r �_version_signature_changes�s �	������r\cCs`d}t|dd�}|tt|||�d�}|jr(|tt|||�d�7}|t||�7}t�|j|d�S)Nz@.. container:: event_signatures

     Example argument forms::

�_target_class_doc�objz        r	)	�getattrrLrVr<rWr\r
�inject_docstring_text�__doc__)r#rXr�headerrMrDrrr �_augment_fn_docs�s �
�
��rcrG)rrrrrrrr)r#r$rrr%rrr)rDrrErrr)r#r$rMrrrrr)r#r$rMrrrrr)rXrYr#r$rr)r#r$rXrYrrrr)ra�
__future__r�typingrrrrrr�registryr
rr)r
�util.compatr�
TYPE_CHECKING�attrr�baserr�_LegacySignatureTyper"rCrLrVrWr\rcrrrr �<module>s2�

9

)