Ë
    V.jE'  ã                  ó  — d 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  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«        e'd «      ‚# e'$ r Y nw xY w G d!„ d"e«      Z(d/d#„Z)d0d$„Z*d1d%„Z+d1d&„Z,d1d'„Z-d1d(„Z.d1d)„Z/d1d*„Z0d2d+„Z1d3d,„Z2	 	 	 	 	 	 d4d-„Z3y.)5z"
Mypy plugin for SQLAlchemy ORM.

é    )Úannotations)ÚCallable)ÚList)ÚOptional)ÚTuple)ÚType)ÚUnion)Únodes)Úcalculate_mro)ÚMroError)ÚBlock)ÚClassDef)ÚGDEF)ÚMypyFile)ÚNameExpr)ÚSymbolTable)ÚSymbolTableNode)ÚTypeInfo)ÚAttributeContext)ÚClassDefContext)ÚDynamicClassDefContext)ÚPlugin)ÚSemanticAnalyzerPluginInterface)Úget_proper_type)ÚInstanceé   )Ú
decl_class)Únames)Úutilzsqlalchemy-stubszÙThe SQLAlchemy mypy plugin in SQLAlchemy 2.0 does not work with sqlalchemy-stubs or sqlalchemy2-stubs installed, as well as with any other third party SQLAlchemy stubs.  Please uninstall all SQLAlchemy stubs packages.c                  ó|   — e Zd Z	 	 	 	 d	d„Z	 	 	 	 d
d„Z	 	 	 	 d
d„Z	 	 	 	 d
d„Z	 	 	 	 d
d„Z	 	 	 	 dd„Z	 	 	 	 dd„Z	y)ÚSQLAlchemyPluginc                óZ   — t        j                  |«      t         j                  u rt        S y ©N)r   Útype_id_for_fullnameÚDECLARATIVE_BASEÚ_dynamic_class_hook©ÚselfÚfullnames     ú\C:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\sqlalchemy/ext/mypy/plugin.pyÚget_dynamic_class_hookz'SQLAlchemyPlugin.get_dynamic_class_hook<   s&   € ô ×%Ñ% hÓ/´5×3IÑ3IÑIÜ&Ð&Øó    c                ó   — t         S r#   )Ú_fill_in_decoratorsr'   s     r*   Úget_customize_class_mro_hookz-SQLAlchemyPlugin.get_customize_class_mro_hookC   s
   € ô #Ð"r,   c                ó0  — | j                  |«      }|�ƒ|j                  �wt        j                  |j                  «      }|t        j                  u rt
        S |t        j                  t        j                  fv rt        S |t        j                  u rt        S y r#   )Úlookup_fully_qualifiedÚnoder   Útype_id_for_named_nodeÚMAPPED_DECORATORÚ_cls_decorator_hookÚAS_DECLARATIVEÚAS_DECLARATIVE_BASEÚ_base_cls_decorator_hookÚDECLARATIVE_MIXINÚ_declarative_mixin_hook)r(   r)   ÚsymÚtype_ids       r*   Úget_class_decorator_hookz)SQLAlchemyPlugin.get_class_decorator_hookH   sˆ   € ð ×)Ñ)¨(Ó3ˆàˆ?˜sŸx™xÐ3Ü×2Ñ2°3·8±8Ó<ˆGØœ%×0Ñ0Ñ0Ü*Ð*ØÜ×$Ñ$Ü×)Ñ)ðñ ô 0Ð/ØœE×3Ñ3Ñ3Ü.Ð.àr,   c                óZ   — t        j                  |«      t         j                  u rt        S y r#   )r   r$   ÚDECLARATIVE_METAÚ_metaclass_cls_hookr'   s     r*   Úget_metaclass_hookz#SQLAlchemyPlugin.get_metaclass_hook[   s(   € ô ×%Ñ% hÓ/´5×3IÑ3IÑIô 'Ð&àr,   c                ó¨   — | j                  |«      }|r?t        |j                  t        «      r%t	        j
                  |j                  «      rt        S y r#   )r1   Ú
isinstancer2   r   r   Úhas_declarative_baseÚ_base_cls_hook)r(   r)   r;   s      r*   Úget_base_class_hookz$SQLAlchemyPlugin.get_base_class_hooke   sB   € ð ×)Ñ)¨(Ó3ˆñ Ü˜3Ÿ8™8¤XÔ.Ü×)Ñ)¨#¯(©(Ô3ä!Ð!àr,   c                ó2   — |j                  d«      rt        S y )Nz-sqlalchemy.orm.attributes.QueryableAttribute.)Ú
startswithÚ_queryable_getattr_hookr'   s     r*   Úget_attribute_hookz#SQLAlchemyPlugin.get_attribute_hooks   s    € ð ×ÑØ;ô
ô +Ð*àr,   c                ó
   — g d¢S )N))é
   úsqlalchemy.orméÿÿÿÿ)rL   zsqlalchemy.orm.attributesrN   )rL   zsqlalchemy.orm.decl_apirN   © )r(   Úfiles     r*   Úget_additional_depsz$SQLAlchemyPlugin.get_additional_deps}   s   € ò
