Ë
    pPêj¹  ã                  óÄ  — U d Z ddlmZ ddlmZ ddlmZ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 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-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 dd
l4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z:m;Z;m<Z<m=Z= ddl>m?Z?m@Z@ ddlAmBZB ddlCmDZD ddlEmFZFmGZG ddlHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZX ddlYmZZZ erddl[m\Z\ ddhZ]de^d<   dZ_de^d<   dZ`de^d<    e!dddde_¬«      Zade^d<   dZbde^d <   d!Zcde^d"<    G d#„ d$«      Zd G d%„ d&«      Zed3d'„Zfd4d(„Zgd5d)„Zhd6d*„Zid7d+„Zjd8d,„Zk	 	 	 	 	 	 	 	 	 	 d9d-„Zld:d.„Zmd;d/„Znd8d0„Zod<d1„Zpy2)=z-Plugin that provides support for dataclasses.é    )Úannotations)ÚIterator)ÚTYPE_CHECKINGÚFinalÚLiteral)Ú
errorcodesÚmessage_registry)Úexpand_typeÚexpand_type_by_instance)Ú
meet_types)Úformat_type_bare) Ú	ARG_NAMEDÚARG_NAMED_OPTÚARG_OPTÚARG_POSÚARG_STARÚ	ARG_STAR2ÚMDEFÚArgumentÚAssignmentStmtÚBlockÚCallExprÚClassDefÚContextÚDataclassTransformSpecÚ	DecoratorÚEllipsisExprÚ
ExpressionÚFuncDefÚFuncItemÚIfStmtÚJsonDictÚNameExprÚNodeÚPlaceholderNodeÚRefExprÚ	StatementÚSymbolTableNodeÚTempNodeÚ	TypeAliasÚTypeInfoÚTypeVarExprÚVar)ÚClassDefContextÚFunctionSigContextÚSemanticAnalyzerPluginInterface)Ú_get_callee_typeÚ_get_decorator_bool_argumentÚadd_attribute_to_classÚadd_method_to_classÚdeserialize_and_fixup_type)Úfind_dataclass_transform_specÚrequire_bool_literal_argument)Úmake_wildcard_trigger)Ústate)Úmap_type_from_supertypeÚtry_getting_literals_from_type)ÚAnyTypeÚCallableTypeÚFunctionLikeÚInstanceÚLiteralTypeÚNoneTypeÚ
ProperTypeÚSentinelValueÚ	TupleTypeÚTypeÚ	TypeOfAnyÚ	TypeVarIdÚTypeVarTypeÚUninhabitedTypeÚ	UnionTypeÚget_proper_type)Úfill_typevars)ÚTypeCheckerÚ	dataclasszdataclasses.dataclassr   Údataclass_makers)údataclasses.Fieldzdataclasses.fieldÚDATACLASS_FIELD_SPECIFIERSÚ_DTÚSELF_TVAR_NAMETF)Ú
eq_defaultÚorder_defaultÚkw_only_defaultÚfrozen_defaultÚfield_specifiersÚ_TRANSFORM_SPEC_FOR_DATACLASSESz__mypy-replaceÚ_INTERNAL_REPLACE_SYM_NAMEz__mypy-post_initÚ_INTERNAL_POST_INIT_SYM_NAMEc                  óž   — e Zd Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d	d„Z	 	 	 	 	 	 d
d„Zdd„Zdd„Zdd„Ze	 	 	 	 	 	 	 	 dd„«       Z	dd„Z
y)ÚDataclassAttributec                ó¬   — || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        || _
        || _        y ©N)ÚnameÚaliasÚ
is_in_initÚis_init_varÚhas_defaultÚlineÚcolumnÚtypeÚinfoÚkw_onlyÚis_neither_frozen_nor_nonfrozenÚ_api)Úselfr`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   Úapis                ú]/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/plugins/dataclasses.pyÚ__init__zDataclassAttribute.__init__d   s[   € ð ˆŒ	ØˆŒ
Ø$ˆŒØ&ˆÔØ&ˆÔØˆŒ	ØˆŒØˆŒ	ØˆŒ	ØˆŒØ/NˆÔ,Øˆ�	ó    c               óÎ  — |dk(  rct         }| j                  r| j                  rt        }ns| j                  r| j                  st        }nT| j                  sH| j                  r<t
        }n5|dk(  r%| j                  r| j                  st        nt        }n|dk(  rt         }t        | j                  |«      | j                  |«      | j                  rt        «       ¬«      S d ¬«      S )Nro   ÚreplaceÚ__post_init__)ÚvariableÚtype_annotationÚinitializerÚkind)r   ri   rd   r   r   r   rc   r   Úto_varr
   r   )rl   Úcurrent_infoÚofÚarg_kinds       rn   Úto_argumentzDataclassAttribute.to_argument€   sÆ   € ð �ÒÜˆHØ�|Š| × 0Ò 0Ü(‘Ø—’ d×&6Ò&6Ü$‘Ø—\’\ d×&6Ò&6Ü"‘Ø�9Š_Ø$(×$4Ò$4¸T×=MÒ=M•yÔS`‰HØ�?Ò"ô ˆHÜØ—[‘[ Ó.Ø ×,Ñ,¨\Ó:Ø*.×*:Ò*:œ›Øô	
ð 	
ð AEØô	
ð 	
rp   c                ó„  — | j                   �’| j                  j                  �|t        j                  | j
                  j                  j                  «      5  t        | j                   | j                  j                  j                  t        |«      i«      cd d d «       S | j                   S # 1 sw Y   | j                   S xY wr_   )rg   rh   Ú	self_typer9   Ústrict_optional_setrk   ÚoptionsÚstrict_optionalr
   ÚidrL   ©rl   ry   s     rn   r
   zDataclassAttribute.expand_type¢   s“   € Ø�9‰9Ð  T§Y¡Y×%8Ñ%8Ð%Dô
 ×*Ñ*¨4¯9©9×+<Ñ+<×+LÑ+LÓMñ Ü"Ø—I‘I §	¡	× 3Ñ 3× 6Ñ 6¼ÀlÓ8SÐTó÷ñ ð �y‰yÐ÷	ð �y‰yÐús   Á?B+Â+B?c                óh   — t        | j                  xs | j                  | j                  |«      «      S r_   )r-   ra   r`   r
   rƒ   s     rn   rx   zDataclassAttribute.to_var®   s'   € Ü�4—:‘:Ò* §¡¨D×,<Ñ,<¸\Ó,JÓKÐKrp   c                ó  — | j                   sJ ‚| j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                   j                  «       | j                  | j                  dœ
S )N)
r`   ra   rb   rc   rd   re   rf   rg   ri   rj   )rg   r`   ra   rb   rc   rd   re   rf   Ú	serializeri   rj   )rl   s    rn   r†   zDataclassAttribute.serialize±   sm   € Ø�yŠyÐˆyà—I‘IØ—Z‘ZØŸ/™/Ø×+Ñ+Ø×+Ñ+Ø—I‘IØ—k‘kØ—I‘I×'Ñ'Ó)Ø—|‘|Ø/3×/SÑ/Sñ
ð 	
rp   c                óv   — |j                  «       }t        |j                  d«      |«      } | d||dœ|¤d|i¤ŽS )Nrg   )rg   rh   rm   © )Úcopyr5   Úpop)Úclsrh   Údatarm   Útyps        rn   ÚdeserializezDataclassAttribute.deserializeÀ   s>   € ð �y‰y‹{ˆÜ(¨¯©°&Ó)9¸3Ó?ˆÙÐ8˜ $Ñ8¨$Ñ8°CÒ8Ð8rp   c                óú   — | j                   �ct        j                  | j                  j                  j
                  «      5  t        | j                   || j                  «      | _         ddd«       yy# 1 sw Y   yxY w)zoExpands type vars in the context of a subtype when an attribute is inherited
        from a generic super type.N)rg   r9   r   rk   r€   r�   r:   rh   )rl   Úsub_types     rn   Úexpand_typevar_from_subtypez.DataclassAttribute.expand_typevar_from_subtypeÈ   sh   € ð �9‰9Ð Ü×*Ñ*¨4¯9©9×+<Ñ+<×+LÑ+LÓMñ TÜ3°D·I±I¸xÈÏÉÓS�”	÷Tð Tð !÷Tð Tús   Á 'A1Á1A:N)r`   Ústrra   z
