Ë
    pPêj³7  ã                  ób  — 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	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZmZ d dl m!Z!m"Z"m#Z#m$Z$ d dl%m&Z& d d	l'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 d d
l4m5Z5 d dl6m7Z7 d dl8m9Z9 dd„Z:dd„Z;dd„Z<dd„Z=d d„Z>	 	 	 	 d!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d"d„Z? G d„ de«      Z@	 	 	 	 d!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d#d„ZA	 	 d$	 	 	 	 	 	 	 	 	 	 	 	 	 d%d„ZBd&d„ZC	 	 	 	 	 	 	 	 	 	 	 	 	 	 d'd„ZD	 	 	 	 	 	 d(	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d)d„ZEd*d„ZFy)+é    )Úannotations)Ú
NamedTuple)Úmap_actuals_to_formals)Úmodules_state)ÚARG_POSÚMDEFÚSYMBOL_FUNCBASE_TYPESÚArgumentÚBlockÚCallExprÚClassDefÚ	DecoratorÚ
ExpressionÚFuncDefÚJsonDictÚNameExprÚNodeÚOverloadedFuncDefÚPassStmtÚRefExprÚSymbolTableNodeÚTypeInfoÚVar)ÚCheckerPluginInterfaceÚClassDefContextÚSemanticAnalyzerPluginInterface)ÚALLOW_INCOMPATIBLE_OVERRIDEÚ
parse_boolÚrequire_bool_literal_argumentÚset_callable_name)Útry_getting_str_literals)ÚAnyTypeÚCallableTypeÚInstanceÚLiteralTypeÚNoneTypeÚ
OverloadedÚTypeÚ	TypeOfAnyÚTypeTypeÚTypeVarTypeÚdeserialize_typeÚget_proper_type)Úis_overlapping_none)Úfill_typevars)Úget_unique_redefinition_namec                ój   — t        | j                  t        «      rt        | | j                  ||«      S |S )zgReturn the bool argument for the decorator.

    This handles both @decorator(...) and @decorator.
    )Ú
isinstanceÚreasonr   Ú_get_bool_argument)ÚctxÚnameÚdefaults      úX/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/plugins/common.pyÚ_get_decorator_bool_argumentr9   7   s,   € ô
 �#—*‘*œhÔ'Ü! # s§z¡z°4¸ÓAÐAàˆó    c                óR   — t        ||«      }|rt        | j                  |||«      S |S )z]Return the boolean value for an argument to a call or the
    default if it's not found.
    )Ú_get_argumentr   Úapi)r5   Úexprr6   r7   Ú
attr_values        r8   r4   r4   B   s-   € ô ˜t TÓ*€JÙÜ,¨S¯W©W°jÀ$ÈÓPÐPØ€Nr:   c                ó4  — t        | «      }|sy|j                  |«      }|sy|j                  sJ ‚t        t	        | j
                  | j                  «      «      D ]<  \  }\  }}|j                  �|s||j                  k(  r|c S ||j                  k(  sŒ:|c S  y)z0Return the expression for the specific argument.N)Ú_get_callee_typeÚargument_by_namer6   Ú	enumerateÚzipÚ	arg_namesÚargsÚpos)Úcallr6   Úcallee_typeÚargumentÚiÚ	attr_namer?   s          r8   r<   r<   L   s—   € ô # 4Ó(€KÙØà×+Ñ+¨DÓ1€HÙØØ�=Š=Ðˆ=ä&/´°D·N±NÀDÇIÁIÓ0NÓ&Oò Ñ"ˆÑ"ˆI�zØ�<‰<Ð#©I¸!¸x¿|¹|Ò:KØÒØ˜Ÿ™Ó%ØÒð	ð r:   c           	     óÄ  ‡
