o
    ãRc÷  ã                	   @   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 e d¡Zeed< e d¡Zeed< e d¡Zeed< e d¡Zeed< e d¡Z eed< e d¡Z!eed< e d¡Z"eed< e d¡Z#eed< e d¡Z$eed< e d¡Zeed< e d ¡Z%eed < e d!¡Z&eed!< e d"¡Z'eed"< e d#¡Z(eed#< e d$¡Z)eed$< e d%¡Z*eed%< e d&¡Z+eed&< e d'¡Z,eed'< d(Z-d)Z.d*Z/d+Z0i d,ed-d.hf“d/ed0d1hf“d2ed3d4hf“d5ed6d7hf“d8e%d9d:hf“d;e&d<d=hf“d>e(d?d@hf“dAe dBhf“dCe!d+hf“dDe"h dE£f“dFe#h dG£f“dHe$dIdJhf“dKe)h dL£f“dMe*dNdOhf“dPe'dQdRhf“dSe+dTdUhf“dVe,dWhf“Z1ee2eeee2 f f edX< dYedZed[e3fd\d]„Z4d^ee dZed[e3fd_d`„Z5daedbedced[ee fddde„Z6dfe	d[ee fdgdh„Z7dieeeef d[ee fdjdk„Z8dle2d[ee fdmdn„Z9doS )pé    )ÚDict)ÚList)ÚOptional)ÚSet)ÚTuple)ÚUnion)ÚClassDef)Ú
Expression)ÚFuncDef)Ú
MemberExpr)ÚNameExpr)Ú
SymbolNode)Ú	TypeAlias)ÚTypeInfo)ÚSemanticAnalyzerPluginInterface)ÚCallableType)Úget_proper_type)ÚInstance)ÚUnboundTypeé   )ÚutilÚCOLUMNÚ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.attributes.MappedÚColumnzsqlalchemy.sql.schema.Columnzsqlalchemy.sql.ColumnZRelationshipPropertyz1sqlalchemy.orm.relationships.RelationshipPropertyz#sqlalchemy.orm.RelationshipPropertyÚregistryz sqlalchemy.orm.decl_api.registryzsqlalchemy.orm.registryZColumnPropertyz(sqlalchemy.orm.properties.ColumnPropertyzsqlalchemy.orm.ColumnPropertyZSynonymPropertyz/sqlalchemy.orm.descriptor_props.SynonymPropertyzsqlalchemy.orm.SynonymPropertyZCompositePropertyz1sqlalchemy.orm.descriptor_props.CompositePropertyz sqlalchemy.orm.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.declarative_basez(sqlalchemy.orm.decl_api.declarative_baseZDeclarativeMeta>   z*sqlalchemy.ext.declarative.DeclarativeMetaz'sqlalchemy.orm.decl_api.DeclarativeMetazsqlalchemy.orm.DeclarativeMetaZmappedz'sqlalchemy.orm.decl_api.registry.mappedzsqlalchemy.orm.registry.mappedZas_declarative>   z)sqlalchemy.ext.declarative.as_declarativezsqlalchemy.orm.as_declarativez&sqlalchemy.orm.decl_api.as_declarativeZas_declarative_basez4sqlalchemy.orm.decl_api.registry.as_declarative_basez+sqlalchemy.orm.registry.as_declarative_baseZdeclared_attrz%sqlalchemy.orm.decl_api.declared_attrzsqlalchemy.orm.declared_attrZdeclarative_mixinz)sqlalchemy.orm.decl_api.declarative_mixinz sqlalchemy.orm.declarative_mixinZquery_expressionzsqlalchemy.orm.query_expressionÚ_lookupÚinfoÚtype_idÚreturnc                 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+   r,   ÚmrÚcheck_type_idÚ	fullnames© r7   ú;D:\Flask\env\Lib\site-packages\sqlalchemy/ext/mypy/names.pyÚhas_base_type_id§   s   
ÿ
r9   r0   c                 C   sB   | D ]}t  |jd¡\}}||kr nqdS |d u rdS |j|v S r.   ©r*   r1   r2   r3   )r0   r,   r4   r5   r6   r7   r7   r8   Ú
mro_has_idµ   s   ÿ
r;   Útype_ÚclsÚapic                 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_qualifiedr2   Ú
isinstanceÚnoder   r   Útargetr   Útype_id_for_named_nodeÚtyper   )r<   r=   r>   ÚsymÚtarget_typer7   r7   r8   Útype_id_for_unbound_typeÃ   s   

ý
rG   Úcalleec                 C   s¢   t | ttfƒrOt | 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ƒrEt| jjƒ}t |t	ƒrCt
|jjƒS d S t | jtƒrOt| ƒS d S r?   )r@   r   r   rA   r
   rD   r   r   Úret_typer   Útype_id_for_fullnamer3   r   rB   r   rC   )rH   rI   rF   r7   r7   r8   Útype_id_for_calleeÒ   s   

þrK   rA   c                 C   s8   t  | jd¡\}}|d u s|d u rd S | j|v r|S d S )Nr/   r:   )rA   r,   r6   r7   r7   r8   rC   å   s   
rC   r3   c                 C   sF   |   d¡}|d }t |d¡\}}|d u s|d u rd S | |v r!|S d S )NÚ.éÿÿÿÿr/   )Úsplitr*   r1   )r3   ÚtokensZ	immediater,   r6   r7   r7   r8   rJ   ò   s   
rJ   N):Útypingr   r   r   r   r   r   Z
mypy.nodesr   r	   r
   r   r   r   r   r   Zmypy.pluginr   Z
mypy.typesr   r   r   r   Ú r   Úsymbolr   ÚintÚ__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_LISTZNAMED_TYPE_SQLA_MAPPEDr*   ÚstrÚboolr9   r;   rG   rK   rC   rJ   r7   r7   r7   r8   Ú<module>   sD  þþÿþþøþþñþþêþþã$þþÜ+þþÕ
2Î
3Í4þÌ<þÄDþþ¼KþµSþþ­Zþþ¦aþþŸhþ ˜oÿÿÿ
þÿ
þ