ð 	
r,   N)r)   ÚstrÚreturnz2Optional[Callable[[DynamicClassDefContext], None]])r)   rR   rS   z+Optional[Callable[[ClassDefContext], None]])r)   rR   rS   z,Optional[Callable[[AttributeContext], Type]])rP   r   rS   zList[Tuple[int, str, int]])
Ú__name__Ú
__module__Ú__qualname__r+   r/   r=   rA   rF   rJ   rQ   rO   r,   r*   r!   r!   ;   s•   „ ðØðà	;óð#Øð#à	4ó#ð
Øðà	4óð&Øðà	4óðØðà	4óðØðà	5óð
Øð
à	#ô
r,   r!   c                ó   — t         S r#   )r!   )Úversions    r*   ÚpluginrY   ˆ   s   € ÜÐr,   c                ó’  — t        | «       t        | j                  t        g «      «      }| j                  j                  | j                  «      |_        t        t        «       || j                  j                  «      }||_
        t        | j                  |«       t        j                  | j                  dt        f¬«      }|�Œt!        |j"                  t        «      rrt        j$                  |j"                  «       t'        j(                  |j"                  j*                  | j                  d¬«       t-        |j"                  g «      g|_        n1| j                  j1                  t2        j4                  «      }|g|_        	 t7        |«       | j                  j?                  | j                  tA        tB        |«      «       t        j$                  |«       y# t8        $ rf t        j:                  | j                  d| j                  «       | j                  j1                  t2        j4                  «      }|g|_        d|_        Y Œ¸w xY w)zZGenerate a declarative Base class when the declarative_base() function
    is encountered.Úcls)Ú
expr_typesNT©Úis_mixin_scanz.Not able to calculate MRO for declarative base)"Ú_add_globalsr   Únamer   ÚapiÚqualified_namer)   r   r   Ú
cur_mod_idÚinfoÚ_set_declarative_metaclassr   Úget_callexpr_kwargÚcallr   rC   r2   Úset_is_baser   Ú,scan_declarative_assignments_and_apply_typesÚdefnr   ÚbasesÚ
named_typer   ÚNAMED_TYPE_BUILTINS_OBJECTr   r   ÚfailÚfallback_to_anyÚadd_symbol_table_noder   r   )Úctxr[   rd   Úcls_argÚobjs        r*   r&   r&   Œ   s›  € ô �Ôä
�3—8‘8œU 2›YÓ
'€CØ—7‘7×)Ñ)¨#¯(©(Ó3€C„Lä”K“M 3¨¯©×(:Ñ(:Ó;€DØ€C„HÜ˜sŸw™w¨Ô,ä×%Ñ% c§h¡h°Ä8À+ÔN€GØÐœz¨'¯,©,¼ÔAÜ×Ñ˜Ÿ™Ô&Ü×?Ñ?Ø�L‰L×Ñ˜sŸw™w°dõ	
ô ˜wŸ|™|¨RÓ0Ð1ˆ�
à�g‰g× Ñ ¤×!AÑ!AÓBˆà�UˆŒ
ð$Ü�dÔð ‡G�G×!Ñ! #§(¡(¬O¼DÀ$Ó,GÔHÜ×Ñ�TÕøô ò $Ü�	‰	Ø�G‰GÐEÀsÇxÁxô	
ð �g‰g× Ñ ¤×!AÑ!AÓBˆØ�UˆŒ
Ø#ˆÖð$ús   ÆG ÇA,IÉIc                ó.  — | j                   j                  D �]{  }t        |t        j                  «      rJt        |j
                  t        j                  «      r&|j
                  j                  dk(  r|j
                  }n-t        |t        j                  «      r|j                  dk(  r|}nŒ•t        |j                  t        «      r3| j                  j                  |j                  j                  |d¬«      }nŒã|sŒæ|j                  sŒót        |j                  «      }t        |t        «      r,|j                  j                   › d|j                  › �|_        �ŒDt#        j$                  | j                  d|j                  z  |j                  «       �Œ~ y )NÚas_declarative_baseÚmappedT)Úsuppress_errorsÚ.zžClass decorator called %s(), but we can't tell if it's from an ORM registry.  Please annotate the registry assignment, e.g. my_registry: registry = registry())r[   Ú
decoratorsrC   r
   ÚCallExprÚcalleeÚ
