Ë
    pPêjgp  ã                  ó°  — U d Z ddlmZ ddlZddlmZmZmZ ddlm	Z	 ddl
mZmZ ddlmZmZ ddl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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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7 ddl8m9Z9m:Z:m;Z;m<Z<m=Z= ddl>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZK ddlLmMZM dZNdeOd<   dZPdeOd<   dZQdeOd<    G d„ d«      ZRy)zZSemantic analysis of named tuple definitions.

This is conceptually part of mypy.semanal.
é    )ÚannotationsN)Ú	ContainerÚIteratorÚMapping)Úcontextmanager)ÚFinalÚcast)ÚARG_TYPEÚ	ErrorCode)ÚTypeTranslationErrorÚexpr_to_unanalyzed_type)ÚMessageBuilder) ÚARG_NAMED_OPTÚARG_OPTÚARG_POSÚMDEFÚArgumentÚAssignmentStmtÚBlockÚCallExprÚClassDefÚContextÚ	DecoratorÚEllipsisExprÚ
ExpressionÚExpressionStmtÚFuncBaseÚFuncDefÚListExprÚNamedTupleExprÚNameExprÚPassStmtÚPlaceholderNodeÚRefExprÚ	StatementÚStrExprÚSymbolTableÚSymbolTableNodeÚTempNodeÚ	TupleExprÚTypeInfoÚTypeVarExprÚVarÚis_StrExpr_list)ÚOptions)ÚPRIORITY_FALLBACKSÚSemanticAnalyzerInterfaceÚcalculate_tuple_fallbackÚhas_placeholderÚset_callable_name)ÚTYPED_NAMEDTUPLE_NAMESÚAnyTypeÚCallableTypeÚLiteralTypeÚ	TupleTypeÚTypeÚ	TypeOfAnyÚTypeTypeÚ	TypeVarIdÚTypeVarLikeTypeÚTypeVarTypeÚUnboundTypeÚhas_type_vars)Úget_unique_redefinition_name)Ú__new__Ú__init__Ú	__slots__Ú__getnewargs__Ú_fieldsÚ_field_defaultsÚ_field_typesÚ_makeÚ_replaceÚ_asdictÚ_sourceÚ__annotations__r   ÚNAMEDTUPLE_PROHIBITED_NAMESzYInvalid statement in NamedTuple definition; expected "field_name: field_type [= default]"ÚNAMEDTUP_CLASS_ERRORÚ_NTÚSELF_TVAR_NAMEc                  óì   — 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d„Z
edd	„«       Zdd
„Zddd„Zy)ÚNamedTupleAnalyzerc                ó.   — || _         || _        || _        y ©N)ÚoptionsÚapiÚmsg)ÚselfrW   rX   rY   s       ú\/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/semanal_namedtuple.pyrD   zNamedTupleAnalyzer.__init__d   s   € ð ˆŒØˆŒØˆ�ó    c           	     óT  — |j                   D �]  }t        |t        «      sŒ| j                  j	                  |«       |j
                  t        v sŒC| j                  ||«      }|€ y|\  }}}}d}	t        |j                  t        «      r|j                  j                  }	| j                  |j                  ||||j                  |	«      }
t        |
d¬«      |_        |j                  |j                  _        |j                  |j                  _        ||j                  _        d|
fc S  y)a  Analyze if given class definition can be a named tuple definition.

        Return a tuple where first item indicates whether this can possibly be a named tuple,
        and the second item is the corresponding TypeInfo (may be None if not ready and should be
        deferred).
        N)TNT©Úis_typed)FN)Úbase_type_exprsÚ
