Hacked By AnonymousFox

Current Path : /opt/cloudlinux/venv/lib/python3.11/site-packages/sqlalchemy/orm/__pycache__/
Upload File :
Current File : //opt/cloudlinux/venv/lib/python3.11/site-packages/sqlalchemy/orm/__pycache__/dependency.cpython-311.pyc

�

�܋fܵ��*�dZddlmZddlmZddlmZddlmZddlmZddlm	Z	ddlm
Z
dd	lmZd
dlmZd
dlm
Z
d
dlmZGd�d
e��ZGd�de��ZGd�de��ZGd�de��ZGd�de��Zeee
ee	eiZdS)zRelationship dependencies.

�)�
attributes)�exc)�sync)�
unitofwork)�util)�
MANYTOMANY)�	MANYTOONE)�	ONETOMANY�)�sqlc��eZdZd�Zed���Zd�Zd�Zd�Zd�Z	d�Z
d�Zd	�Zd
�Z
d�Zd�Zd
�Zd�Zdd�Zd�Zd�ZdS)�DependencyProcessorc��||_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j|_|j	|_	|jrtj|_ntj
|_|jrtj|_ntj
|_|j|_|jjst#jd|jz���dS)Nz|Can't build a DependencyProcessor for relationship %s. No target attributes to populate between parent and child are present)�prop�cascade�mapper�parent�	secondary�	direction�post_update�passive_deletes�passive_updates�enable_typechecksr�PASSIVE_NO_INITIALIZE�_passive_delete_flag�PASSIVE_OFF�_passive_update_flag�key�synchronize_pairs�sa_exc�
ArgumentError)�selfrs  �P/opt/cloudlinux/venv/lib64/python3.11/site-packages/sqlalchemy/orm/dependency.py�__init__zDependencyProcessor.__init__s�����	��|����k����k������������+���#�3���#�3���!%�!7�����	?�(2�(H�D�%�%�(2�(>�D�%���	?�(2�(H�D�%�%�(2�(>�D�%��8����y�*�	��&�$�&*�i�0���
�	�	�c�6�t|j|��S�N)�_direction_to_processorr)�clsrs  r#�from_relationshipz%DependencyProcessor.from_relationship6s��&�t�~�6�t�<�<�<r%c�p�|jj�|j���|��S)z�return True if the given object instance has a parent,
        according to the ``InstrumentedAttribute`` handled by this
        ``DependencyProcessor``.

        )r�
class_manager�get_implr�	hasparent�r"�states  r#r.zDependencyProcessor.hasparent:s-���{�(�1�1�$�(�;�;�E�E�e�L�L�Lr%c�2�|�|d��dS)z�establish actions and dependencies related to a flush.

        These actions will operate on all relevant states in
        the aggregate.

        TN)�register_preprocessor�r"�uows  r#�per_property_preprocessorsz.DependencyProcessor.per_property_preprocessorsBs ��	�!�!�$��-�-�-�-�-r%c	��tj||dd��}tj||dd��}tj||jj��}tj||jj��}tj||jj��}tj||jj��}|�|||||||��dS�NFT)r�
ProcessAll�
SaveUpdateAllr�primary_base_mapperr�	DeleteAll�per_property_dependencies)r"r4�
after_save�
before_delete�parent_saves�child_saves�parent_deletes�
child_deletess        r#�per_property_flush_actionsz.DependencyProcessor.per_property_flush_actionsKs����*�3��e�T�B�B�
�"�-�c�4��t�D�D�
�!�/����0�
�
��!�.����0�
�
��$�-����0�
�
��#�,����0�
�
�
�	
�&�&��������	
�	
�	
�	
�	
r%c�n�|jj}tj||��}tj||��}|rtj||dd��}d|_ntj||dd��}d|_||jvr||jvsJ�|df|dfg}	d}
nd}
|s/tj||jj	��}dx}}||jvrd}
n.tj||jj	��}dx}}||jvrd}
|D�];}|j
|jj�
||j|r|jnt j��}|s�J|r/tj||d|��}|
rtj||��}n.tj||d|��}|
rtj||��}|
rlg}	|D]g\}}||jvrd}nA|j|\}}|rtj||��df}ntj||��df}|	�|���h|	D]!\}}|�||||||||���"��=dS)z�establish actions and dependencies related to a flush.

        These actions will operate on all relevant states
        individually.    This occurs only if there are cycles
        in the 'aggregated' version of events.

        TFN)NN)rr:rr9r;r8�disabled�cyclesr�base_mapper�managerr�impl�get_all_pending�dictrrr�ProcessState�DeleteState�SaveUpdateState�states�append�per_state_dependencies)r"r4rO�isdelete�child_base_mapperr@rBr>r=�
child_actions�child_in_cyclesr?rA�parent_in_cyclesr0�sum_�child_state�child�child_action�deleted�listonly�
childisdeletes                      r#�per_state_flush_actionsz+DependencyProcessor.per_state_flush_actionsgs��!�K�;�� �.�s�4E�F�F��"�,�S�2C�D�D�
�
�	'�&�1�#�t�T�4�H�H�M�%)�M�"�"�#�.�s�D�%��F�F�J�"&�J���c�j�(�(�
!��
�2�2�2�2�*�5�1�M�4�3H�I�M�#�O�O�"�O��	(�%�3��T�[�,���L�.2�1�N�]��s�z�)�)�#'� ��'�1�#�t�{�7N�O�O�N�(,�,�L�:����+�+�#'� ��7	�7	�E��=���*�/�?�?���
��6��)�)��5���D��
���
J� *� 7��T�4�� O� O�
�#�H�%/�%;�C��%G�%G�N��'�4�S�$��u�M�M�
�#�J�#-�#=�c�5�#I�#I�L��
7� "�
�*.�7�7�&�K��"�#�*�4�4�'3���.1�j��.E�+��(�"�	� *� 6�s�K� H� H� $�,�L�L�!+� :�3�� L� L� %�,�L�"�(�(��6�6�6�6�0=�

�

�+��m��+�+�� �"� ��!��!�	�	�	�	�

�[7	�7	r%c��dS�NF��r"�	uowcommitrOs   r#�presort_deletesz#DependencyProcessor.presort_deletes�����ur%c��dSr`rarbs   r#�
presort_savesz!DependencyProcessor.presort_saves�rer%c��dSr'rarbs   r#�process_deletesz#DependencyProcessor.process_deletes�����r%c��dSr'rarbs   r#�
process_savesz!DependencyProcessor.process_saves�rjr%c�*�|r|jr
tj}n'|jtur
tj}ntj}|D]7}|�||j|��}|r|�	��sdS�8|o|j
jo
|j|j
vS)NT)rrrrr	�PASSIVE_NO_FETCH_RELATEDr�get_attribute_historyr�emptyr�_is_self_referentialr�mappers)r"rcrOrR�passive�s�historys       r#�prop_has_changesz$DependencyProcessor.prop_has_changes�s����	-�4�/�	-� �6�G�G�
�^�y�
(�
(� �9�G�G� �,�G��	�	�A� �5�5�a���7�K�K�G��
�w�}�}���
��t�t���5��	�6�6�5��K�9�#4�4�
r%c��|jjr|�tjd|j�����|��|j�||j���s�|j�|d���r5tjd|j|j|jj|jd�z���tjd|j|j|jjd�z���dSdS)Nz+Can't flush None value found in collection )�allow_subtypesTaEAttempting to flush an item of type %(x)s as a member of collection "%(y)s". Expected an object of type %(z)s or a polymorphic subclass of this type. If %(x)s is a subclass of %(z)s, configure mapper "%(zm)s" to load this subtype polymorphically, or set enable_typechecks=False to allow any subtype to be accepted for flush. )�x�y�z�zmz�Attempting to flush an item of type %(x)s as a member of collection "%(y)s". Expected an object of type %(z)s or a polymorphic subclass of this type.)ryrzr{)r�uselistr�
FlushErrorr�_canloadr�class_r/s  r#�_verify_canloadz#DependencyProcessor._verify_canload�s���9��&	����.�.�#'�9�9�/���
��
�t�{�';�';��d�&<�"<�(<�(
�(
�
��{�#�#�E�$�#�?�?�
��n�=�#�\�!�Y�!�[�/�"�k�	������$�n�!�#�\�!�Y�!�[�/���	����-�
�
�
r%c��t���r'��NotImplementedError)r"r0rY�associationrow�	clearkeysrcs      r#�_synchronizez DependencyProcessor._synchronize"���!�#�#�#r%c���|jjsdStt|jgd�|jjD��z����}|�d|ft��S)Nc��g|]	}|j��
Sra)r)�.0�ps  r#�
<listcomp>zCDependencyProcessor._get_reversed_processed_set.<locals>.<listcomp>*s�� L� L� L�1��� L� L� Lr%�reverse_key)r�_reverse_property�tuple�sortedr�memo�set)r"r4�process_keys   r#�_get_reversed_processed_setz/DependencyProcessor._get_reversed_processed_set%sf���y�*�	��4���D�H�:� L� L��	�0K� L� L� L�L�M�M�
�
���x�x���4�c�:�:�:r%Fc�r�|D]3}|r|�-|�|d�|jjD����dS�4dS)Nc��g|]\}}|��Srara)r��l�rs   r#r�z4DependencyProcessor._post_update.<locals>.<listcomp>2s��F�F�F�$�!�Q�A�F�F�Fr%)�register_post_updaterr)r"r0rc�related�
is_m2o_deleterys      r#�_post_updatez DependencyProcessor._post_update.sf���	�	�A� �
�A�M��.�.��F�F�$�)�*E�F�F�F�������	%2�	�	r%c��t���r'r��r"rcr0s   r#�_pks_changedz DependencyProcessor._pks_changed6r�r%c�0�|jj�d|j�d�S)N�(�))�	__class__�__name__r)r"s r#�__repr__zDependencyProcessor.__repr__9s���>�2�2�2�D�I�I�I�>�>r%N)F)r��
__module__�__qualname__r$�classmethodr*r.r5rCr^rdrgrirlrvr�r�r�r�r�r�rar%r#rrs,���������8�=�=��[�=�M�M�M�.�.�.�
�
�
�8n�n�n�`������
�
�
�
�
�
����,'�'�'�R$�$�$�;�;�;�����$�$�$�?�?�?�?�?r%rc�>�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�OneToManyDPc
�N�|jrntj||jjd��}tj||jjd��}	|j�||f||f||f||	f|	|f|	|fg��dS|j�||f||f||f||f||f||f||fg��dSr7�rr�
PostUpdateAllrr:�dependencies�update)
r"r4r?r@rArBr=r>�child_post_updates�child_pre_updatess
          r#r<z%OneToManyDP.per_property_dependencies>s����	�!+�!9��T�[�4�e�"�"��!+� 8��T�[�4�d�!�!��
��#�#� �*�-�!�:�.��!3�4�"�$5�6�&��7�&�
�6�
�	
�	
�	
�	
�	
�
��#�#�!�:�.���-���/� �.�1�"�N�3�"�K�0�"�M�2��

�

�

�

�

r%c	�D�|jr�tj||jjd��}	tj||jjd��}
|sI|r"|j�||f||	fg��dS|j�||f||f||	fg��dS|r"|j�||
f|
|fg��dS|j�||
f|
|fg��dS|s%|j�||f||f||fg��dS|j�||f||fg��dSr7r�)r"r4�save_parent�
delete_parentrZr=r>rRr]r�r�s           r#rQz"OneToManyDP.per_state_dependenciesgs�����5	�!+�!9��T�[�4�e�"�"��!+� 8��T�[�4�d�!�!���
� ���$�+�+�)�:�6�'�);�<��������$�+�+�(�*�5�)�:�6�'�);�<�������!�
��$�+�+�*�,=�>�.�
�>��������$�+�+�*�,=�>�.�
�>��������	���#�#� �*�-���.� �,�/��
�
�
�
�
�
��#�#���.��}�0M�N�
�
�
�
�
r%c��|jjo|jdk}|D]�}|�||j|j��}|r�|jD]T}|�P|�|��dur9|jjr|�	|d����?|�	|���U|r)|j
D]!}|�|�	|d|j����"��dS)N�allFT�rR�delete��	operationr)rr�rrorrr[r.�
delete_orphan�register_object�	unchangedr�r"rcrO�should_null_fksr0rurYs       r#rdzOneToManyDP.presort_deletes�s��
��#�#�I�D�,@�E�,I�(I�	��	�	�E��5�5��t�x��!:���G��

�$�_�=�=�E��(�T�^�^�E�-B�-B�e�-K�-K��<�5�=�%�5�5�e�d�5�K�K�K�K�%�5�5�e�<�<�<��"��!(�!2���� �,�%�5�5� %���	�6������	�	r%c	�h�|�d|ft��}|jjo|jdk}|D�]w}|�||��}|r|jr
tj}ntj	}|�
||j|��}|r�|jD]"}	|	�|�
|	dd|j����#|�|j��|jD]�}	|jjs!|r|�
|	dd|j����/|�|	��durX|�
|	dd|j���|j�d|	��D]\}
}}}
|�
|d�	�����|r2|r0|jD](}	|	�$|�
|	d|jd
|j����)��ydS)N�children_addedr�T�add)�
cancel_deleter�rFr��rRr�rr�z	pk changer�)r�r�rr�rr�rrrrror�addedr�rr�r[r.r�cascade_iteratorr�)r"rcrOr�r�r0�pks_changedrsrurY�c�m�st_�dct_s              r#rgzOneToManyDP.presort_saves�sW��"���)9�4�(@�#�F�F����*�*�
2��(�E�1�1�	�
�4	�4	�E��+�+�I�u�=�=�K��
1�$�"6�
1�$�:���$�0���5�5�e�T�X�w�O�O�G��
J�$�]���E��(�!�1�1�!�*.�&+�!%��	2������%�%�g�m�4�4�4�$�_�J�J�E��<�5�J�*��%�5�5� %�).�*2�%)�Y�	6���������.�.�%�7�7�!�1�1�!�%)�&.�!%��	2����04�{�/K�/K�$�e�0�0�J�J�O�A�q�#�t�&�5�5�c�D�5�I�I�I�I���

��	�!(�!2���� �,�%�5�5� %� %� $� 4�*5�%)�Y�6������]4	�4	r%c
�j�|js|jdk�s|�d|ft��}|D]�}|�||j|j��}|r�|jD]V}|�R|�|��dur;|�	||dd|d��|jr|r|�
|||g���W|js|jjsgt|j
���|��D]?}|�;|�	||dd|d��|jr|r|�
|||g���@��dSdS)Nr�r�FT)rrr�r�rorrr[r.r�r�rr�r��
difference)r"rcrOr�r0rurYs       r#rizOneToManyDP.process_deletess�����	&�4�#7�5�#@�#@�&�^�^�-=�t�,D�c�J�J�N��
&�
&��#�9�9��4�8�T�%>�����&�!(��	M�	M��!�-� $���u� 5� 5�� >� >� �-�-� %�u�d�D�)�U���� $�/�M�E�M� $� 1� 1�%��U�G� L� L� L���'�&�t�|�/B�&�%(��):�%;�%;�%F�%F�*�&�&�
&�
&�E� %�0� $� 1� 1�$)�5�$��i��!"�!"�!"�$(�#3�!&��!&�$(�$5�$5�(-�y�5�'�%&�%&�%&���9$A�#@�
&�
&r%c
��|jjo|jdk}|D]�}|�||jt
j��}|r�|jD]=}|�||dd|d��|�|j	r|�
|||g���>|jD]?}|r;|jjs/|�|��s|�||dd|d���@|�
||��r$|jD]}|�||dd|d�����dS)Nr�FT)rr�rrorrrr�r�rr�r[r.r�r�r�s       r#rlzOneToManyDP.process_saves/s�����*�*�
2��(�E�1�1�	�
�	�	�E��5�5��t�x��!A���G��
�$�]�E�E�E��%�%��u�d�E�9�e�����(�T�-=�(��)�)�%��U�G�D�D�D��$�_���E�'�� $�� :��!%���u� 5� 5��
�)�)�!�5�$��i�������$�$�Y��6�6��!(�!2�����)�)�!�5�$��y�$������1	�	r%c	�4�|}|}|�|��|�|js|�|��rdS|r'tj||j|jj��dStj||j	||j|jj||j
o|��dSr')r�r�
is_deletedr�clearrrr�populaterr)	r"r0rYr�r�rcr��source�dests	         r#r�zOneToManyDP._synchronizeQs����������U�#�#�#��<�� ��%.�%9�%9�$�%?�%?��
�F��	��J�t�T�[�$�)�*E�F�F�F�F�F��M��������	�+���$�4��
�
�
�
�
r%c�N�tj|||j|jj��Sr'�r�source_modifiedrrrr�s   r#r�zOneToManyDP._pks_changedh�'���#��u�d�k�4�9�+F�
�
�	
r%N)r�r�r�r<rQrdrgrirlr�r�rar%r#r�r�=s�������'�'�'�RA�A�A�F���6<�<�<�|%&�%&�%&�X � � �D���.
�
�
�
�
r%r�c�B�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z		d
d	�Z
dS)�ManyToOneDPc��t�||��|jjD])}|j�t
|�����*dSr')rr$r�self_and_descendants�_dependency_processorsrP�DetectKeySwitch)r"rrs   r#r$zManyToOneDP.__init__os\���$�$�T�4�0�0�0��k�6�	H�	H�F��)�0�0���1F�1F�G�G�G�G�	H�	Hr%c
�B�|jrqtj||jjd��}tj||jjd��}	|j�||f||f||f||	f||	f|	|f|	|fg��dS|j�||f||f||f||fg��dSr7�rrr�rr:r�r�)
r"r4r?r@rArBr=r>�parent_post_updates�parent_pre_updatess
          r#r<z%ManyToOneDP.per_property_dependenciests����	�",�":��T�[�4�e�#�#��",�!9��T�[�4�d�"�"��
��#�#� �*�-�!�:�.��!4�5��!3�4�"�$6�7�'��7�'��8��

�

�

�

�

�
��#�#� �*�-���.�!�=�1�#�]�3�	�
�
�
�
�
r%c	�@�|jr�|sitj||jjd��}	|r"|j�||	f|	|fg��dS|j�||f||f||	fg��dStj||jjd��}
|j�||
f|
|f|
|fg��dS|sC|s"|j�||f||fg��dS|j�||fg��dS|r|j�||fg��dSdSr7r�)r"r4r�r�rZr=r>rRr]r�r�s           r#rQz"ManyToOneDP.per_state_dependencies�s�����,	I��
�&0�&>����8�%�'�'�#�!���$�+�+�'�)<�=�0�,�?��������$�+�+�(�*�5�)�:�6�'�)<�=�������&0�%=����8�$�&�&�"�� �'�'�&�(:�;�+�]�;�+�\�:��������
	I� �
E�� �'�'�"�J�/�*�k�1J�K������� �'�'�*�k�)B�(C�D�D�D�D�D��
I�� �'�'�-��)F�(G�H�H�H�H�H�
I�
Ir%c��|jjs|jjr�|D]�}|�||j|j��}|r�|jjr|���}n|���}|D]_}|��|�|dd|j	���|j
�d|��}|D]\}}	}
}|�|
d�����`��dSdS)NTr�r�r�)rr�r�rorr�sum�non_deletedr�rrr�)r"rcrOr0ru�todeleterY�tr�r�r�r�s            r#rdzManyToOneDP.presort_deletes�s8���<��	J�$�,�"<�	J��
J�
J��#�9�9��4�8�T�%>�����J��|�1�9�#*�;�;�=�=���#*�#6�#6�#8�#8��!)�J�J�� �=�$�!�1�1�!�%)�&.�!%��	2����!�K�8�8��5�I�I��/0�J�J�O�A�q�#�t�%�5�5�c�D�5�I�I�I�I�J��)	J�	J�
J�
Jr%c��|D]�}|�|d|j���|jjr�|�||j|j��}|r{|jD]s}|�|��durZ|�|dd|j���|j	�
d|��}|D]\}}}	}
|�|	d�����t��dS)Nr�r�FTr�r�r�)r�rrr�rorrr[r.rr�)r"rcrOr0rurYr�r�r�r�r�s           r#rgzManyToOneDP.presort_saves�s���	N�	N�E��%�%�e�u�4�9�%�M�M�M��|�)�
N�#�9�9��4�8�T�%>�����N�!(��N�N���>�>�%�0�0�E�9�9�%�5�5� %�)-�*2�%)�Y�	6����!%�� <� <�X�u� M� M�A�34�N�N���1�c�4� )� 9� 9�#�� 9� M� M� M� M���%	N�	Nr%c�8�|jr�|jjs�|jdksy|D]x}|�|ddd|��|rU|jrN|�||j|j��}|r+|�|||�	��d����sdSdSdSdS)Nr�T)r�)
rrr�rr�rorrr�r�)r"rcrOr0rus     r#rizManyToOneDP.process_deletess�����	��L�.�	��(�E�1�1� �	
�	
���!�!�%��t�T�9�E�E�E���T�-��'�=�=��t�x��)B���G����)�)�!�9�g�k�k�m�m�4�*�����!	�	�	�	�2�1�	
�	
r%c
�Z�|D]�}|�||jtj��}|r}|jr%|jD]}|�||dd|d���n!|jr|�|ddd|d��|jr)|�|||�	������dS)NFr�Tr�)
rorrrr�r�r[rr�r�)r"rcrOr0rurYs      r#rlzManyToOneDP.process_savess����	G�	G�E��5�5��t�x��!A���G��
G��=��!(������)�)�!�5�$��y�%�������_���%�%��t�T�4��H�����#�G��%�%�e�Y����
�
�F�F�F��	G�	Gr%Nc	���|�|js|�|��rdS|�S|�Q|j�|��s7t	jdt
j|���d|�d|j�d���dS|s|�'tj
||j|jj��dS|�
|��tj||j||j|jj|d��dS)N�Object of type � not in session, � operation along '�' won't proceedF)rr��session�_contains_stater�warn�
mapperutil�state_class_strrrr�rrr�r�r�r"r0rYr�r�rcr�s       r#r�zManyToOneDP._synchronize*s���=�� ��%.�%9�%9�%�%@�%@��
�F�
�!��!��%�5�5�e�<�<�"�
�I�I��-�e�4�4�4�4�i�i�i�����L�
�
�
�

�F��	��
��J�u�d�k�4�9�+F�G�G�G�G�G�� � ��'�'�'��M��������	�+���
�
�
�
�
r%r')r�r�r�r$r<rQrdrgrirlr�rar%r#r�r�ns�������H�H�H�
&�&�&�P8I�8I�8I�tJ�J�J�0N�N�N�*���*G�G�G�2�&�&�&�&�&�&r%r�c�T�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
S)r�a�For many-to-one relationships with no one-to-many backref,
    searches for parents through the unit of work when a primary
    key has changed and updates them.

    Theoretically, this approach could be expanded to support transparent
    deletion of objects referenced via many-to-one as well, although
    the current attribute system doesn't do enough bookkeeping for this
    to be efficient.

    c��|jjr#|jrdSdd�|jjD��vrdS|�|d��dS)NFc3�$K�|]}|jV��dSr')r)r�rs  r#�	<genexpr>z=DetectKeySwitch.per_property_preprocessors.<locals>.<genexpr>ds9��������(������r%)rr�rr2r3s  r#r5z*DetectKeySwitch.per_property_preprocessors_sp���9�&�	��#�
������ $�	� ;�������F��!�!�$��.�.�.�.�.r%c��tj||jj��}tj||dd��}|j�||fg��dSr`)rr9rrGr8r�r�)r"r4r?r=s    r#rCz*DetectKeySwitch.per_property_flush_actionslsT��!�/��T�[�5L�M�M���*�3��e�U�C�C�
�����,�
�!;� <�=�=�=�=�=r%c��dSr'ra)r"r4rOrRs    r#r^z'DetectKeySwitch.per_state_flush_actionsqrjr%c��dSr'rarbs   r#rdzDetectKeySwitch.presort_deletestrjr%c�D�|js|�||��dSdSr'�r�_process_key_switches)r"r4rOs   r#rgzDetectKeySwitch.presort_savesws5���#�	4�
�&�&�v�s�3�3�3�3�3�	4�	4r%c�b�|s,|jr%|�||��}t|��SdSr`)r�_key_switchers�bool)r"r4rOrR�ds     r#rvz DetectKeySwitch.prop_has_changes}s9���	�D�0�	��#�#�C��0�0�A���7�7�N��ur%c��J�r'rarbs   r#rizDetectKeySwitch.process_deletes�s���ur%c�D�|jsJ�|�||��dSr'rrbs   r#rlzDetectKeySwitch.process_saves�s/��
�#�#�#�#��"�"�6�9�5�5�5�5�5r%c��|�d|fd���\}}|�|��}|D]G}||vrA|�||��r|�|���2|�|���H|S)N�pk_switchersc�:�t��t��fSr')r�rar%r#�<lambda>z0DetectKeySwitch._key_switchers.<locals>.<lambda>�s��S�U�U�C�E�E�N�r%)r��unionr�r�)r"r4rO�switched�notswitched�	allstatesrts       r#rzDetectKeySwitch._key_switchers�s��� #���
�T�"�$:�$:�!
�!
���+��N�N�;�/�/�	��	'�	'�A��	�!�!��$�$�S�!�,�,�'��L�L��O�O�O�O��O�O�A�&�&�&���r%c
�X�|�||��}|�r|jj���D]�}t	|j|jj��s�"|j}|�|j	���
|||j���}|tj
ur�|��|jjr|s�}|d}n|}tj|��}||vrO|�|d|j��t'j||j||j|jj||j����dSdS)N)rs�F)rr��identity_map�
all_states�
issubclassr�rrKr-r�getrr�PASSIVE_NO_RESULTrr}�instance_stater�rrr�rr)	r"�deplistrc�	switchersr0�dict_r��related_obj�
related_states	         r#rz%DetectKeySwitch._process_key_switches�s^���'�'�	�7�;�;�	��!	�#�*�7�B�B�D�D�
�
��!�%�,���0B�C�C����
���.�.���2�2�6�6��5�$�*C�7�����:�#?�?�?��+��y�(�.�&�%�$�&-�a�j���&-��$.�$=�k�$J�$J�M�$�	�1�1�!�1�1�!�5�$�*>�����
�)� �K�!� �K� �I�7�%� �0�����3!	�!	�
�
r%c�v�t|j��o%tj|||j|jj��Sr')rrrr�rrrr�s   r#r�zDetectKeySwitch._pks_changed�s6���E�I���
�4�#7��u�d�k�4�9�+F�$
�$
�	
r%N)r�r�r��__doc__r5rCr^rdrgrvrirlrrr�rar%r#r�r�Ss�������	�	�/�/�/�>�>�>�

�
�
�
�
�
�4�4�4�������6�6�6����#�#�#�J
�
�
�
�
r%r�c�D�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
S)�ManyToManyDPc
�d�|j�||f||f||f||f||f||f||fg��dSr'�r�r�)r"r4r?r@rArBr=r>s        r#r<z&ManyToManyDP.per_property_dependencies�sh��	�����z�*��j�)��]�+���-���/��
�.���,�

�	
�	
�	
�	
�	
r%c	���|sF|r"|j�||f||fg��dS|j�||f||fg��dS|j�||f||fg��dSr'r")	r"r4r�r�rZr=r>rRr]s	         r#rQz#ManyToManyDP.per_state_dependencies�s����	��
�� �'�'�!�:�.��\�0J�K������� �'�'�!�:�.��z�0J�K������
��#�#���.��
�0N�O�
�
�
�
�
r%c�d�|js&|D]%}|�||j|j���$dSdSr')rrorr)r"rcrOr0s    r#rdzManyToManyDP.presort_deletes�s]���#�	� �
�
���/�/��4�8�T�%>�����	�	�
�
r%c��|jsA|D]>}|�||��r&|�||jtj��}�?|jjsdS|D]�}|�||jtj��}|ry|j	D]q}|�
|��durX|�|dd|j���|j
�d|��D]\}}}}	|�|d�����r��dS)NFTr�r�r�)rr�rorrrrr�rr[r.r�rrr�)
r"rcrOr0rurYr�r�r�r�s
          r#rgzManyToManyDP.presort_saves