MemberExprr`   Úexprr   ra   Úlookup_qualifiedr2   r   Útyper   r)   r   rn   )rq   Ú	decoratorÚtargetr;   Úsym_types        r*   r.   r.   ³   s3  € Ø—W‘W×'Õ'ˆ	ô �y¤%§.¡.Ô1Ü˜9×+Ñ+¬U×-=Ñ-=Ô>Ø× Ñ ×%Ñ%Ð)>Ò>à×%Ñ%‰Fä�y¤%×"2Ñ"2Ô3Ø—‘ (Ò*à‰Fàä�f—k‘k¤8Ô,Ø—'‘'×*Ñ*Ø—‘× Ñ  &¸$ð +ó ‰Cð â�3—8“8Ü& s§x¡xÓ0ˆHÜ˜(¤HÔ-Ø%-§]¡]×%;Ñ%;Ð$<¸A¸f¿k¹k¸]Ð"K�–ô —	‘	Ø—G‘Gð9ð <B¿;¹;ñGð —H‘HöñW (r,   c                ó&  — t        | «       t        | j                  t        j                  «      sJ ‚| j                  j
                  }t        |t        j                  «      r$t        |j                  t        j                  «      sJ ‚t        |j                  j                  «      }t        |t        «      r/t        j                  |j                  «      t        j                  u sJ ‚t        j                   | j"                  | j$                  «       y r#   )r_   rC   Úreasonr
   r|   r}   ÚRefExprr2   ÚVarr   r   r   r   r3   ÚREGISTRYr   ri   r[   ra   )rq   r}   Ú	node_types      r*   r5   r5   é   s´   € Ü�ÔÜ�c—j‘j¤%×"2Ñ"2Ô3Ð3Ð3Ø�:‰:�?‰?€Dä�dœEŸM™MÔ*¬z¸$¿)¹)ÄUÇYÁYÔ/OÐOÐOä §	¡	§¡Ó/€Iô 	�9œhÔ'Ü×(Ñ(¨¯©Ó8¼E¿N¹NÑJðð	Kô ×;Ñ;¸C¿G¹GÀSÇWÁWÕMr,   c                óô   — t        | «       | j                  }t        | j                  |«       t	        j
                  | j                  j                  «       t        j                  || j                  d¬«       y ©NTr]   )	r_   r[   re   ra   r   rh   rd   r   ri   )rq   r[   s     r*   r8   r8   ú   sP   € Ü�Ôà
�'‰'€Cä˜sŸw™w¨Ô,ä×Ñ�S—W‘W—\‘\Ô"Ü×;Ñ;ØˆS�W‰W Dör,   c                óÄ   — t        | «       t        j                  | j                  j                  «       t        j                  | j                  | j                  d¬«       y rŠ   )r_   r   rh   r[   rd   r   ri   ra   ©rq   s    r*   r:   r:     s=   € Ü�ÔÜ×Ñ�S—W‘W—\‘\Ô"Ü×;Ñ;Ø�‰�—‘¨ör,   c                óV   — t        j                  | j                  j                  «       y r#   )r   rh   r[   rd   rŒ   s    r*   r@   r@     s   € Ü×Ñ�S—W‘W—\‘\Õ"r,   c                ón   — t        | «       t        j                  | j                  | j                  «       y r#   )r_   r   ri   r[   ra   rŒ   s    r*   rE   rE     s"   € Ü�ÔÜ×;Ñ;¸C¿G¹GÀSÇWÁWÕMr,   c                ó   — | j                   S r#   )Údefault_attr_typerŒ   s    r*   rI   rI     s   € ð × Ñ Ð r,   c                ó4   — t        j                  | ddd«       y)z`Add __sa_DeclarativeMeta and __sa_Mapped symbol to the global space
    for all class defs

    rM   ÚMappedÚ__sa_MappedN)r   Ú
add_globalrŒ   s    r*   r_   r_     s   € ô 	‡O�O�CÐ)¨8°]ÕCr,   c                ó¾   — |j                   }| j                  d«      }|�t        |j                  t        «      sJ ‚t        |j                  g «      x|_        |_        y )Nz'sqlalchemy.orm.decl_api.DeclarativeMeta)rd   Úlookup_fully_qualified_or_nonerC   r2   r   r   Údeclared_metaclassÚmetaclass_type)ra   Ú
target_clsrd   r;   s       r*   re   re   '  sU   € ð �?‰?€DØ
×
,Ñ
,Ø1ó€Cð ˆ?œz¨#¯(©(´HÔ=Ð=Ð=Ü4<¸S¿X¹XÀrÓ4JÐJ€DÔ˜dÕ1r,   N)rX   rR   rS   zTypingType[SQLAlchemyPlugin])rq   r   rS   ÚNone)rq   r   rS   rš   )rq   r   rS   r   )rq   z.Union[ClassDefContext, DynamicClassDefContext]rS   rš   )ra   r   r™   r   rS   rš   )4Ú__doc__Ú
__future__r   Útypingr   r   r   r   r   Ú
TypingTyper	   Úmypyr
   Úmypy.mror   r   Ú
mypy.nodesr   r   r   r   r   r   r   r   Úmypy.pluginr   r   r   r   r   Ú
mypy.typesr   r   Ú r   r   r   Ú
__import__ÚImportErrorr!   rY   r&   r.   r5   r8   r:   r@   rE   rI   r_   re   rO   r,   r*   Ú<module>r§      s   ðñõ #å Ý Ý Ý Ý %Ý å Ý "Ý Ý Ý Ý Ý Ý Ý "Ý &Ý Ý (Ý 'Ý .Ý Ý 7Ý &Ý Ý å Ý Ý ðÙÐ!Ô"ñ ð	óð øð ò 	Ùð	úôJ
�vô J
óZó$óN3ólNó"
óó#óNó
!óDðKØ	(ðKØ6>ðKà	ôKs   Â2C ÃC
Ã	C