isinstancer$   rX   ÚacceptÚfullnamer5   Úcheck_namedtuple_classdefÚanalyzedr    ÚinfoÚbuild_namedtuple_typeinfoÚnameÚlineÚcolumnÚdefsÚbody)rZ   ÚdefnÚis_stub_fileÚ	base_exprÚresultÚitemsÚtypesÚdefault_itemsÚ
statementsÚexisting_inforf   s              r[   Úanalyze_namedtuple_classdefz.NamedTupleAnalyzer.analyze_namedtuple_classdefk   sû   € ð ×-Ñ-ó 	&ˆIÜ˜)¤WÕ-Ø—‘—‘ 	Ô*Ø×%Ñ%Ô)?Ò?Ø!×;Ñ;¸DÀ,ÓO�FØ�~á)Ø>DÑ;�E˜5 -°Ø$(�MÜ! $§-¡-´Ô@Ø(,¯©×(:Ñ(:˜Ø×9Ñ9ØŸ	™	 5¨%°ÀÇ	Á	È=ó�Dô %3°4À$Ô$G�D”MØ)-¯©�D—M‘MÔ&Ø+/¯;©;�D—M‘MÔ(Ø%/�D—I‘I”Nà ˜:Ò%ð)	&ð, r\   c                ó†  — t        |j                  «      dkD  r| j                  d|«       g }g }i }g }|j                  j                  D �]´  }|j                  |«       t        |t        «      s¿t        |t        «      s*t        |t        «      rt        |j                  t        «      rŒ`t        |t        t        f«      rŒwt        |t        «      rt        |j                  t        «      rŒ¢|j                  «        |j                   j                  |«       | j                  t"        |«       Œät        |j$                  «      dkD  st        |j$                  d   t&        «      sC|j                  «        |j                   j                  |«       | j                  t"        |«       �Œ\|j$                  d   j(                  }|j                  |«       |j*                  €)|j                  t-        t.        j0                  «      «       nW| j2                  j5                  |j*                  | j2                  j7                  «        dd¬«      }	|	€ y|j                  |	«       |j9                  d«      r| j                  d	|› �|«       |j*                  �t;        |d
«      r$|j<                  s| j                  t"        |«       �Œtt        |j>                  t@        «      r|s�Œ’| j                  d|«       �Œ¦|j>                  ||<   �Œ· |jB                  r0d}
|jB                  D ]  }| jD                  jG                  |
||«       Œ! ||||fS )a  Parse and validate fields in named tuple class definition.

        Return a four tuple:
          * field names
          * field types
          * field default values
          * valid statements
        or None, if any of the types are not ready.
        é   z"NamedTuple should be a single baser   NúNamedTuple item typeÚ
NamedTuple©Úallow_placeholderÚprohibit_self_typeÚ"prohibit_special_class_field_typesÚ_z7NamedTuple field name cannot start with an underscore: Ú
new_syntaxz:Non-default NamedTuple fields cannot follow default fieldsz( for "__init_subclass__" of "NamedTuple")$Úlenr`   Úfailrk   rl   Úappendra   r   r"   r   Úexprr   r   r   r&   ÚpopÚremoved_statementsrP   Úlvaluesr!   rh   Útyper6   r;   ÚunannotatedrX   Ú	anal_typeÚis_func_scopeÚ
startswithÚhasattrr€   Úrvaluer)   ÚkeywordsrY   Ú(unexpected_keyword_argument_for_function)rZ   rm   rn   rq   rr   rs   rt   Ústmtrh   re   Úfor_functionÚkeys               r[   rd   z,NamedTupleAnalyzer.check_namedtuple_classdefŒ   s™  € ô ˆt×#Ñ#Ó$ qÒ(Ø�I‰IÐ:¸DÔAØˆØˆØ/1ˆØ&(ˆ
Ø—I‘I—N‘Nó 8	6ˆDØ×Ñ˜dÔ#Ü˜d¤NÔ3ä˜d¤HÔ-Ü˜t¤^Ô4¼ÀDÇIÁIÌ|Ô9\àä˜d¤Y´Ð$9Ô:Øä˜d¤NÔ3¼
À4Ç9Á9ÌgÔ8VØØ—‘Ô Ø×'Ñ'×.Ñ.¨tÔ4Ø—	‘	Ô.°Õ5Ü�T—\‘\Ó" QÒ&¬j¸¿¹Àa¹Ì(Ô.Sà—‘Ô Ø×'Ñ'×.Ñ.¨tÔ4Ø—	‘	Ô.°Ö5ð —|‘| A‘×+Ñ+�Ø—‘˜TÔ"Ø—9‘9Ð$Ø—L‘L¤¬×)>Ñ)>Ó!?Õ@ð
  $Ÿx™x×1Ñ1ØŸ	™	Ø.2¯h©h×.DÑ.DÓ.FÐ*FØ+AØ;Gð	  2ó  �Hð  Ð'á#Ø—L‘L Ô*à—?‘? 3Ô'Ø—I‘IØQÐRVÐQWÐXÐZ^ôð —9‘9Ð$¬°°lÔ(CÈDÏOÊOØ—I‘IÔ2°DÖ9Ü §¡¬XÔ6ã$ØŸ	™	ØXÐZ^öð +/¯+©+�M $Ó'ðq8	6ðr �=Š=ØEˆLØ—}‘}ò [�Ø—‘×AÑAÀ,ÐPSÐUYÕZð[à�e˜]¨JÐ6Ð6r\   c                ó–  — t        |t        «      sddg fS |}|j                  }t        |t        «      sddg fS |j                  }|dk(  rd}n|t
        v rd}nddg fS | j                  ||«      }|r