str | Nonerb   Úboolrc   r“   rd   r“   re   Úintrf   r”   rg   úType | Nonerh   r+   ri   r“   rj   r“   rm   r0   ÚreturnÚNone)ry   r+   rz   z/Literal['__init__', 'replace', '__post_init__']r–   r   )ry   r+   r–   r•   )ry   r+   r–   r-   )r–   r"   )rh   r+   rŒ   r"   rm   r0   r–   r]   )r�   r+   r–   r—   )Ú__name__Ú
__module__Ú__qualname__ro   r|   r
   rx   r†   ÚclassmethodrŽ   r‘   rˆ   rp   rn   r]   r]   c   sï   „ ðàðð ðð ð	ð
 ðð ðð ðð ðð ðð ðð ðð *.ðð -ðð 
óð8 
Ø$ð 
Ø-\ð 
à	ó 
óD
óLó
ð ð9Øð9Ø#+ð9Ø2Qð9à	ò9ó ð9ôTrp   r]   c                  óÚ   — e Zd 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dd
„Zdd„Zdd„Z	 d	 	 	 	 	 dd„Zdd„Zdd„Zd d„Zd!d„Zd"d„Z	 	 	 	 	 	 	 	 d#d„Zy)$ÚDataclassTransformera  Implement the behavior of @dataclass.

    Note that this may be executed multiple times on the same class, so
    everything here must be idempotent.

    This runs after the main semantic analysis pass, so you can assume that
    there are no placeholders.
    c                ó<   — || _         || _        || _        || _        y r_   )Ú_clsÚ_reasonÚ_specrk   )rl   r‹   ÚreasonÚspecrm   s        rn   ro   zDataclassTransformer.__init__Ú   s    € ð ˆŒ	ØˆŒØˆŒ
Øˆ�	rp   c                óà  — | j                   j                  }| j                  «       }|€y|D ]  }|j                  �Œ y | j	                  dd«      | j	                  d| j
                  j                  «      | j	                  d| j
                  j                  «      | j	                  d| j
                  j                  «      | j	                  dd«      | j	                  d	d«      d
œ}|d   �rzd|j                  vs|j                  d   j                  �rR|�rO|D �cg c]<  }|j                  r.| j                  |j                  «      s|j                  |d¬«      ‘Œ> }}|j                  rÐ|D ]!  }|j                  t         k(  sŒt"        |_        Œ# |D �ch c]  }|j$                  j&                  ’Œ }}d}||v r
|dz  }||v rŒ
d}	|	|v r
|	dz  }	|	|v rŒ
t)        t+        |«      t-        t.        j0                  «      dt2        «      g|¢t)        t+        |	«      t-        t.        j0                  «      dt4        «      ‘}t7        | j8                  | j                   d|t;        «       ¬«       |d   r|j=                  d«      �|d   rz| j8                  j?                  d«      }
tA        tB        |jD                  dz   tB        z   g |
t-        t.        jF                  «      «      }tI        tJ        |«      |j                  tB        <   |d   �r]|d   s&| j8                  jM                  d| jN                  «       dD �],  }| j8                  j?                  d«      }
tQ        tB        |jD                  › dtB        › �tS        d|jD                  › d|› �¬«      g |
t-        t.        jF                  «      ¬«      }| j8                  j?                  d«      }t)        t+        d|«      |dt         «      g}|j=                  |«      }|�D|j                  s8|jT                  sJ ‚| j8                  jM                  d|› d�|jT                  «       t7        | j8                  | j                   |||||¬«       �Œ/ g }|jV                  dd D ]=  }|jX                  j=                  d«      }|sŒ!t[        |«      rŒ-|j]                  |«       Œ? |d   rSt_        d „ |D «       «      r| j8                  jM                  d!|«       | ja                  |d¬"«       | jc                  |«       n?t_        d#„ |D «       «      r| j8                  jM                  d$|«       | ja                  |«       |d   r| je                  ||«       | jg                  ||«       |d	   rÄd%|j                  vs|j                  d%   j                  r�| j8                  j?                  d&«      }|D �cg c]0  }|j                  r"|jh                  stk        |j&                  |«      ‘Œ2 }}tm        || j8                  j?                  d'«      «      }to        | j8                  | j                   d%|«       | jq                  «        | js                  |«       | j8                  jt                  jv                  d(k\  r| jy                  |«       d)|j                  v r| j{                  |«       |D �cg c]  }|j}                  «       ‘Œ c}|d   d*œ|jX                  d<   yc c}w c c}w c c}w c c}w )+z¨Apply all the necessary transformations to the underlying
        dataclass so as to ensure it is fully type checked according
        to the rules in PEP 557.
        NFÚinitTÚeqÚorderÚfrozenÚslotsÚ