‡— | j                   dd D �]¸  }d}t        |j                  |j                  |j                  |j                  d„ «      }t	        «       Š|D ]  }‰j                  |«       Œ t        ˆfd„t        t        |j                  «      «      D «       «      rd}t        |j                  |j                  |«      D ]ý  \  Š
}}|j                  «       r|sd} nã|sŒ |D �cg c]  }|j                  |   ‘Œ }}t        ‰
«      Š
t        d„ |D «       «      }	t        ‰
t        «      r|	rŒld} n�|	rHt!        ‰
«      s=t        ‰
t"        «      r‰
j$                  j&                  dk(  st        ‰
t(        «      sd} nFt        ‰
t*        «      sŒËt        ‰
j,                  t.        «      sŒæt        ˆ
fd	„|D «       «      rŒûd} n |s�Œ·|c S  | j                   d   S c c}w )
aT  Perform limited lookup of a matching overload item.

    Full overload resolution is only supported during type checking, but plugins
    sometimes need to resolve overloads. This can be used in some such use cases.

    Resolve overloads based on these things only:

    * Match using argument kinds and names
    * If formal argument has type None, only accept the "None" expression in the callee
    * If formal argument has type Literal[True] or Literal[False], only accept the
      relevant bool literal

    Return the first matching overload item, or the last one if nothing matches.
    NéÿÿÿÿTc                ó4   — t        t        j                  «      S ©N)r"   r)   Úspecial_form)rK   s    r8   ú<lambda>z5find_shallow_matching_overload_item.<locals>.<lambda>{   s   € ”gœi×4Ñ4Ó5€ r:   c              3  ó&   •K  — | ]  }|‰v–— Œ
 y ­wrP   © )Ú.0rK   Úmatched_actualss     €r8   ú	<genexpr>z6find_shallow_matching_overload_item.<locals>.<genexpr>‚   s   øè ø€ ÒG¨Aˆq˜Ô'ÑGùs   ƒFc              3  ó^   K  — | ]%  }t        |t        «      xr |j                  d k(  –— Œ' y­w)ÚNoneN)r2   r   r6   )rU   Úargs     r8   rW   z6find_shallow_matching_overload_item.<locals>.<genexpr>�   s)   è ø€ Ò`ÐTWœz¨#¬xÓ8ÒO¸S¿X¹XÈÑ=OÓOÑ`ùs   ‚+-zbuiltins.objectc              3  óN   •K  — | ]  }t        |«      ‰j                  k(  –— Œ y ­wrP   )r   Úvalue)rU   rZ   Úarg_types     €r8   rW   z6find_shallow_matching_overload_item.<locals>.<genexpr>ž   s   øè ø€ ÒQÀSœz¨#›°(·.±.Õ@ÑQùs   ƒ"%)Úitemsr   Ú	arg_kindsrE   ÚsetÚupdateÚanyÚrangeÚlenrF   rD   Ú	arg_typesÚis_requiredr-   r2   r&   r.   r$   ÚtypeÚfullnamer"   r%   r\   Úbool)ÚoverloadrH   ÚitemÚokÚmappedÚactualsÚkindrK   rF   Úarg_noner]   rV   s             @@r8   Ú#find_shallow_matching_overload_itemrq   e   s¨  ù€ ð —‘˜s Ð#ó .ˆØˆÜ'Ø�N‰NØ�N‰NØ�N‰NØ�N‰NÙ5ó
ˆô ›%ˆØò 	,ˆGØ×"Ñ" 7Õ+ð	,äÓG´´s¸4¿9¹9³~Ó1FÔGÔGØˆBä'*¨4¯>©>¸4¿>¹>È6Ó'Rò 	Ñ#ˆH�d˜GØ×ÑÔ!©'à�ÙÚØ.5Ö6¨˜Ÿ	™	 !›Ð6�Ð6Ü*¨8Ó4�ÜÑ`Ð[_Ô`Ó`�Ü˜h¬Ô1Ú#Ø"˜ÙáÜ/°Ô9ä" 8¬XÔ6Ø$ŸM™M×2Ñ2Ð6GÒGä& x´Ô9à�BÙÜ ¬+Õ6¼:ÀhÇnÁnÔVZÕ;[ÜÓQÈDÔQÕQØ"˜Ùð7	ó8 ØŠKð].ð^ �>‰>˜"ÑÐùò1 7s   Ã)Gc                óV  — | j                   }t        |t        «      r|j                  }t        |t        «      r|j
                  }t        |t        t        f«      rO|j                  rCt        |j                  «      }t        |t        «      rt        || «      S t        |t        «      r|S y)z@Return the type of the callee, regardless of its syntactic form.N)Úcalleer2   r   Únoder   Úfuncr   r	   rg   r-   r'   rq   r#   )rH   Úcallee_nodeÚcallee_node_types      r8   rA   rA   ¦   s�   € ð  $Ÿ{™{€Kä�+œwÔ'Ø!×&Ñ&ˆô �+œyÔ)Ø!×&Ñ&ˆä�+¤Ô%:Ð;Ô<À×AQÒAQÜ*¨;×+;Ñ+;Ó<ÐÜÐ&¬
