ó
    øÞ j§K  ã                  óŠ  • S SK Jr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SKJ
r
  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  SSK J!r!  SSK J"r"              S(S jr#          S)S jr$          S)S jr%            S(S  jr&          S)S! jr' S*           S+S# jjr(  S,             S-S$ jjr)          S.S% jr*        S/S& jr+        S0S' jr,g")1é    )Úannotations)ÚOptional)ÚSequence)Úmap_instance_to_supertype)ÚAssignmentStmt)ÚCallExpr)Ú
Expression)ÚFuncDef)Ú
LambdaExpr)Ú
MemberExpr)ÚNameExpr)ÚRefExpr)ÚStrExpr)ÚTypeInfo)ÚVar)ÚSemanticAnalyzerPluginInterface)Ú
is_subtype)ÚAnyType)ÚCallableType)Úget_proper_type)ÚInstance)ÚNoneType)Ú
ProperType)Ú	TypeOfAny)Ú	UnionTypeé   )Únames)Úutilc                óÆ  • [         R                  " U5      nUc  g U[         R                  L a  [        XX#U5      nU$ U[         R                  L a  [        XX#5      nU$ U[         R                  L a  [        XX#5      nU$ U[         R                  L a  [        XX#5      nU$ U[         R                  L a  [        XU5      nU$ U[         R                  L a  [        XX#5      nU$ g ©N)r   Útype_id_for_calleeÚMAPPEDÚ_infer_type_from_mappedÚCOLUMNÚ_infer_type_from_decl_columnÚRELATIONSHIPÚ_infer_type_from_relationshipÚCOLUMN_PROPERTYÚ%_infer_type_from_decl_column_propertyÚSYNONYM_PROPERTYÚ#infer_type_from_left_hand_type_onlyÚCOMPOSITE_PROPERTYÚ(_infer_type_from_decl_composite_property)ÚapiÚstmtÚnodeÚleft_hand_explicit_typeÚinfer_from_right_sideÚtype_idÚpython_type_for_types          ÚS/var/www/html/gaurav/venv/lib/python3.13/site-packages/sqlalchemy/ext/mypy/infer.pyÚ#infer_type_from_right_hand_nameexprr6   (   s  € ô ×&Ò&Ð'<Ó=€GØ�ØØ	”E—L‘LÒ	 Ü6Ø�tÐ6Kó 
Ðð4  Ðð/ 
”E—L‘LÒ	 Ü;Ø�tó 
Ðð,  Ðð' 
”E×&Ñ&Ò	&Ü<Ø�tó 
Ðð$  Ðð 
”E×)Ñ)Ò	)ÜDØ�tó 
Ðð  Ðð 
”E×*Ñ*Ò	*ÜBØÐ.ó 
Ðð  Ðð 
”E×,Ñ,Ò	,ÜGØ�tó 
Ðð  Ðð ó    c                óN  • [        UR                  [        5      (       d   eUR                  R                  S   nSn[        U[        5      (       a7  [        UR
                  [        5      (       a  UR
                  n[        U/ 5      n[        R                  " UR                  S5      n[        R                  " UR                  S5      nSn	Ub?  U R                  U5      SL a+  Uc(  Sn	Ub!  U R                  [        R                  U/5      nGO5Ub  U R                  U5      SL Ga“  UGb�  Sn	[        U[        5      (       a  UR                  n[        U[        5      (       a;  [        UR
                  [        5      (       a  Ub  [        UR
                  U/5      nGO¦[        U[        5      (       aâ  [        UR
                  [        5      (       aÃ  UR
                  R                   b¬  Ub¨  [        UR
                  R                   ["        5      (       a  [%        UR
                  R                   R&                  5      n
[        U
["        5      (       aA  [%        U
R&                  5      n[        U[        5      (       a  [        UR                   U/5      nO¯[        R(                  " U SUR                  5        SnOŠUbR  U R                  U5      SL a>  Ub"  [        R(                  " U SUR                  5        Ub  [+        U[-        5       /5      nO5Uc2  S	n[        R(                  " XR/                  UR0                  5      U5        Uc  [3        XU5      $ UbO  U	(       a:  [        U[        5      (       d   e[        U[        5      (       d   e[5        XX55      $ [7        U UUU5      $ U$ )
ar  Infer the type of mapping from a relationship.

E.g.::

    @reg.mapped
    class MyClass:
        # ...

        addresses = relationship(Address, uselist=True)

        order: Mapped["Order"] = relationship("Order")

Will resolve in mypy as::

    @reg.mapped
    class MyClass:
        # ...

        addresses: Mapped[List[Address]]

        order: Mapped["Order"]

r   NÚuselistÚcollection_classFTz>Expected Python collection type for collection_class parameterzOSending uselist=False and collection_class at the same time does not make sensezäCan't infer scalar or collection for ORM mapped expression assigned to attribute '{}' if both 'uselist' and 'collection_class' arguments are absent from the relationship(); please specify a type annotation on the left hand side.)Ú
isinstanceÚrvaluer   Úargsr   r0   r   r   r   Úget_callexpr_kwargÚ
parse_boolÚ
named_typer   ÚNAMED_TYPE_BUILTINS_LISTÚcalleer
   Útyper   r   Úret_typeÚfailr   r   ÚformatÚnamer+   Ú3_infer_collection_type_from_left_and_inferred_rightÚ(_infer_type_from_left_and_inferred_right)r.   r/   r0   r1   Útarget_cls_argr4   Úrelated_object_typeÚuselist_argÚcollection_cls_argÚtype_is_a_collectionÚrtÚcallable_ret_typeÚmsgs                r5   r'   r'   P   sg  € ô< �d—k‘k¤8×,Ñ,Ð,Ð,Ø—[‘[×%Ñ% aÑ(€NØ15Ðä�.¤(×+Ñ+´
Ø×ÑœX÷1ñ 1ð -×1Ñ1ÐÜ'Ð(;¸RÓ@Ðô  ×)Ò)¨$¯+©+°yÓA€KÜ/3×/FÒ/FØ�‰Ð'ó0Ðð !Ðð 	ÑØ�N‰N˜;Ó'¨4Ò/ØÑ&à#ÐØÑ+Ø#&§>¡>Ü×.Ñ.Ð1EÐ0Fó$Ð ùð 	Ñ˜sŸ~™~¨kÓ:¸dÓBØ
Ò
(Ø#ÐÜÐ(¬(×3Ñ3Ø!3×!:Ñ!:ÐäÐ(¬(×3Ñ3¼
Ø×#Ñ#¤X÷9
ñ 9
ð $Ñ/ô (0Ø&×+Ñ+Ð.BÐ-Có(Ð$ùô Ð)¬8×4Ñ4ÜÐ-×2Ñ2´G×<Ñ<Ø"×'Ñ'×,Ñ,Ñ8à#Ñ/ô
 Ð0×5Ñ5×:Ñ:¼L×IÑIÜ(Ð);×)@Ñ)@×)EÑ)E×)NÑ)NÓO�Bä! "¤l×3Ñ3Ü,;¸B¿K¹KÓ,HÐ)Ü%Ð&7¼×BÑBÜ3;Ø 1× 6Ñ 6Ø!5Ð 6ó4Ð0øô
 �IŠIØð-à—‘ô	ð $(Ñ Ø	Ñ	  S§^¡^°KÓ%@ÀEÒ%IØÑ)Ü�IŠIØð&à—‘ô	ð  Ñ+Ü#,Ø%¤x£zÐ2ó$Ð øð
 #Ñ*ð9ð ô �IŠI�cŸ:™: d§i¡iÓ0°$Ô7àÑ#Ü2ØÐ.ó
ð 	
ð 
!Ñ	,ÞÜÐ5´x×@Ñ@Ð@Ð@ÜÐ2´H×=Ñ=Ð=Ð=ÜFØÐ2óð ô <ØØØ'Ø$ó	ð ð $Ð#r7   c                óX  • [        UR                  [        5      (       d   eUR                  R                  S   nSn[        U[        5      (       a8  [        UR
                  [        5      (       a  UR
                  n[        U/ 5      nOSnUc  [        XU5      $ Ub  [        XX55      $ U$ )z+Infer the type of mapping from a Composite.r   N)
r;   r<   r   r=   r   r0   r   r   r+   rI   )r.   r/   r0   r1   rJ   r4   rK   s          r5   r-   r-   ö   s·   € ô �d—k‘k¤8×,Ñ,Ð,Ð,Ø—[‘[×%Ñ% aÑ(€NØÐä�.¤(×+Ñ+´
Ø×ÑœX÷1ñ 1ð -×1Ñ1ÐÜ'Ð(;¸RÓ@Ñà#ÐàÑ#Ü2ØÐ.ó
ð 	
ð 
!Ñ	,Ü7ØÐ.ó
ð 	
ð $Ð#r7   c                óˆ   • [        UR                  [        5      (       d   e[        R                  " U5      n[        XU5      $ )zNInfer the type of mapping from a right side expression
that returns Mapped.


)r;   r<   r   r   Útype_for_calleer+   )r.   r/   r0   r1   r2   Úthe_mapped_types         r5   r#   r#     sA   € ô �d—k‘k¤8×,Ñ,Ð,Ð,ô ×*Ò*Ð+@ÓA€Oä.ØÐ*óð r7   c                óB  • [        UR                  [        5      (       d   eUR                  R                  (       an  UR                  R                  S   n[        U[        5      (       a@  [        R
                  " UR                  5      nU[        R                  L a  [        U UUUUS9$ [        UR                  [        5      (       aK  [        R
                  " UR                  R                  5      nU[        R                  L a  [        U UUU5      $ [        XU5      $ )z�Infer the type of mapping from a ColumnProperty.

This includes mappings against ``column_property()`` as well as the
``deferred()`` function.

r   )Úright_hand_expression)r;   r<   r   r=   r   r!   rB   r$   r%   ÚQUERY_EXPRESSIONr+   )r.   r/   r0   r1   Úfirst_prop_argr3   s         r5   r)   r)   6  sô   € ô �d—k‘k¤8×,Ñ,Ð,Ð,à‡{�{××ØŸ™×)Ñ)¨!Ñ,ˆä�n¤h×/Ñ/Ü×.Ò.¨~×/DÑ/DÓEˆGð œ%Ÿ,™,Ò&Ü3ØØØØ+Ø*8ñð ô �$—+‘+œx×(Ñ(Ü×*Ò*¨4¯;©;×+=Ñ+=Ó>ˆð ”e×,Ñ,Ò,Ü/ØØØØ'ó	ð ô /ØÐ*óð r7   Nc                ó�  • [        U[        5      (       d   eSnUc,  [        UR                  [        5      (       d  gUR                  nUR                  SS  HÅ  n[        U[        5      (       a;  [        UR
                  [        5      (       a  UR
                  nUR                  n  OxMS  [        U[        [        45      (       a'  [        UR                  [        5      (       a  UnSn  O6M•  [        U[        45      (       a  M­  [        U[        45      (       a  MÅ   e   Uc  g[        UR                  [        5      (       ax  [        R                  " UR                  R                  [        R                   5      (       a:  [#        XR                  W5      nUb  [%        XX85      $ ['        U[)        5       /5      $ [+        XU5      $ )a�  Infer the type of mapping from a Column.

E.g.::

    @reg.mapped
    class MyClass:
        # ...

        a = Column(Integer)

        b = Column("b", String)

        c: Mapped[int] = Column(Integer)

        d: bool = Column(Boolean)

Will resolve in MyPy as::

    @reg.mapped
    class MyClass:
        # ...

        a: Mapped[int]

        b: Mapped[str]

        c: Mapped[int]

        d: Mapped[bool]

Nr   é   © )r;   r   r<   r   r=   rB   r   r   r   r0   r   r   r   r   Ú
mro_has_idÚmroÚ
TYPEENGINEÚ#extract_python_type_from_typeenginerI   r   r   r+   )	r.   r/   r0   r1   rW   rB   Ú
column_argÚ	type_argsr4   s	            r5   r%   r%   g  s’  € ôL �dœC× Ñ Ð Ð à€FàÑ$Ü˜$Ÿ+™+¤x×0Ñ0Øà $§¡Ðà+×0Ñ0°°1Ó5ˆ
Ü�j¤(×+Ñ+Ü˜*×+Ñ+¬W×5Ñ5à#×*Ñ*�Ø2<·/±/�	Ùñ	 6ô
 ˜
¤X¬zÐ$:×;Ñ;Ü˜*Ÿ/™/¬8×4Ñ4à#�Ø�	Ùñ Ü˜
¤W J×/Ñ/áÜ˜
¤Z M×2Ñ2ñ à�5ñ1 6ð4 �~Øä�&—+‘+œx×(Ñ(¬U×-=Ò-=Ø�‰�‰œ×)Ñ)÷.ñ .ô  CØ—‘˜ió 
Ðð #Ñ.Ü;ØÐ2óð ô
 Ð2´H³JÐ?Ó@Ð@ô 3ØÐ.ó
ð 	
r7   c                ó^  • Uc  UnUc  Un[        X#5      (       d’  U R                  [        R                  U/5      nSn[        R
                  " U UR                  UR                  [        R                  " X@R                  5      [        R                  " X`R                  5      5      U5        U$ )z‘Validate type when a left hand annotation is present and we also
could infer the right hand side::

    attrname: SomeType = Column(SomeDBType)

zRLeft hand assignment '{}: {}' not compatible with ORM mapped expression of type {})
r   r@   r   ÚNAMED_TYPE_SQLA_MAPPEDr   rE   rF   rG   Úformat_typeÚoptions)r.   r0   r1   r4   Úorig_left_hand_typeÚorig_python_type_for_typeÚeffective_typerQ   s           r5   rI   rI   Ê  s¥   € ð Ñ"Ø5ÐØ Ñ(Ø$8Ð!äÐ-×DÑDØŸ™Ü×(Ñ(Ð+DÐ*Eó
ˆð
4ð 	ô 	�	Š	ØØ�J‰JØ—	‘	Ü× Ò Ð!4·k±kÓBÜ× Ò  ·±Ó=óð
 ô	
ð Ðr7   c           	     ó&  • UnUnUR                   (       a1  [        UR                   S   5      n[        UR                   S   5      nOUnUn[        U[        [        45      (       d   e[        U[        [        45      (       d   e[        U UUUUUS9$ )Nr   )rg   rh   )r=   r   r;   r   r   rI   )r.   r0   r1   r4   rg   rh   Úleft_hand_argÚpython_type_args           r5   rH   rH   ô  sž   € ð 2ÐØ 4Ðà×#×#Ü'Ð(?×(DÑ(DÀQÑ(GÓHˆÜ)Ð*>×*CÑ*CÀAÑ*FÓG‰à/ˆØ.ˆä�m¤h´	Ð%:×;Ñ;Ð;Ð;Ü�o¬´)Ð'<×=Ñ=Ð=Ð=ä3ØØØØØ/Ø";ñð r7   c                óà   • Ucj  Sn[         R                  " XR                  UR                  5      U5        U R	                  [
        R                  [        [        R                  5      /5      $ U$ )z…Determine the type based on explicit annotation only.

if no annotation were present, note that we need one there to know
the type.

z”Can't infer type from ORM mapped expression assigned to attribute '{}'; please specify a Python type or Mapped[<python type>] on the left hand side.)
r   rE   rF   rG   r@   r   rd   r   r   Úspecial_form)r.   r0   r1   rQ   s       r5   r+   r+     sc   € ð Ñ&ð;ð 	ô 	�	Š	�#—z‘z $§)¡)Ó,¨dÔ3à�~‰~Ü×(Ñ(¬7´9×3IÑ3IÓ+JÐ*Kó
ð 	
ð 'Ð&r7   c                óˆ  • UR                   S:X  a¦  U(       aŸ  US   n[        U[        5      (       ae  [        UR                  [        5      (       aF  UR                  R
                   H+  nUR                   S:X  d  M  [        UR                  / 5      s  $    O U R                  [        R                  / 5      $ UR                  S5      (       d
   SU-  5       eU R                  S5      nUb  [        UR                  [        5      (       d   e[        [        U/ 5      UR                  5      n[        UR                  S   5      $ )Nzsqlalchemy.sql.sqltypes.Enumr   z	enum.Enumz"sqlalchemy.sql.type_api.TypeEnginez+could not extract Python type from node: %séÿÿÿÿ)Úfullnamer;   r   r0   r   r^   r   r@   r   ÚNAMED_TYPE_BUILTINS_STRÚhas_baseÚlookup_fully_qualified_or_noner   r   r=   )r.   r0   rb   Ú	first_argÚbase_Útype_engine_symÚtype_engines          r5   r`   r`   .  s$  € ð
 ‡}�}Ð6Ó6¾9Ø˜a‘Lˆ	Ü�i¤×)Ñ)¬jØ�N‰NœH÷/
ñ /
ð #Ÿ™×+Ô+�Ø—>‘> [Õ0Ü# I§N¡N°BÓ7Ò7ò ,ð
 —>‘>¤%×"?Ñ"?ÀÓDÐDà�=‰=Ð=×>Ñ>ð Ø5¸Ñ<óÐ>ð ×8Ñ8Ø,ó€Oð Ñ&¬:Ø×Ñœh÷,ñ ,ð ð ô ,Ü��rÓØ×Ñó€Kô ˜;×+Ñ+¨BÑ/Ó0Ð0r7   )r.   r   r/   r   r0   r   r1   úOptional[ProperType]r2   r   Úreturnry   )
r.   r   r/   r   r0   r   r1   ry   rz   ry   r    )r.   r   r/   r   r0   r   r1   ry   rW   zOptional[CallExpr]rz   ry   )NN)r.   r   r0   r   r1   r   r4   r   rg   ry   rh   ry   rz   ry   )
r.   r   r0   r   r1   r   r4   r   rz   ry   )r.   r   r0   r   r1   ry   rz   ry   )r.   r   r0   r   rb   zSequence[Expression]rz   r   )-Ú
__future__r   Útypingr   r   Úmypy.maptyper   Ú
mypy.nodesr   r   r	   r
   r   r   r   r   r   r   r   Úmypy.pluginr   Úmypy.subtypesr   Ú
mypy.typesr   r   r   r   r   r   r   r   Ú r   r   r6   r'   r-   r#   r)   r%   rI   rH   r+   r`   r\   r7   r5   Ú<module>rƒ      s•  ðõ #å Ý å 2Ý %Ý Ý !Ý Ý !Ý !Ý Ý Ý Ý Ý Ý 7Ý $Ý Ý #Ý &Ý Ý Ý !Ý  Ý  å Ý ð% Ø	(ð% à
ð% ð ð% ð 2ð	% ð
 #ð% ð ô% ðPc$Ø	(ðc$à
ðc$ð ðc$ð 2ð	c$ð
 ôc$ðL$Ø	(ð$à
ð$ð ð$ð 2ð	$ð
 ô$ð@Ø	(ðà
ðð ðð 2ð	ð
 #ðð ôð@.Ø	(ð.à
ð.ð ð.ð 2ð	.ð
 ô.ðl 15ð`
Ø	(ð`
à
ð`
ð ð`
ð 2ð	`
ð
 .ð`
ð õ`
ðP 15Ø6:ð'Ø	(ð'à
ð'ð (ð'ð %ð	'ð
 .ð'ð  4ð'ð õ'ðTØ	(ðà
ðð &ðð #ð	ð
 ôð:'Ø	(ð'à
ð'ð 2ð'ð ô	'ð: 1Ø	(ð 1à
ð 1ð $ð 1ð õ	 1r7   