U
    ovgm                     @  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(   	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__ r5   r5   :/tmp/pip-unpacked-wheel-uqd9otp_/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 Nr5   )selfr9   r:   r5   r5   r6   __call__o       z_ORMAdapterProto.__call__)N)r1   r2   r3   __doc__r>   r5   r5   r5   r6   r8   h   s   r8   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<   r5   )r=   rB   rC   r5   r5   r6   r>   s   s    z_LoaderCallable.__call__N)r1   r2   r3   r>   r5   r5   r5   r6   rA   r   s   rA   r&   zTypeGuard[ORMOption])optr;   c                 C  s   | j  S r<   )_is_corerD   r5   r5   r6   is_orm_optionx   s    rG   zTypeGuard[UserDefinedOption]c                 C  s   | j  o| jS r<   )rE   Z_is_user_definedrF   r5   r5   r6   is_user_defined_option~   s    rH   r   r0   )r9   r;   c                 C  s   t | dpt | dS )NZ__composite_values__Z__dataclass_fields__)hasattrr9   r5   r5   r6   is_composite_class   s     rK   zTypeGuard[MapperProperty[Any]]c                 C  s   d S r<   r5   rJ   r5   r5   r6   insp_is_mapper_property   s    rL   zTypeGuard[Mapper[Any]]c                 C  s   d S r<   r5   rJ   r5   r5   r6   insp_is_mapper   r?   rM   zTypeGuard[AliasedInsp[Any]]c                 C  s   d S r<   r5   rJ   r5   r5   r6   insp_is_aliased_class   r?   rN   r   z"TypeGuard[QueryableAttribute[Any]]c                 C  s   d S r<   r5   rJ   r5   r5   r6   insp_is_attribute   s    rO   c                 C  s   d S r<   r5   rJ   r5   r5   r6   attr_is_internal_proxy   s    rP   zMapperProperty[Any]z$TypeGuard[RelationshipProperty[Any]])propr;   c                 C  s   d S r<   r5   )rQ   r5   r5   r6   prop_is_relationship   s    rR   r   z"TypeGuard[CollectionAttributeImpl])implr;   c                 C  s   d S r<   r5   rS   r5   r5   r6   is_collection_impl   s    rU   zTypeGuard[HasCollectionAdapter]c                 C  s   d S r<   r5   rT   r5   r5   r6   is_has_collection_adapter   s    rV   Zis_propertyZ	is_mapperZis_aliased_classZis_attributeZ_is_internal_proxyZ
collectionZ_is_relationshipZ_is_has_collection_adapter)U
__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   
attributesr   r   r   r   baser   Zdecl_apir   Z_registry_typeZ
interfacesr   r   r   r   Zmapperr    Zrelationshipsr!   rB   r"   utilr#   r$   r%   Zsql.baser&   r'   r)   objectr+   Z_RegistryTypeZ_InternalEntityTypeZ_ExternalEntityTypeZ_EntityTypestrZ
_ClassDictZ_InstanceDictZ_IdentityKeyTypeZExpressionElementRoleZ_ORMColumnExprArgumentr.   r/   ZOrmExecuteOptionsParameterr8   rA   rG   rH   rK   rL   rM   rN   rO   rP   rR   rU   rV   
attrgetterr5   r5   r5   r6   <module>   s   