|\  }}	}
}}}np| j                  |g g i |j                  d«      }| j                  ||||«       | j                  j                  «       r| j                  j                  |||«       ||g fS |s|dg fS |
r-t        |t        |
«       d |
«      D ��ci c]  \  }}||“Œ
 }}}ni }d}t        |j                  t         «      r|j                  j"                  }| j                  |||	||j                  |«      }| j                  ||||«       | j                  j                  «       r| j                  j                  |||«       |||fS c c}}w )aR  Check if a call defines a namedtuple.

        The name argument is the name of the variable to which this is assigned.
        For an inlined base class this is a unique name generated from class name
        base number.

        Return a tuple of two items:
          * Internal name of the named tuple (e.g. the name passed as an argument to namedtuple)
            or None if it is not a valid named tuple
          * Corresponding TypeInfo, or None if not ready.

        If the definition is invalid but looks like a namedtuple,
        report errors but return (some) TypeInfo.
        Núcollections.namedtupleFT)ra   r   Úcalleer$   rc   r5   Úparse_namedtuple_argsrg   ri   Ústore_namedtuple_inforX   Úis_nested_within_func_scopeÚadd_global_symbolÚzipr�   re   r    rf   )rZ   Únoderh   Úcallr–   rc   r_   rp   rq   rr   ÚdefaultsÚtypenameÚ	tvar_defsÚokrf   Úarg_nameÚdefaultrs   ru   s                      r[   Úcheck_namedtuplez#NamedTupleAnalyzer.check_namedtupleÝ   sá  € ô" ˜$¤Ô)Ø˜˜r�>Ð!ØˆØ—‘ˆÜ˜&¤'Ô*Ø˜˜r�>Ð!Ø—?‘?ˆØÐ/Ò/Ø‰HØÔ/Ñ/Ø‰Hà˜˜r�>Ð!Ø×+Ñ+¨D°(Ó;ˆÙØ>DÑ;ˆE�5˜( H¨i¹ð ×1Ñ1°$¸¸BÀÀDÇIÁIÈtÓTˆDØ×&Ñ& t¨T°4¸ÔBØ�x‰x×3Ñ3Ô5ð —‘×*Ñ*¨4°°tÔ<Ø˜˜r�>Ð!Ùà˜˜r�>Ð!áä;>¸uÄcÈ(ÃmÀ^ÐEUÐ?VÐX`Ó;a÷Ù&7 h°�˜'Ñ!ðˆMò ð ˆMàˆÜ�d—m‘m¤^Ô4Ø ŸM™M×.Ñ.ˆMØ×-Ñ-Ø�%˜ ¨t¯y©y¸-ó
ˆð 	×"Ñ" 4¨¨t°XÔ>Ø�8‰8×/Ñ/Ô1Ø�H‰H×&Ñ& t¨T°4Ô8Ø˜˜yÐ(Ð(ùó!s   ÄGc                ó˜   — | j                   j                  |||«       t        ||¬«      |_        |j                  j	                  |«       y )Nr^   )rX   Ú
add_symbolr    re   Úset_line)rZ   rf   rh   r�   r_   s        r[   r˜   z(NamedTupleAnalyzer.store_namedtuple_info  s:   € ð 	�‰×Ñ˜D $¨Ô-Ü& t°hÔ?ˆŒØ�‰×Ñ˜tÕ$r\   c                óZ  — |t         v rdnd}|j                  }t        |«      dk  r| j                  d|› d�|«       yg }d}t        |«      dkD  ré|t         v r| j                  d|«       yt	        |j
                  dd d«      D ]²  \  }}|d	k(  rS||   }	t        |	t        t        f«      rt        |	j                  «      }Œ<| j                  d
j                  |«      |	«       Œ^|dk(  sŒd||   }	t        |	t        «      r|	j                  dv r|	j                  dk(  }Œ—| j                  d|› d�|	t        ¬«       Œ´ |j                  dd t         t         gk7  r| j                  d|› d�|«       yt        |d   t"        «      s| j                  d|› d�|«       y|d   j$                  }
g }g }t        |d   t        t        f«      sk|dk(  rDt        |d   t"        «      r1|d   }|j$                  j'                  dd«      j)                  «       }�n| j                  dj                  |«      |«       y|d   }|dk(  rLt+        |j                  «      s| j                  d|«       y|j                  D �cg c]  }|j$                  ‘Œ }}n™|j                  D �cg c]9  }t        |t        «      r't        |j                  «      dk(  r|j                  d   ‘Œ; }}| j,                  j/                  |«      }| j1                  |j                  |«      }|€y|\  }}}}|sg g g |
g dfS |s&|D �cg c]  }t3        t4        j6                  «      ‘Œ }}g }t9        «       }t	        |«      D ]}  \  }}| j;                  ||«      }|€#|j=                  |«       |j?                  |«       Œ=|s| j                  d|› d|› �|«       d|› �}|j=                  |«       |j?                  |«       Œ t        |«      t        |«      kD  r$| j                  d|› d�|«       |dt        |«       }||||
|dfS c c}w c c}w c c}w )aƒ  Parse a namedtuple() call into data needed to construct a type.

        Returns a 6-tuple:
        - List of argument names
        - List of argument types
        - List of default values
        - First argument of namedtuple
        - All typevars found in the field definition
        - Whether all types are ready.

        Return None if the definition didn't typecheck.
        rz   Ú
