o
     Zh(                     @  s  U 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 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dZ de!d< edZ"de!d< edZ#de!d< edZ$de!d< ed Z%de!d!< ed"Z&de!d"< ed#Z'de!d#< ed$Z(de!d$< ed%Z)de!d%< ed&Z*de!d&< ed'Z+de!d'< ed(Z,de!d(< ed)Z-de!d)< ed*Z.de!d*< ed+Z/de!d+< ed,Z0de!d,< ed-Z1de!d-< d.Z2d/Z3d0Z4d1Z5h d2Z6i d3e d4d5hfd6e"e6fd7e"e6fd8e"e6fd9e#d:d;hfd<e$h d=fd>e$h d=fd?e*h d@fdAe*h d@fdBe+h dCfdDe+h dCfdEe-dFdGhfdHe%dIhfdJe&e5hfdKe'h dLfdMe(h dNfdOe)dPdQhfe.h dRfe/dSdThfe,dUdVhfe0dWdXhfe1dYdZhfd[Z7d\e!d]< ddcddZ8ddgdhZ9ddpdqZ:ddtduZ;ddxdyZ<dd|d}Z=dddZ>dS )    )annotations)Dict)List)Optional)Set)Tuple)Union)ARG_POS)CallExpr)ClassDef)	Decorator)
Expression)FuncDef)
MemberExpr)NameExpr)OverloadedFuncDef)
SymbolNode)	TypeAlias)TypeInfo)SemanticAnalyzerPluginInterface)CallableType)get_proper_type)Instance)UnboundType   )utilCOLUMNintRELATIONSHIPREGISTRYCOLUMN_PROPERTYZ	TYPEENGNE
TYPEENGINEMAPPEDDECLARATIVE_BASEDECLARATIVE_METAMAPPED_DECORATORSYNONYM_PROPERTYCOMPOSITE_PROPERTYDECLARED_ATTRMAPPER_PROPERTYAS_DECLARATIVEAS_DECLARATIVE_BASEDECLARATIVE_MIXINQUERY_EXPRESSIONzbuiltins.objectzbuiltins.strzbuiltins.listzsqlalchemy.orm.base.Mapped>   z)sqlalchemy.orm.relationships.Relationshipz1sqlalchemy.orm.relationships.RelationshipPropertyz#sqlalchemy.orm.RelationshipPropertyzsqlalchemy.orm.Relationshipz2sqlalchemy.orm.relationships._RelationshipDeclaredColumnzsqlalchemy.sql.schema.Columnzsqlalchemy.sql.ColumnZRelationshipZRelationshipPropertyZ_RelationshipDeclaredregistryz sqlalchemy.orm.decl_api.registryzsqlalchemy.orm.registryZColumnProperty>   z"sqlalchemy.orm.MappedSQLExpressionzsqlalchemy.orm.ColumnPropertyz(sqlalchemy.orm.properties.ColumnPropertyz-sqlalchemy.orm.properties.MappedSQLExpressionZMappedSQLExpressionZSynonym>   z/sqlalchemy.orm.descriptor_props.SynonymPropertyz'sqlalchemy.orm.descriptor_props.Synonymzsqlalchemy.orm.SynonymPropertyzsqlalchemy.orm.SynonymZSynonymPropertyZ	Composite>   z sqlalchemy.orm.CompositePropertyz)sqlalchemy.orm.descriptor_props.Compositez1sqlalchemy.orm.descriptor_props.CompositePropertyzsqlalchemy.orm.CompositeZCompositePropertyZMapperPropertyz(sqlalchemy.orm.interfaces.MapperPropertyzsqlalchemy.orm.MapperPropertyZ
TypeEnginez"sqlalchemy.sql.type_api.TypeEngineZMappedZdeclarative_base>   zsqlalchemy.orm.declarative_basez(sqlalchemy.orm.decl_api.declarative_basez+sqlalchemy.ext.declarative.declarative_baseZDeclarativeMeta>   z'sqlalchemy.orm.decl_api.DeclarativeMetazsqlalchemy.orm.DeclarativeMetaz*sqlalchemy.ext.declarative.DeclarativeMetaZmappedz'sqlalchemy.orm.decl_api.registry.mappedzsqlalchemy.orm.registry.mapped>   z&sqlalchemy.orm.decl_api.as_declarativez)sqlalchemy.ext.declarative.as_declarativezsqlalchemy.orm.as_declarativez4sqlalchemy.orm.decl_api.registry.as_declarative_basez+sqlalchemy.orm.registry.as_declarative_basez%sqlalchemy.orm.decl_api.declared_attrzsqlalchemy.orm.declared_attrz)sqlalchemy.orm.decl_api.declarative_mixinz sqlalchemy.orm.declarative_mixinzsqlalchemy.orm.query_expressionz1sqlalchemy.orm._orm_constructors.query_expression)Zas_declarativeZas_declarative_baseZdeclared_attrZdeclarative_mixinZquery_expressionzDict[str, Tuple[int, Set[str]]]_lookupinfor   type_idreturnboolc                 C  sD   | j D ]}t|jd\}}||kr nqdS |d u rdS |j|v S NNNF)mror0   getnamefullname)r1   r2   mrcheck_type_id	fullnames r>   P/var/www/html/lang_env/lib/python3.10/site-packages/sqlalchemy/ext/mypy/names.pyhas_base_type_id   s   