match_args)r¥   r¦   r§   r¨   r©   rª   ro   ©rz   Úgenerated_argsÚ_Úgenerated_kwargs©ÚargsÚreturn_typeÚ__eq__zbuiltins.objectú.z$"eq" must be True if "order" is True)Ú__lt__Ú__gt__Ú__le__Ú__ge__éÿÿÿÿ)Ú	namespace)r‚   ÚvaluesÚupper_boundÚdefaultúbuiltins.boolÚotherzYou may not have a custom "z" method when "order" is True)r°   r±   r~   Útvar_defé   rN   c              3  ó(   K  — | ]
  }|d     –— Œ y­w©r¨   Nrˆ   ©Ú.0Úparents     rn   ú	<genexpr>z1DataclassTransformer.transform.<locals>.<genexpr>i  s   è ø€ ÒQ¨F�v˜hÑ'Ô'ÑQùs   ‚z;Frozen dataclass cannot inherit from a non-frozen dataclass)Úsettablec              3  ó&   K  — | ]	  }|d    –— Œ y­wrÂ   rˆ   rÃ   s     rn   rÆ   z1DataclassTransformer.transform.<locals>.<genexpr>n  s   è ø€ ÒM¨�6˜(Õ#ÑMùs   ‚z;Non-frozen dataclass cannot inherit from a frozen dataclassÚ__match_args__úbuiltins.strúbuiltins.tuple)é   é   rs   )Ú
attributesr¨   )?rŸ   rh   Úcollect_attributesrg   Ú_get_bool_argr¡   rT   rU   rW   ÚnamesÚplugin_generatedrb   Ú_is_kw_only_typer|   Úfallback_to_anyrw   r   r   rt   r`   r   r-   r<   rF   Úexplicitr   r   r4   rk   rA   ÚgetÚ
named_typer,   rS   ÚfullnameÚfrom_omitted_genericsr(   r   Úfailr    rH   rG   ÚnodeÚmroÚmetadataÚ)_has_direct_dataclass_transform_metaclassÚappendÚanyÚ_propertize_callablesÚ_freezeÚ	add_slotsÚreset_init_only_varsri   r@   rD   r3   Ú%_add_dataclass_fields_magic_attributeÚ_add_internal_replace_methodr€   Úpython_versionÚ_add_dunder_replaceÚ_add_internal_post_init_methodr†   )rl   rh   rÎ   ÚattrÚdecorator_argumentsr°   ÚargÚexisting_args_namesÚgen_args_nameÚgen_kwargs_nameÚobj_typeÚself_tvar_exprÚmethod_nameÚorder_tvar_defÚorder_return_typeÚ
order_argsÚexisting_methodÚparent_decorator_argumentsrÅ   Úparent_argsÚstr_typeÚliteralsÚmatch_args_types                          rn   Ú	transformzDataclassTransformer.transformè   sV  € ð
 �y‰y�~‰~ˆØ×,Ñ,Ó.ˆ
ØÐàØò 	ˆDØ�y‰yÑ Ùð	ð ×&Ñ& v¨tÓ4Ø×$Ñ$ T¨4¯:©:×+@Ñ+@ÓAØ×'Ñ'¨°·±×1IÑ1IÓJØ×(Ñ(¨°4·:±:×3LÑ3LÓMØ×'Ñ'¨°Ó7Ø×,Ñ,¨\¸4Ó@ñ
Ðð   Ó'Ø 4§:¡:Ñ-°·±¸JÑ1G×1XÓ1XÚð 'öàØ—?’?¨4×+@Ñ+@ÀÇÁÔ+Kð × Ñ  ¨*Ð Õ5ðˆDð ð ×#Ò#ð  ò +�CØ—x‘x¤7Ó*Ü#*˜�ð+ð EIÖ&I¸S s§|¡|×'8Ó'8Ð&IÐ#Ð&IØ 0�Ø#Ð':Ñ:Ø! SÑ(�Mð $Ð':Ò:à"4�Ø%Ð)<Ñ<Ø# sÑ*�Oð &Ð)<Ò<ô œS Ó/´¼×9KÑ9KÓ1LÈdÔT\Ó]ðàðô œS Ó1´7¼9×;MÑ;MÓ3NÐPTÔV_Ó`ð�ô  Ø—	‘	˜4Ÿ9™9 j°tÌËõð
   Ò%Ø—‘˜Ó"Ð*Ø" 7Ò+ð —y‘y×+Ñ+Ð,=Ó>ˆHÜ(ÜØ—‘ Ñ#¤nÑ4ØØÜœ	×7Ñ7Ó8óˆNô *9¼¸~Ó)NˆD�J‰J”~Ñ&ð ˜wÓ'Ø& tÒ,Ø—	‘	—‘ÐEÀtÇ|Á|ÔTàGó !�ð  Ÿ9™9×/Ñ/Ð0AÓB�Ü!,Ü"Ø—}‘}�o Q¤~Ð&6Ð7Ü  °$·-±-°ÀÀ+ÀÐ/OÔPØØ (Ü#¤I×$CÑ$CÓDô"�ð %)§I¡I×$8Ñ$8¸Ó$IÐ!äœS ¨.Ó9¸>È4ÔQXÓYð�
ð #'§(¡(¨;Ó"7�Ø"Ð.°×7WÒ7WØ*×/Ò/Ð/Ð/Ø—I‘I—N‘NØ5°k°]ÐB_Ð`Ø'×,Ñ,ôô
 $Ø—I‘IØ—I‘IØØ#Ø 1Ø,Ø+÷ð3!ðF &(Ð"Ø—h‘h˜q �nò 	?ˆFØ Ÿ/™/×-Ñ-¨kÓ:ˆKò
 Ô#LÈVÕ#TØ*×1Ñ1°+Õ>ð	?ð ˜xÒ(ÜÑQÐ6PÔQÔQØ—	‘	—‘Ð\Ð^bÔcØ×&Ñ& z¸EÐ&ÔBØ�L‰L˜Õ$äÑMÐ2LÔMÔMØ—	‘	—‘Ð\Ð^bÔcØ×&Ñ& zÔ2à˜wÒ'Ø�N‰N˜4 Ô,à×!Ñ! $¨
Ô3à˜|Ò,Ø D§J¡JÑ.°$·*±*Ð=MÑ2N×2_Ò2_à—y‘y×+Ñ+¨NÓ;ˆHð 'ö$àØ—?’?¨4¯<ª<ô ˜DŸI™I xÕ0ð$ˆHð $ô
 (¨°$·)±)×2FÑ2FÐGWÓ2XÓYˆOÜ" 4§9¡9¨d¯i©iÐ9IÈ?Ô[à×2Ñ2Ô4Ø×)Ñ)¨*Ô5Ø�9‰9×Ñ×+Ñ+¨wÒ6Ø×$Ñ$ ZÔ0à˜dŸj™jÑ(Ø×/Ñ/°
Ô;ð 9CÖC°˜4Ÿ>™>Õ+ÒCØ)¨(Ñ3ñ&
ˆ�‰�kÑ"ð
 ùòSùò 'JùòL$ùò" Ds   ÄA[Æ[!Ö85[&Ú.[+c           	     ó  — |D �cg c]5  }|j                   r'|j                  | j                  j                  d¬«      ‘Œ7 }}t	        | j
                  | j                  d|t        | j                  j                  «      ¬«       yc c}w )zbAdd a `__replace__` method to the class, which is used to replace attributes in the `copy` module.rr   r«   Ú__replace__r¯   N)rb   r|   rŸ   rh   r4   rk   rL   )rl   rÎ   rê   r°   s       rn   rè   z(DataclassTransformer._add_dunder_replace’  ss   € ð #ö
àØ�Šð ×Ñ˜TŸY™YŸ^™^°	ÐÕ:ð
ˆð 
ô
 	Ø�I‰IØ�I‰IØØÜ% d§i¡i§n¡nÓ5ö	
ùò
s   …:Bc                óÖ   — t        | j                  | j                  t        |D �cg c])  }|j	                  | j                  j
                  d¬«      ‘Œ+ c}t        «       d¬«       yc c}w )z·
        Stashes the signature of 'dataclasses.replace(...)' for this specific dataclass
        to be used later whenever 'dataclasses.replace' is called for this dataclass.
        rr   r«   T)r°   r±   Úis_staticmethodN)r4   rk   rŸ   rZ   r|   rh   rA   ©rl   rÎ   rê   s      rn   ræ   z1DataclassTransformer._add_internal_replace_method¡  sQ   € ô
 	Ø�I‰IØ�I‰IÜ&ØMWÖXÀT�$×"Ñ" 4§9¡9§>¡>°iÐ"Õ@ÒXÜ ›
Ø ö	
ùò Ys   ¥.A&c                óì   — t        | j                  | j                  t        |D �cg c]5  }|j                  r'|j                  | j                  j                  d¬«      ‘Œ7 c}t        «       ¬«       y c c}w )Nrs   r«   r¯   )r4   rk   rŸ   r[   rc   r|   rh   rA   r  s      rn   ré   z3DataclassTransformer._add_internal_post_init_method¯  s`   € ÜØ�I‰IØ�I‰IÜ(ð 'öàØ×#Ò#ð × Ñ  §¡§¡°OÐ ÕDòô
 !›
ö
	