namedtupleé   zToo few arguments for "z()"NFz%Too many arguments for "NamedTuple()"rž   z?List or tuple literal expected as the defaults argument to {}()Úrename)ÚTrueÚFalser¬   z5Boolean literal expected as the "rename" argument to z()©ÚcodezUnexpected arguments to "r   ú"z2()" expects a string literal as the first argumentrx   r•   ú,ú z?List or tuple literal expected as the second argument to "{}()"z.String literal expected as "namedtuple()" itemz()" r   z$Too many defaults given in call to "T) r5   Úargsr�   r‚   Ú	enumerateÚ	arg_namesra   r   r*   Úlistrq   Úformatr!   rh   r
   Ú	arg_kindsr   r&   ÚvalueÚreplaceÚsplitr.   rX   Úget_and_bind_all_tvarsÚ"parse_namedtuple_fields_with_typesr6   r;   r‰   ÚsetÚcheck_namedtuple_field_namerƒ   Úadd)rZ   r�   rc   Ú	type_namer³   rž   r«   Úir¢   ÚargrŸ   rr   r    Ústr_exprrq   ÚlistexprÚitemÚtÚ
type_exprsrp   r   r¡   Úprocessed_itemsÚ
seen_namesÚproblemÚnew_names                             r[   r—   z(NamedTupleAnalyzer.parse_namedtuple_args%  s2  € ð %-Ô0FÑ$F‘LÈLˆ	à�y‰yˆÜˆt‹9�qŠ=Ø�I‰IÐ/°	¨{¸#Ð>ÀÔEØØ%'ˆØˆÜˆt‹9�qŠ=àÔ1Ñ1Ø—	‘	ÐAÀ4ÔHØÜ(¨¯©¸¸Ð);¸QÓ?ò ‘��8Ø˜zÒ)Ø˜q™'�Cô " #¬´)Ð'<Ô=Ü#'¨¯	©	£?™àŸ	™	ð#ß#)¡6¨)Ó#4Øõð
  Ó)Ø˜q™'�CÜ! #¤xÔ0°S·X±XÐARÑ5RØ!$§¡¨VÑ!3™àŸ	™	ØSÐT]ÐS^Ð^`ÐaØÜ!)ð "õ ð%ð. �>‰>˜"˜1Ð¤'¬7Ð!3Ò3Ø�I‰IÐ1°)°¸CÐ@À$ÔGØÜ˜$˜q™'¤7Ô+Ø�I‰I˜˜)˜Ð$VÐWÐY]Ô^ØØ˜‘7—=‘=ˆØˆØˆ	Ü˜$˜q™'¤H¬iÐ#8Ô9ØÐ3Ò3¼
À4ÈÁ7ÌGÔ8TØ ™7�Ø Ÿ™×.Ñ.¨s°CÓ8×>Ñ>Ó@’à—	‘	ØU×\Ñ\Ø!óð ô	ð à˜A‘wˆHØÐ3Ò3ä& x§~¡~Ô6Ø—I‘IÐNÐPTÔUØØ08·±Ö?¨˜Ÿ›Ð?�Ñ?ð &Ÿ^™^öàÜ! !¤YÔ/´C¸¿¹³LÀAÒ4Eð —G‘G˜A“Jð�
ð ð
 !ŸH™H×;Ñ;¸JÓG�	à×@Ñ@ÀÇÁÐQUÓV�Ø�>àØ&,Ñ#��u˜a ÙØ˜r 2 x°°UÐ:Ð:ÙØ=BÖC¸”WœY×2Ñ2Õ3ÐCˆEÐCØˆÜ"›uˆ
Ü  Ó'ò 	)‰GˆAˆtØ×6Ñ6°t¸ZÓHˆGØˆØ×&Ñ& tÔ,Ø—‘˜tÕ$áØ—I‘I  ) ¨D°°	Ð:¸DÔAð
 ˜q˜c˜7�Ø×&Ñ& xÔ0Ø—‘˜xÕ(ð	)ô  ˆx‹=œ3˜u›:Ò%Ø�I‰IÐ<¸Y¸KÀsÐKÈTÔRØ ¤# e£*Ð-ˆHØ  x°¸9ÀdÐJÐJùòO @ùòùò Ds   É-PÊ>P#Ì" P(c                óü  — g }g }|D �]K  }t        |t        «      �r%t        |j                  «      dk7  r| j	                  d|«        y|j                  \  }}t        |t
        «      r|j                  |j                  «       n| j	                  d|«        y	 t        || j                  | j                  j                  «      }| j                  j                  || j                  j                  «        dd¬«      }	t        |	t        «      rt!        t"        j$                  «      }	|	€g g g d	fc S |j                  |	«       �Œ:| j	                  d
|«        y ||g dfS # t        $ r | j	                  d|«       Y  yw xY w)zŠParse typed named tuple fields.

        Return (names, types, defaults, whether types are all ready), or None if error occurred.
        rª   z'Invalid "NamedTuple()" field definitionNz!Invalid "NamedTuple()" field namezInvalid field typery   rz   r{   Fz&Tuple expected as "NamedTuple()" fieldT)ra   r*   r�   rq   r‚   r&   rƒ   r¹   r   rW   rX   rn   r   rŠ   r‹   r@   r6   r;   Ú
