§
    eŠtj&  ã                  ó  — 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)d?d+„Z*d@d-„Z+d@d.„Z,d@d/„Z-d@d0„Z.d@d1„Z/d@d2„Z0dAd5„Z1dBd7„Z2dCd<„Z3d=S )Dz"
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                  óF   — 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	dS )ÚSQLAlchemyPluginÚfullnameÚstrÚreturnú2Optional[Callable[[DynamicClassDefContext], None]]c                óT   — t          j        |¦  «        t           j        u rt          S d S ©N)r   Útype_id_for_fullnameÚDECLARATIVE_BASEÚ_dynamic_class_hook©Úselfr"   s     úX/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sqlalchemy/ext/mypy/plugin.pyÚget_dynamic_class_hookz'SQLAlchemyPlugin.get_dynamic_class_hook=   s(   € õ Ô% hÑ/Ô/µ5Ô3IÐIÐIÝ&Ð&Øˆtó    ú+Optional[Callable[[ClassDefContext], None]]c                ó   — t           S r'   )Ú_fill_in_decoratorsr+   s     r-   Úget_customize_class_mro_hookz-SQLAlchemyPlugin.get_customize_class_mro_hookD   s
   € õ #Ð"r/   c                ó
  — |                       |¦  «        }|�k|j        �dt          j        |j        ¦  «        }|t          j        u rt
          S |t          j        t          j        fv rt          S |t          j	        u rt          S d S 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_hookI   sˆ   € ð ×)Ò)¨(Ñ3Ô3ˆàˆ?˜sœxÐ3ÝÔ2°3´8Ñ<Ô<ˆGØ�%Ô0Ð0Ð0Ý*Ð*ØÝÔ$ÝÔ)ðð ð õ 0Ð/Ø�EÔ3Ð3Ð3Ý.Ð.àˆtr/   c                óT   — t          j        |¦  «        t           j        u rt          S d S r'   )r   r(   ÚDECLARATIVE_METAÚ_metaclass_cls_hookr+   s     r-   Úget_metaclass_hookz#SQLAlchemyPlugin.get_metaclass_hook\   s*   € õ Ô% hÑ/Ô/µ5Ô3IÐIÐIõ 'Ð&àˆtr/   c                ó¨   — |                       |¦  «        }|r:t          |j        t          ¦  «        r t	          j        |j        ¦  «        rt          S d S r'   )r5   Ú
isinstancer6   r   r   Úhas_declarative_baseÚ_base_cls_hook)r,   r"   r?   s      r-   Úget_base_class_hookz$SQLAlchemyPlugin.get_base_class_hookf   sY   € ð ×)Ò)¨(Ñ3Ô3ˆð ð	"å˜3œ8¥XÑ.Ô.ð	"õ Ô)¨#¬(Ñ3Ô3ð	"õ
 "Ð!àˆtr/   ú,Optional[Callable[[AttributeContext], Type]]c                ó>   — |                      d¦  «        rt          S d S )Nz-sqlalchemy.orm.attributes.QueryableAttribute.)Ú
startswithÚ_queryable_getattr_hookr+   s     r-   Úget_attribute_hookz#SQLAlchemyPlugin.get_attribute_hookt   s,   € ð ×ÒØ;ñ
ô 
ð 	+õ +Ð*àˆtr/   Úfiler   úList[Tuple[int, str, int]]c                ó
   — g d¢S )N))é
   úsqlalchemy.orméÿÿÿÿ)rS   zsqlalchemy.orm.attributesrU   )rS   zsqlalchemy.orm.decl_apirU   © )r,   rP   s     r-   Úget_additional_depsz$SQLAlchemyPlugin.get_additional_deps~   s   € ð