s^���#�	� �
�
���$�$�Y��6�6��'�=�=��t�x��)?���G���|�)�	��F��	J�	J�E��5�5��t�x��!A���G��
J�$�_�J�J�E��~�~�e�,�,��5�5�!�1�1�!�%)�&.�!%��	2����04�{�/K�/K�$�e�0�0�J�J�O�A�q�#�t�&�5�5�c�D�5�I�I�I�I���!	J�	Jr%c
���g}g}g}|�|��}t��}|D]��|��|j|j��}|r�|���D]?}	|	�|��|	f|vr�
i}
|��|	|
d|d��s�*|�|
���@|��fd�|���D������|�|�|��|�	||||��dS)NFr�c3� �K�|]}|�fV��	dSr'ra�r�r�r0s  �r#r�z/ManyToManyDP.process_deletes.<locals>.<genexpr>Ks'�����C�C�!�A�u�:�C�C�C�C�C�Cr%)
r�r�rorr�	non_addedr�rPr��	_run_crud)r"rcrO�secondary_delete�secondary_insert�secondary_update�	processed�tmprurYr�r0s           @r#rizManyToManyDP.process_deletes,sl����������4�4�Y�?�?�	��e�e���	D�	D�E� �5�5��t�x��!:���G��
D�$�.�.�0�0�<�<�E��}�!�-�5�%�.�I�2M�2M� �%'�N��,�,���&��!� �
��!�!�$�+�+�N�;�;�;�;��
�
�C�C�C�C�w�/@�/@�/B�/B�C�C�C�C�C�C��� ����S�!�!�!�����'�)9�;K�	
�	
�	
�	
�	
r%c
���
�g}g}g}|�|��}t��}|D�]��
|jo|�|�
��}|r
tj}	ntj}	|��
|j|	��}
|
�r)|
j	D]=}|��
|f|vr�i}|�
�
||d|d��s�(|�|���>|
jD]=}|��
|f|vr�i}|�
�
||d|d��s�(|�|���>|�
�
fd�|
j	|
jzD����|ro|
jD]g}i}tj
�
|j|d|jj��tj
||j|d|jj��|�|���h���|�|�
|��|�||||��dS)NFr�r�c3� �K�|]}|�fV��	dSr'rar(s  �r#r�z-ManyToManyDP.process_saves.<locals>.<genexpr>~s'�����O�O�!�A�u�:�O�O�O�O�O�Or%�old_)r�r�rr�rrrrorr�r�rPr[r�r�rrrrr�secondary_synchronize_pairsr*)r"rcrOr+r,r-r.r/�need_cascade_pksrsrurYr�r0s             @r#rlzManyToManyDP.process_savesTs�����������4�4�Y�?�?�	��e�e���7	@�7	@�E�#'�#7�7� �D�<M�<M��5�=�=�� �
;�$�0���$�:���5�5�e�T�X�w�O�O�G��.
@�$�]�<�<�E� �,�%���9�1L�1L� �%'�N��,�,��u�n�e�Y����!�!�$�+�+�N�;�;�;�;�$�_�
<�
<�E� �,�%���9�1L�1L� �%'�N��,�,���&��!� �
��!�!�$�+�+�N�;�;�;�;��
�
�O�O�O�O�w�}�w��/N�O�O�O�O�O�O�#�@�!(�!2�@�@��)+����!� �K�*�"� �I�7������!� �K�*�"� �I�A����)�/�/��?�?�?�?��� ����S�!�!�!�����'�)9�;K�	
�	
�	
�	
�	
r%c���|j�|j��}|r�|d�|j�tj�fd�|jjD�����}|�||��}|�	��rN|j
t|��kr6tj
d|jjt|��|j
fz���|r�|d�|j�tj�fd�|jjD�����}|�||��}|�	��rN|j
t|��kr6tj
d|jjt|��|j
fz���|r1|j���}|�||��dSdS)Nrc�j��g|]/}|j�v�|tj|j|j���k��0S)��type_�rr�	bindparam�type�r�r�r�s  �r#r�z*ManyToManyDP._run_crud.<locals>.<listcomp>�sH��������5�N�2�2��S�]�1�5���?�?�?�?�2�2�2r%zRDELETE statement on table '%s' expected to delete %d row(s); Only %d were matched.c�p��g|]2}|j�v�|tjd|jz|j���k��3S)r2r7r9r<s  �r#r�z*ManyToManyDP._run_crud.<locals>.<listcomp>�sL��������5�N�2�2��S�]�6�A�E�>���H�H�H�H�2�2�2r%zRUPDATE statement on table '%s' expected to update %d row(s); Only %d were matched.)�transaction�
connectionrrr�r�and_r��execute�supports_sane_multi_rowcount�rowcount�lenr�StaleDataError�descriptionr��insert)	r"rcr,r-r+r?�	statement�resultr�s	        @r#r*zManyToManyDP._run_crud�s%����*�5�5�d�k�B�B�
��	�-�a�0�N���-�-�������!%��!1�������I� �'�'�	�3C�D�D�F��3�3�5�5�
��/�S�)9�%:�%:�:�:��(�7���2��,�-�-���������	�-�a�0�N���-�-�������!%��!1�������I� �'�'�	�3C�D�D�F��3�3�5�5�
��/�S�)9�%:�%:�:�:��(�7���2��,�-�-���������	<���-�-�/�/�I����y�*:�;�;�;�;�;�	<�	<r%c	��|�|��|�dS|�X|j�|��s>|js5t	jdt
j|���d|�d|j�d���dStj
||j||jj��tj
||j
||jj��dS)NFr�r�r�r�T)r�r�r�r[rr�r�r�rr�
populate_dictrrrr3r�s       r#r�zManyToManyDP._synchronize�s���
	
���U�#�#�#��=��5���Y�%6�%F�%F�u�%M�%M���=�
��	�	�"�1�%�8�8�8�8�)�)�)�T�Y�Y�Y�P����
�5����4�;���	�0K�	
�	
�	
�	
����K���I�1�		
�	
�	
��tr%c�N�tj|||j|jj��Sr'r�r�s   r#r�zManyToManyDP._pks_changed�r�r%N)r�r�r�r<rQrdrgrirlr*r�r�rar%r#r r �s�������
�
�
�8���2
�
�
� J� J� J�D&
�&
�&
�PF
�F
�F
�P;<�;<�;<�z���B
�
�
�
�
r%r N)r�rrrrrr��
interfacesrr	r
r r�objectrr�r�r�r r(rar%r#�<module>rPs����������������������������� � � � � � �"�"�"�"�"�"�!�!�!�!�!�!�!�!�!�!�!�!�������������������a?�a?�a?�a?�a?�&�a?�a?�a?�H	n
�n
�n
�n
�n
�%�n
�n
�n
�b	b�b�b�b�b�%�b�b�b�Jr
�r
�r
�r
�r
�)�r
�r
�r
�ju
�u
�u
�u
�u
�&�u
�u
�u
�r	�{�
�{������r%

Hacked By AnonymousFox1.0, Coded By AnonymousFox