ùòs   ¥:A1c                ón  — |j                   j                  d«      }|d uxr |j                  }|�L|sJ| j                  j	                  dj                  | j                  j                  «      | j                  «       y t        d„ |j                  dd D «       «      ry |D �ch c]  }|j                  ’Œ }}||_
        t        |D �cg c]  }| j                  j                  d«      ‘Œ c}| j                  j                  d«      «      }t        | j                  | j                  d||¬«       y c c}w c c}w )	NÚ	__slots__z;"{}" both defines "__slots__" and is used with "slots=True"c              3  ó8   K  — | ]  }|j                   d u –— Œ y ­wr_   )r©   )rÄ   Úps     rn   rÆ   z1DataclassTransformer.add_slots.<locals>.<genexpr>Ì  s   è ø€ Ò7 1ˆq�w‰w˜$ŒÑ7ùs   ‚rÀ   r¸   rÊ   rË   )Úoverwrite_existing)rÑ   rÖ   rÒ   rk   rÚ   ÚformatrŸ   r`   rà   rÜ   r©   rD   r×   r3   )	rl   rh   rÎ   Úexisting_slotsÚslots_defined_by_pluginrê   Úgenerated_slotsr­   Ú
slots_types	            rn   rã   zDataclassTransformer.add_slots¼  s  € ØŸ™Ÿ™¨Ó4ˆØ"0¸Ð"<Ò"`À×A`ÑA`ÐØÐ%Ñ.Eð
 �I‰I�N‰NØM×TÑTØ—I‘I—N‘Nóð —	‘	ô	ð äÑ7¨¯©°°2¨Ô7Ô7ð à1;Ö<¨˜4Ÿ9›9Ð<ˆÐ<Ø$ˆŒ
ô Ø;JÖK°aˆT�Y‰Y×!Ñ! .Õ1ÒKØ�I‰I× Ñ Ð!1Ó2ó
ˆ
ô 	Ø�I‰IØ�I‰IØØØ6ö	
ùò =ùò
 Ls   Â D-Ã"D2c                ó°  — |D ]Ñ  }|j                   sŒ|j                  |j                  v r|j                  |j                  = n|j                   sJ ‚|j                  j                  j
                  D ]a  }t        |t        «      sŒ|j                  sŒ!|j                  d   }t        |t        «      sŒA|j                  |j                  k(  sŒ[d|_        Œc ŒÓ y)zERemove init-only vars from the class and reset init var declarations.r   N)rc   r`   rÑ   ÚdefnÚdefsÚbodyÚ
isinstancer   Úunanalyzed_typeÚlvaluesr#   rÛ   )rl   rh   rÎ   rê   ÚstmtÚlvalues         rn   rä   z)DataclassTransformer.reset_init_only_varsá  s©   € àò 	/ˆDØ×ÓØ—9‘9 §
¡
Ñ*ØŸ
™
 4§9¡9Ñ-ð  ×+Ò+Ð+Ð+Ø ŸI™IŸN™N×/Ñ/ò /�DÜ! $¬Õ7¸D×<PÓ<PØ!%§¡¨a¡˜Ü% f¬hÕ7¸F¿K¹KÈ4Ï9É9Ó<Tð +/˜F�Kñ/ñ	/rp   c              #  ó  K  — |j                   D ](  }|j                  rŒ| j                  |«      E d {  –—†  Œ* |j                  �;|j                  j                  s$| j                  |j                  «      E d {  –—†  y y y 7 ŒN7 Œ	­wr_   )r  Úis_unreachableÚ%_get_assignment_statements_from_blockÚ	else_body)rl   r  r  s      rn   Ú,_get_assignment_statements_from_if_statementzADataclassTransformer._get_assignment_statements_from_if_statementò  s}   è ø€ ð —I‘Iò 	LˆDØ×&Ó&Ø×EÑEÀdÓK×KÑKð	Lð �>‰>Ð%¨d¯n©n×.KÒ.KØ×AÑAÀ$Ç.Á.ÓQ×QÑQð /LÐ%ð LøàQús'   ‚BŸB³B´ABÁ:BÁ;BÂBc              #  ó°   K  — |j                   D ]A  }t        |t        «      r|–— Œt        |t        «      sŒ)| j	                  |«      E d {  –—†  ŒC y 7 Œ­wr_   )r  r  r   r!   r  )rl   Úblockr  s      rn   r  z:DataclassTransformer._get_assignment_statements_from_blockû  sN   è ø€ Ø—J‘Jò 	SˆDÜ˜$¤Ô/Ø“
Ü˜D¤&Õ)Ø×LÑLÈTÓR×RÑRñ		Sð Sús   ‚5A¸AÁAÁAc                ó0  — | j                   }i }t        |j                  j                  dd «      D �]1  }d|j                  v rd|j                  vr yd|j                  vrŒ1| j
                  j                  t        |j                  «      «       |j                  d   d   D ]¾  }|d   }t        j                  ||| j
                  «      }|j                  |j                  «       |||<   |j                  j                  j                  |«      }|sŒq|j                  sŒ~t        |j                  t         «      rŒ™| j
                  j#                  d|j                  «       ŒÀ �Œ4 t%        «       }| j'                  d	| j(                  j*                  «      }	| j-                  |j.                  «      D �]�  }
|
j0                  sŒ|
j2                  d
   }t        |t4        «      sŒ1|j                  j                  j                  |j6                  «      }|€Œc|j                  }t        |t8        «      rJ ‚t        |t:        «      r| j
                  j#                  d|«       Œ®t        |t<        «      rŒ¿t        |t         «      sJ |«       ‚|j>                  rŒãd}tA        |jB                  «      }t        |tD        «      r/|jB                  j                  dk(  rd}|jF                  d
   |_!        | jI                  |«      rd}	| jK                  |
jL                  «      \  }}|j                  d«      }|€| jO                  |
jL                  «      }n$tQ        | j
                  jS                  |«      «      }d}|rd|v xs
 d|v xs d|v }nt        |
jL                  tT        «      sd}|s| j(                  tV        u rd|_,        |	}|j                  d	«      }|�F| j
                  jS                  |«      }|�|}n&| j
                  j#                  d|
jL                  «       |jZ                  r<|j\                  r0|r'| j
                  j#                  d|
jL                  «       nd|_/        |jB                  €ƒ|jZ                  rw|j`                  rk| j
                  jc                  |
jL                  d¬«      }|r||_!        n:| j
                  j#                  d|
«       te        tf        jh                  «      |_!        d}d|v rd| j
                  jk                  |d   «      }|€D| j
                  j#                  tl        jn                  |
jL                  tp        jr                  ¬«       |ju                  |j6                  «       tw        jx                  | j
                  jz                  j|                  «      5  | j                  ||j6                  |