r@   r7   List[TypeInfo]c                 C  sB   | D ]}t |jd\}}||kr nqdS |d u rdS |j|v S r5   r0   r8   r9   r:   )r7   r2   r;   r<   r=   r>   r>   r?   
mro_has_id   s   
rC   type_r   clsr   apir   Optional[int]c                 C  s`   | | j| }|d ur.t|jtr#t|jj}t|tr!t|j	S d S t|jt
r.t|jS d S N)Zlookup_qualifiedr9   
isinstancenoder   r   targetr   type_id_for_named_nodetyper   )rD   rE   rF   Zsymtarget_typer>   r>   r?   type_id_for_unbound_type   s   


rO   calleer   c                 C  sX  t | ttfrt | jtr6t | jjtr6| jjjr4t | jjjtr4t	| jjjj
}t |tr4t|jjS d S t | jtrb| jjr`| jjjr`t | jjjtr`t	| jjjj
}t |tr`t|jjS d S t | jtr| jjrt | jjtrt	| jjj
}t |trt|jjS d S t | jtrt	| jj}t |trt|jjS d S t | jtrt| S d S rH   )rI   r   r   rJ   r   funcr   rM   r   r   ret_typer   type_id_for_fullnamer:   r   implr   rK   r   rL   )rP   rR   rN   r>   r>   r?   type_id_for_callee   sH   




rU   rJ   'Union[NameExpr, MemberExpr, SymbolNode]c                 C  s8   t | jd\}}|d u s|d u rd S | j|v r|S d S )Nr6   rB   )rJ   r2   r=   r>   r>   r?   rL   +  s   
rL   r:   strc                 C  sF   |  d}|d }t|d\}}|d u s|d u rd S | |v r!|S d S )N.r6   )splitr0   r8   )r:   tokensZ	immediater2   r=   r>   r>   r?   rS   8  s   
rS   exprr
   c                 C  s,   t d}t|_t|d}t|| gtgdgS )NZ__sa_MappedZ_empty_constructorZarg1)r   NAMED_TYPE_SQLA_MAPPEDr:   r   r
   r	   )r\   Zcolumn_descriptorZmember_exprr>   r>   r?   expr_to_mapped_constructorF  s   
r^   N)r1   r   r2   r   r3   r4   )r7   rA   r2   r   r3   r4   )rD   r   rE   r   rF   r   r3   rG   )rP   r   r3   rG   )rJ   rV   r3   rG   )r:   rW   r3   rG   )r\   r   r3   r
   )?
__future__r   typingr   r   r   r   r   r   Z
mypy.nodesr	   r
   r   r   r   r   r   r   r   r   r   r   Zmypy.pluginr   Z
mypy.typesr   r   r   r    r   symbolr   __annotations__r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   ZNAMED_TYPE_BUILTINS_OBJECTZNAMED_TYPE_BUILTINS_STRZNAMED_TYPE_BUILTINS_LISTr]   Z_RelFullNamesr0   r@   rC   rO   rU   rL   rS   r^   r>   r>   r>   r?   <module>   s>  	
$-6?H
O
PQYai	  




,