from_error)
rZ   ÚnodesÚcontextrq   rr   rÆ   rh   Ú	type_noderˆ   re   s
             r[   r½   z5NamedTupleAnalyzer.parse_namedtuple_fields_with_types�  s_  € ð ˆØˆØó  	ˆDÜ˜$¤	Õ*Ü�t—z‘z“? aÒ'Ø—I‘IÐGÈÔNÙØ"&§*¡*‘��iÜ˜d¤GÔ,Ø—L‘L §¡Õ,à—I‘IÐAÀ4ÔHÙð Ü2°9¸d¿l¹lÈDÏHÉH×LaÑLaÓb�Dð
  Ÿ8™8×-Ñ-ØØ*.¯(©(×*@Ñ*@Ó*BÐ&BØ'=Ø7Cð	 .ó �ô ˜h¬Ô4Ü&¤y×';Ñ';Ó<�HàÐ#Ø˜r 2 uÐ,Ò,Ø—‘˜XÖ&à—	‘	ÐBÀDÔIÙðA 	ðB �e˜R Ð%Ð%øô) ,ò  Ø—I‘IÐ2°IÔ>Úð ús   Â+EÅE;Å:E;c                ó
  ‡‡‡‡‡‡— | j                   j                  d«      }t        t        j                  «      }| j                   j                  d|g«      }	| j                   j                  d||g«      }
| j                   j                  d||g«      }| j                   j                  d|g«      }| j                   j                  d|g«      }| j                   j                  d«      Š|D �cg c]  }t        ||«      ‘Œ }}t        ||	«      }|xs | j                   j                  ||‰«      Šd‰_	        t        ||«      Št        ‰«      r,| j                   j                  d d‰‰‰j                  k7  ¬«       ‰j                  ‰«       ‰‰_        d	|j                  «       i‰j                   d
<   t        ‰«      s.t#        ‰«      s#| j                   j%                  t&        ˆfd„«       	 d%	 	 	 	 	 	 	 d&ˆfd„}t)        ||«      D ��cg c]  \  }}t+        ||«      ‘Œ }}}|D ]  } ||d¬«       Œ t)        ||«      D ��cg c]  \  }}t+        ||«      ‘Œ }}}t        |D �cg c]  }|‘Œ c}|	«      } |t+        d|«      d¬«        |t+        d|
«      d¬«        |t+        d|
«      d¬«        |t+        d|«      d¬«        |t+        d|«      d¬«        |t+        d|«      d¬«        |t+        d|«      d¬«       ‰j                  €J ‚t-        t.        ‰j0                  › dt.        › �| j                   j2                  j5                  «       g ‰j                  t        t        j6                  «      ¬«      Š	 	 d%	 	 	 	 	 	 	 	 	 	 	 d'ˆˆˆˆfd„} |dd |D �cg c]&  }t9        ||j:                  t=        «       t>        «      ‘Œ( c}¬«       | j@                  jB                  dk\  r; |dd |D �cg c]&  }t9        ||j:                  t=        «       t>        «      ‘Œ( c}¬«       d(ˆfd„} |dd |D �cg c]
  } ||«      ‘Œ c}d¬«        |d g |¬!«        |d"d dt9        t+        d#|«      |d tD        «      g¬$«       tG        t.        ‰j0                  dz   t.        z   g ‰j                  t        t        j6                  «      «      }tI        tJ        |«      ‰jL                  t.        <   ‰S c c}w c c}}w c c}}w c c}w c c}w c c}w c c}w ))Nzbuiltins.strzbuiltins.tuplezbuiltins.dictztyping.Iterablezbuiltins.functionTzNamedTuple item)Úforce_progressÚfieldsr©   c                 ó   •— t        ‰ «      S rV   )r2   )Ú
