Dashboard
PHP:
8.2.30
OS:
Linux
User:
dh_nv8b2m
/
/
usr
/
local
/
lib
/
python3.10
/
dist-packages
/
sqlalchemy
/
orm
/
__pycache__
📤 Upload
📝 New File
📁 New Folder
Close
Editing: dependency.cpython-310.pyc
o [�hܵ � @ s� d Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z ddlm Z dd lmZ d dlmZ d dlm Z d dlmZ G dd � d e�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�Zeee ee eiZdS )zRelationship dependencies. � )� attributes)�exc)�sync)� unitofwork)�util)� MANYTOMANY)� MANYTOONE)� ONETOMANY� )�sqlc @ s� e Zd Zdd� Zedd� �Zdd� Zdd� Zd d � Zdd� Z d d� Z dd� Zdd� Zdd� Z dd� Zdd� Zdd� Zdd� Zd%dd�Zd d!� Zd"d#� Zd$S )&�DependencyProcessorc C s� || _ |j| _|j| _|j| _|j| _|j| _|j| _|j| _|j| _|j | _ | jr/t j| _nt j | _| jr;t j| _nt j | _|j| _| j jsOt�d| j ��d S )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)�selfr � r �D/usr/local/lib/python3.10/dist-packages/sqlalchemy/orm/dependency.py�__init__ s0 ���zDependencyProcessor.__init__c C s t |j |�S �N)�_direction_to_processorr )�clsr r r r! �from_relationship6 s z%DependencyProcessor.from_relationshipc C s | j j�| 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 �stater r r! r) : s zDependencyProcessor.hasparentc C s |� | 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 �uowr r r! �per_property_preprocessorsB s z.DependencyProcessor.per_property_preprocessorsc C sz t �|| dd�}t �|| dd�}t �|| jj�}t �|| jj�}t �|| jj�}t �|| jj�}| �|||||||� d S �NFT)r � ProcessAll� SaveUpdateAllr �primary_base_mapperr � DeleteAll�per_property_dependencies)r r. � after_save� before_delete�parent_saves�child_saves�parent_deletes� child_deletesr r r! �per_property_flush_actionsK s. �����z.DependencyProcessor.per_property_flush_actionsc C s� | j j}t�||�}t�||�}|rt�|| dd�}d|_nt�|| dd�}d|_||jvr@||jvs5J �|df|dfg} d} nd} |sXt�|| jj �}d }}||jv rWd} nt�|| jj �}d }}||jv rkd} |D ]�}|j | j j� ||j|r~| jntj�}|s�qm|r�t�|| d|�}| r�t�||�}nt�|| d|�}| r�t�||�}| r�g } |D ]+\}}||jvr�d}n|j| \}}|r�t�||�df}nt�||�df}| �|� q�| D ]\}}| �||||||||� q�qmdS )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)r r3 r r2 r4 r1 �disabled�cyclesr �base_mapper�managerr �impl�get_all_pending�dictr r r �ProcessState�DeleteState�SaveUpdateState�states�append�per_state_dependencies)r r. rG �isdelete�child_base_mapperr9 r; r7 r6 � child_actions�child_in_cyclesr8 r: �parent_in_cyclesr+ �sum_�child_state�child�child_action�deleted�listonly� childisdeleter r r! �per_state_flush_actionsg s� � � ��� � ����z+DependencyProcessor.per_state_flush_actionsc C � dS �NFr �r � uowcommitrG r r r! �presort_deletes� � z#DependencyProcessor.presort_deletesc C rW rX r rY r r r! � presort_saves� r\ z!DependencyProcessor.presort_savesc C � d S r# r rY r r r! �process_deletes� r\ z#DependencyProcessor.process_deletesc C r^ r# r rY r r r! � process_saves� r\ z!DependencyProcessor.process_savesc C sp |r| j r tj}n| jtu rtj}ntj}|D ]}|�|| j|�}|r*|� � s* dS q|o7| j j o7| j|j v S )NT)r r r r r �PASSIVE_NO_FETCH_RELATEDr �get_attribute_historyr �emptyr �_is_self_referentialr �mappers)r rZ rG rJ �passive�s�historyr r r! �prop_has_changes� s �� �z$DependencyProcessor.prop_has_changesc C s� | j jr|d u rt�d| j f ��|d urG| jj|| j d�sI| jj|dd�r8t�d|j| j | jj| jd� ��t�d|j| j | jjd� ��d S d S )Nz-Can't flush None value found in collection %s)�allow_subtypesTaE 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. 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.)rk rl rm )r �uselistr � FlushErrorr �_canloadr �class_r* r r r! �_verify_canload� s8 ��� �������z#DependencyProcessor._verify_canloadc C � t � �r# ��NotImplementedError)r r+ rQ �associationrow� clearkeysrZ r r r! �_synchronize" � z DependencyProcessor._synchronizec C s>