File: //usr/local/lib/python3.10/dist-packages/sqlalchemy/orm/__pycache__/decl_api.cpython-310.pyc
o
���g� �
@ s� d Z ddlmZ ddlZddlZddlZddlmZ ddlmZ ddlmZ ddlm Z ddlm
Z
dd lmZ dd
lmZ ddlm
Z
ddlmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z ddlm!Z! ddlm"Z" ddlm#Z# dd lm$Z$ dd!l%m&Z& dd"l%m'Z' dd#l%m(Z( dd$l%m)Z) dd%l*m+Z+ dd&l*m,Z, dd'l*m-Z- dd(l*m.Z. dd)l*m/Z/ dd*l*m0Z0 dd+l*m1Z1 dd,l2m3Z3 dd-l2m4Z4 dd-l2m4Z5 dd.l6m7Z7 dd/l8m9Z9 dd0l:m;Z; dd1l<m=Z= d2d3lm>Z> d2d4lm?Z? d2d5lm@Z@ d2d6lAmBZB d2d7lCmDZD d2d8lEmFZF d2d9lGmHZH d2d:lImJZJ d2d;l@mKZK d2d<l@mLZL d2d=l@mZM d2d>l@mNZN d2d?lOmPZP d2d@lOmQZQ d2dAlOmRZR d2dBlOmSZS d2dClOmTZT d2dDlOmUZU d2dElOmVZV d2dFlOmWZW d2dGlOmXZX d2dHlOmYZY e�r�ddIlZm[Z[ ddJlZm\Z\ ddKl*m]Z] ddLlm^Z^ ddMlm_Z_ dd1l<m=Z= d2dNl`maZa d2dOlbmcZc edPedQ�ZdedRedQ�ZeeedSf Zfe edSf ZgedTee(ed e)ed eFed f f Zhd�dYdZ�ZiG d[d\� d\ej�ZkG d]d^� d^eke?jle7e �ZmeMjne9e;e3e4e!e"ee#e f d_�G d`da� daem��ZoG dbdc� dcem�Zp dd�d�didj�ZqG dkdl� dl�ZrG dmdn� dnereed �ZsG dodp� dpejted er�ZuG dqdr� dreued �Zvd�dtdu�Zwd�dxdy�ZxG dzd{� d{eod|�ZyG d}d~� d~e?jle=e emd|�Zzd�d�d��Z{G d�d�� d�e?jle=e �Z|d�d�d��Z}dde~d�dde.epd��d�d�d��ZG d�d�� d��Z�e�Z�e�s�e�Z\d�d�d��Z�e?��epezem�d�d�d���Z�dS )�z1Public API functions and helpers for declarative.� )�annotationsN)�Any)�Callable)�ClassVar)�Dict)� FrozenSet)�Generic)�Iterable)�Iterator)�Mapping)�Optional)�overload)�Set)�Tuple)�Type)�
TYPE_CHECKING)�TypeVar)�Union� )�
attributes)�clsregistry)�instrumentation)�
interfaces)� mapperlib)� composite)�deferred)�
mapped_column)�relationship)�synonym)�InstrumentedAttribute)�_inspect_mapped_class)�_is_mapped_class)�Mapped)�
ORMDescriptor��_add_attribute)�_as_declarative)�_ClassScanMapperConfig)�_declarative_constructor)�_DeferredMapperConfig)�_del_attribute��_mapper)� Composite)�Synonym)�Mapper)�MappedColumn)�RelationshipProperty)�
InstanceState� )�exc)�
inspection)�util)�sqltypes)�_NoArg)�SQLCoreOperations)�MetaData)�
FromClause)�hybridmethod)�hybridproperty)�typing)�warn_deprecated)�CallableReference��de_optionalize_union_types)�flatten_newtype)�
is_generic)�
is_literal)�
is_newtype)� is_pep695)�Literal)�
LITERAL_TYPES)�Self)�_O)�
_RegistryType)�_DataclassArguments)�ClassManager)�MapperProperty)�_TypeEngineArgument)�_MatchedOnType�_T)�bound�_TTz_TypeEngineArgument[Any].�cls�Type[_O]�return�boolc C s. | j dd� D ]
}t|dd�dur dS qdS )aK Given a class, return True if any of the classes it inherits from has a
mapped table, otherwise return False.
This is used in declarative mixins to build attributes that behave
differently for the base class vs. a subclass in an inheritance
hierarchy.
.. seealso::
:ref:`decl_mixin_inheritance`
r N� __table__TF)�__mro__�getattr)rU �class_� r] �B/usr/local/lib/python3.10/dist-packages/sqlalchemy/orm/decl_api.py�has_inherited_tablen s
�r_ c @ s e Zd Zddd�Zd
d d
�ZdS )�_DynamicAttributesType�key�str�valuer rW �Nonec C s, d| j v r
t| ||� d S t�| ||� d S �N�
__mapper__)�__dict__r% �type�__setattr__)rU ra rc r] r] r^ ri � s
z"_DynamicAttributesType.__setattr__c C s( d| j v rt| |� d S t�| |� d S re )rg r* rh �__delattr__�rU ra r] r] r^ rj � s
z"_DynamicAttributesType.__delattr__N)ra rb rc r rW rd )ra rb rW rd )�__name__�
__module__�__qualname__ri rj r] r] r] r^ r` � s
r` c @ � e Zd ZdZdS )�DeclarativeAttributeInterceptz�Metaclass that may be used in conjunction with the
:class:`_orm.DeclarativeBase` class to support addition of class
attributes dynamically.
N�rl rm rn �__doc__r] r] r] r^ rp � s rp ��field_specifiersc @ ro )�DCTransformDeclarativez-metaclass that includes @dataclass_transformsNrq r] r] r] r^ ru � s ru c @ s( e Zd ZU ded<