«      }ddd«       t        |j6                  |||||
j€                  |
j‚                  |j                  |t…        |j                  «      | j
                  ¬«      ||j6                  <   �Œ„ t‡        |j‰                  «       «      }|j‹                  d„ ¬«       d}d}|D �]  }|rq|jŒ                  re|jŽ                  sY|j�                  sM|}|j6                  |v r!t“        |j€                  |j‚                  ¬«      }| j
                  j#                  d|«       |xs |jŽ                  xr |jŒ                  }|rh| jI                  |jB                  «      rM|}|j6                  |v r!t“        |j€                  |j‚                  ¬«      }| j
                  j#                  d|«       |xs | jI                  |jB                  «      }�Œ  |S # 1 sw Y   �ŒËxY w)a@  Collect all attributes declared in the dataclass and its parents.

        All assignments of the form

          a: SomeType
          b: SomeOtherType = ...

        are collected.

        Return None if some dataclass base class hasn't been processed
        yet and thus we'll need to ask for another pass.
        rÀ   r¸   Údataclass_tagrN   NrÎ   r`   z?Dataclass attribute may only be overridden by another attributeri   r   zFType aliases inside dataclass definitions are not supported at runtimeFzdataclasses.InitVarTr¥   r¼   Údefault_factoryÚfactoryz,"kw_only" argument must be a boolean literalzInitVar cannot be final)Úis_finalzGNeed type argument for Final[...] with non-literal default in dataclassra   )Úcode)r`   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rm   c                ó   — | j                   S r_   )ri   )Úas    rn   ú<lambda>z9DataclassTransformer.collect_attributes.<locals>.<lambda>Ï  s
   €  Q§Y¡Y€ rp   )Úkey)re   rf   z>Attributes without a default cannot follow attributes with onez:There may not be more than one field with the KW_ONLY type)JrŸ   Úreversedrh   rÜ   rÝ   rk   Úadd_plugin_dependencyr8   rØ   r]   rŽ   r‘   rÑ   rÖ   rÛ   r  r-   rÚ   ÚsetrÐ   r¡   rV   r  r  Ú
new_syntaxr  r#   r`   r%   r*   r   Úis_classvarrK   rg   r?   r°   rÓ   Ú_collect_field_argsÚrvalueÚ+_get_default_init_value_for_field_specifierr“   Ú
parse_boolr)   rY   Úimplicitr!  Úfinal_unset_in_classÚfinal_set_in_initÚis_inferredÚanalyze_simple_literal_typer<   rF   Ú
from_errorÚparse_str_literalr	   Ú%DATACLASS_FIELD_ALIAS_MUST_BE_LITERALr   ÚLITERAL_REQÚaddr9   r   r€   r�   Ú_infer_dataclass_attr_init_typere   rf   rÞ   Úlistrº   Úsortrb   rd   ri   r   )rl   r‹   Úfound_attrsrh   rŒ   r`   rê   Úsym_nodeÚcurrent_attr_namesri   r  ÚlhsÚsymrÛ   rc   Ú	node_typeÚhas_field_callÚ
field_argsÚis_in_init_paramrb   rd   Ú
is_kw_onlyÚfield_kw_only_paramÚvaluer�   ra   Ú	init_typeÚ	all_attrsÚfound_defaultÚfound_kw_sentinelÚcontexts                                  rn   rÏ   z'DataclassTransformer.collect_attributes  st  € ð �i‰iˆð 68ˆÜ˜SŸX™XŸ\™\¨!¨BÐ/Ó0ó 	ˆDØ $§-¡-Ñ/°KÀtÇ}Á}Ñ4TáØ $§-¡-Ñ/Øð �I‰I×+Ñ+Ô,AÀ$Ç-Á-Ó,PÔQàŸ™ kÑ2°<Ñ@ò �Ø  ™L�ä)×5Ñ5°d¸DÀ$Ç)Á)ÓL�ð ×0Ñ0°·±Ô:Ø$(�˜DÑ!àŸ8™8Ÿ>™>×-Ñ-¨dÓ3�Ú §£´jÀÇÁÔPSÕ6TØ—I‘I—N‘NØYØ Ÿ™õòð	ô8 (+£uÐØ×$Ñ$ Y°·
±
×0JÑ0JÓKˆØ×>Ñ>¸s¿x¹xÓHó S	ˆDð —?’?Øð —,‘,˜q‘/ˆCÜ˜c¤8Ô,Øà—(‘(—.‘.×$Ñ$ S§X¡XÓ.ˆCØˆ{àà—8‘8ˆDÜ! $¬Ô8Ð8Ð8ä˜$¤	Ô*Ø—	‘	—‘Ø]Øôð Ü˜$¤	Ô*ð ä˜d¤CÔ(Ð.¨$Ó.Ð(ð ×ÒØð  ˆKÜ'¨¯	©	Ó2ˆIä˜9¤hÔ/Ø—N‘N×+Ñ+Ð/DÒDà"�Ø%ŸN™N¨1Ñ-�”	à×$Ñ$ YÔ/Ø�à)-×)AÑ)AÀ$Ç+Á+Ó)NÑ&ˆN˜Jà)Ÿ~™~¨fÓ5ÐØÐ'Ø!×MÑMÈdÏkÉkÓZ‘
ä! $§)¡)×"6Ñ"6Ð7GÓ"HÓI�
àˆKñ à Ð+ò /Ø(¨JÐ6ò/ð ! JÐ.ñ	 ô   §¡¬XÔ6Ø"�á 4§:¡:Ô1PÑ#Pð  $�”à ˆJð #-§.¡.°Ó";ÐØ"Ð.ØŸ	™	×,Ñ,Ð-@ÓA�ØÐ$Ø!&‘Jà—I‘I—N‘NÐ#QÐSW×S^ÑS^Ô_ð �}Š} ×!:Ò!:ÙØ—I‘I—N‘NÐ#<¸d¿k¹kÕJà-1�DÔ*à�x‰xÐ D§M¢M°d×6FÒ6Fð —i‘i×;Ñ;¸D¿K¹KÐRVÐ;ÓW�ÙØ #�D•Ià—I‘I—N‘NØaØôô !(¬	×(<Ñ(<Ó =�D”IàˆEØ˜*Ñ$ØŸ	™	×3Ñ3°J¸wÑ4GÓH�Ø�=Ø—I‘I—N‘NÜ(×NÑNØŸ™Ü'×3Ñ3ð #ô ð ×"Ñ" 3§8¡8Ô,Ü×*Ñ*¨4¯9©9×+<Ñ+<×+LÑ+LÓMñ VØ ×@Ñ@ÀÀcÇhÁhÐPTÓU�	÷Vä$6Ø—X‘XØØ%Ø'Ø'Ø—Y‘YØ—{‘{ØØ—X‘XØ"Ü0YØ—H‘Hó1ð —I‘Iô%ˆK˜Ÿ™Ó!ðIS	ôj ˜×+Ñ+Ó-Ó.ˆ	Ø�‰Ñ.ˆÔ/ð
 ˆØ!ÐØó 	VˆDñ  §¢¸×9IÒ9IÐRV×R^ÒR^ð $'�Ø—9‘9Ð 2Ñ2Ü%¨4¯9©9¸T¿[¹[ÔI�GØ—	‘	—‘ØTÐV]ôð *ÒS¨d×.>Ñ.>Ò.RÀ4Ç?Á?ˆMÙ  T×%:Ñ%:¸4¿9¹9Ô%EØ�Ø—9‘9Ð 2Ñ2Ü%¨4¯9©9¸T¿[¹[ÔI�GØ—	‘	—‘ØPÐRYôð !2Ò U°T×5JÑ5JÈ4Ï9É9Ó5UÒð-	Vð. Ð÷eVñ Vús   Ö$^Þ^	c                óØ  — | j                   j                  }|D ]Ï  }|j                  rŒ|j                  j	                  |j
                  «      }|�2|j                  }t        |t        «      sŒT|j                  rŒad|_
        Œi|j                  |«      }||_        d|_
        |j                  dz   |j
                  z   |_        t        t        |«      |j                  |j
                  <   ŒÑ y)zaConverts all attributes to @property methods in order to
        emulate frozen classes.
        NTr³   )rŸ   rh   rj   rÑ   rÖ   r`   rÛ   r  r-   r!  Úis_propertyrx   rØ   Ú	_fullnamer(   r   )rl   rÎ   rh   rê   r>  Úvars         rn   râ   zDataclassTransformer._freezeï  s¾   € ð �y‰y�~‰~ˆØò 	BˆDð
 ×3Ò3Øà—z‘z—~‘~ d§i¡iÓ0ˆHØÐ#Ø—m‘m�Ü˜c¤3Õ'Ø—|’|Ø Ø&*�C•Oà—k‘k $Ó'�Ø�”Ø"&�”Ø $§¡°Ñ 3°c·h±hÑ >�”Ü'6´t¸SÓ'A�—