Ô3Ü6Ð7GÈÓNÐNÜÐ(¬,Ô7Ø#Ð#àr:   Nc                óT   — t        | j                  | j                  |||||||¬«	       y)zZ
    Adds a new method to a class.
    Deprecated, use add_method_to_class() instead.
    )r6   rF   Úreturn_typeÚ	self_typeÚtvar_defÚis_classmethodÚis_staticmethodN)Úadd_method_to_classr=   Úcls)r5   r6   rF   ry   rz   r{   r|   r}   s           r8   Ú
add_methodr€   ½   s/   € ô Ø�‰Ø�‰ØØØØØØ%Ø'ö
r:   c                  óB   — e Zd ZU dZded<   ded<   dZded<   dZd	ed
<   y)Ú
MethodSpecz=Represents a method signature to be added, except for `name`.úlist[Argument]rF   r(   ry   NúType | Nonerz   zlist[TypeVarType] | NoneÚ	tvar_defs)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__rz   r…   rT   r:   r8   r‚   r‚   Ø   s&   … ÙGà
ÓØÓØ!€Iˆ{Ó!Ø*.€IÐ'Ô.r:   r‚   c	                óB  — t        ||«       |�t        |t        «      s|g}t        | |j                  |t        ||||¬«      ||¬«      \  }	}
|
|j                  j                  |<   |j                  j                  j                  j                  j                  |	«       |	S )z(Adds a new method to a class definition.)rF   ry   rz   r…   )r|   r}   )Ú_prepare_class_namespacer2   ÚlistÚ_add_method_by_specÚinfor‚   ÚnamesÚdefnÚdefsÚbodyÚappend)r=   r   r6   rF   ry   rz   r{   r|   r}   ru   Úsyms              r8   r~   r~   á   s�   € ô ˜S $Ô'àÐ¤J¨x¼Ô$>Ø�:ˆä#ØØ�‰ØÜ˜¨+ÀÐV^Ô_Ø%Ø'ô�I€Dˆ#ð €C‡H�H‡N�N�4ÑØ‡H�H‡M�M×Ñ×Ñ×"Ñ" 4Ô(Ø€Kr:   c           	     ó°  — t        |«      dk\  sJ d«       ‚t        ||«       g }|D ]š  }t        | |j                  ||||¬«      \  }}	t	        |t
        «      rPt        |j                  |j                  «      }
|
j                  |j                  «       d|_        t        |g |
«      }n|}d|_        |j                  |«       Œœ t        |«      }|j                  |_        ||_        ||_        t%        t&        |«      }d|_        ||j                  j*                  |<   |j                  j,                  j.                  j0                  j                  |«       |S )z3Adds a new overloaded method to a class definition.é   z)Overloads must contain at least two cases)r6   Úspecr|   r}   T)rd   rŒ   rŽ   r�   r2   r   r   r6   rg   Úset_lineÚlineÚis_decoratedr   Úis_overloadr”   r   Úis_classÚ	is_staticr   r   Úplugin_generatedr�   r‘   r’   r“   )r=   r   r6   r^   r|   r}   Úfuncsrk   ru   Ú_symÚvarÚdecoÚoverload_defr•   s                 r8   Úadd_overloaded_method_to_classr¥      s5  € ô ˆu‹:˜Š?ÐGÐGÓGˆ?ô ˜S $Ô'ð (*€EØò ˆÜ(ØØ�H‰HØØØ)Ø+ô
‰
ˆˆdô �dœGÔ$Ü�d—i‘i §¡Ó+ˆCØ�L‰L˜Ÿ™Ô#Ø $ˆDÔä˜T 2 sÓ+‰DàˆDØˆÔØ�‰�TÕð%ô* % UÓ+€LØŸ™€LÔØ*€LÔØ,€LÔÜ
œ$ Ó
-€CØ€CÔà€C‡H�H‡N�N�4ÑØ‡H�H‡M�M×Ñ×Ñ×"Ñ" <Ô0ØÐr:   c                óŠ  — | j                   }|sJ ‚||j                  v rd|j                  |   }|j                  rIt        |j                  t
        «      r/| j                  j                  j                  |j                  «       ||j                  v r3t        ||j                  «      }|j                  |   |j                  |<   y y rP   )
