File: //usr/local/lib/python3.10/dist-packages/sqlalchemy/orm/__pycache__/strategies.cpython-310.pyc
o
���g:� � @ s� d Z ddlmZ ddlZddlZddlmZ ddlmZ ddlmZ ddlm Z ddlm
Z
dd lmZ d
dlm
Z
d
dlmZ d
d
lmZ d
dlmZ d
dlmZ d
dlmZ d
dlmZ d
dlmZ d
dlmZ d
dlmZ d
dlmZ d
dlmZ d
dlmZ d
dlmZ d
dlmZ d
dlmZ d
dlm Z d
dl!m"Z" d
dl!m#Z# d
dl!m$Z$ d
dl!m%Z% d
d lm&Z& d
d!lm'Z' d
d"l(m)Z) d
d#l*m+Z+ d
d$l,m-Z- d
d%lm.Z. d
d&lm/Z/ d'd(lm0Z0 d'dlmZ1 d'd)lm2Z2 d'd*lm3Z3 d'd+lm4Z4 d'dlmZ d'dl4mZ5 d'd,l4m6Z6 d'd-l7m8Z8 d'd.l7m9Z9 d'd/l:m;Z; e
�r3d
d0l<m=Z= d
d1lm>Z> d'd2l?m@Z@ 3 dfd4d5�ZAejBjCd3d3d6�G d7d8� d8e&��ZDe3jEejBjCd9d3d6�G d:d;� d;e&���ZFe3jEejBjCd9d<�G d=d>� d>eF���ZGe3jEejBjCd9d9d?�ejBjCd9d9d9d@�ejBjCd9dA�G dBdC� dCe&�����ZHG dDdE� dE�ZIG dFdG� dGe&�ZJe3jEej>jCd9dA�G dHdI� dIe&���ZKe3jEej>jCdJdK�ej>jCddK�G dLdM� dMeJ����ZLe3jEej>jCd9dK�ej>jCdNdK�ej>jCdOdK�ej>jCdPdK�ej>jCdQdK�G dRdS� dSeJejMe3jN�������ZOG dTdU� dU�ZPG dVdW� dWeJ�ZQej>jCdXdK�G dYdZ� dZeQ��ZRe3jEej>jCd[dK�G d\d]� d]eQ���ZSe3jEej>jCd^dK�ej>jCd3dK�G d_d`� d`eJ����ZTe3jEej>jCdadK�G dbdc� dceQejM���ZUddde� ZVdS )gzWsqlalchemy.orm.interfaces.LoaderStrategy
implementations, and related MapperOptions.� )�annotationsN)�Any)�Dict)�Optional)�Tuple)�
TYPE_CHECKING)�Union� )�
attributes)�exc)�
interfaces)�loading)�
path_registry)�
properties)�query)�
relationships)�
unitofwork)�util)�_DEFER_FOR_STATE)�_RAISE_FOR_STATE)�_SET_DEFERRED_EXPIRED)�ATTR_WAS_SET)�LoaderCallableStatus)�PASSIVE_OFF)�PassiveFlag)�_column_descriptions)�ORMCompileState)�ORMSelectCompileState)�QueryContext)�LoaderStrategy)�StrategizedProperty)�_state_session)�
InstanceState)�Load)�_none_only_set)�AliasedClass� )�event)�inspect)�log)�sql)�visitors)�LABEL_STYLE_TABLENAME_PLUS_COL)�Select)�Literal)�Mapper)�RelationshipProperty)�
ColumnElementFc s g }
|o| j �|r| jr|
�t� | j| jjv r+| jj| j \��|
���fdd�� |r3|
�tj� |rG| j � � rG| j
rG|
�� �fdd�� |jD ]C}| |j�
| j�u r�|j�| j�s�tj|j| jf| �|||oq| jpq| jtju ||||| p{| j | jd�| ��}|
D ]}
|
|| � q�qJd S )Nc s t j| |j� fi ���S �N)�orm_util�_validator_events�key��desc�prop)�fn�opts� �D/usr/local/lib/python3.10/dist-packages/sqlalchemy/orm/strategies.py�<lambda>\ s
��z%_register_attribute.<locals>.<lambda>c s t �| � ��S r2 )r
�backref_listenersr6 )�backref�uselistr; r<