PK APOCALYPSE V1

APOCALYPSE V1

Current Path : /opt/hc_python/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/
Upload File :
Current File : //opt/hc_python/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/traversals.cpython-312.pyc

�

���g����t�ddlmZddlmZddlmZddlZddlmZddl	Z	ddl
Z
ddl
mZddl
mZddl
m
Z
ddl
mZdd	l
mZdd
l
mZddl
mZddl
mZdd
l
mZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddl m!Z!ejDd�Z#dZ$dZ%d1d�Z&d2d�Z'Gd�d e�Z(Gd!�d"e(�Z)d#�Z*Gd$�d%e�Z+Gd&�d'e�Z,e,�Z-d(�Z.Gd)�d*e�Z/e/�Z0ejbd+�d,��Z2Gd-�d.eejf�Z4Gd/�d0e4�Z5y)3�)�annotations)�dequeN)�zip_longest)�Any)�Callable)�Deque)�Dict)�Iterable)�Optional)�Set)�Tuple)�Type�)�	operators)�HasCacheKey)�_TraverseInternalsType��anon_map)�ExternallyTraversible)�HasTraversalDispatch)�HasTraverseInternals�)�util)�langhelpers)�Self�
skip_traverseFTc�x�|jdd�rt�}n
t�}|j||fi|��S)N�use_proxiesF)�get�ColIdentityComparatorStrategy�TraversalComparatorStrategy�compare)�obj1�obj2�kw�strategys    �J/opt/hc_python/lib64/python3.12/site-packages/sqlalchemy/sql/traversals.pyr"r",s:��	�v�v�m�U�#�0�2��.�0���8���D�$�-�"�-�-�c��tj|�D]n}t|d�s�t|d�s�|j�tj||jd�tj||jd��py)N�_generate_cache_attrs�_traverse_internals�#_generated_copy_internals_traversal�!_generated_get_children_traversal)r�walk_subclasses�hasattrr*�_copy_internals�generate_dispatchr+�
_get_children)�target_hierarchy�clss  r'�_preconfigure_traversalsr56sz���#�#�$4�5���3�/�0�W��&�6
�
�%�%�'��-�-���'�'�5�
�

�+�+���'�'�3�
�6r(c���eZdZdZdZejrdd�Z				dd�Zdd�Z	e
						dd��Ze
						dd��Ze
						dd��Z
dd	�Zdd
�Zdd�Zdd�Zy
)�HasShallowCopyz�attribute-wide operations that are useful for classes that use
    __slots__ and therefore can't operate on their attributes in a dictionary.


    �c��y�Nr8)�self�others  r'�!_generated_shallow_copy_traversalz0HasShallowCopy._generated_shallow_copy_traversalS���#r(c��yr:r8)r;�ds  r'�&_generated_shallow_from_dict_traversalz5HasShallowCopy._generated_shallow_from_dict_traversalUs��r(c��yr:r8�r;s r'�$_generated_shallow_to_dict_traversalz3HasShallowCopy._generated_shallow_to_dict_traversalYr>r(c�r�djd�|D��}d|�d|�d�}tj|i|�S)N�
c3�2K�|]\}}d|�d|�����y�w)z
    other.z = self.Nr8��.0�attrname�_s   r'�	<genexpr>z8HasShallowCopy._generate_shallow_copy.<locals>.<genexpr>as)����
�0���!���
�(�8�*�5�0����def z(self, other):
��joinr�_exec_code_in_env�r4�internal_dispatch�method_name�code�	meth_texts     r'�_generate_shallow_copyz%HasShallowCopy._generate_shallow_copy[sK���y�y�
�0�
�
���;�-�'7��v�R�@�	��,�,�Y��K�H�Hr(c�r�djd�|D��}d|�d|�d�}tj|i|�S)Nz,
c3�2K�|]\}}d|�d|�����y�w)z    'z': self.Nr8rHs   r'rLz;HasShallowCopy._generate_shallow_to_dict.<locals>.<genexpr>ns)����
�0���!��H�:�X�h�Z�0�0�rMrNz(self):
    return {z}
rOrRs     r'�_generate_shallow_to_dictz(HasShallowCopy._generate_shallow_to_dicthsK���z�z�
�0�
�
���;�-�'=�d�V�4�H�	��,�,�Y��K�H�Hr(c�r�djd�|D��}d|�d|�d�}tj|i|�S)NrFc3�4K�|]\}}d|�d|�d����y�w)z	    self.z = d['z']Nr8rHs   r'rLz=HasShallowCopy._generate_shallow_from_dict.<locals>.<genexpr>{s+����
�0���!���z���z��4�0�s�rNz(self, d):
rOrRs     r'�_generate_shallow_from_dictz*HasShallowCopy._generate_shallow_from_dictusJ���y�y�
�0�
�
���;�-�|�D�6��<�	��,�,�Y��K�H�Hr(c��|j}	|jd}|||�y#t$r&|j|jd�}||_Y�8wxYw)NrA)�	__class__�__dict__�KeyErrorr]r+rA)r;r@r4�shallow_from_dicts    r'�_shallow_from_dictz!HasShallowCopy._shallow_from_dict�sj���n�n��
	K� #���8�!��	�$��"���	K� $� @� @��'�'�8�!��
:K�C�6�
	K���'�,A�Ac��|j}	|jd}||�S#t$r&|j|jd�}||_Y�6wxYw)NrD)r_r`rarZr+rD)r;r4�shallow_to_dicts   r'�_shallow_to_dictzHasShallowCopy._shallow_to_dict�si���n�n��		G�!�l�l�6��O��t�$�$��
�	G�"�<�<��'�'�)O��O�8G�C�4�	G�s�%�,A�Ac��|j}	|jd}|||�y#t$r&|j|jd�}||_Y�8wxYw)Nr=)r_r`rarWr+r=)r;r<r4�shallow_copys    r'�_shallow_copy_tozHasShallowCopy._shallow_copy_to�sf���n�n��	A��<�<�(K�L�L�	�T�5�!��
�	A��6�6��'�'�)L��L�5A�C�1�	A�rdc�r�|jj|j�}|j|�|S)zCreate a shallow copy�r_�__new__rj)r;r%�cs   r'�_clonezHasShallowCopy._clone�s-���N�N�"�"�4�>�>�2�����a� ��r(N)r<r�return�None)r@�Dict[str, Any]rprq)rprr)rSrrT�strrpzCallable[[Self, Self], None])rSrrTrsrpz Callable[[Self], Dict[str, Any]])rSrrTrsrpz&Callable[[Self, Dict[str, Any]], None])r%rrpr)�__name__�
__module__�__qualname__�__doc__�	__slots__�typing�
TYPE_CHECKINGr=rArD�classmethodrWrZr]rcrgrjror8r(r'r7r7Hs�����I�
���M�	�#�	�
�	�	N��
I�1�
I��
I�
&�	
I��
I��
I�1�
I��
I�
*�	
I��
I��
I�1�
I��
I�
0�	
I��
I�#�$%�""�r(r7c��eZdZdZdZdd�Zy)�GenerativeOnTraversalz�Supplies Generative behavior but making use of traversals to shallow
    copy.

    .. seealso::

        :class:`sqlalchemy.sql.base.Generative`


    r8c�b�|j}|j|�}|j|�|Sr:rl)r;r4�ss   r'�	_generatezGenerativeOnTraversal._generate�s,���n�n���K�K�������a� ��r(N)rpr)rtrurvrwrxr�r8r(r'r}r}�s����I�r(r}c�"�|j�Sr:)ro)�elementr%s  r'roro�s���>�>��r(c�.�eZdZdZd�Zdd�					dd�Zy)�HasCopyInternalsr8c��t��r:��NotImplementedError)r;r%s  r'rozHasCopyInternals._clone�s��!�#�#r()�
omit_attrsc���	|j}tj||d�D])\}}}||vr�|��||||fi|��}|��t	|||��+y#t$rYywxYw)atReassign internal elements to be clones of themselves.

        Called during a copy-and-traverse operation on newly
        shallow-copied elements to create a deep copy.

        The given clone function should be used, which may be applying
        additional transformations to the element (i.e. replacement
        traversal, cloned traversal, annotations).

        Nr,)r+�AttributeErrorr0�run_generated_dispatch�setattr)r;r�r%�traverse_internalsrJ�obj�meth�results        r'r0z HasCopyInternals._copy_internals�s���	�!%�!9�!9��
$3�#I�#I��$�&K�$
��H�c�4��:�%�����h��c�8�R�8���%��D�(�F�3�$
��	�	��	�s�A�	A�AN)r�z
Iterable[str]r%rrprq)rtrurvrxror0r8r(r'r�r��s.���I�$�.0�4�*�4�7:�4�	
�4r(r�c��eZdZdZefd�Zefd�Zefd�Zefd�Zefd�Z	efd�Z
efd�Zefd	�Zd
�Z
efd�Zefd�Zefd
�Zefd�Zy)�_CopyInternalsTraversalzmGenerate a _copy_internals internal traversal dispatch for classes
    with a _traverse_internals collection.c��||fi|��Sr:r8�r;rJ�parentr��cloner%s      r'�visit_clauseelementz+_CopyInternalsTraversal.visit_clauseelement�s���W�#��#�#r(c�:�|D�cgc]}||fi|����
c}Scc}wr:r8�r;rJr�r�r�r%�clauses       r'�visit_clauseelement_listz0_CopyInternalsTraversal.visit_clauseelement_list�&��3:�:�'���f�#��#�'�:�:��:��c
�L�t|D�cgc]}||fi|����
c}�Scc}wr:��tupler�s       r'�visit_clauseelement_tuplez1_CopyInternalsTraversal.visit_clauseelement_tuple�+����@��f�e�F�)�b�)��@�A�A��@��!c
�L�t|D�cgc]}||fi|����
c}�Scc}wr:r�r�s       r'�visit_executable_optionsz0_CopyInternalsTraversal.visit_executable_optionsr�r�c�:�|D�chc]}||fi|����
c}Scc}wr:r8r�s       r'�!visit_clauseelement_unordered_setz9_CopyInternalsTraversal.visit_clauseelement_unordered_setr�r�c�V���|D�cgc]}t��fd�|D����c}Scc}w)Nc3�0�K�|]
}�|fi������y�wr:r8)rI�tup_elemr�r%s  ��r'rLzE_CopyInternalsTraversal.visit_clauseelement_tuples.<locals>.<genexpr>s�����=��H�%��'�B�'��s�r�)r;rJr�r�r�r%�elems    `` r'�visit_clauseelement_tuplesz2_CopyInternalsTraversal.visit_clauseelement_tupless5���
 �
���
�=��=�=��
�	
��
s�&c
�d�|j�D��cic]\}}|||fi|����c}}Scc}}wr:)�items�r;rJr�r�r�r%�key�values        r'�visit_string_clauseelement_dictz7_CopyInternalsTraversal.visit_string_clauseelement_dicts6��;B�-�-�/�J�/�J�C���U�5�'�B�'�'�/�J�J��Js�,c�0���t��fd�|D��S)Nc3�v�K�|]0\}}}}|�	�|fi���nd|�	�|fi���nd|�	�|fi���nd|f���2y�wr:r8)rI�target�onclause�from_�flagsr�r%s     ��r'rLzA_CopyInternalsTraversal.visit_setup_join_tuple.<locals>.<genexpr>%sg�����
�5<�0���5�%�(.�'9��f�#��#�t�)1�)=��h�%�"�%�4�&+�&7��e�"�r�"�T��	
�5<�s�69r�r�s    ``r'�visit_setup_join_tuplez._CopyInternalsTraversal.visit_setup_join_tuple"s!����
�5<�
�
�	
r(c�,�|j|||fi|��Sr:�r�)r;rJr�r�r%s     r'�visit_memoized_select_entitiesz6_CopyInternalsTraversal.visit_memoized_select_entities/s��-�t�-�-�h���N�2�N�Nr(c
�t�|D��cgc]%\}}t|d�r	||fi|��n|||fi|��f��'c}}Scc}}w�N�__clause_element__�r/r�s        r'�visit_dml_ordered_valuesz0_CopyInternalsTraversal.visit_dml_ordered_values2s]��&�

�&�
��U��s�$8�9��#�$��$���e�"�r�"�

�&�

�
	
��

s�*4c
��|j�D��cic]$\}}t|d�r	||fi|��n|||fi|����&c}}Scc}}wr�)r�r/r�s        r'�visit_dml_valuesz(_CopyInternalsTraversal.visit_dml_valuesBs]��
&�m�m�o�	
�.�
��U�%,�C�1E�$F��c� �R� �C��U�!�b�!�"�-�	
�	
��
s�)Ac
�t�����fd�}|D��cgc]}|D�cgc]
}||���c}��c}}Scc}wcc}}w)Nc
�P��t|ttf�r%|D�cgc]}t|d�r	�|fi���n|��c}St|t�rN|j�D��cic]2\}}t|d�r	�|fi���n|t|d�r	�|fi���n|��4c}}SJ�cc}wcc}}wr�)�
isinstance�listr�r/�dictr�)r�r�r�r�r%s   ��r'�copyz<_CopyInternalsTraversal.visit_dml_multi_values.<locals>.copyOs�����$��u�
�.�"&�
�"&��#�5�*>�?��e�*�r�*�"�#�"&�
���D�$�'�'+�j�j�l��'3�
��U�#�3�(<�=��c�(�R�(� �#�5�*>�?��e�*�r�*�"�
#�'3����u��/��s�B� 7B"r8)	r;rJr�r�r�r%r��sequence�sub_elements	    ``   r'�visit_dml_multi_valuesz._CopyInternalsTraversal.visit_dml_multi_valuesJsF���
	�:$�
�#��3;�;�(�;�T�+�
�(�;�#�
�	
��;��
s�	4�/�4�4c��|Sr:r8r�s      r'�visit_propagate_attrsz-_CopyInternalsTraversal.visit_propagate_attrsos	���r(N)rtrurvrwror�r�r�r�r�r�r�r�r�r�r�r�r�r8r(r'r�r��s���.�06�$�06�;�06�B�06�B�06�;�06�
�06�K�06�
�O�06�
� AG�
�06�#
�L06�r(r�c��t|d�r7t|dd�s*|j�}t|d�rt|dd�s�*|S)Nr��is_clause_elementF)r/�getattrr�)r�s r'�_flatten_clauseelementr�xsO��
�'�/�
0���$�e�:��,�,�.���'�/�
0���$�e�:�
�Nr(c�j�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zy)�_GetChildrenTraversalzqGenerate a _children_traversal internal traversal dispatch for classes
    with a _traverse_internals collection.c��y�Nr8r8�r;r�r%s   r'�visit_has_cache_keyz)_GetChildrenTraversal.visit_has_cache_key�s��r(c��|fSr:r8r�s   r'r�z)_GetChildrenTraversal.visit_clauseelement�s
���z�r(c��|Sr:r8r�s   r'r�z._GetChildrenTraversal.visit_clauseelement_list�����r(c��|Sr:r8r�s   r'r�z/_GetChildrenTraversal.visit_clauseelement_tuple�r�r(c�@�tjj|�Sr:)�	itertools�chain�
from_iterabler�s   r'r�z0_GetChildrenTraversal.visit_clauseelement_tuples�s�����,�,�W�5�5r(c��yr�r8r�s   r'�,visit_fromclause_canonical_column_collectionzB_GetChildrenTraversal.visit_fromclause_canonical_column_collection����r(c�"�|j�Sr:)�valuesr�s   r'r�z5_GetChildrenTraversal.visit_string_clauseelement_dict�s���~�~��r(c��|Sr:r8r�s   r'�visit_fromclause_ordered_setz2_GetChildrenTraversal.visit_fromclause_ordered_set�r�r(c��|Sr:r8r�s   r'r�z7_GetChildrenTraversal.visit_clauseelement_unordered_set�r�r(c+�K�|D]K\}}}}|�|��t|t�s
t|���|��.t|t�r�?t|����My�wr:)r�rsr�)r;r�r%r�r�r�r�s       r'r�z,_GetChildrenTraversal.visit_setup_join_tuple�sS����.5�*�F�H�e�U�� ����f�c�*�,�V�4�4��#�J�x��,E�,�X�6�6�/6�s�0A�A�Ac�(�|j|fi|��Sr:r�r�s   r'r�z4_GetChildrenTraversal.visit_memoized_select_entities�s��-�t�-�-�g�<��<�<r(c+�HK�|D]\}}t|d�r|��|���y�wr�r�)r;r�r%�k�vs     r'r�z._GetChildrenTraversal.visit_dml_ordered_values�s)�����D�A�q��q�.�/����G��s� "c+��K�|D�chc]}t|d�s�|��}}|j|�}t|�D]	}||���|D]
}|��||���ycc}w�wr�)r/�symmetric_difference�sorted)r;r�r%r��expr_values�
str_valuess      r'r�z&_GetChildrenTraversal.visit_dml_values�sl����")�N�'�Q�W�Q�8L�-M�q�'��N� �5�5�g�>�
��
�#�A��!�*��$��A��G��!�*����O�s�A�A�A�AAc��yr�r8r�s   r'r�z,_GetChildrenTraversal.visit_dml_multi_values�r�r(c��yr�r8r�s   r'r�z+_GetChildrenTraversal.visit_propagate_attrs�r�r(N)rtrurvrwr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r8r(r'r�r��sR��.�����6�� ���	7�=����r(r�zsqlalchemy.sql.elementsc��t|tjjj�r|j|�}|Sr:)r�r�	preloaded�sql_elements�_anonymous_label�	apply_map)r��namerr%s    r'�_resolve_name_for_comparer��s/���$����3�3�D�D�E��~�~�h�'���Kr(c�6�eZdZdZd�Zd�Z								d1d�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d �Z"d!�Z#d"�Z$d#�Z%d$�Z&d%�Z'd&�Z(d'�Z)d(�Z*d)�Z+d*�Z,d+�Z-d,�Z.d-�Z/d.�Z0d/�Z1y0)2r!)�stack�cacherc�@�t�|_t�|_yr:)rr��setr�rCs r'�__init__z$TraversalComparatorStrategy.__init__�s��
�G�	
�
��U��
r(c�*�t�t�fSr:rrCs r'�_memoized_attr_anon_mapz3TraversalComparatorStrategy._memoized_attr_anon_map�s���
�H�J�'�'r(c�b�|j}|j}|jdd�}|j||f�|�ro|j	�\}}||ur�|�|�y||f|vr�'|j||f�|j}	|	|jk7ryt|d|	zd�}
|
r|
||fi|��}|tury|tur��d}t|j|jd��D]�\\}}
\}}|s|dk(s|dk(r�||k7s|
|ury||vr�)|
�J�|�J�|�J�|j|
�}|�$J|j�d|j|
�d	���tj |�|�}tj |�|�}|�|�y��|�y||||||fi|��}|tus��y|r��oy
)N�compare_annotationsFz
compare_%sr8�NN��	fillvalue�_annotationsz has no dispatch for '�'T)r�r�r�append�popleft�add�__visit_name__r��COMPARE_FAILED�
SKIP_TRAVERSErr+�dispatchr_�_dispatch_lookup�operator�
attrgetter)r;r#r$r%r�r�r�left�right�
visit_namer��attributes_compared�
left_attrname�left_visit_sym�right_attrname�right_visit_symr�
left_child�right_child�
comparisons                    r'r"z#TraversalComparatorStrategy.compare�sA���
�
���
�
�� �f�f�%:�E�B��
���d�D�\�"���-�-�/�K�D�%��u�}����������%�'���I�I�t�U�m�$��,�,�J��U�1�1�1���4��
�!:�D�A�D��&*�4��&=�"�&=�#�&�.�8� �(�M�9��')�#�
��(�(��)�)�&���/���1���+�"�n�4�&�.�8��"�^�3�%�_�<� �"�&9�9��%�1�1�1�$�0�0�0�%�1�1�1��=�=��8���+���~�~�&�'��-�-�n�=�>�a�A��+�@�X�0�0��?��E�
�A�h�1�1�.�A�%�H���%�"�.�$� � �(� �%�!�4��U�K��KM��
���/� �U�G�^r(c�J�|j�}|j||fi|��Sr:)r_r")r;r#r$r%�
comparators     r'�
compare_innerz)TraversalComparatorStrategy.compare_inner@s(���^�^�%�
�!�z�!�!�$��3��3�3r(c��|j|jdg�|j|jdg�k7rtSy�Nrr)�_gen_cache_keyrr�r;rJ�left_parentr�right_parentrr%s       r'r�z/TraversalComparatorStrategy.visit_has_cache_keyDsJ�����t�}�}�Q�/��4��8L�8L��M�M�!��b�9
�
�"�!�
r(c�f�|j|jdd�|jdd��S)N�plugin_subject)r"rr&s       r'r�z1TraversalComparatorStrategy.visit_propagate_attrsLs4���!�!��H�H�%�t�,�e�i�i�8H�$�.O�
�	
r(c���t||d��D]c\}}|�|�tcS�|�tcS|j|jdg�|j|jdg�k7s�]tcSy�Nrrr)rrr%r�	r;rJr'rr(rr%�l�rs	         r'�visit_has_cache_key_listz4TraversalComparatorStrategy.visit_has_cache_key_listSsz�� ��e�t�<�D�A�q��y��=�)�)����%�%�����
�
�a� 0�"�5��9I�9I��
�
�a� �"�:��&�%�=r(c�$�t||d��D]\}}|�|�tcS�|�tcS|jr|j|jdg�n||jr|j|jdg�n|k7s�ytcSyr,)rr�_is_has_cache_keyr%rr-s	         r'r�z4TraversalComparatorStrategy.visit_executable_optionsds��� ��e�t�<�D�A�q��y��=�)�)����%�%��&�&�� � ����q�!1�2�6���&�&�� � ����q�!1�2�6���&�%�%=r(c�>�|jj||f�yr:)r�rr&s       r'r�z/TraversalComparatorStrategy.visit_clauseelement{s��	
�
�
���4��-�(r(c�j�t||d��D]"\}}|jj||f��$y�Nr�rr�r)	r;rJr'rr(rr%�lcol�rcols	         r'r�zHTraversalComparatorStrategy.visit_fromclause_canonical_column_collection�s2��&�d�E�T�B�J�D�$��J�J���t�T�l�+�Cr(c��yr:r8r&s       r'�*visit_fromclause_derived_column_collectionzFTraversalComparatorStrategy.visit_fromclause_derived_column_collection�s��	
r(c��tt|�t|�d��D]5\}}||k7rtcS|jj	||||f��7yr5)rr�rr�r)	r;rJr'rr(rr%�lstr�rstrs	         r'r�z;TraversalComparatorStrategy.visit_string_clauseelement_dict�sT��&��4�L�&��-�4�
�J�D�$��t�|�%�%��J�J���t�D�z�5��;�7�8�
r(c��t||d��D]D\}}|�|�tcSt||d��D]"\}	}
|jj|	|
f��$�Fyr5�rrr�r)r;rJr'rr(rr%�ltup�rtupr.r/s           r'r�z6TraversalComparatorStrategy.visit_clauseelement_tuples�sY��&�d�E�T�B�J�D�$��|�t�|�%�%�#�D�$�$�?���1��
�
�!�!�1�a�&�)�@�	Cr(c�j�t||d��D]"\}}|jj||f��$yr5r6r-s	         r'r�z4TraversalComparatorStrategy.visit_clauseelement_list��1�� ��e�t�<�D�A�q��J�J���q�!�f�%�=r(c�j�t||d��D]"\}}|jj||f��$yr5r6r-s	         r'r�z5TraversalComparatorStrategy.visit_clauseelement_tuple�rCr(c��|�|duSt�}|D]H}t|�j|�D])}|j||fi|��s�|j|��H�Jt	|�t	|�cxk(xrt	|�k(ScSr:)r�
differencer"r
�len)r;�seq1�seq2r%�	completedr��other_clauses       r'�_compare_unordered_sequencesz8TraversalComparatorStrategy._compare_unordered_sequences�s����<��4�<��!$��	��F� #�D�	� 4� 4�Y� ?��%�4�%�%�f�l�A�b�A��M�M�,�/��!@��
�9�~��T��7�c�$�i�7�7�7�7r(c�*�|j||fi|��Sr:)rLr&s       r'r�z=TraversalComparatorStrategy.visit_clauseelement_unordered_set�s��1�t�0�0��u�C��C�Cr(c�j�t||d��D]"\}}|jj||f��$yr5r6r-s	         r'r�z8TraversalComparatorStrategy.visit_fromclause_ordered_set�rCr(c��||k(Sr:r8r&s       r'�visit_stringz(TraversalComparatorStrategy.visit_string�����u�}�r(c��||k(Sr:r8r&s       r'�visit_string_listz-TraversalComparatorStrategy.visit_string_list�rQr(c���tt|j��t|j��d��D]�\}}||k7rtcS||||}
}	t	|t
�}t	|t
�}|rJ|rH|	j
|jdg�|
j
|jdg�k7s��tcS||k7rtcS|	|
k7s��tcSy)Nrrrr)rr��keysrr�rr%r)
r;rJr'rr(rr%�lk�rk�lv�rv�lhc�rhcs
             r'�visit_string_multi_dictz3TraversalComparatorStrategy.visit_string_multi_dict�s���"��4�9�9�;����
�
��!5��
�F�B���R�x�%�%��"�X�u�R�y��B��T�;�/�C��U�K�0�C��s��$�$��M�M�!�$�b���&�&�t�}�}�Q�'7��<�=�*�)����%�%��r��%�%�%
r(c��t|t�}t|t�}|rH|rF|j|jdg�|j|jdg�k7rtSy||k7rtS||k(Sr$)r�rr%rr)	r;rJr'rr(rr%rZr[s	         r'�visit_multiz'TraversalComparatorStrategy.visit_multi�s�����{�+�����,���3��"�"��
�
�a� �"���%�%�d�m�m�A�&6��;�<�&�%�<��C�Z�!�!��5�=� r(c�p�t|||jdfi|��t|||jdfi|��k(Sr$)r�rr&s       r'�visit_anon_namez+TraversalComparatorStrategy.visit_anon_name�sN��)���t�}�}�Q�/�
�35�
�
&��%����q�!1�
�57�
�
�	
r(c��||k(Sr:r8r&s       r'�
visit_booleanz)TraversalComparatorStrategy.visit_boolean�rQr(c��||k(Sr:r8r&s       r'�visit_operatorz*TraversalComparatorStrategy.visit_operatorrQr(c�$�|j|�Sr:)�_compare_type_affinityr&s       r'�
visit_typez&TraversalComparatorStrategy.visit_types���*�*�5�1�1r(c��||k(Sr:r8r&s       r'�visit_plain_dictz,TraversalComparatorStrategy.visit_plain_dict
rQr(c��||k(Sr:r8r&s       r'�visit_dialect_optionsz1TraversalComparatorStrategy.visit_dialect_optionsrQr(c�F�|r|r|j|jk(S||k(Sr:)�_annotations_cache_keyr&s       r'�visit_annotations_keyz1TraversalComparatorStrategy.visit_annotations_keys1���E��2�2��6�6�7�
�
�5�=� r(c�L�td�|D��td�|D��k(S)Nc3�>K�|]\}}|j|f���y�wr:��__code__�rI�fn�c_keys   r'rLzITraversalComparatorStrategy.visit_with_context_options.<locals>.<genexpr>"s����@�4�i�b�%�b�k�k�5�)�4���c3�>K�|]\}}|j|f���y�wr:rqrss   r'rLzITraversalComparatorStrategy.visit_with_context_options.<locals>.<genexpr>"s"����J
�27�Y�R��R�[�[�%� �%�rvr�r&s       r'�visit_with_context_optionsz6TraversalComparatorStrategy.visit_with_context_optionss3���@�4�@�@�E�J
�27�J
�E
�
�	
r(c��||k(Sr:r8r&s       r'�visit_plain_objz+TraversalComparatorStrategy.visit_plain_obj&rQr(c�H�|�|�tS|j|jk(Sr:)rr�r&s       r'�visit_named_ddl_elementz3TraversalComparatorStrategy.visit_named_ddl_element+s(���<�� �%�%��y�y�E�J�J�&�&r(c��t||d��D]5\\}}\}	}
||
k7rtcS|jj||	f��7y�Nrrr?)r;rJr'rr(rr%�l_clause�l_str�r_clause�r_strs           r'�visit_prefix_sequencez1TraversalComparatorStrategy.visit_prefix_sequence4sP��5@��%�<�5
�0��X�u�0��%���~�%�%��
�
�!�!�8�X�"6�7�
5
r(c��t||d��D]s\\}}}	}
\}}}
}|
|k7rtcS|jj||f�|jj||f�|jj|	|
f��uy)N)NNNNrr?)r;rJr'rr(rr%�l_target�
l_onclause�l_from�l_flags�r_target�
r_onclause�r_from�r_flagss               r'r�z2TraversalComparatorStrategy.visit_setup_join_tuple?s�����u�0H�
I�
�3�X�z�6�7�3�X�z�6�7��'�!�%�%��J�J���x��2�3��J�J���z�:�6�7��J�J���v�v�.�/�Jr(c�0�|j|||||fi|��Sr:r�r&s       r'r�z:TraversalComparatorStrategy.visit_memoized_select_entitiesMs,��.�t�-�-��k�4��u�
�@B�
�	
r(c��t|d���}t|d���}t||d��D]L\\}	}
\}}|
|k7rtcS||	|
f|||fk7rtcS|jj	|	|f��Ny)Nc�*�|dj|dfSr$��fullname�r�s r'�<lambda>zCTraversalComparatorStrategy.visit_table_hint_list.<locals>.<lambda>Ws��4��7�3C�3C�T�!�W�2Mr()r�c�*�|dj|dfSr$r�r�s r'r�zCTraversalComparatorStrategy.visit_table_hint_list.<locals>.<lambda>Ys��T�!�W�%5�%5�t�A�w�$?r(rr)r�rrr�r)
r;rJr'rr(rr%�	left_keys�
right_keys�ltable�ldialect�rtable�rdialects
             r'�visit_table_hint_listz1TraversalComparatorStrategy.visit_table_hint_listTs����4�%M�N�	���?�
�
�7B��z�\�7
�2��V�X� 2����8�#�%�%��v�x�(�)�U�F�H�3E�-F�F�%�%��
�
�!�!�6�6�"2�3�7
r(c��||k(Sr:r8r&s       r'�visit_statement_hint_listz5TraversalComparatorStrategy.visit_statement_hint_listerQr(c��t��r:r�r&s       r'�visit_unknown_structurez3TraversalComparatorStrategy.visit_unknown_structurejs
��"�#�#r(c�t�t||d��D]'\\}}\}	}
|j||	fi|��r�!tcSyr~)r�_compare_dml_values_or_cer)r;rJr'rr(rr%rVrXrWrYs           r'r�z4TraversalComparatorStrategy.visit_dml_ordered_valuesosF��
#.��%�<�#
��H�R��h�r�2�2�4�1�1�"�b�?�B�?�%�%�	#
r(c��t|d�}t|d�}||k7ry|r|j||fi|��sy|s||k7ry|j||fi|��syy)Nr�FT)r/r")r;rXrYr%�lvce�rvces      r'r�z5TraversalComparatorStrategy._compare_dml_values_or_cezsl���r�/�0���r�/�0���4�<��
�,�$�,�,�R��:�r�:���"��(��#��#�#�B��1�b�1��r(c��|�|�t|�t|�k7rtSt|tj�r1t||�D]!\}}|j||fi|��r�tcSyt|tj�rtSt|j�|j��D]C\\}	}\}
}|j|	|
fi|��stcS|j||fi|��r�=tcSyr:)rGrr��collections_abc�Sequence�zipr�r�)r;rJr'rr(rr%rXrYrVrWs           r'r�z,TraversalComparatorStrategy.visit_dml_values�s����<�5�=�C��I��U��,C�!�!��d�O�4�4�5��d�E�*���B�5�t�5�5�b�"�C��C�)�)�+����7�7�
8�!�!�'*�$�*�*�,����
�&F�"���R�(�2�r�5�t�5�5�b�"�C��C�)�)�5�t�5�5�b�"�C��C�)�)�	'Gr(c	���t||d��D]N\}}|�|�tcSt||d��D],\}	}
|j|||	||
fi|��tus�$tccS�Pyr5)rrr�)r;rJr'rr(rr%�lseq�rseq�ld�rds           r'r�z2TraversalComparatorStrategy.visit_dml_multi_values�sx��&�d�E�T�B�J�D�$��|�t�|�%�%�%�d�D�D�A���B�)�D�)�)� �+�r�<���GI��&�&�
*�)�B�	Cr(c���|j|jurTtj|j�r2|j|j|jfi|��rddgSt
SdgSt
S)Nr�clauses)rr�is_associativerLr�r�r;rrr%s    r'�compare_expression_clauselistz9TraversalComparatorStrategy.compare_expression_clauselist�sj���=�=�E�N�N�*��'�'��
�
�6�4�4�4�4��L�L�%�-�-��35��'�	�2�2�)�)�"�|�#�!�!r(c�*�|j||fi|��Sr:)r�r�s    r'�compare_clauselistz.TraversalComparatorStrategy.compare_clauselist�s��1�t�1�1�$��D��D�Dr(c���|j|jk(r�tj|j�r�|j|j|jfi|��r(|j|j
|j
fi|��sP|j|j|j
fi|��r,|j|j
|jfi|��rgd�StSddgStS)N)r�negaterrrr�)rr�is_commutativer"rrrr�s    r'�compare_binaryz*TraversalComparatorStrategy.compare_binary�s����=�=�E�N�N�*��'�'��
�
�6�&�D�&�&�t�y�y�%�*�*�C��C�*��*�*�4�:�:�u�{�{�I�b�I�&�D�&�&�t�y�y�%�+�+�D��D�*��*�*�4�:�:�u�z�z�H�R�H�B�B�)�)�"�H�-�-�!�!r(c��|jdd�}|jdd�}|rg}nddg}|s|jd�|S)N�compare_keysT�compare_values�callabler�r�)�popr)r;rrr%r�r��omits       r'�compare_bindparamz-TraversalComparatorStrategy.compare_bindparam�sK���v�v�n�d�3����� 0�$�7����D���(�D���K�K����r(N)r#rr$rr%rrp�bool)2rtrurvrxrrr"r"r�r�r0r�r�r�r:r�r�r�r�rLr�r�rPrSr\r^r`rbrdrgrirkrnrxrzr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r8r(r'r!r!�s��,�I��(�\�#�\�$�\��	\�

�\�|4�"�
�&�"&�.)�
,�
�
9�*�&�&�
8�D�
&��
�
&�.
!�
��
�
2�
�
�
	!�
��
'�	8�0�
�4�"�
$�
	&��*�.*� "�E�"�$
r(r!c�(�eZdZ	dd�Zd�Zd�Zd�Zy)r c���|f}|r||vr||j|�}|D]<}|r|j|�rtcSt|�t|�k(s�6tcStS)z�Compare ColumnElements using proxies and equivalent collections.

        This is a comparison strategy specific to the ORM.
        )�union�shares_lineager�hashr)r;rrr�equivalentsr%�
to_compare�oths        r'�compare_column_elementz4ColIdentityComparatorStrategy.compare_column_element�sh���X�
��5�K�/�$�U�+�1�1�*�=�J��C��t�2�2�3�7�$�$��d��t�E�{�*�$�$�	�"�!r(c�*�|j||fi|��Sr:�r�r�s    r'�compare_columnz,ColIdentityComparatorStrategy.compare_column����*�t�*�*�4��=�"�=�=r(c�*�|j||fi|��Sr:r�r�s    r'�
compare_labelz+ColIdentityComparatorStrategy.compare_label�r�r(c�"�||urtStSr:)rrr�s    r'�
compare_tablez+ColIdentityComparatorStrategy.compare_table�s��!%��
�}�A�>�Ar(N)Tr8)rtrurvr�r�r�r�r8r(r'r r �s��9;�"�(>�>�Br(r )r#rr$rr%rrpr�)r3z	Type[Any]rprq)6�
__future__r�collectionsr�collections.abc�abcr�r�rrryrrrr	r
rrr
r�r�	cache_keyr�visitorsrrrrrrr�util.typingr�symbolrr�COMPARE_SUCCEEDEDr"r5r7r}ror�r�r0r�r�r2�preload_moduler��
MemoizedSlotsr!r r8r(r'�<module>r�s-��#��)��!��
�����������"�,��+�*�*��������O�,�
�����.��$o�)�o�d�N��(�#4�+�#4�Lz�2�z�z*�+���D�0�D�N&�'�
�����.�/��0��L�"6��8J�8J�L�^B�$?�Br(

if you don't want to be vaporized in a nuclear explosion, i simply have to become nuclear myself… i am atomic