o
    Šågï(  ã                   @  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]< dƒdcdd„Z8d„dgdh„Z9d…dpdq„Z:d†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_PROPERTYÚ	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>   úsqlalchemy.orm.Relationshipú#sqlalchemy.orm.RelationshipPropertyú)sqlalchemy.orm.relationships.Relationshipú1sqlalchemy.orm.relationships.RelationshipPropertyú2sqlalchemy.orm.relationships._RelationshipDeclaredÚColumnzsqlalchemy.sql.schema.Columnzsqlalchemy.sql.ColumnÚRelationshipÚRelationshipPropertyÚ_RelationshipDeclaredÚregistryz sqlalchemy.orm.decl_api.registryzsqlalchemy.orm.registryÚColumnProperty>   úsqlalchemy.orm.ColumnPropertyú"sqlalchemy.orm.MappedSQLExpressionú(sqlalchemy.orm.properties.ColumnPropertyú-sqlalchemy.orm.properties.MappedSQLExpressionÚMappedSQLExpressionÚSynonym>   úsqlalchemy.orm.Synonymúsqlalchemy.orm.SynonymPropertyú'sqlalchemy.orm.descriptor_props.Synonymú/sqlalchemy.orm.descriptor_props.SynonymPropertyÚSynonymPropertyÚ	Composite>   úsqlalchemy.orm.Compositeú sqlalchemy.orm.CompositePropertyú)sqlalchemy.orm.descriptor_props.Compositeú1sqlalchemy.orm.descriptor_props.CompositePropertyÚCompositePropertyÚMapperPropertyz(sqlalchemy.orm.interfaces.MapperPropertyzsqlalchemy.orm.MapperPropertyÚ
TypeEnginez"sqlalchemy.sql.type_api.TypeEngineÚMappedÚdeclarative_base>   úsqlalchemy.orm.declarative_baseú(sqlalchemy.orm.decl_api.declarative_baseú+sqlalchemy.ext.declarative.declarative_baseÚDeclarativeMeta>   úsqlalchemy.orm.DeclarativeMetaú'sqlalchemy.orm.decl_api.DeclarativeMetaú*sqlalchemy.ext.declarative.DeclarativeMetaÚmappedz'sqlalchemy.orm.decl_api.registry.mappedzsqlalchemy.orm.registry.mapped>   úsqlalchemy.orm.as_declarativeú&sqlalchemy.orm.decl_api.as_declarativeú)sqlalchemy.ext.declarative.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)Úas_declarativeÚas_declarative_baseÚdeclared_attrÚdeclarative_mixinÚ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)Úmror_   ÚgetÚnameÚfullname)r`   ra   ÚmrÚcheck_type_idÚ	fullnames© rm   úU/var/www/html/flaskapp/venv/lib/python3.10/site-packages/sqlalchemy/ext/mypy/names.pyÚhas_base_type_idÔ   s   
ÿ
ro   rf   úList[TypeInfo]c                 C  sB   | D ]}t  |jd¡\}}||kr nqdS |d u rdS |j|v S rd   ©r_   rg   rh   ri   )rf   ra   rj   rk   rl   rm   rm   rn   Ú
mro_has_idâ   s   ÿ
rr   Ú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)Úlookup_qualifiedrh   Ú
isinstanceÚnoder   r   Útargetr   Útype_id_for_named_nodeÚtyper   )rs   rt   ru   ÚsymÚtarget_typerm   rm   rn   Útype_id_for_unbound_typeð   s   

ý
r€   Ú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 rw   )ry   r   r   rz   r   Úfuncr   r}   r   r   Úret_typer   Útype_id_for_fullnameri   r   Úimplr   r{   r   r|   )r�   rƒ   r   rm   rm   rn   Útype_id_for_calleeÿ   sH   ÿ
ÿ
ÿþý


þr†   rz   ú'Union[NameExpr, MemberExpr, SymbolNode]c                 C  s8   t  | jd¡\}}|d u s|d u rd S | j|v r|S d S )Nre   rq   )rz   ra   rl   rm   rm   rn   r|   +  s   
r|   ri   Ústrc                 C  sF   |   d¡}|d }t |d¡\}}|d u s|d u rd S | |v r!|S d S )NÚ.éÿÿÿÿre   )Úsplitr_   rg   )ri   ÚtokensÚ	immediatera   rl   rm   rm   rn   r„   8  s   
r„   Úexprr
   c                 C  s,   t dƒ}t|_t|dƒ}t|| gtgdgƒS )NÚ__sa_MappedÚ_empty_constructorÚarg1)r   ÚNAMED_TYPE_SQLA_MAPPEDri   r   r
   r	   )rŽ   Úcolumn_descriptorÚmember_exprrm   rm   rn   Úexpr_to_mapped_constructorF  s   
ür•   N)r`   r   ra   r   rb   rc   )rf   rp   ra   r   rb   rc   )rs   r   rt   r   ru   r   rb   rv   )r�   r   rb   rv   )rz   r‡   rb   rv   )ri   rˆ   rb   rv   )rŽ   r   rb   r
   )?Ú
__future__r   Útypingr   r   r   r   r   r   Ú
mypy.nodesr	   r
   r   r   r   r   r   r   r   r   r   r   Úmypy.pluginr   Ú
mypy.typesr   r   r   r   Ú r   Úsymbolr   Ú__annotations__r   r   r    r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   ÚNAMED_TYPE_BUILTINS_OBJECTÚNAMED_TYPE_BUILTINS_STRÚNAMED_TYPE_BUILTINS_LISTr’   Ú_RelFullNamesr_   ro   rr   r€   r†   r|   r„   r•   rm   rm   rm   rn   Ú<module>   s>  þþÿø	÷
öþþõþîþå$þÜ-þÓ6þÊ?þÁHþþ¸
O±
P°Qþ¯Yþ§aþþŸiþ	þþþþþþþþ �ú 




,