ð 
ð 
ð 	
r/   N)r"   r#   r$   r%   )r"   r#   r$   r0   )r"   r#   r$   rK   )rP   r   r$   rQ   )
Ú__name__Ú
__module__Ú__qualname__r.   r3   rA   rE   rJ   rO   rW   rV   r/   r-   r!   r!   <   s    € € € € € ðð ð ð ð#ð #ð #ð #ð
ð ð ð ð&ð ð ð ðð ð ð ðð ð ð ð
ð 
ð 
ð 
ð 
ð 
r/   r!   Úversionr#   r$   úTypingType[SQLAlchemyPlugin]c                ó   — t           S r'   )r!   )r[   s    r-   Úpluginr^   ‰   s   € ÝÐr/   Úctxr   ÚNonec                ó6  — t          | ¦  «         t          | j        t          g ¦  «        ¦  «        }| j                             | j        ¦  «        |_        t          t          ¦   «         || j        j	        ¦  «        }||_
        t          | j        |¦  «         t          j        | j        dt          f¬¦  «        }|�ut!          |j        t          ¦  «        r[t          j        |j        ¦  «         t'          j        |j        j        | j        d¬¦  «         t-          |j        g ¦  «        g|_        n,| j                             t2          j        ¦  «        }|g|_        	 t7          |¦  «         nc# t8          $ rV t          j        | j        d| j        ¦  «         | j                             t2          j        ¦  «        }|g|_        d|_        Y nw xY w| j                             | j        tA          tB          |¦  «        ¦  «         t          j        |¦  «         dS )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   rG   r6   Ú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   )r_   rb   rk   Úcls_argÚobjs        r-   r*   r*   �   sÜ  € õ �ÑÔÐå
�3”8�U 2™YœYÑ
'Ô
'€CØ”7×)Ò)¨#¬(Ñ3Ô3€C„Lå•K‘M”M 3¨¬Ô(:Ñ;Ô;€DØ€C„HÝ˜sœw¨Ñ,Ô,Ð,åÔ% c¤h°Å8À+ÐNÑNÔN€GØÐ�z¨'¬,½ÑAÔAÐÝÔ˜œÑ&Ô&Ð&ÝÔ?ØŒLÔ˜sœw°dð	
ñ 	
ô 	
ð 	
õ ˜wœ|¨RÑ0Ô0Ð1ˆŒ
ˆ
àŒg× Ò ¥Ô!AÑBÔBˆà�UˆŒ
ð$Ý�dÑÔÐÐøÝð $ð $ð $ÝŒ	ØŒGÐEÀsÄxñ	
ô 	
ð 	
ð Œg× Ò ¥Ô!AÑBÔBˆØ�UˆŒ
Ø#ˆÔÐÐð$øøøð „G×!Ò! #¤(­O½DÀ$Ñ,GÔ,GÑHÔHÐHÝÔ�TÑÔÐÐÐs   ÅE/ Å/AGÇGr   c                ó�  — | j         j        D �]7}t          |t          j        ¦  «        r7t          |j        t          j        ¦  «        r|j        j        dk    r|j        }n)t          |t          j        ¦  «        r|j        dk    r|}nŒ}t          |j        t          ¦  «        r(| j
                             |j        j        |d¬¦  «        }nŒÀ|ru|j        rnt          |j        ¦  «        }t          |t          ¦  «        r|j        j        › d|j        › �|_        �Œt#          j        | j
        d|j        z  |j        ¦  «         �Œ9d S )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())rb   Ú
decoratorsrG   r
   ÚCallExprÚcalleeÚ
MemberExprrg   Úexprr   rh   Úlookup_qualifiedr6   r   Útyper   r"   r   ru   )r_   Ú	decoratorÚtargetr?   Úsym_types        r-   r2   r2   ´   sb  € Ø”WÔ'ð 2ñ 2ˆ	õ �y¥%¤.Ñ1Ô1ð	å˜9Ô+­UÔ-=Ñ>Ô>ð	ð Ô Ô%Ð)>Ò>Ð>àÔ%ˆFˆFå�y¥%Ô"2Ñ3Ô3ð	à” (Ò*Ð*àˆFˆFàå�f”k¥8Ñ,Ô,ð 	Ø”'×*Ò*Ø”Ô  &¸$ð +ñ ô ˆCˆCð àð 	�3”8ð 	Ý& s¤xÑ0Ô0ˆHÝ˜(¥HÑ-Ô-ð Ø%-¤]Ô%;Ð"KÐ"K¸f¼kÐ"KÐ"K�”‘õ ”	Ø”Gð9ð <B¼;ñGð ”Hñô ð ùðW2ð 2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        ¦  «         d S r'   )rf   rG   Úreasonr
   r‚   rƒ   ÚRefExprr6   ÚVarr   r…   r   r   r7   ÚREGISTRYr   rp   rb   rh   )r_   rƒ   Ú	node_types      r-   r9   r9   ê   sÆ   € Ý�ÑÔÐÝ�c”j¥%Ô"2Ñ3Ô3Ð3Ð3Ð3ØŒ:Œ?€Då�d�EœMÑ*Ô*ÐO­z¸$¼)ÅUÄYÑ/OÔ/OÐOÐOÐOå ¤	¤Ñ/Ô/€Iõ 	�9�hÑ'Ô'ðåÔ(¨¬Ñ8Ô8½E¼NÐJÐJÐJð	Kõ Ô;¸C¼GÀSÄWÑMÔMÐMÐMÐMr/   c                óÐ   — t          | ¦  «         | j        }t          | j        |¦  «         t	          j        | j        j        ¦  «         t          j        || j        d¬¦  «         d S ©NTrd   )	rf   rb   rl   rh   r   ro   rk   r   rp   )r_   rb   s     r-   r<   r<   û   sk   € Ý�ÑÔÐà