tuple_bases   €r[   ú<lambda>z>NamedTupleAnalyzer.build_namedtuple_typeinfo.<locals>.<lambda>ò  s   ø€ Ô,DÀZÓ,P€ r\   c                ó¾   •— ‰| _         || _        || _        ‰j                  › d| j                  › �| _        t        t        | «      ‰j                  | j                  <   y )Nú.)	rf   Úis_initialized_in_classÚis_propertyrc   rh   Ú	_fullnamer(   r   Únames)ÚvarrÚ   rÛ   rf   s      €r[   Ú	add_fieldz?NamedTupleAnalyzer.build_namedtuple_typeinfo.<locals>.add_fieldõ  sN   ø€ ð ˆCŒHØ*AˆCÔ'Ø)ˆCŒOØ#Ÿ}™}˜o¨Q¨s¯x©x¨jÐ9ˆCŒMÜ#2´4¸Ó#=ˆD�J‰J�s—x‘xÒ r\   )rÛ   rG   )rÚ   rI   rH   rM   rN   Ú__doc__Ú__match_args__rÙ   )rh   rc   ÚidÚvaluesÚupper_boundr£   c                ó  •— ‰j                   › d| › �}‰j                  t        ‰j                  j                  |¬«      ¬«      }|€|}|s|r0t        t        d«      t        j                  |«      d t        «      g}nt        t        d«      |d t        «      g}||z   }|D �cg c]  }|j                  ‘Œ }	}|D �cg c]  }|j                  j                  ‘Œ }
}|D �cg c]  }|j                  ‘Œ }}d |	vsJ ‚t        t        t         t"           |	«      ||
|‰«      }|f|_        t'        | |t)        g «      «      }‰|_        ||_        t/        ||«      |_        ||_        ‰|_        |rkt        | |j0                  «      }d|_        ‰|_        |j2                  |_        d|_        t;        |t=        d«      g|«      }‰|_        t?        t@        |«      }nt?        t@        |«      }d|_!        |‰jD                  | <   y c c}w c c}w c c}w )NrÙ   )Ú	namespace)râ   Ú_clsÚ_selfTÚclassmethod)#rc   Úcopy_modifiedr=   râ   Úraw_idr   r-   r<   Úmake_normalizedr   Útype_annotationÚvariablerh   Úkindr7   r	   r¶   r:   Ú	variablesr   r   rf   Úis_classr4   rˆ   rÜ   ri   Úis_classmethodÚis_decoratedr   r!   r(   r   Úplugin_generatedrÝ   )ÚfuncnameÚretr³   rò   Úis_newrc   Ú	self_typeÚfirstrÃ   rr   rq   r¸   Ú	signatureÚfuncÚvÚdecÚsymÚfunction_typerf   ri   Úshared_self_types                    €€€€r[   Ú
add_methodz@NamedTupleAnalyzer.build_namedtuple_typeinfo.<locals>.add_method  så  ø€ ð Ÿ-™-˜¨¨(¨Ð4ˆHØ(×6Ñ6ÜÐ-×0Ñ0×7Ñ7À8ÔLð 7ó ˆIð ˆ{Ø�Ù¡Ü!¤# f£+¬x×/GÑ/GÈ	Ó/RÐTXÔZaÓbÐc‘ä!¤# g£,°	¸4ÄÓIÐJ�Ø˜4‘<ˆDà48Ö9¨S�S×(Ó(Ð9ˆEÐ9Ø26Ö7¨3�S—\‘\×&Ó&Ð7ˆEÐ7Ø-1Ö2 c˜Ÿ›Ð2ˆIÐ2Ø˜uÑ$Ð$Ð$Ü$¤T¬$¬t©*°eÓ%<¸iÈÐPSÐUbÓcˆIØ#, ,ˆIÔÜ˜8 T¬5°«9Ó5ˆDØˆDŒIØ*ˆDŒMÜ)¨)°TÓ:ˆDŒIØ%ˆDŒNØˆDŒIÙÜ˜ $§)¡)Ó,�Ø#'�Ô Ø�”Ø"Ÿn™n�”Ø$(�Ô!Ü ¤x°Ó'>Ð&?ÀÓC�Ø�”Ü%¤d¨CÓ0‘ä%¤d¨DÓ1�Ø#'ˆCÔ Ø#&ˆD�J‰J�xÒ ùò1 :ùÚ7ùÚ2s   Â!G;Â:H ÃHrK   )rö   r³   )é   é   Ú__replace__c                óˆ   •— ‰j                  | j                  d «      }|€t        nt        }t	        | | j
                  ||«      S rV   )Úgetrh   r   r   r   rˆ   )rÞ   r£   rï   rs   s      €r[   Úmake_init_argzCNamedTupleAnalyzer.build_namedtuple_typeinfo.<locals>.make_init_argT  s9   ø€ Ø#×'Ñ'¨¯©°$Ó7ˆGØ%˜o•7´7ˆDÜ˜C §¡¨7°DÓ9Ð9r\   rC   )rö   r³   r÷   rL   )r³   rö   rJ   Úiterable)rö   rò   r³   )FF)rÞ   r-   rÚ   ÚboolrÛ   r	  ÚreturnÚNone)rõ   Ústrrö   zType | Noner³   zlist[Argument]rò   r	  r÷   r	  r
  r  )rÞ   r-   r
  r   )'rX   Ú