‘
˜3Ÿ8™8Ò$ñ)	Brp   c                ób  — | j                   j                  }|D ]”  }t        t        |j                  «      t
        «      sŒ'|j                  |«      }||_        d|_        ||_        |j                  dz   |j                  z   |_        t        t        |«      |j                  |j                  <   Œ– y)a  Converts all attributes with callable types to @property methods.

        This avoids the typechecker getting confused and thinking that
        `my_dataclass_instance.callable_attr(foo)` is going to receive a
        `self` argument (it is not).

        Tr³   N)rŸ   rh   r  rK   rg   r=   rx   rO  Úis_settable_propertyrØ   r`   rP  r(   r   rÑ   )rl   rÎ   rÇ   rh   rê   rQ  s         rn   rá   z*DataclassTransformer._propertize_callables
  s‹   € ð �y‰y�~‰~ˆØò 	BˆDÜœ/¨$¯)©)Ó4´lÕCØ—k‘k $Ó'�Ø�”Ø"&�”Ø+3�Ô(Ø $§¡°Ñ 3°c·h±hÑ >�”Ü'6´t¸SÓ'A�—
‘
˜3Ÿ8™8Ò$ñ	Brp   c                óø   — |€yt        |«      }t        |t        «      r3t        |j                  t        «      r|j                  j
                  dk(  S t        |t        «      sy|j                  j
                  dk(  S )z=Checks if the type of the node is the KW_ONLY sentinel value.Fzdataclasses.KW_ONLY)rK   r  r@   rH  rC   rØ   r?   rg   )rl   rÛ   rB  s      rn   rÓ   z%DataclassTransformer._is_kw_only_type  sd   € àˆ<ØÜ# DÓ)ˆ	Ü�i¤Ô-´*¸Y¿_¹_ÌmÔ2\à—?‘?×+Ñ+Ð/DÑDÐDÜ˜)¤XÔ.ØØ�~‰~×&Ñ&Ð*?Ñ?Ð?rp   c                ó.  — d}t        t        j                  «      }| j                  t        u r"| j
                  j                  d|g«      xs |}n|}| j
                  j                  d| j
                  j                  d«      |g«      }t        ||¬«      }| j                  j                  |_
        | j                  j                  j                  dz   |z   |_        d|_        t        t        |d¬«      | j                  j                  j                   |<   y )	NÚ__dataclass_fields__rP   zbuiltins.dictrÊ   )r`   rg   r³   T)rw   rÛ   rÒ   )r<   rF   rÕ   r¡   rY   rk   Únamed_type_or_noner×   r-   rŸ   rh   rØ   rP  r+  r(   r   rÑ   )rl   Ú	attr_nameÚany_typeÚ
field_typeÚ	attr_typerQ  s         rn   rå   z:DataclassTransformer._add_dataclass_fields_magic_attribute*  sÞ   € Ø*ˆ	Üœ9×-Ñ-Ó.ˆð �:‰:Ô8Ñ8ØŸ™×5Ñ5Ð6IÈHÈ:ÓVÒbÐZb‰Jà!ˆJØ—I‘I×(Ñ(Ø˜dŸi™i×2Ñ2°>ÓBÀJÐOó
ˆ	ô �y yÔ1ˆØ—9‘9—>‘>ˆŒØŸ	™	Ÿ™×/Ñ/°#Ñ5¸	ÑAˆŒØˆŒÜ*9Ü˜C°$ô+
ˆ�	‰	�‰×Ñ˜YÒ'rp   c                óô  — t        |t        «      råt        |j                  t        «      rË|j                  j                  | j
                  j                  v rŸi }t        |j                  |j                  |j                  «      D ]k  \  }}}|j                  «       sL|j                  d¬«      rd}n| j
                  t        urŒ?d}| j                  j                  ||«       di fc S |€J ‚|||<   Œm d|fS di fS )zÚReturns a tuple where the first value represents whether or not
        the expression is a call to dataclass.field and the second is a
        dictionary of the keyword arguments that field() was called with.
        T)Ústarz0Unpacking **kwargs in "field()" is not supportedz."field()" does not accept positional argumentsF)r  r   Úcalleer&   rØ   r¡   rX   ÚzipÚ	arg_namesr°   Ú	arg_kindsÚis_namedrY   rk   rÚ   )rl   Úexprr°   r`   rì   rw   Úmessages          rn   r,  z(DataclassTransformer._collect_field_argsB  så   € ô �tœXÔ&Ü˜4Ÿ;™;¬Ô0Ø—‘×$Ñ$¨¯
©
×(CÑ(CÑCð ˆDÜ#& t§~¡~°t·y±yÀ$Ç.Á.Ó#Qò !‘��c˜4Ø—}‘}”Ø—}‘}¨$�}Ô/ð #U™ØŸ™Ô+JÑJð
 !à"R˜Ø—I‘I—N‘N 7¨DÔ1Ø ˜8’OØÐ'Ð'Ð'Ø ��T’
ð%!ð& ˜�:ÐØ�bˆyÐrp   c                ó$  — t        | j                  t        «      r6t        t	        | j
                  | j                  | j                  «      ||«      S | j
                  j                  j                  |«      }|�t        | j                  |||«      S |S r_   )
r  r    r   r2   r.   rŸ   rk   ÚkeywordsrÖ   r7   )rl   r`   r¼   Ú
expressions       rn   rÐ   z"DataclassTransformer._get_bool_argd  sw   € ô �d—l‘l¤JÔ/Ü/Ü §	¡	¨4¯<©<¸¿¹ÓCÀTÈ7óð ð —Y‘Y×'Ñ'×+Ñ+¨DÓ1ˆ
ØÐ!Ü0°·±¸JÈÈgÓVÐVØˆrp   c                óÊ   — t        |t        «      syt        |«      }|€y|j                  d«      }|€yt	        |j
                  t        d«      }|�t        |«      dk7  ry|d   S )aX  
        Find a default value for the `init` parameter of the specifier being called. If the
        specifier's type signature includes an `init` parameter with a type of `Literal[True]` or
        `Literal[False]`, return the appropriate boolean value from the literal. Otherwise,
        fall back to the standard default of `True`.
        Tr¥   r½   rÀ   r   )r  r   r1   Úargument_by_namer;   r�   r“   Úlen)rl   ÚcallÚspecifier_typeÚ	parameterrú   s        rn   r.  z@DataclassTransformer._get_default_init_value_for_field_specifiers  sm   € ô ˜$¤Ô)Øä)¨$Ó/ˆØÐ!Øà"×3Ñ3°FÓ;ˆ	ØÐØä1°)·-±-ÄÀÓWˆØÐœs 8›}°Ò1Øà˜‰{Ðrp   c                ó8  — |j                   }|j                  r|S t        |j                   «      }t        |t        «      s|S |j                   j                  d«      }|�r:t        |j                  t        «      rì|j                   j                  d«      }|sJ ‚|j                   r+t        t        |j                   |j                   |«      «      }nt        t        j                  «      S t        |t        «      r7|j                  t        t        t        gk(  rt!        |j"                  d   |«      S | j$                  j'                  d|j                   j(                  › d�|«       |S | j$                  j'                  d|j                   j(                  › d�|«       |S )zvInfer __init__ argument type for an attribute.

        In particular, possibly use the signature of __set__.
        Ú__set__é   z(Unsupported signature for "__set__" in "ú"zUnsupported "__set__" in ")rg   r0  rK   r  r?   rÖ   rÛ   r   Úget_containing_type_infor:   r<   rF   Úunannotatedr=   ra  r   r   Ú	arg_typesrk   rÚ   r`   )	rl   rA  r`   rM  r¼   ÚtÚsetterÚ
super_infoÚsetter_types	            rn   r:  z4DataclassTransformer._infer_dataclass_attr_init_type‹  sH  € ð —(‘(ˆØ�<Š<ØˆNÜ˜CŸH™HÓ%ˆô ˜!œXÔ&ØˆNØ—‘—‘˜IÓ&ˆÚÜ˜&Ÿ+™+¤wÔ/ØŸV™V×<Ñ<¸YÓG�
Ù!Ð!�zØ—;’;Ü"1Ü/°·±¸Q¿V¹VÀZÓPó#‘Kô #¤9×#8Ñ#8Ó9Ð9Ü˜k¬<Ô8¸[×=RÑ=RÜÜÜðWò >ô
 3°;×3HÑ3HÈÑ3KÈQÓOÐOà—I‘I—N‘NØBÀ1Ç6Á6Ç;Á;À-ÈqÐQÐSZôð ˆð —	‘	—‘Ð!;¸A¿F¹F¿K¹K¸=ÈÐJÈGÔTàˆrp   N)
r‹   r   r¢   zExpression | Statementr£   r   rm   r0   r–   r—   )r–   r“   )rÎ   úlist[DataclassAttribute]r–   r—   )rh   r+   rÎ   ry  r–   r—   )r  r!   r–   úIterator[AssignmentStmt])r  r   r–   rz  )r–   zlist[DataclassAttribute] | None)T)rÎ   ry  rÇ   r“   r–   r—   )rÛ   r•   r–   r“   )r–   r—   )rc  r   r–   z"tuple[bool, dict[str, Expression]])r`   r’   r¼   r“   r–   r“   )rk  r   r–   r“   )rA  r(   r`   r’   rM  r   r–   r•   )r˜   r™   rš   Ú__doc__ro   rü   rè   ræ   ré   rã   rä   r  r  rÏ   râ   rá   rÓ   rå   r,  rÐ   r.  r:  rˆ   rp   rn   r�   r�   Ð   sð   „ ñðàðð
 'ðð %ðð -ðð 