Œ'€Cå˜sœw¨Ñ,Ô,Ð,åÔ�S”W”\Ñ"Ô"Ð"ÝÔ;ØˆSŒW Dðñ ô ð ð ð r/   c                ó¢   — t          | ¦  «         t          j        | j        j        ¦  «         t          j        | j        | j        d¬¦  «         d S r�   )rf   r   ro   rb   rk   r   rp   rh   ©r_   s    r-   r>   r>     sT   € Ý�ÑÔÐÝÔ�S”W”\Ñ"Ô"Ð"ÝÔ;ØŒ�”¨ðñ ô ð ð ð r/   c                óB   — t          j        | j        j        ¦  «         d S r'   )r   ro   rb   rk   r’   s    r-   rD   rD     s   € ÝÔ�S”W”\Ñ"Ô"Ð"Ð"Ð"r/   c                ób   — t          | ¦  «         t          j        | j        | j        ¦  «         d S r'   )rf   r   rp   rb   rh   r’   s    r-   rI   rI     s-   € Ý�ÑÔÐÝÔ;¸C¼GÀSÄWÑMÔMÐMÐMÐMr/   r   r   c                ó   — | j         S r'   )Údefault_attr_typer’   s    r-   rN   rN     s   € ð Ô Ð r/   ú.Union[ClassDefContext, DynamicClassDefContext]c                ó4   — t          j        | ddd¦  «         dS )z`Add __sa_DeclarativeMeta and __sa_Mapped symbol to the global space
    for all class defs

    rT   ÚMappedÚ__sa_MappedN)r   Ú
add_globalr’   s    r-   rf   rf     s!   € õ 	„O�CÐ)¨8°]ÑCÔCÐCÐCÐCr/   rh   r   Ú
target_clsr   c                ó¼   — |j         }|                      d¦  «        }|�t          |j        t          ¦  «        sJ ‚t          |j        g ¦  «        x|_        |_        d S )Nz'sqlalchemy.orm.decl_api.DeclarativeMeta)rk   Úlookup_fully_qualified_or_nonerG   r6   r   r   Údeclared_metaclassÚmetaclass_type)rh   rœ   rk   r?   s       r-   rl   rl   (  sa   € ð Œ?€DØ
×
,Ò
,Ø1ñô €Cð ˆ?�z¨#¬(µHÑ=Ô=ˆ?ˆ?Ð=Ý4<¸S¼XÀrÑ4JÔ4JÐJ€DÔ˜dÔ1Ð1Ð1r/   N)r[   r#   r$   r\   )r_   r   r$   r`   )r_   r   r$   r`   )r_   r   r$   r   )r_   r—   r$   r`   )rh   r   rœ   r   r$   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!   r^   r*   r2   r9   r<   r>   rD   rI   rN   rf   rl   rV   r/   r-   ú<module>r­      s›  ððð ð
 #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø &Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ðØ€JÐ!Ñ"Ô"Ð"ð ˆ+ð	ñô ð øð ð 	ð 	ð 	Ø€Dð	øøøðJ
ð J
ð J
ð J
ð J
�vñ J
ô J
ð J
ðZð ð ð ð$ð $ð $ð $ðN3ð 3ð 3ð 3ðlNð Nð Nð Nð"
ð 
ð 
ð 
ðð ð ð ð#ð #ð #ð #ðNð Nð Nð Nð
!ð !ð !ð !ðDð Dð Dð DðKð Kð Kð Kð Kð Ks   Â2C ÃCÃC