r�   r�   rŸ   r2   rt   r   r’   r“   Úremover0   )r   r6   r�   r•   Úr_names        r8   rŒ   rŒ   1  s˜   € Ø�8‰8€DÙ€Kˆ4ð ˆt�z‰zÑØ�j‰j˜ÑˆØ×Ò¤J¨s¯x©x¼Ô$AØ�H‰H�M‰M× Ñ  §¡Ô*ð ˆt�z‰zÑä-¨d°D·J±JÓ?ˆØ!ŸZ™Z¨Ñ-ˆ�
‰
�6Òð r:   c               ó¦  — |\  }}}}	|du r|du rJ d«       ‚t        | t        «      r| j                  d«      }
n| j                  dg «      }
|r6|xs t	        t        |«      «      }t        t        d«      |d t        d«      g}n0|rg }n+|xs t        |«      }t        t        d«      |d t        «      g}||z   }g g g }}}|D ]p  }|j                  sJ d«       ‚|j                  |j                  «       |j                  |j                  j                  «       |j                  |j                  «       Œr t        |||||
«      }|	rt        |	«      |_        t#        ||t%        t'        «       g«      «      }||_        t+        ||«      |_        ||_        ||_        |j2                  dz   |z   |_        |j6                  |_        |rud|_        t        ||j,                  «      }||_        |j4                  |_        d|_        t=        |g |«      }|j6                  |_        t?        t@        |«      }d|_!        ||fS t?        t@        |«      }d|_!        ||fS )NTz@Can't add a new method that's both staticmethod and classmethod.zbuiltins.functionÚ_clsÚselfz"All arguments must be fully typed.ú.)"r2   r   Ú
named_typeÚnamed_generic_typer*   r/   r
   r   r   Útype_annotationr”   Úvariabler6   ro   r#   ÚtupleÚ	variablesr   r   r   r�   r    rg   r�   rž   rh   Ú	_fullnamerš   r›   r}   r   r   r   rŸ   )r=   r�   r6   r˜   r|   r}   rF   ry   rz   r…   Úfunction_typeÚfirstre   rE   r_   rZ   Ú	signatureru   ÚvÚdecr•   s                        r8   rŽ   rŽ   D  sE  € ð /3Ñ+€Dˆ+�y )ð 	˜$Ñ ?°dÑ#:ðJàIóJð ô �#Ô6Ô7ØŸ™Ð':Ó;‰à×.Ñ.Ð/BÀBÓGˆáØÒ>¤¬-¸Ó*=Ó!>ˆ	Üœ#˜f›+ y°$¼ÀÓFÐG‰Ù	Ø‰àÒ4¤¨tÓ!4ˆ	Üœ#˜f›+ y°$¼Ó@ÐAˆØ�4‰<€Dà&(¨"¨b˜)ˆy€IØò #ˆØ×"Ò"ÐHÐ$HÓHÐ"Ø×Ñ˜×,Ñ,Ô-Ø×Ñ˜Ÿ™×*Ñ*Ô+Ø×Ñ˜Ÿ™Õ"ð	#ô ˜Y¨	°9¸kÈ=ÓY€IÙÜ# IÓ.ˆ	Ôä�4˜œu¤h£j \Ó2Ó3€DØ€D„IÜ! )¨TÓ2€D„IØ"€D„MØ$€D„NØ—]‘] SÑ(¨4Ñ/€D„NØ—	‘	€D„Iñ Ø ˆÔÜ��d—i‘iÓ ˆØˆŒØ—n‘nˆŒØ ˆÔÜ˜˜b !Ó$ˆØ—9‘9ˆŒÜœd CÓ(ˆØ#ˆÔØ�Cˆxˆä
œ$ Ó
%€CØ€CÔØ�ˆ9Ðr:   c
                ó”  — |j                   }