óóhóT
ó
ó
ó#
óJ/ð"RØðRà	!óRóSókóZBð8 FJðBØ2ðBØ>BðBà	óBó(
@ó
ó0 óDóð0*Ø"ð*Ø*-ð*Ø8?ð*à	ô*rp   r�   c                ó"   — i | j                   d<   y )Nr  )rÝ   ©rh   s    rn   Úadd_dataclass_tagr~  ¸  s   € à%'€D‡M�M�/Ò"rp   c                óB   — t        | j                  j                  «       y)z¹Record that we have a dataclass in the main semantic analysis pass.

    The later pass implemented by DataclassTransformer will use this
    to detect dataclasses in base classes.
    N)r~  r‹   rh   ©Úctxs    rn   Údataclass_tag_callbackr‚  ½  s   € ô �c—g‘g—l‘lÕ#rp   c                ód  — t        d„ | j                  j                  j                  D «       «      r2| j                  j                  d| j                  j                  ¬«       yt        | j                  | j                  t        | j                  «      | j                  «      }|j                  «       S )zIHooks into the class typechecking process to add support for dataclasses.c              3  ó4   K  — | ]  }|j                   –— Œ y ­wr_   )Úis_named_tuple)rÄ   Úis     rn   rÆ   z1dataclass_class_maker_callback.<locals>.<genexpr>È  s   è ø€ Ò
6 ˆ1×ÕÑ
6ùs   ‚z"A NamedTuple cannot be a dataclassr€  T)
rà   r‹   rh   rÜ   rm   rÚ   r�   r¢   Ú_get_transform_specrü   )r�  Útransformers     rn   Údataclass_class_maker_callbackr‰  Æ  sx   € ä
Ñ
6 S§W¡W§\¡\×%5Ñ%5Ô
6Ô6Ø�‰�‰Ð9¸s¿w¹w¿|¹|ˆÔLØÜ&Ø�‰�—‘Ô0°·±Ó<¸c¿g¹gó€Kð × Ñ Ó"Ð"rp   c                óP   — t        | «      rt        S t        | «      }|€J d«       ‚|S )a³  Find the relevant transform parameters from the decorator/parent class/metaclass that
    triggered the dataclasses plugin.

    Although the resulting DataclassTransformSpec is based on the typing.dataclass_transform
    function, we also use it for traditional dataclasses.dataclass classes as well for simplicity.
    In those cases, we return a default spec rather than one based on a call to
    `typing.dataclass_transform`.
    z‚trying to find dataclass transform spec, but reason is neither dataclasses.dataclass nor decorated with typing.dataclass_transform)Ú_is_dataclasses_decoratorrY   r6   )r¢   r£   s     rn   r‡  r‡  Ñ  s;   € ô ! Ô(Ü.Ð.ä(¨Ó0€DØÐð ð	4óÐð €Krp   c                ó€   — t        | t        «      r| j                  } t        | t        «      r| j                  t
        v S y)NF)r  r   r^  r&   rØ   rO   )rÛ   s    rn   r‹  r‹  å  s2   € Ü�$œÔ!Ø�{‰{ˆÜ�$œÔ Ø�}‰}Ô 0Ð0Ð0Ørp   c                óf   — | j                   d uxr" | j                   j                  j                  d uS r_   )Údeclared_metaclassrg   Údataclass_transform_specr}  s    rn   rÞ   rÞ   í  s5   € à×Ñ tÐ+ò 	NØ×#Ñ#×(Ñ(×AÑAÈÐMðrp   c                óà  — t        |t        «      r>g }|j                  «       D ]'  }t        |«      }t	        | |||«      }|�|�||z  }Œ&d}Œ) |S t        |t
        «      r!t	        | t        |j                  «      ||«      S t        |t        «      r_|j                  j                  t        «      }|€y|j                  }t        |t        «      sJ ‚t        |t        «      sJ ‚t        ||«      gS y)a
  
    For a given type, determine what dataclasses it can be: for each class, return the field types.
    For generic classes, the field types are expanded.
    If the type contains Any or a non-dataclass, returns None; in the latter case, also reports an error.
    N)r  rJ   Úrelevant_itemsrK   Ú _get_expanded_dataclasses_fieldsrH   r»   r?   rg   Ú
get_methodrZ   rB   r=   r   )	r�  r�   Údisplay_typÚ
parent_typÚretÚitemÚ
item_typesÚreplace_symÚreplace_sigs	            rn   r’  r’  ô  sö   € ô �#”yÔ!Ø)+ˆØ×&Ñ&Ó(ò 	ˆDÜ" 4Ó(ˆDÜ9¸#¸tÀTÈ:ÓVˆJØˆ :Ð#9Ø�zÑ!‘à‘ð	ð ˆ
Ü	�CœÔ	%Ü/Ø” §¡Ó1°;À
ó
ð 	
ô 
�CœÔ	"Ø—h‘h×)Ñ)Ô*DÓEˆØÐØØ!×&Ñ&ˆÜ˜+¤zÔ2Ð2Ð2Ü˜+¤|Ô4Ð4Ð4Ü'¨°SÓ9Ð:Ð:àrp   c           
     ó~  — t        | d   j                  | d   j                  | d   j                  «      D ���ci c]  \  }}}|||f“Œ }}}}| dd D ]à  }t        |j                  |j                  |j                  «      D ���ci c]  \  }}}|||f“Œ }}}}g |j	                  «       ¢|j	                  «       ¢­D ]u  }|j                  |t        «       t        f«      \  }}|j                  |t        «       t        f«      \  }	}
