o
    E6÷d.,  ã                   @  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+¡Z/de!d+< e d,¡Z0de!d,< e d-¡Z1de!d-< d.Z2d/Z3d0Z4d1Z5i d2e d3d4hf“d5e"h d6£f“d7e"h d6£f“d8e#d9d:hf“d;e$h d<£f“d=e$h d<£f“d>e*h d?£f“d@e*h d?£f“dAe+h dB£f“dCe+h dB£f“dDe-dEdFhf“dGe%dHhf“dIe&e5hf“dJe'h dK£f“dLe(h dM£f“dNe)dOdPhf“dQe.h dR£f“e/dSdThfe,dUdVhfe0dWdXhfe1dYdZhfd[œ¥Z6d\e!d]< dƒdcdd„Z7d„dgdh„Z8d…dpdq„Z9d†dtdu„Z:d‡dxdy„Z;dˆd|d}„Z<d‰d€d„Z=d‚S )Šé    )Ú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ÚColumnzsqlalchemy.sql.schema.Columnzsqlalchemy.sql.ColumnZRelationship>   z)sqlalchemy.orm.relationships.Relationshipzsqlalchemy.orm.Relationshipz1sqlalchemy.orm.relationships.RelationshipPropertyz#sqlalchemy.orm.RelationshipPropertyZRelationshipPropertyÚregistryz sqlalchemy.orm.decl_api.registryzsqlalchemy.orm.registryZColumnProperty>   z(sqlalchemy.orm.properties.ColumnPropertyzsqlalchemy.orm.ColumnPropertyz"sqlalchemy.orm.MappedSQLExpressionz-sqlalchemy.orm.properties.MappedSQLExpressionZMappedSQLExpressionZSynonym>   zsqlalchemy.orm.Synonymz/sqlalchemy.orm.descriptor_props.SynonymPropertyz'sqlalchemy.orm.descriptor_props.Synonymzsqlalchemy.orm.SynonymPropertyZSynonymPropertyZ	Composite>   z)sqlalchemy.orm.descriptor_props.Compositezsqlalchemy.orm.Compositez1sqlalchemy.orm.descriptor_props.CompositePropertyz sqlalchemy.orm.CompositePropertyZCompositePropertyZMapperPropertyz(sqlalchemy.orm.interfaces.MapperPropertyzsqlalchemy.orm.MapperPropertyZ
TypeEnginez"sqlalchemy.sql.type_api.TypeEngineZMappedZdeclarative_base>   z+sqlalchemy.ext.declarative.declarative_basez(sqlalchemy.orm.decl_api.declarative_basezsqlalchemy.orm.declarative_baseZDeclarativeMeta>   zsqlalchemy.orm.DeclarativeMetaz'sqlalchemy.orm.decl_api.DeclarativeMetaz*sqlalchemy.ext.declarative.DeclarativeMetaZmappedz'sqlalchemy.orm.decl_api.registry.mappedzsqlalchemy.orm.registry.mappedZas_declarative>   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_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>   úpC:\Users\jesus\OneDrive\Desktop\erpjis_fastapi\backend\jisbackend\Lib\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   ÚsymÚtarget_typer>   r>   r?   Útype_id_for_unbound_typeø   s   

ý
rP   Úcalleer   c                 C  sX  t | ttfƒrªt | 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r…t | jjtƒr…t	| jjj
ƒ}t |tƒr…t|jjƒS d S t | jtƒr t	| jjƒ}t |tƒržt|jjƒS d S t | jtƒrªt| ƒS d S rH   )rI   r   r   rJ   r   Úfuncr   rM   r   r   Úret_typer   Útype_id_for_fullnamer:   r   Úimplr   rK   r   rL   )rQ   rS   rO   r>   r>   r?   Útype_id_for_callee  sH   ÿ
ÿ
ÿþý


þrV   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   3  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?   rT   @  s   
rT   Ú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_constructorN  s   
ür_   N)r1   r   r2   r   r3   r4   )r7   rA   r2   r   r3   r4   )rD   r   rE   r   rF   r   r3   rG   )rQ   r   r3   rG   )rJ   rW   r3   rG   )r:   rX   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^   r0   r@   rC   rP   rV   rL   rT   r_   r>   r>   r>   r?   Ú<module>   sL  þþÿþøþïþþæ!þß*þÖ3þÍ<þÄEþ»Nþ²Wþþ©
^¢
_¡`þ hþ˜pþþwþ‰ þþþþþþþþ ë 




,
