Hacked By AnonymousFox

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

�

�܋fK9���dZddlmZddlmZddlmZddlmZddlmZddlmZddlm	Z	dd	lm
Zdd
lm
Z
ddlmZddlmZdd	lm
Z
ejej�d
���Gd�de	j������ZGd�dej��ZGd�de��ZGd�dee
��Zd�ZGd�de��ZdS)z�Dynamic collection API.

Dynamic collections act like Query() objects for read operations and support
basic add/delete mutation.

�)�
attributes)�exc)�
interfaces)�
object_mapper)�object_session)�
properties)�
strategies)�util)�Query�)�log�dynamic)�lazyc��eZdZd�ZdS)�
DynaLoaderc	�`�d|_|jstjd|jz���|jjtjtjfvrtj
d|jz��tj|j|dt|jj|jj|jj���dS)NTztOn relationship %s, 'dynamic' loaders cannot be used with many-to-one/one-to-one relationships and/or uselist=False.z�On relationship %s, 'dynamic' loaders cannot be used with many-to-one/one-to-one relationships and/or uselist=False.  This warning will be an exception in a future release.)�	useobject�
impl_class�
target_mapper�order_by�query_class)�is_class_level�uselistr�InvalidRequestError�parent_property�	directionr�	ONETOMANY�
MANYTOMANYr
�warnr	�_register_attribute�DynamicAttributeImpl�mapperrr)�selfr"s  �M/opt/cloudlinux/venv/lib64/python3.11/site-packages/sqlalchemy/orm/dynamic.py�init_class_attributezDynaLoader.init_class_attribute s���"����|�	��)�!�#'�#7�8���
�
�
!�
+�� ��!�4
�
�
�
�I�"�%)�$8�9�
�
�
�	�&�� ���+��.�5��)�2��,�8�	
�	
�	
�	
�	
�	
�N)�__name__�
__module__�__qualname__r%�r&r$rrs#������
�
�
�
�
r&rc�Z��eZdZdZdZdZdZdZ	d�fd�	Ze	j
fd�Zde	jfd�Z
ejd���Zejd���Z	dd	�Z	dd
�Zd�Zde	j
dddfd�Zd
�Zd�Ze	j
fd�Ze	jfd�Ze	j
fd�Ze	j
fd�Ze	j
fd�Ze	j
fd�Z�xZS)r!TFNc���tt|��j||||fi|��||_||_|st
|_dSt|���vr	||_dSt|��|_dS�N)
�superr!�__init__rr�
AppenderQueryr�
AppenderMixin�mro�mixin_user_query)
r#�class_�key�typecallable�dispatchrrr�kw�	__class__s
         �r$r/zDynamicAttributeImpl.__init__Es����	3��"�D�)�)�2��C��x�	
�	
�35�	
�	
�	
�+��� ��
��	=�,�D����
�k�o�o�/�/�
/�
/�*�D����/��<�<�D���r&c��|tjzs%|�|tj��jS|�||��Sr-)r�SQL_OK�_get_collection_history�PASSIVE_NO_INITIALIZE�added_itemsr)r#�state�dict_�passives    r$�getzDynamicAttributeImpl.get\sM����*�*�	1��/�/��z�7����
��#�#�D�%�0�0�0r&c��|tjzs|�||��jS|�||��}|jSr-)rr;r<r>�added_plus_unchanged)r#r?r@�	user_datarA�historys      r$�get_collectionz#DynamicAttributeImpl.get_collectiondsK����*�*�	0��/�/��w�?�?�K�K��2�2�5�'�B�B�G��/�/r&c�@�tj|tj��Sr-)r�Event�	OP_APPEND�r#s r$�
_append_tokenz"DynamicAttributeImpl._append_tokenq������j�&:�;�;�;r&c�@�tj|tj��Sr-)rrI�	OP_REMOVErKs r$�
_remove_tokenz"DynamicAttributeImpl._remove_tokenurMr&c��|�|�||��}|�|��|jjD]}||||p|j��}�|jr-|�-|�tj|��|d��dSdSdS�NT)	�_modified_event�	add_addedr7�appendrL�trackparent�sethasparentr�instance_state�r#r?r@�value�	initiator�collection_history�fns       r$�fire_append_eventz&DynamicAttributeImpl.fire_append_eventys����%�!%�!5�!5�e�U�!C�!C���$�$�U�+�+�+��-�&�	F�	F�B��B�u�e�Y�%D�$�2D�E�E�E�E���	M�� 1����j�7��>�>��t�L�L�L�L�L�	M�	M� 1� 1r&c�
�|�|�||��}|�|��|jr+|�)|�t	j|��|d��|jjD]}||||p|j���dS)NF)	rS�add_removedrVrWrrXr7�removerPrYs       r$�fire_remove_eventz&DynamicAttributeImpl.fire_remove_event�s����%�!%�!5�!5�e�U�!C�!C���&�&�u�-�-�-���	N�� 1����j�7��>�>��u�M�M�M��-�&�	>�	>�B��B�u�e�Y�<�$�*<�=�=�=�=�	>�	>r&c���|j|jvrt||��|j|j<|�||tj��d||j<|j|jSrR)r5�committed_state�CollectionHistoryrSr�	NEVER_SET)r#r?r@s   r$rSz$DynamicAttributeImpl._modified_event�sc���8�5�0�0�0�.?��e�.L�.L�E�!�$�(�+�
���e�T�:�+?�@�@�@���d�h���$�T�X�.�.r&c	�`�|r|j|jurdS|r|�dS|}	t|	��}
|jr(tj|�||����}|�||��}|js|j}n|�|j��}tj}
|�	|
��}|
|
���
|��}|�
|��}|
D] }||vr|�|||d|����!|D]}|�|||d|����dS)N)r\)
�parent_token�list�has_identityr
�IdentitySetrBrSr>�union�intersection�
differencer^rb)r#r?r@rZr[rA�	check_old�pop�_adapt�iterable�
new_values�old_collectionr\�idset�	constants�	additions�removals�members                  r$�setzDynamicAttributeImpl.set�s����	��/�4�3D�D�D��F��	�5�=��F����(�^�^�
���	F�!�-�d�h�h�u�e�.D�.D�E�E�N�!�1�1�%��?�?���!�	�/�;�N�N�+�1�1�"�.���N�� ��"�/�/�
�;�;�	��E�*�%�%�0�0��;�;�	�!�,�,�Y�7�7�� �	�	�F���"�"��&�&�����'9�'������	�	�F��"�"�����#5�
#�
�
�
�
�	�	r&c��t���r-��NotImplementedError)r#�args�kwargss   r$�deletezDynamicAttributeImpl.delete�s��!�#�#�#r&c� �td���)Nz7Dynamic attributes don't support collection population.r|)r#r?r@rZs    r$�set_committed_valuez(DynamicAttributeImpl.set_committed_value�s��!�H�
�
�	
r&c�V�|�||��}|���Sr-)r<�
as_history�r#r?r@rA�cs     r$�get_historyz DynamicAttributeImpl.get_history�s%���(�(���8�8���|�|�~�~�r&c�P�|�||��}d�|jD��S)Nc�:�g|]}tj|��|f��Sr*)rrX)�.0�xs  r$�
<listcomp>z8DynamicAttributeImpl.get_all_pending.<locals>.<listcomp>�s(��G�G�G�a��*�1�-�-�q�1�G�G�Gr&)r<�	all_itemsr�s     r$�get_all_pendingz$DynamicAttributeImpl.get_all_pending�s/��
�(�(���8�8��G�G�1�;�G�G�G�Gr&c��|j|jvr|j|j}nt||��}|jr!|tjzrt|||���S|S)N)�apply_to)r5rdrerjr�INIT_OK)r#r?rAr�s    r$r<z,DynamicAttributeImpl._get_collection_history�sf���8�u�,�,�,��%�d�h�/�A�A�!�$��.�.�A���	�7�Z�-?�#?�	�$�T�5�1�=�=�=�=��Hr&c�B�||ur|�||||��dSdSr-)r^�r#r?r@rZr[rAs      r$rUzDynamicAttributeImpl.append��7���D� � ��"�"�5�%��	�B�B�B�B�B�!� r&c�B�||ur|�||||��dSdSr-)rbr�s      r$razDynamicAttributeImpl.remove�r�r&c�:�|�|||||���dS)N)rA)rar�s      r$rpzDynamicAttributeImpl.pops&��	
���E�5�%��G��D�D�D�D�Dr&r-)r'r(r)�uses_objects�default_accepts_scalar_loader�supports_population�
collectionrr/r�PASSIVE_OFFrBr=rGr
�memoized_propertyrLrPr^rbrSrzr�r�r�r�r<rUrarp�
__classcell__�r9s@r$r!r!>s&��������L�$)�!����J��G��=�=�=�=�=�=�.)3�(>�1�1�1�1���0�0�0�0�0�
��<�<���<�
��<�<���<�BF�M�M�M�M�BF�>�>�>�>�
/�
/�
/�"��&����4�4�4�4�l$�$�$�
�
�
�
1;�0F�����
%/�$D�H�H�H�H�6@�5K�	�	�	�	�7A�6L�C�C�C�C�7A�6L�C�C�C�C�7A�6L�E�E�E�E�E�E�E�Er&r!c�n��eZdZdZ�fd�Zd�Zeed���Zd�Zd�Zd�Z	dd�Z
d	�Zd
�Zd�Z
�xZS)
r1Nc���tt|���|jd��|���x|_}||_t|��}|j|jj	}|j
�|jj|j
f|_
|�|d���|_|jjr|jj|_dSdS)NF)�alias_secondary)r.r1r/r�obj�instance�attrr�_propsr5�	secondaryr"�
selectable�	_from_obj�_with_parent�
_criterionr�	_order_by)r#r�r?r�r"�propr9s      �r$r/zAppenderMixin.__init__	s����
�m�T�"�"�+�+�D�,>��E�E�E�#(�9�9�;�;�.��
����	��x�(�(���}�T�Y�]�+���>�%�#�k�4�d�n�E�D�N��+�+�H�e�+�L�L����9��	0�!�Y�/�D�N�N�N�	0�	0r&c��t|j��}|�+|jr$|jr|j|vr|���t	j|j��sdS|Sr-)rr��	autoflush�flush�orm_utilrj�r#�sesss  r$�sessionzAppenderMixin.sessionsf���d�m�,�,������
���
��
��%�%��J�J�L�L�L��$�T�]�3�3�	��4��Kr&c��dSr-r*)�sr�s  r$�<lambda>zAppenderMixin.<lambda>-s��T�r&c���|j}|�Nt|j�t	j|j��tj��j��St|�	|����Sr-)
r��iterr�r<rrXr�r=r>�_cloner�s  r$�__iter__zAppenderMixin.__iter__/sl���|���<���	�1�1��-�d�m�<�<��4����	��
�����D�)�)�*�*�*r&c��|j}|�O|j�tj|j��tj���|��S|�|���	|��Sr-)
r�r�r<rrXr�r=�indexedr��__getitem__)r#�indexr�s   r$r�zAppenderMixin.__getitem__;sm���|���<��9�4�4��)�$�-�8�8��0����g�e�n�n�
�
�;�;�t�$�$�0�0��7�7�7r&c��|j}|�Nt|j�t	j|j��tj��j��S|�	|���
��Sr-)r��lenr�r<rrXr�r=r>r��countr�s  r$r�zAppenderMixin.countEsp���|���<���	�1�1��-�d�m�<�<��4����	��
��;�;�t�$�$�*�*�,�,�,r&c��|j}|�Ht|��}|�7tjdt	j|���d|jj�d����|jr"|�|jj	|���}n|�
|jj	��}|j|_|j|_|j
|_
|S)NzParent instance zh is not bound to a Session, and no contextual session is established; lazy load operation of attribute 'z' cannot proceed)r�)r�r�orm_exc�DetachedInstanceErrorr��instance_strr�r5rr�queryr�r�r�)r#r�r�r�s    r$r�zAppenderMixin._cloneQs����=���<�!�(�+�+�D��|��3�3� �,�X�6�6�6�6��	�
�
�
�G������	8��$�$�T�Y�%<�d�$�K�K�E�E��J�J�t�y�6�7�7�E��?����.����.����r&c��|D]M}|j�tj|j��tj|j��|d���NdSr-�r�rUrrXr��
instance_dict)r#�iterator�items   r$�extendzAppenderMixin.extendks`���	�	�D��I����)�$�-�8�8��(���7�7���	
�
�
�
�	�	r&c��|j�tj|j��tj|j��|d��dSr-r��r#r�s  r$rUzAppenderMixin.appendt�L���	����%�d�m�4�4��$�T�]�3�3���		
�	
�	
�	
�	
r&c��|j�tj|j��tj|j��|d��dSr-)r�rarrXr�r�r�s  r$razAppenderMixin.remove|r�r&r-)r'r(r)rr/r��propertyr�r�r�r�r�rUrar�r�s@r$r1r1s���������K�0�0�0�0�0�,����h�w� 1� 1�2�2�G�
+�
+�
+�8�8�8�
-�
-�
-�����4���
�
�
�
�
�
�
�
�
�
r&r1c��eZdZdZdS)r0zBA dynamic query that supports basic collection storage operations.N)r'r(r)�__doc__r*r&r$r0r0�s������L�L�L�Lr&r0c�J�d|jz}t|t|fd|i��S)zAReturn a new class with AppenderQuery functionality layered over.�Appenderr)r'�typer1)�cls�names  r$r3r3�s*�����$�D���}�c�*�]�C�,@�A�A�Ar&c�^�eZdZdZd
d�Zed���Zed���Zd�Zd�Z	d�Z
d	�ZdS)rezDOverrides AttributeHistory to receive append/remove events directly.Nc�b�|r]t||���d��}tj|��|_|j|_|j|_d|_dStj��|_tj��|_tj��|_d|_dS)NFT)r0r�r
�OrderedIdentitySet�unchanged_itemsr>�
deleted_items�_reconcile_collection)r#r�r?r��colls     r$r/zCollectionHistory.__init__�s����
	/� ��u�-�-�7�7��>�>�D�#'�#:�4�#@�#@�D� �'�3�D��!)�!7�D��)-�D�&�&�&�!%�!8�!:�!:�D��#�6�8�8�D��#'�#:�#<�#<�D� �).�D�&�&�&r&c�Z�t|j�|j����Sr-)rir>rlr�rKs r$rDz&CollectionHistory.added_plus_unchanged�s$���D�$�*�*�4�+?�@�@�A�A�Ar&c��t|j�|j���|j����Sr-)rir>rlr�r�rKs r$r�zCollectionHistory.all_items�sA�����"�"�4�#7�8�8�>�>��"�
�
�
�
�	
r&c�f�|jrY|j�|j��}|j�|j��}|j�|��}n|j|j|j}}}t
jt|��t|��t|����Sr-)	r�r>rnr�r�rmr�Historyri)r#�added�deleted�	unchangeds    r$r�zCollectionHistory.as_history�s����%�		��$�/�/��0D�E�E�E��(�5�5�d�6J�K�K�G��,�7�7��@�@�I�I�� ��$��"�&�9�E�
�!�$�u�+�+�t�I����W�
�
�N�N�Nr&c�6�t|j��|Sr-)rir>)r#r�s  r$r�zCollectionHistory.indexed�s���D�$�%�%�e�,�,r&c�:�|j�|��dSr-)r>�add�r#rZs  r$rTzCollectionHistory.add_added�s������U�#�#�#�#�#r&c��||jvr|j�|��dS|j�|��dSr-)r>rar�r�r�s  r$r`zCollectionHistory.add_removed�sJ���D�$�$�$���#�#�E�*�*�*�*�*���"�"�5�)�)�)�)�)r&r-)r'r(r)r�r/r�rDr�r�r�rTr`r*r&r$rere�s�������N�N�/�/�/�/��B�B��X�B��
�
��X�
�O�O�O�-�-�-�$�$�$�*�*�*�*�*r&reN)r��rrr�rrrrr	r
r�r�rr
�class_logger�RelationshipProperty�strategy_for�AbstractRelationshipLoaderr�
AttributeImplr!�objectr1r0r3rer*r&r$�<module>r�s0������������������������������������������������������������������������������� �-�-�9�-�=�=�
�
�
�
�
��6�
�
�>�=���
�>EE�EE�EE�EE�EE�:�3�EE�EE�EE�P|
�|
�|
�|
�|
�F�|
�|
�|
�~M�M�M�M�M�M�5�M�M�M�B�B�B�3*�3*�3*�3*�3*��3*�3*�3*�3*�3*r&

Hacked By AnonymousFox1.0, Coded By AnonymousFox