t        ||	«      ||
cxk(  r	t        k(  r	n nt        nt        f||<   Œw Œâ | d   j                  t        |j	                  «       «      |j                  «       D ��cg c]  \  }}|‘Œ	 c}}|j                  «       D ��cg c]  \  }}|‘Œ	 c}}¬«      S c c}}}w c c}}}w c c}}w c c}}w )zX
    Produces the lowest bound of the 'replace' signatures of multiple dataclasses.
    r   rÀ   N)r`  rt  ra  )r_  r`  rt  ra  ÚkeysrÖ   rI   r   r   r   Úcopy_modifiedr;  rº   )Úsigsr`   r�   rw   r°   ÚsigÚsig_argsÚsig_typÚsig_kindÚsig2_typÚ	sig2_kindr­   s               rn   Ú_meet_replace_sigsr¥    s°  € ô  # 4¨¡7×#4Ñ#4°d¸1±g×6GÑ6GÈÈaÉ×IZÑIZÓ[÷ð áˆD�#�tð 	ˆs�DˆkÑð€Dò ð
 �A�Bˆxò ˆô $' s§}¡}°c·m±mÀSÇ]Á]Ó#S÷
ð 
á��c˜4ð �3˜�+Ñð
ˆò 
ð 5�d—i‘i“kÐ4 H§M¡M£OÑ4ò 	ˆDØ $§¡¨´Ó0AÄ=Ð/QÓ RÑˆG�XØ"*§,¡,¨t´oÓ6GÌÐ5WÓ"XÑˆH�iä˜7 HÓ-Ø!)¨YÔ!G¼-Õ!G•ÌYðˆD�ŠJñ	ðð �‰7× Ñ Ü�t—y‘y“{Ó#Ø%)§[¡[£]×3™6˜3 ’3Ó3Ø'+§{¡{£}×5™G˜A˜t’4Ó5ð !ó ð ùô%ùô
ùó 4ùÛ5s   ¹F%ÂF,
Å.F3ÆF9c           
     óì  — t        | j                  «      dk7  rJ| j                  j                  d| j                  j
                  › d�| j                  «       | j                  S t        | j                  d   «      dk7  r| j                  S | j                  d   d   }t        | j                  j                  |«      «      }t        || j                  j                  «      }t        | |||«      }|€| j                  S t        |«      }|j                  dg|j                  ¢t        g|j                   ¢|g|j"                  ¢|| j                  j$                  | j                  j
                  › d|› �¬«      S )	z‡
    Returns a signature for the 'dataclasses.replace' function that's dependent on the type
    of the first positional argument.
    rp  rq  z " has unexpected type annotationr   rÀ   Nz of )r`  ra  rt  Úret_typeÚfallbackr`   )rj  r°   rm   rÚ   Údefault_signaturer`   rM  rK   Úget_expression_typer   r€   r’  r¥  r�  r`  r   ra  rt  r¨  )r�  Úobj_argrð   Úinst_type_strÚreplace_sigsrš  s         rn   Úreplace_function_sig_callbackr®  6  sS  € ô
 ˆ3�8‰8ƒ}˜Òà�‰�‰�q˜×.Ñ.×3Ñ3Ð4Ð4TÐUÐWZ×WbÑWbÔcØ×$Ñ$Ð$ä
ˆ3�8‰8�A‰;Ó˜1ÒØ×$Ñ$Ð$à�h‰h�q‰k˜!‰n€GÜ˜sŸw™w×:Ñ:¸7ÓCÓD€HÜ$ X¨s¯w©w¯©Ó?€Mä3°C¸À8ÈXÓV€LØÐØ×$Ñ$Ð$Ü$ \Ó2€Kà×$Ñ$ØÐ0˜+×/Ñ/Ð0ÜÐ3˜[×2Ñ2Ð3ØÐ4˜k×3Ñ3Ð4ØØ×&Ñ&×/Ñ/Ø×%Ñ%×*Ñ*Ð+¨4°¨Ð?ð %ó ð rp   c                ó8   — t        | «      xr d| j                  v S )NrN   )r“   rÝ   r}  s    rn   Úis_processed_dataclassr°  V  s   € Ü�‹:Ò6˜+¨¯©Ð6Ð6rp   c           
     ój  — |j                   €y t        |j                   t        «      sJ ‚|j                  t        «      }|�|j                   €J ‚|j                   }t        |t
        «      sJ ‚t        |t        «      sJ ‚|j                  d¬«      }| j                  |j                   |ddddd|¬«       y )Nrs   )r`   rN   F)ÚoverrideÚoriginalr`   Úname_in_superÚ	supertypeÚoriginal_class_or_staticÚoverride_class_or_staticrÛ   )	rg   r  r>   r“  r[   rB   r=   r�  Úcheck_override)rm   r  rh   Úideal_sig_methodÚ	ideal_sigs        rn   Úcheck_post_initr»  Z  s¸   € Ø‡y�yÐØÜ�d—i‘i¤Ô.Ð.Ð.à—‘Ô'CÓDÐØÐ'Ð,<×,AÑ,AÐ,MÐMÐMØ ×%Ñ%€IÜ�i¤Ô,Ð,Ð,Ü�i¤Ô.Ð.Ð.Ø×'Ñ'¨_Ð'Ó=€Ià×ÑØ—‘ØØØ%ØØ!&Ø!&Øð õ 	rp   N)rh   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/   r�   rB   r”  rB   r•  rB   r–   zlist[CallableType] | None)rž  zlist[CallableType]r–   r=   )r�  r/   r–   r=   )rm   rM   r  r    rh   r+   r–   r—   )qr{  Ú
__future__r   Úcollections.abcr   Útypingr   r   r   Úmypyr   r	   Úmypy.expandtyper
   r   Ú	mypy.meetr   Ú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.pluginr.   r/   r0   Úmypy.plugins.commonr1   r2   r3   r4   r5   Úmypy.semanal_sharedr6   r7   Úmypy.server.triggerr8   Ú
mypy.stater9   Úmypy.typeopsr:   r;   Ú
mypy.typesr<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   Úmypy.typevarsrL   Úmypy.checkerrM   rO   Ú__annotations__rQ   rS   rY   rZ   r[   r]   r�   r~  r‚  r‰  r‡  r‹  rÞ   r’  r¥  r®  r°  r»  rˆ   rp   rn   ú<module>rÎ     st  ðÚ 3å "å $ß 0Ñ 0ç -ß @Ý  Ý *÷!÷ !÷ !÷ !÷ !÷ !÷ !÷ !ó !÷D ]Ñ \÷õ ÷ ]Ý 5Ý ß P÷÷ ÷ ÷ ó õ$ (áÝ(ð 'Ð(?Ð@Ð �%Ó @à$NÐ ˜EÓ Nð €�Ó Ù)?ØØØØØ/ô*Ð  ó ð %5Ð ˜EÓ 4Ø&8Ð ˜eÓ 8÷jTñ jT÷Zeñ eóP(ó
$ó#óó(óðØ	ðØ",ðØ;EðØS]ðàóóJó:ó@7ôrp   