U
    [hm                     @  s  d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d d	lm
Z
 d d
lmZ d dlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ e
rddlmZ ddlmZ ddlmZ ddlmZ ddl m!Z! ddl"m#Z$ ddl%m&Z& ddl%m'Z' ddl%m(Z( ddl%m)Z) dd l*m+Z+ dd!l,m-Z- dd"l.m/Z/ dd#l0m1Z1 dd$l0m2Z2 dd%lm3Z3 dd&l4m5Z5 ed'ed(Z6ed)ed*d+Z7ed,e8d(Z9e
re$Z:ed- Z;ee	e6 d.f Z<ee	e6 d.d/d0f Z=ee>ef Z?ee>ef Z@ee	e6 eed1f ee f ZAeee6 ee6 ejBe6 f ZCed2ee d(ZDG d3d4 d4ed5d6ZEeeEee>ef f ZFG d7d8 d8eZGG d9d: d:eZHd;d<d=d>d?ZId;d@d=dAdBZJdCdDdEdFdGZKe
rpdCdHdEdIdJZLdCdKdEdLdMZMdCdNdEdOdPZNdQdRdEdSdTZOdQdRdEdUdVZPdWdXdYdZd[ZQd\d]d^d_d`ZRd\dad^dbdcZSnPeTddZLeTdeZMeTdfZNeTdgZOeTdhZPeTdiZReTdjZQeTdkZSdS )l    )annotationsN)Any)Dict)Mapping)Optional)Tuple)Type)TYPE_CHECKING)TypeVar)Union   )_CoreKnownExecutionOptions)roles)DMLStrategyArgument)SynchronizeSessionArgument)_HasClauseElement)ColumnElement)Protocol)	TypeGuard   )AttributeImpl)CollectionAttributeImpl)HasCollectionAdapter)QueryableAttribute)PassiveFlag)registry)InspectionAttr)MapperProperty)	ORMOption)UserDefinedOption)Mapper)RelationshipProperty)InstanceState)AliasedClass)AliasedInsp)_CE)ExecutableOption_T)bound_T_coT)r(   Z	covariant_O)
Mapper[_T]AliasedInsp[_T]zAliasedClass[_T]r+   r,   ._ORMCOLEXPRc                   @  sF   e Zd ZU ded< ded< ded< ded< ded< ded	< ded
< dS )_OrmKnownExecutionOptionsboolZpopulate_existingZ	autoflushr   Zsynchronize_sessionr   Zdml_strategyZis_delete_usingZis_update_fromZrender_nullsN)__name__
__module____qualname____annotations__ r4   r4   <./venv/lib/python3.8/site-packages/sqlalchemy/orm/_typing.pyr.   Y   s   
r.   F)totalc                   @  s$   e Zd ZdZdddddddZdS )	_ORMAdapterProtozprotocol for the :class:`.AliasedInsp._orm_adapt_element` method
    which is a synonym for :class:`.AliasedInsp._adapt_element`.


    Nr%   zOptional[str])objkeyreturnc                 C  s   d S Nr4   )selfr8   r9   r4   r4   r5   __call__o       z_ORMAdapterProto.__call__)N)r0   r1   r2   __doc__r=   r4   r4   r4   r5   r7   h   s   r7   c                   @  s   e Zd ZddddddZdS )_LoaderCallablezInstanceState[Any]r   r   )statepassiver:   c                 C  s   d S r;   r4   )r<   rA   rB   r4   r4   r5   r=   s   s    z_LoaderCallable.__call__N)r0   r1   r2   r=   r4   r4   r4   r5   r@   r   s   r@   r&   zTypeGuard[ORMOption])optr:   c                 C  s   | j  S r;   )_is_corerC   r4   r4   r5   is_orm_optionx   s    rF   zTypeGuard[UserDefinedOption]c                 C  s   | j  o| jS r;   )rD   Z_is_user_definedrE   r4   r4   r5   is_user_defined_option~   s    rG   r   r/   )r8   r:   c                 C  s   t | dpt | dS )NZ__composite_values__Z__dataclass_fields__)hasattrr8   r4   r4   r5   is_composite_class   s     rJ   zTypeGuard[MapperProperty[Any]]c                 C  s   d S r;   r4   rI   r4   r4   r5   insp_is_mapper_property   s    rK   zTypeGuard[Mapper[Any]]c                 C  s   d S r;   r4   rI   r4   r4   r5   insp_is_mapper   r>   rL   zTypeGuard[AliasedInsp[Any]]c                 C  s   d S r;   r4   rI   r4   r4   r5   insp_is_aliased_class   r>   rM   r   z"TypeGuard[QueryableAttribute[Any]]c                 C  s   d S r;   r4   rI   r4   r4   r5   insp_is_attribute   s    rN   c                 C  s   d S r;   r4   rI   r4   r4   r5   attr_is_internal_proxy   s    rO   zMapperProperty[Any]z$TypeGuard[RelationshipProperty[Any]])propr:   c                 C  s   d S r;   r4   )rP   r4   r4   r5   prop_is_relationship   s    rQ   r   z"TypeGuard[CollectionAttributeImpl])implr:   c                 C  s   d S r;   r4   rR   r4   r4   r5   is_collection_impl   s    rT   zTypeGuard[HasCollectionAdapter]c                 C  s   d S r;   r4   rS   r4   r4   r5   is_has_collection_adapter   s    rU   Zis_propertyZ	is_mapperZis_aliased_classZis_attributeZ_is_internal_proxyZ
collectionZ_is_relationshipZ_is_has_collection_adapter)UZ
__future__r   operatortypingr   r   r   r   r   r   r	   r
   r   Zengine.interfacesr   Zsqlr   Zsql._orm_typesr   r   Zsql._typingr   Zsql.elementsr   Zutil.typingr   r   Z
attributesr   r   r   r   baser   Zdecl_apir   Z_registry_typeZ
interfacesr   r   r   r   Zmapperr    Zrelationshipsr!   rA   r"   utilr#   r$   r%   Zsql.baser&   r'   r)   objectr*   Z_RegistryTypeZ_InternalEntityTypeZ_ExternalEntityTypeZ_EntityTypestrZ
_ClassDictZ_InstanceDictZ_IdentityKeyTypeZExpressionElementRoleZ_ORMColumnExprArgumentr-   r.   ZOrmExecuteOptionsParameterr7   r@   rF   rG   rJ   rK   rL   rM   rN   rO   rQ   rT   rU   
attrgetterr4   r4   r4   r5   <module>   s   