named_typer6   r;   Úspecial_formÚnamed_type_or_noner8   r9   Úbasic_new_typeinfoÚis_named_tupler3   Úprocess_placeholderÚ
tuple_typeÚupdate_tuple_typeri   ÚcopyÚmetadatarA   Úschedule_patchr0   r›   r-   r?   rR   rc   Ú
tvar_scopeÚnew_unique_func_idÚfrom_omitted_genericsr   rˆ   r   r   rW   Úpython_versionr   r,   r(   r   rÝ   )rZ   rh   rq   rr   rs   ri   ru   ÚstrtypeÚimplicit_anyÚbasetuple_typeÚdictypeÚordereddictypeÚfallbackÚiterable_typerÆ   ÚliteralsÚmatch_args_typerß   ÚtyprÔ   rÞ   Úvarsr   Útuple_of_stringsr  r  Úself_tvar_exprrÿ   rf   r   rÖ   s       ``                     @@@@r[   rg   z,NamedTupleAnalyzer.build_namedtuple_typeinfoÉ  s¾  ý€ ð —(‘(×%Ñ% nÓ5ˆÜœy×5Ñ5Ó6ˆØŸ™×,Ñ,Ð-=À¸~ÓNˆØ—(‘(×%Ñ% o¸ÀÐ7NÓOˆàŸ™×,Ñ,¨_¸wÈÐ>UÓVˆØ—8‘8×&Ñ&Ð'7¸,¸ÓHˆð Ÿ™×3Ñ3Ð4EÈÀ~ÓVˆØŸ™×+Ñ+Ð,?Ó@ˆàGLÖM¸t¤¨D°'Õ :ÐMˆÐMÜ# H¨nÓ=ˆàÒQ §¡× ;Ñ ;¸DÀ(ÈDÓ QˆØ"ˆÔÜ˜u hÓ/ˆ
Ü˜:Ô&Ø�H‰H×(Ñ(ØÐ'¨¸jÈDÏOÉOÑ>[ð )ô ð 	×Ñ˜zÔ*ØˆŒ	à'/°·±³Ð&>ˆ�‰�lÑ#ô
 ˜zÔ*´=ÀÔ3LØ�H‰H×#Ñ#Ü"Ó$Pôð
 RWð	>Øð	>Ø/3ð	>ØJNð	>àõ	>ô 36°e¸UÓ2C×D¡Y T¨3”#�d˜C•.ÐDˆÑDØò 	-ˆCÙ�c tÖ,ð	-ô 14°E¸5Ó0A×B¡9 4¨”�D˜#•ÐBˆÑBä$°uÖ%=°!¢gÒ%=¸~ÓNÐÙ”#�iÐ!1Ó2ÈDÕQÙ”#�n gÓ.ÈÕMÙ”#Ð'¨Ó1È4ÕPÙ”#�i Ó)À4ÕHÙ”#Ð'¨Ó8ÐRVÕWÙ”#�i Ó)À4ÕHÙ”#Ð&¨Ó8ÐRVÕWà�‰Ð*Ð*Ð*Ü&ÜØŸ™� a¬Ð'7Ð8à�x‰x×"Ñ"×5Ñ5Ó7ØØŸ™ÜœI×;Ñ;Ó<ô
Ðð $)Ø ð+	'Øð+	'àð+	'ð !ð+	'ð !ð	+	'ð
 ð+	'ð ÷+	'ð +	'ñZ 	ØØØTXÖYÈS”(˜3 §¡¬,«.¼-ÕHÒYõ	
ð
 �<‰<×&Ñ&¨'Ò1ÙØØØX\Ö]ÐQT”h˜s C§H¡H¬l«n¼mÕLÒ]õõ	:ñ
 	�9 $ÈDÖ-QÀS©m¸CÕ.@Ò-QÐZ^Õ_Ù�9 2¨>Õ:ÙØØØÜœ3˜z¨=Ó9¸=È$ÔPWÓXÐYõ		
ô %ÜØ�M‰M˜CÑ¤.Ñ0ØØ�O‰OÜ”I×3Ñ3Ó4ó
ˆô &5´T¸>Ó%Jˆ�
‰
”>Ñ"ØˆùòY  Nùó@ Eùó Cùâ%=ùòH Zùò ^ùò .Rs*   Ã-S!ÈS&É S,É"	S2Î+S7Ï++S<Ð,Tc              #  ó’  K  — |j                   }t        «       |_         d–— t        D ]e  }||j                   v sŒ|j                  |«      |j                   |   u rŒ3|j                   |   j                  }|€J ‚| j                  d|› d�|«       Œg |j                  «       D ]£  \  }}||j                   v r�|dk(  rŒ|j                   |   }t        |j                  t        t        f«      r|j                  sŒVt        |j                  t        «      s%t        ||j                   «      }||j                   |<   ||j                   |<   Œ¥ y­w)aj  Preserve the generated body of class-based named tuple and then restore it.

        Temporarily clear the names dict so we don't get errors about duplicate names
        that were already set in build_namedtuple_typeinfo (we already added the tuple
        field names while generating the TypeInfo, and actual duplicates are
        already reported).
        Nz'Cannot overwrite NamedTuple attribute "r°   rà   )rÝ   r'   rO   r  rœ   r‚   rq   ra   r   r   rô   r#   rB   )	rZ   Únamed_tuple_infoÚnt_namesÚ
prohibitedÚctxr“   r¹   rþ   Úr_keys	            r[   Úsave_namedtuple_bodyz'NamedTupleAnalyzer.save_namedtuple_bodyl  sG  è ø€ ð $×)Ñ)ˆÜ!,£ÐÔãô 6ò 	XˆJØÐ-×3Ñ3Ò3Ø—<‘< 
Ó+Ð/?×/EÑ/EÀjÑ/QÑQØØ&×,Ñ,¨ZÑ8×=Ñ=�Ø�Ð&�Ø—	‘	ÐCÀJÀ<ÈqÐQÐSVÕWð	Xð #Ÿ.™.Ó*ò 	0‰JˆC�ØÐ&×,Ñ,Ñ,Ø˜)Ò#ØØ&×,Ñ,¨SÑ1�Ü˜cŸh™h¬´9Ð(=Ô>Às×G[ÒG[àô " #§(¡(¬OÔ<ô 9¸Ð>N×>TÑ>TÓU�EØ47Ð$×*Ñ*¨5Ñ1Ø*/Ð×"Ñ" 3Ò'ñ!	0ùs   ‚7EºDEc                ó¨   — ||v rd|› d�S |j                  «       sd|› d�S |j                  d«      rd|› d�S t        j                  |«      rd|› d�S y)	zDReturn None for valid fields, a string description for invalid ones.zhas duplicate field name "r°   zfield name "z" is not a valid identifierr   z" starts with an underscorez" is a keywordN)ÚisidentifierrŒ   ÚkeywordÚ	iskeyword)rZ   ÚfieldrÊ   s      r[   r¿   z.NamedTupleAnalyzer.check_namedtuple_field_nameš  ss   € à�JÑØ/°¨w°aÐ8Ð8Ø×#Ñ#Ô%Ø! % Ð(CÐDÐDØ×Ñ˜cÔ"Ø! % Ð(CÐDÐDÜ×Ñ˜uÔ%Ø! % ¨Ð7Ð7Ør\   Nc                ó@   — | j                   j                  |||¬«       y )Nr®   )rX   r‚   )rZ   rY   r-  r¯   s       r[   r‚   zNamedTupleAnalyzer.fail¦  s   € Ø�‰�‰�c˜3 TˆÕ*r\   )rW   r/   rX   r1   rY   r   r
  r  )rm   r   rn   r	  r
  ztuple[bool, TypeInfo | None])rm   r   rn   r	  r
  zKtuple[list[str], list[Type], dict[str, Expression], list[Statement]] | None)rœ   r   rh   r  r
  z9tuple[str | None, TypeInfo | None, list[TypeVarLikeType]])
rf   r+   rh   r  r�   r   r_   r	  r
  r  )r�   r   rc   r  r
  zWNone | tuple[list[str], list[Type], list[Expression], str, list[TypeVarLikeType], bool])rÏ   zlist[Expression]rÐ   r   r
  z;tuple[list[str], list[Type], list[Expression], bool] | None)rh   r  rq   z	list[str]rr   z