||
j                  v r4|	s2t        ||
j                  «      }|
j                  |   |
j                  |<   t        ||«      }|
|_         ||_        ||_        |t        v rd|_        n||_        |r||_        n|
j                  dz   |z   |_        t        t        |d|¬«      |
j                  |<   |S )z—
    Adds a new attribute to a class definition.
    This currently only generates the symbol table entry and no corresponding AssignmentStatement
    Tr¬   )rŸ   Úno_serialize)r�   r�   r0   r   Úis_finalÚis_classvarr   Úallow_incompatible_overrider³   rh   r   r   )r=   r   r6   ÚtypÚfinalrº   Úoverride_allow_incompatiblerh   r¼   Úoverwrite_existingr�   r¨   rt   s                r8   Úadd_attribute_to_classrÂ   ‡  sÁ   € ð  �8‰8€Dð ˆt�z‰zÑÑ"4ä-¨d°D·J±JÓ?ˆØ!ŸZ™Z¨Ñ-ˆ�
‰
�6Ñäˆt�S‹>€DØ€D„IØ€D„MØ"€DÔØÔ*Ñ*Ø+/ˆÕ(à+FˆÔ(áØ!ˆ�àŸ™¨Ñ,¨tÑ3ˆŒä&Üˆd T¸ô€D‡J�JˆtÑð €Kr:   c                ó’   — t        | «      }t        j                  €J ‚|j                  t        j                  j                  «       |S rP   )r,   r   Ú
node_fixerÚacceptÚ
type_fixer)Údatar=   r¾   s      r8   Údeserialize_and_fixup_typerÈ   µ  s;   € Ü
˜4Ó
 €CÜ×#Ñ#Ð/Ð/Ð/Ø‡J�JŒ}×'Ñ'×2Ñ2Ô3Ø€Jr:   )r5   r   r6   Ústrr7   ri   Úreturnri   )
r5   r   r>   r   r6   rÉ   r7   ri   rÊ   ri   )rH   r   r6   rÉ   rÊ   zExpression | None)rj   r'   rH   r   rÊ   r#   )rH   r   rÊ   zCallableType | None)NNFF)r5   r   r6   rÉ   rF   rƒ   ry   r(   rz   r„   r{   zTypeVarType | Noner|   ri   r}   ri   rÊ   rY   )r=   ú8SemanticAnalyzerPluginInterface | CheckerPluginInterfacer   r   r6   rÉ   rF   rƒ   ry   r(   rz   r„   r{   z&list[TypeVarType] | TypeVarType | Noner|   ri   r}   ri   rÊ   zFuncDef | Decorator)FF)r=   rË   r   r   r6   rÉ   r^   zlist[MethodSpec]r|   ri   r}   ri   rÊ   r   )r   r   r6   rÉ   rÊ   rY   )r=   rË   r�   r   r6   rÉ   r˜   r‚   r|   ri   r}   ri   rÊ   z+tuple[FuncDef | Decorator, SymbolTableNode])FFFNFF)r=   r   r   r   r6   rÉ   r¾   r(   r¿   ri   rº   ri   rÀ   ri   rh   z
str | Noner¼   ri   rÁ   ri   rÊ   r   )rÇ   zstr | JsonDictr=   r   rÊ   r(   )GÚ
__future__r   Útypingr   Úmypy.argmapr   Úmypy.modules_stater   Ú
mypy.nodesr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úmypy.pluginr   r   r   Úmypy.semanal_sharedr   r   r   r    Úmypy.typeopsr!   Ú
mypy.typesr"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   Úmypy.types_utilsr.   Úmypy.typevarsr/   Ú	mypy.utilr0   r9   r4   r<   rq   rA   r€   r‚   r~   r¥   rŒ   rŽ   rÂ   rÈ   rT   r:   r8   ú<module>rØ      s˜  ðÝ "å å .Ý ,÷÷ ÷ ÷ ÷ ñ ÷* aÑ `÷ó õ N÷÷ ÷ ó õ 1Ý 'Ý 2óóóó2>óBð8 "Ø#'Ø Ø!ðØ	ðà
ðð ðð ð	ð
 ðð !ðð ðð ðð 
óô6/�ô /ð  "Ø7;Ø Ø!ðØ	Aðà	ðð ðð
 ðð ðð ðð 5ðð ðð ðð óðH !Ø!ð.Ø	Að.à	ð.ð ð.ð ð	.ð
 ð.ð ð.ð ó.ób.ð&@Ø	Að@à
ð@ð ð@ð ð	@ð ð@ð ð@ð 1ó@ðP ØØ(-ØØØ$ð*Ø	(ð*à	ð*ð ð*ð 
ð	*ð
 ð*ð ð*ð "&ð*ð ð*ð ð*ð ð*ð 	ó*ô\r:   