list[Type]rs   zMapping[str, Expression]ri   Úintru   zTypeInfo | Noner
  r+   )r*  r+   r
  zIterator[None])r4  r  rÊ   zContainer[str]r
  z
str | NonerV   )rY   r  r-  r   r¯   zErrorCode | Noner
  r  )Ú__name__Ú
__module__Ú__qualname__rD   rv   rd   r¤   r˜   r—   r½   rg   r   r/  r¿   r‚   © r\   r[   rT   rT   c   sg  „ ðØðØ%>ðØESðà	óðØðØ,0ðà	%óðBO7ØðO7Ø,0ðO7à	TóO7ðb?)Øð?)Ø&)ð?)à	Bó?)ðB%Øð%Ø$'ð%Ø/7ð%ØCGð%à	ó%ðvKØðvKØ(+ðvKà	bóvKðp*&Ø%ð*&Ø07ð*&à	Dó*&ðXaàðað ðað ð	að
 0ðað ðað 'ðað 
óaðF ò)0ó ð)0óZ
õ+r\   rT   )Srà   Ú
__future__r   r2  Úcollections.abcr   r   r   Ú
contextlibr   Útypingr   r	   Úmypy.errorcodesr
   r   Úmypy.exprtotyper   r   Úmypy.messagesr   Ú
mypy.nodesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   Úmypy.optionsr/   Úmypy.semanal_sharedr0   r1   r2   r3   r4   Ú
mypy.typesr5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   Ú	mypy.utilrB   rO   rN   rP   rR   rT   r:  r\   r[   ú<module>rG     s¶   ðòõ
 #ã ß 8Ñ 8Ý %ß ç /ß IÝ (÷!÷ !÷ !÷ !÷ !÷ !÷ !÷ !ó !õD !÷õ ÷÷ ÷ õ õ 3ð&Ð ˜Uó ð  `ð �eó ð €�Ó ÷D	+ò D	+r\   