Ë
    S>{ijæ  ã                  óÆ  — d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZ ddlmZ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,m-Z-m.Z.m/Z/m0Z0 dd
l1m2Z2 ddl3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9 ddl:m;Z; ddl<m=Z= ddl>m?Z? ddl@mAZA ddlBmCZC ddlDmEZE ddlFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZP ddlQmRZR ddlSmTZT ddlUmVZW ddlXmYZY ddlZm[Z[ dZ\dZ]dZ^dZ_dZ`dZadZbdZcd Zdh d!£Zeeed"hz
  Zf e[eW«      Zgd#Zhd$ZVdKd%„Zi G d&„ d'e7«      Zj G d(„ d)«      ZkdLd*„Zl G d+„ d,«      Zm G d-„ d.«      Zn G d/„ d0«      Zo G d1„ d2eC«      Zp G d3„ d4«      ZqdMd5„Zr ed6d7d8«      Zs ed9d:d8«      Zt ed;d<d8«      Zu ed=d>d8«      Zv ed?d@d8«      Zw ed?dAd8«      Zx ed?dBd8«      ZydNdC„ZzdOdD„Z{dPdE„Z|	 	 	 	 	 	 	 	 dQdF„Z}dPdG„Z~dRdH„Z	 	 	 dS	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dTdI„Z€dUdJ„Z�y)Vz^This module includes classes and functions designed specifically for use with the mypy plugin.é    )ÚannotationsN)ÚIterator)ÚConfigParser)ÚAnyÚCallable)Ú	ErrorCode)Úexpand_typeÚexpand_type_by_instance) Ú	ARG_NAMEDÚARG_NAMED_OPTÚARG_OPTÚARG_POSÚ	ARG_STAR2Ú	INVARIANTÚMDEFÚArgumentÚAssignmentStmtÚBlockÚCallExprÚClassDefÚContextÚ	DecoratorÚDictExprÚEllipsisExprÚ
ExpressionÚFuncDefÚIfStmtÚJsonDictÚ
MemberExprÚNameExprÚPassStmtÚPlaceholderNodeÚRefExprÚ	StatementÚStrExprÚSymbolTableNodeÚTempNodeÚ	TypeAliasÚTypeInfoÚVar)ÚOptions)ÚCheckerPluginInterfaceÚClassDefContextÚMethodContextÚPluginÚReportConfigContextÚSemanticAnalyzerPluginInterface)Údeserialize_and_fixup_type)Úset_callable_name)Úmake_wildcard_trigger)Ústate)ÚTypeTranslator)Úmap_type_from_supertype)
ÚAnyTypeÚCallableTypeÚInstanceÚNoneTypeÚTypeÚ	TypeOfAnyÚTypeTypeÚTypeVarTypeÚ	UnionTypeÚget_proper_type)Úfill_typevars)Úget_unique_redefinition_name)Ú__version__)Ú_fields)Úparse_mypy_versionúpydantic-mypyzpydantic-mypy-metadatazpydantic.main.BaseModelz#pydantic_settings.main.BaseSettingszpydantic.root_model.RootModelz5pydantic._internal._model_construction.ModelMetaclasszpydantic.fields.Fieldzpydantic.dataclasses.dataclassú.pydantic.functional_validators.model_validator>   ú*pydantic.functional_serializers.serializerú.pydantic.deprecated.class_validators.validatorú.pydantic.functional_validators.field_validatorú3pydantic.deprecated.class_validators.root_validatorrH   ú0pydantic.functional_serializers.model_serializerrM   Úbuiltinsé   c                ó   — t         S )a!  `version` is the mypy version string.

    We might want to use this to print a warning if the mypy version being used is
    newer, or especially older, than we expect (or need).

    Args:
        version: The mypy version string.

    Return:
        The Pydantic mypy plugin type.
    )ÚPydanticPlugin)Úversions    úK/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pydantic/mypy.pyÚpluginrT   m   s
   € ô Ðó    c                  óT   ‡ — e Zd ZdZd	ˆ fd„Zd
d„Zd
d„Zdd„Zdd„Zdd„Z	dd„Z
ˆ xZS )rQ   zThe Pydantic mypy plugin.c                ó‚   •— t        |«      | _        | j                  j                  «       | _        t        ‰| �  |«       y ©N)ÚPydanticPluginConfigÚplugin_configÚto_dataÚ_plugin_dataÚsuperÚ__init__)ÚselfÚoptionsÚ	__class__s     €rS   r^   zPydanticPlugin.__init__   s4   ø€ Ü1°'Ó:ˆÔØ ×.Ñ.×6Ñ6Ó8ˆÔÜ‰Ñ˜Õ!rU   c                ó´   — | j                  |«      }|rEt        |j                  t        «      r+|j                  j	                  t
        «      r| j                  S y)zUpdate Pydantic model class.N)Úlookup_fully_qualifiedÚ
isinstanceÚnoder)   Úhas_baseÚBASEMODEL_FULLNAMEÚ$_pydantic_model_class_maker_callback)r_   ÚfullnameÚsyms      rS   Úget_base_class_hookz"PydanticPlugin.get_base_class_hook„   sD   € à×)Ñ)¨(Ó3ˆÙ”:˜cŸh™h¬Ô1à�x‰x× Ñ Ô!3Ô4Ø×@Ñ@Ð@ØrU   c                ó.   — |t         k(  r| j                  S y)z,Update Pydantic `ModelMetaclass` definition.N)ÚMODEL_METACLASS_FULLNAMEÚ)_pydantic_model_metaclass_marker_callback©r_   ri   s     rS   Úget_metaclass_hookz!PydanticPlugin.get_metaclass_hook�   s   € àÔ/Ò/Ø×AÑAÐAØrU   c                ó2   — |j                  d«      rt        S y)z-Adjust return type of `from_orm` method call.z	.from_ormN)ÚendswithÚfrom_attributes_callbackro   s     rS   Úget_method_hookzPydanticPlugin.get_method_hook“   s   € à×Ñ˜[Ô)Ü+Ð+ØrU   c                ó   — | j                   S )zjReturn all plugin config data.

        Used by mypy to determine if cache needs to be discarded.
        )r\   )r_   Úctxs     rS   Úreport_config_dataz!PydanticPlugin.report_config_data™   s   € ð
 × Ñ Ð rU   c                ó�   — t        |j                  |j                  |j                  | j                  «      }|j                  «        y rX   )ÚPydanticModelTransformerÚclsÚreasonÚapirZ   Ú	transform)r_   rv   Útransformers      rS   rh   z3PydanticPlugin._pydantic_model_class_maker_callback    s0   € Ü.¨s¯w©w¸¿
¹
ÀCÇGÁGÈT×M_ÑM_Ó`ˆØ×ÑÕrU   c                óÖ   — | j                   j                  ry|j                  j                  j                  }|sJ d«       ‚t        |j                  dd«      rd|j                  _        yy)zÓReset dataclass_transform_spec attribute of ModelMetaclass.

        Let the plugin handle it. This behavior can be disabled
        if 'debug_dataclass_transform' is set to True', for testing purposes.
        Nz-callback not passed from 'get_metaclass_hook'Údataclass_transform_spec)rZ   Údebug_dataclass_transformrz   ÚinfoÚdeclared_metaclassÚgetattrÚtyper€   )r_   rv   Úinfo_metaclasss      rS   rn   z8PydanticPlugin._pydantic_model_metaclass_marker_callback¤   s^   € ð ×Ñ×7Ò7ØØŸ™Ÿ™×8Ñ8ˆÙÐNÐNÓNˆ~Ü�>×&Ñ&Ð(BÀDÔIØ;?ˆN×ÑÕ8ð JrU   ©r`   r+   ÚreturnÚNone)ri   Ústrrˆ   z(Callable[[ClassDefContext], None] | None)ri   rŠ   rˆ   z&Callable[[MethodContext], Type] | None)rv   r0   rˆ   údict[str, Any])rv   r-   rˆ   r‰   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r^   rk   rp   rt   rw   rh   rn   Ú__classcell__©ra   s   @rS   rQ   rQ   |   s*   ø„ Ù#õ"ó
óóó!ó ÷@rU   rQ   c                  óN   — e Zd ZU dZdZded<   ded<   ded<   ded<   dd„Zdd	„Zy
)rY   aÛ  A Pydantic mypy plugin config holder.

    Attributes:
        init_forbid_extra: Whether to add a `**kwargs` at the end of the generated `__init__` signature.
        init_typed: Whether to annotate fields in the generated `__init__`.
        warn_required_dynamic_aliases: Whether to raise required dynamic aliases error.
        debug_dataclass_transform: Whether to not reset `dataclass_transform_spec` attribute
            of `ModelMetaclass` for testing purposes.
    )Úinit_forbid_extraÚ
init_typedÚwarn_required_dynamic_aliasesr�   Úboolr“   r”   r•   r�   c                óä  — |j                   €y t        |j                   «      }|�q|j                  di «      j                  di «      }| j                  D ]?  }|j                  |d«      }t	        |t
        «      st        d|› �«      ‚t        | ||«       ŒA y t        «       }|j                  |j                   «       | j                  D ]'  }|j                  t        |d¬«      }t        | ||«       Œ) y )NÚtoolrG   Fz/Configuration value must be a boolean for key: )Úfallback)Úconfig_fileÚ
parse_tomlÚgetÚ	__slots__rd   r–   Ú
ValueErrorÚsetattrr   ÚreadÚ
getbooleanÚCONFIGFILE_KEY)r_   r`   Útoml_configÚconfigÚkeyÚsettingrZ   s          rS   r^   zPydanticPluginConfig.__init__È   sæ   € Ø×ÑÐ&Øä  ×!4Ñ!4Ó5ˆØÐ"Ø —_‘_ V¨RÓ0×4Ñ4°_ÀbÓIˆFØ—~‘~ò ,�Ø Ÿ*™* S¨%Ó0�Ü! '¬4Ô0Ü$Ð'VÐWZÐV[Ð%\Ó]Ð]Ü˜˜c 7Õ+ñ	,ô )›NˆMØ×Ñ˜w×2Ñ2Ô3Ø—~‘~ò ,�Ø'×2Ñ2´>À3ÐQVÐ2ÓW�Ü˜˜c 7Õ+ñ,rU   c                óV   — | j                   D �ci c]  }|t        | |«      “Œ c}S c c}w )z/Returns a dict of config names to their values.)r�   r„   )r_   r¥   s     rS   r[   zPydanticPluginConfig.to_dataÛ   s&   € à37·>±>ÖB¨C�”W˜T 3Ó'Ñ'ÒBÐBùÒBs   �&Nr‡   ©rˆ   r‹   )rŒ   r�   rŽ   r�   r�   Ú__annotations__r^   r[   © rU   rS   rY   rY   ²   s3   … ñð€Ið ÓØÓØ#'Ó'Ø#Ó#ó,ô&CrU   rY   c                ó
  — | j                   }t        |t        «      r|j                  }t        |t        «      r't        |j
                  t        «      r|j
                  }n]t        |t        «      r|}nJd|› d|j                  j                  › d�}t        || j                  | j                  «       | j                  S |j                   j                  j                  t        «      }|€| j                  S |j                   j!                  t"        «      s| j                  S |j                  di «      j                  d«      }|dur5t%        |j                   j&                  | j                  | j                  «       | j                  S )z1Raise an error if from_attributes is not enabled.z
ctx.type: z
 (of type ú)r¤   Úfrom_attributesT)r…   rd   r>   Úitemr9   Úret_typer:   ra   rŒ   Úerror_unexpected_behaviorr|   ÚcontextÚdefault_return_typeÚmetadatarœ   ÚMETADATA_KEYrf   rg   Úerror_from_attributesÚname)rv   Úctx_typeÚ
model_typeÚdetailÚpydantic_metadatar­   s         rS   rs   rs   à   s0  € ð �x‰x€HÜ�(œHÔ%Ø—=‘=ˆÜ�(œLÔ)¬j¸×9JÑ9JÌHÔ.UØ×&Ñ&‰
Ü	�HœhÔ	'Ø‰
à˜h˜Z z°(×2DÑ2D×2MÑ2MÐ1NÈaÐPˆÜ! &¨#¯'©'°3·;±;Ô?Ø×&Ñ&Ð&Ø"Ÿ™×0Ñ0×4Ñ4´\ÓBÐØÐ Ø×&Ñ&Ð&Ø�?‰?×#Ñ#Ô$6Ô7à×&Ñ&Ð&Ø'×+Ñ+¨H°bÓ9×=Ñ=Ð>OÓP€OØ˜dÑ"Ü˜jŸo™o×2Ñ2°C·G±G¸S¿[¹[ÔIØ×"Ñ"Ð"rU   c                  óÌ   — e Zd ZdZ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d
d„Z	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Z	 	 d	 	 	 	 	 	 	 	 	 dd„Z	 d	 	 	 	 	 	 	 	 	 dd„Zdd„Ze	dd„«       Z
dd„Zy	)ÚPydanticModelFieldz5Based on mypy.plugins.dataclasses.DataclassAttribute.c                ó�   — || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _	        y rX   )
r¶   ÚaliasÚ	is_frozenÚhas_dynamic_aliasÚhas_defaultÚstrictÚlineÚcolumnr…   r‚   )r_   r¶   r¾   r¿   rÀ   rÁ   rÂ   rÃ   rÄ   r…   r‚   s              rS   r^   zPydanticModelField.__init__ý   sL   € ð ˆŒ	ØˆŒ
Ø"ˆŒØ!2ˆÔØ&ˆÔØˆŒØˆŒ	ØˆŒØˆŒ	Øˆ�	rU   c	                ó4  — | j                  ||||«      }	| j                  €|n| j                  }
|s|
r| j                  ||d¬«      }nt        t        j
                  «      }t        |	|d|rt        ¬«      S |s| j                  rt        ¬«      S t        ¬«      S )zABased on mypy.plugins.dataclasses.DataclassAttribute.to_argument.NT)Úinclude_root_type)ÚvariableÚtype_annotationÚinitializerÚkind)Úto_varrÂ   r	   r8   r=   Úexplicitr   r   rÁ   r   r   )r_   Úcurrent_infoÚtypedÚmodel_strictÚforce_optionalÚ	use_aliasr|   Úforce_typevars_invariantÚis_root_model_rootrÇ   rÂ   rÈ   s               rS   Úto_argumentzPydanticModelField.to_argument  s¢   € ð —;‘;˜|¨S°)Ð=UÓVˆà!%§¡Ð!4‘¸$¿+¹+ˆÙ‘FØ"×.Ñ.¨|¸SÐTXÐ.ÓY‰Oä%¤i×&8Ñ&8Ó9ˆOäØØ+Øá!ô ô	
ð 	
ñ $2°T×5EÒ5E”-ô
ð 	
ô LUô
ð 	
rU   c                óZ  — |rFt        | j                  t        «      r,| j                  j                  «       }t        |_        || _        | j                  ��4| j                  j                  ��t        j                  |j                  j                  «      5  t        |«      }t        |t        «      sJ ‚|r-|j                  D ]  }t        |t        «      sŒt        |_        Œ  t        | j                  | j                  j                  j                   |i«      }|rdt        |t        «      rTt#        |j                  «      r?|j                  d   j                  }	|	€|cddd«       S t%        |	|«      }
t'        ||
g«      }|cddd«       S | j                  S # 1 sw Y   | j                  S xY w)zABased on mypy.plugins.dataclasses.DataclassAttribute.expand_type.NÚroot)rd   r…   r?   Úcopy_modifiedr   Úvariancer‚   Ú	self_typer5   Ústrict_optional_setr`   Ústrict_optionalrB   r:   Úargsr	   ÚidÚis_root_modelr
   r@   )r_   rÍ   r|   rÒ   rÆ   Úmodified_typeÚfilled_with_typevarsÚargÚexpanded_typeÚ	root_typeÚexpanded_root_types              rS   r	   zPydanticModelField.expand_type2  sn  € ñ $ô
 ˜$Ÿ)™)¤[Ô1Ø $§	¡	× 7Ñ 7Ó 9�Ü)2�Ô&Ø)�”	à�9‰9Ñ  T§Y¡Y×%8Ñ%8Ñ%Dô
 ×*Ñ*¨3¯;©;×+FÑ+FÓGñ %Ü'4°\Ó'BÐ$ä!Ð"6¼ÔAÐAÐAÙ+Ø3×8Ñ8ò 5˜Ü% c¬;Õ7Ü+4˜C�Lð5ô !,¨D¯I©I¸¿	¹	×8KÑ8K×8NÑ8NÐPdÐ7eÓ f�Ù$¬°MÄ8Ô)LÔQ^Ð_l×_qÑ_qÔQrð !.× 2Ñ 2°6Ñ :× ?Ñ ?�IØ Ð(à,÷!%ñ %ô" *AÀÈMÓ)ZÐ&Ü$-¨}Ð>PÐ.QÓ$R�MØ$÷'%ñ %ð( �y‰yÐ÷)%ð( �y‰yÐús   Â?FÃBFÅ&FÆF*c                óŠ   — |r| j                   �| j                   }n| j                  }t        || j                  |||«      «      S )z<Based on mypy.plugins.dataclasses.DataclassAttribute.to_var.)r¾   r¶   r*   r	   )r_   rÍ   r|   rÑ   rÒ   r¶   s         rS   rË   zPydanticModelField.to_var_  s?   € ñ ˜Ÿ™Ð/Ø—:‘:‰Dà—9‘9ˆDä�4˜×)Ñ)¨,¸Ð=UÓVÓWÐWrU   c           
     ó  — | j                   sJ ‚| j                  | j                  | j                  | j                  | j
                  | j                  | j                  | j                  | j                   j                  «       dœ	S )ú?Based on mypy.plugins.dataclasses.DataclassAttribute.serialize.)	r¶   r¾   r¿   rÀ   rÁ   rÂ   rÃ   rÄ   r…   )
r…   r¶   r¾   r¿   rÀ   rÁ   rÂ   rÃ   rÄ   Ú	serialize©r_   s    rS   rè   zPydanticModelField.serializen  sd   € à�yŠyÐˆyà—I‘IØ—Z‘ZØŸ™Ø!%×!7Ñ!7Ø×+Ñ+Ø—k‘kØ—I‘IØ—k‘kØ—I‘I×'Ñ'Ó)ñ

ð 
	
rU   c                ón   — |j                  «       }t        |j                  d«      |«      } | d||dœ|¤ŽS )úABased on mypy.plugins.dataclasses.DataclassAttribute.deserialize.r…   )r…   r‚   rª   )Úcopyr2   Úpop)rz   r‚   Údatar|   Útyps        rS   ÚdeserializezPydanticModelField.deserialize}  s9   € ð �y‰y‹{ˆÜ(¨¯©°&Ó)9¸3Ó?ˆÙÐ/˜ $Ñ/¨$Ñ/Ð/rU   c                óæ   — | j                   �Yt        j                  |j                  j                  «      5  t        | j                   || j                  «      | _         ddd«       yy# 1 sw Y   yxY w)zxExpands type vars in the context of a subtype when an attribute is inherited
        from a generic super type.
        N)r…   r5   rÚ   r`   rÛ   r7   r‚   )r_   Úsub_typer|   s      rS   Úexpand_typevar_from_subtypez.PydanticModelField.expand_typevar_from_subtype„  sb   € ð �9‰9Ð Ü×*Ñ*¨3¯;©;×+FÑ+FÓGñ TÜ3°D·I±I¸xÈÏÉÓS�”	÷Tð Tð !÷Tð Tús   ¶'A'Á'A0N)r¶   rŠ   r¾   z
str | Noner¿   r–   rÀ   r–   rÁ   r–   rÂ   úbool | NonerÃ   ÚintrÄ   rõ   r…   úType | Noner‚   r)   )rÍ   r)   rÎ   r–   rÏ   r–   rÐ   r–   rÑ   r–   r|   r1   rÒ   r–   rÓ   r–   rˆ   r   )FF)
rÍ   r)   r|   r1   rÒ   r–   rÆ   r–   rˆ   rö   ©F)
rÍ   r)   r|   r1   rÑ   r–   rÒ   r–   rˆ   r*   ©rˆ   r   )r‚   r)   rî   r   r|   r1   rˆ   r¼   )rò   r)   r|   r1   rˆ   r‰   )rŒ   r�   rŽ   r�   r^   rÔ   r	   rË   rè   Úclassmethodrð   ró   rª   rU   rS   r¼   r¼   ú   sg  „ Ù?ðàðð ðð ð	ð
  ðð ðð ðð ðð ðð ðð óð0
àð
ð ð
ð ð	
ð
 ð
ð ð
ð -ð
ð #'ð
ð !ð
ð 
ó
ðB */Ø"'ð+àð+ð -ð+ð #'ð	+ð
  ð+ð 
ó+ðd */ðXàðXð -ðXð ð	Xð
 #'ðXð 
óXó
ð ò0ó ð0ôTrU   r¼   c                  ó0   — e Zd ZdZd„ Zedd„«       Zdd„Zy)ÚPydanticModelClassVarz•Based on mypy.plugins.dataclasses.DataclassAttribute.

    ClassVars are ignored by subclasses.

    Attributes:
        name: the ClassVar name
    c                ó   — || _         y rX   ©r¶   )r_   r¶   s     rS   r^   zPydanticModelClassVar.__init__–  s	   € Øˆ�	rU   c                ó2   — |j                  «       } | di |¤ŽS )rë   rª   )rì   )rz   rî   s     rS   rð   z!PydanticModelClassVar.deserialize™  s   € ð �y‰y‹{ˆÙ‰{�T‰{ÐrU   c                ó   — d| j                   iS )rç   r¶   rý   ré   s    rS   rè   zPydanticModelClassVar.serializeŸ  s   € ð �D—I‘Ið
ð 	
rU   N)rî   r   rˆ   rû   rø   )rŒ   r�   rŽ   r�   r^   rù   rð   rè   rª   rU   rS   rû   rû   �  s%   „ ñòð òó ðô

rU   rû   c                  óv  — e Zd ZU dZh d£Zded<   	 	 	 	 	 	 	 	 	 	 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„Zd%d&d„Zed'd„«       Zed(d„«       Zed)d„«       Zed'd„«       Z	 d%	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d*d„Zd+d„Zed,d„«       Zy)-ry   z¸Transform the BaseModel subclass according to the plugin settings.

    Attributes:
        tracked_config_fields: A set of field configs that the plugin has to track their value.
    >   ÚextraÚfrozenrÂ   Úalias_generatorr­   Úpopulate_by_nameÚvalidate_by_nameÚvalidate_by_aliaszset[str]Útracked_config_fieldsc                ó<   — || _         || _        || _        || _        y rX   )Ú_clsÚ_reasonÚ_apirZ   )r_   rz   r{   r|   rZ   s        rS   r^   z!PydanticModelTransformer.__init__¸  s!   € ð ˆŒ	ØˆŒØˆŒ	à*ˆÕrU   c                ó¬  — | j                   j                  }t        |«      }| j                  «       }| j	                  ||«      \  }}|�|€y|D ]  }|j
                  �Œ y |j                  t        «      }| j                  ||||«       | j                  ||||«       | j                  || j                  |j                  du ¬«       | j                  «        |D �ci c]  }|j                  |j                  «       “Œ c}|D �ci c]  }|j                  |j                  «       “Œ c}|j!                  «       dœ|j"                  t$        <   yc c}w c c}w )a†  Configures the BaseModel subclass according to the plugin settings.

        In particular:

        * determines the model config and fields,
        * adds a fields-aware signature for the initializer and construct methods
        * freezes the class if frozen = True
        * stores the fields, config, and if the class is settings in the mypy metadata for access by subclasses
        FT)r  )ÚfieldsÚ
class_varsr¤   )r	  r‚   rÞ   Úcollect_configÚcollect_fields_and_class_varsr…   rf   ÚBASESETTINGS_FULLNAMEÚadd_initializerÚadd_model_construct_methodÚ
set_frozenr  r  Úadjust_decorator_signaturesr¶   rè   Úget_values_dictr³   r´   )	r_   r‚   Úis_a_root_modelr¤   r  r  ÚfieldÚis_settingsÚ	class_vars	            rS   r}   z"PydanticModelTransformer.transformÅ  s9  € ð �y‰y�~‰~ˆÜ'¨Ó-ˆØ×$Ñ$Ó&ˆØ!×?Ñ?ÀÈÓXÑˆ�
Øˆ>˜ZÐ/àØò 	ˆEØ�z‰zÑ!Ùð	ð —m‘mÔ$9Ó:ˆØ×Ñ˜V V¨[¸/ÔJØ×'Ñ'¨°¸À_ÔUØ�‰˜ §	¡	°&·-±-À4Ð2GˆÔHà×(Ñ(Ô*ð CIÖI¸�u—z‘z 5§?¡?Ó#4Ñ4ÒIØR\Ö]ÀY˜9Ÿ>™>¨9×+>Ñ+>Ó+@Ñ@Ò]Ø×,Ñ,Ó.ñ'
ˆ�‰”lÑ#ð ùò JùÚ]s   Ã"EÄ"Ec                ó&  ‡— | j                   j                  j                  j                  «       D ]ß  }t	        |j
                  t        «      sŒ|j
                  j                  d   Št	        ‰t        «      sŒHt	        ‰j                  t        «      sŒc‰j                  j                  t        v sŒ€‰j                  j                  t        k(  r(t        ˆfd„t        ‰j                   «      D «       «      rŒÅd|j
                  j"                  _        Œá y)a¿  When we decorate a function `f` with `pydantic.validator(...)`, `pydantic.field_validator`
        or `pydantic.serializer(...)`, mypy sees `f` as a regular method taking a `self` instance,
        even though pydantic internally wraps `f` with `classmethod` if necessary.

        Teach mypy this by marking any function whose outermost decorator is a `validator()`,
        `field_validator()` or `serializer()` call as a `classmethod`.
        r   c              3  óŽ   •K  — | ]<  \  }}‰j                   |   d k(  xr! t        |t        «      xr |j                  dk(  –— Œ> y­w)ÚmodeÚafterN)Ú	arg_namesrd   r%   Úvalue)Ú.0Úirá   Ú	first_decs      €rS   ú	<genexpr>zGPydanticModelTransformer.adjust_decorator_signatures.<locals>.<genexpr>û  sO   øè ø€ ò  á &  3ð &×/Ñ/°Ñ2°fÑ<ÒrÄÈCÔQXÓAYÒrÐ^a×^gÑ^gÐkrÑ^rÓrñ ùs   ƒAATN)r	  r‚   ÚnamesÚvaluesrd   re   r   Úoriginal_decoratorsr   Úcalleer    ri   Ú(IMPLICIT_CLASSMETHOD_DECORATOR_FULLNAMESÚMODEL_VALIDATOR_FULLNAMEÚanyÚ	enumeraterÜ   ÚfuncÚis_class)r_   rj   r#  s     @rS   r  z4PydanticModelTransformer.adjust_decorator_signaturesé  sÃ   ø€ ð —9‘9—>‘>×'Ñ'×.Ñ.Ó0ò 	2ˆCÜ˜#Ÿ(™(¤IÕ.ØŸH™H×8Ñ8¸Ñ;�	ä˜y¬(Õ3Ü" 9×#3Ñ#3´XÕ>Ø!×(Ñ(×1Ñ1Ô5]Ò]ð "×(Ñ(×1Ñ1Ô5MÒMÜó  ä*3°I·N±NÓ*Cô õ ð .2�C—H‘H—M‘MÕ*ñ#	2rU   c           	     ó  — | j                   }t        «       }d}d}|j                  j                  «       D ]-  \  }}| j	                  ||«      }|sŒd}|j                  |«       Œ/ d}|j                  j                  D �]  }t        |t        t        f«      sŒt        |t        «      �r"|j                  d   }	t        |	t        «      r|	j                  dk7  rŒ[t        |j                  t        «      rdt!        |j                  j"                  |j                  j$                  «      D ]+  \  }
}|
€Œ	|j                  | j	                  |
|d¬«      «       Œ- �nt        |j                  t&        «      rý|j                  j                  D ]A  \  }}t        |t(        «      sŒ|j                  | j	                  |j*                  |«      «       ŒC n¢t        |t        «      r’|j                  dk7  r�Œo|j                  j                  D ]h  }t        |t        «      sŒ|j                  d   }	t        |	t        «      sŒ4|j                  | j	                  |	j                  |j                  «      «       Œj |r| j,                  j/                  d|«        nd}�Œ |s|rR|rP|j0                  rD|j2                  s8|j4                  s,| j6                  j8                  rt;        | j,                  |«       |j<                  j>                  d	d D ]�  }t@        |jB                  vrŒ| j,                  jE                  tG        |jH                  «      «       |jB                  t@           d
   j                  «       D ]  \  }}|jK                  ||«       Œ Œƒ |S )zhCollects the values of the config attributes that are used by the plugin, accounting for parent classes.FTNr   Úmodel_config)Ú	lax_extraÚConfigzYSpecifying config in two places is ambiguous, use either Config attribute or class kwargsé   r¤   )&r	  ÚModelConfigDataÚkeywordsÚitemsÚget_config_updateÚupdateÚdefsÚbodyrd   r   r   Úlvaluesr    r¶   Úrvaluer   Úzipr  rÜ   r   r%   r   r  ÚfailÚhas_alias_generatorr  r  rZ   r•   Úerror_required_dynamic_aliasesr‚   Úmror´   r³   Úadd_plugin_dependencyr4   ri   Ú
setdefault)r_   rz   r¤   Úhas_config_kwargsÚhas_config_from_namespacer¶   ÚexprÚconfig_dataÚstmtÚlhsÚarg_namerá   Úkey_exprÚ
value_exprÚsubstmtr‚   r   s                    rS   r  z'PydanticModelTransformer.collect_config  sú  € à�i‰iˆÜ Ó"ˆà!ÐØ$)Ð!ð Ÿ,™,×,Ñ,Ó.ò 	+‰JˆD�$Ø×0Ñ0°°tÓ<ˆKÚØ$(Ð!Ø—‘˜kÕ*ð		+ð "&ˆØ—H‘H—M‘Mó &	-ˆDÜ˜d¤^´XÐ$>Ô?Øä˜$¤Õ/Ø—l‘l 1‘o�Ü! #¤xÔ0°C·H±HÀÒ4NØä˜dŸk™k¬8Ô4Ü),¨T¯[©[×-BÑ-BÀDÇKÁK×DTÑDTÓ)Uò ]™˜ #Ø#Ð+Ø$ØŸ™ d×&<Ñ&<¸XÀsÐVZÐ&<Ó&[Õ\ò]ô   §¡¬XÔ6Ø04·±×0AÑ0Aò ZÑ,˜ *Ü)¨(´GÔ<Ø$ØŸ™ d×&<Ñ&<¸X¿^¹^ÈZÓ&XÕYñZô
 ˜D¤(Ô+Ø—9‘9 Ò(ÙØ#Ÿy™yŸ~™~ò T�GÜ% g¬~Ô>Ø Ø!Ÿ/™/¨!Ñ,�CÜ% c¬8Ô4Ø Ø—M‘M $×"8Ñ"8¸¿¹À7Ç>Á>Ó"RÕSðTñ !Ø—	‘	—‘ØoØôñ à(,Ò%ðM&	-ñP Ñ 9áØ×.Ò.Ø×0Ò0°F×4KÒ4KØ×&Ñ&×DÒDä.¨t¯y©y¸$Ô?à—H‘H—L‘L  Ð$ò 	/ˆDÜ 4§=¡=Ñ0Øð �I‰I×+Ñ+Ô,AÀ$Ç-Á-Ó,PÔQØ#Ÿ}™}¬\Ñ:¸8ÑD×JÑJÓLò /‘��eØ×!Ñ! $¨Õ.ñ/ð	/ð ˆrU   c                óÐ  — | j                   }i }i }t        |j                  j                  dd «      D �]v  }t        |j
                  vrŒ| j                  j                  t        |j                  «      «       |j
                  t           d   j                  «       D ]Ç  \  }}t        j                  ||| j                  «      }	|	j                  |j                  | j                  «       |	||<   |j                  j                  j                  |«      }
|
sŒz|
j                   sŒ‡t#        |
j                   t$        «      rŒ¢| j                  j'                  d|
j                   «       ŒÉ |j
                  t           d   j                  «       D ]  \  }}t(        j                  |«      ||<   Œ �Œy t+        «       }t+        «       }| j-                  |j.                  «      D ]×  }| j1                  |||«      }|€Œ|j2                  d   }t#        |t4        «      sJ ‚t#        |t        «      rS|r&|j6                  dk7  rt9        | j                  |«       Œr|j;                  |j6                  «       |||j6                  <   Œ�t#        |t(        «      sŒ®|j;                  |j6                  «       |||j6                  <   ŒÙ t=        |j?                  «       «      t=        |j?                  «       «      fS )zACollects the fields for the model, accounting for parent classes.r3  éÿÿÿÿr  z7BaseModel field may only be overridden by another fieldr  r   rÖ   ) r	  Úreversedr‚   rA  r´   r³   r  rB  r4   ri   r6  r¼   rð   ró   r%  rœ   re   rd   r*   r>  rû   ÚsetÚ%_get_assignment_statements_from_blockr9  Ú$collect_field_or_class_var_from_stmtr;  r    r¶   Ú error_extra_fields_on_root_modelÚaddÚlistr&  )r_   r0  rÞ   rz   Úfound_fieldsÚfound_class_varsr‚   r¶   rî   r  Úsym_nodeÚcurrent_field_namesÚcurrent_class_vars_namesrH  Úmaybe_fieldrI  s                   rS   r  z6PydanticModelTransformer.collect_fields_and_class_varsP  si  € ð �i‰iˆð 79ˆØ=?ÐÜ˜SŸX™XŸ\™\¨!¨BÐ/Ó0ó 	QˆDô  4§=¡=Ñ0Øð �I‰I×+Ñ+Ô,AÀ$Ç-Á-Ó,PÔQà"Ÿm™m¬LÑ9¸(ÑC×IÑIÓKò ‘
��dÜ*×6Ñ6°t¸TÀ4Ç9Á9ÓM�ð
 ×1Ñ1°#·(±(¸D¿I¹IÔFØ%*�˜TÑ"àŸ8™8Ÿ>™>×-Ñ-¨dÓ3�Ú §£´jÀÇÁÔPSÕ6TØ—I‘I—N‘NØQØ Ÿ™õðð  #Ÿm™m¬LÑ9¸,ÑG×MÑMÓOò Q‘
��dÜ)>×)JÑ)JÈ4Ó)PÐ  Ò&òQð5	Qô< ),«ÐÜ-0«UÐ Ø×>Ñ>¸s¿x¹xÓHò 	9ˆDØ×CÑCÀDÈ,ÐXhÓiˆKØÐ"Øà—,‘,˜q‘/ˆCÜ˜c¤8Ô,Ð,Ð,Ü˜+Ô'9Ô:Ù  S§X¡X°Ò%7Ü4°T·Y±YÀÕEà'×+Ñ+¨C¯H©HÔ5Ø-8�L §¡Ò*Ü˜KÔ)>Õ?Ø(×,Ñ,¨S¯X©XÔ6Ø-8Ð  §¡Ò*ð	9ô" �L×'Ñ'Ó)Ó*¬DÐ1A×1HÑ1HÓ1JÓ,KÐKÐKrU   c              #  ó  K  — |j                   D ](  }|j                  rŒ| j                  |«      E d {  –—†  Œ* |j                  �;|j                  j                  s$| j                  |j                  «      E d {  –—†  y y y 7 ŒN7 Œ	­wrX   )r:  Úis_unreachablerR  Ú	else_body)r_   rH  r:  s      rS   Ú,_get_assignment_statements_from_if_statementzEPydanticModelTransformer._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rX   )r:  rd   r   r   r`  )r_   ÚblockrH  s      rS   rR  z>PydanticModelTransformer._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                ó4  — | j                   }|j                  d   }t        |t        «      r.t	        j
                  |j                  «      r|j                  dk(  ry|j                  sÃt        |j                  t        «      rƒt        |j                  j                  t        «      r_t        |j                  j                  j                  t        «      r1|j                  j                  j                  j                  t        v ry|j                  |v ryt        | j                  |«       y|j                  d   }t        |t        «      syt	        j
                  |j                  «      r|j                  dk(  ry|j                  j                   j#                  |j                  «      }|€y|j$                  }t        |t&        «      ryt        |t(        «      r| j                  j+                  d|«       yt        |t,        «      sy|j.                  rt1        |j                  «      S t3        |j4                  «      }t        |t6        «      r5|j4                  j                  dk(  r| j                  j+                  d|«       | j9                  |«      }	| j;                  |«      }
|j4                  €ƒ|j<                  rw|j>                  rk| j                  jA                  |j                  d¬«      }|r||_        n:| j                  j+                  d	|«       tC        tD        jF                  «      |_        |j<                  r|	rt1        |j                  «      S | jI                  |«      \  }}|rD|jJ                  s8|jL                  s,| jN                  jP                  rtS        | j                  |«       | jU                  |«      }| jW                  ||j                  |«      }tY        |j                  ||	|
|||jZ                  |j\                  ||j                  ¬
«
      S )a^  Get pydantic model field from statement.

        Args:
            stmt: The statement.
            model_config: Configuration settings for the model.
            class_vars: ClassVars already known to be defined on the model.

        Returns:
            A pydantic model field if it could find the field in statement. Otherwise, `None`.
        r   r0  NzFType aliases inside BaseModel definitions are not supported at runtimezdataclasses.InitVarz%InitVar is not supported in BaseModelT)Úis_finalzGNeed type argument for Final[...] with non-literal default in BaseModel)
r¶   rÀ   rÁ   rÂ   r¾   r¿   rÃ   rÄ   r…   r‚   )/r	  r;  rd   r    rE   Úis_valid_field_namer¶   Ú
new_syntaxr<  r   r(  ri   ÚDECORATOR_FULLNAMESÚerror_untyped_fieldsr  r‚   r%  rœ   re   r"   r(   r>  r*   Úis_classvarrû   rA   r…   r:   Úget_has_defaultÚ
get_strictrd  Úis_inferredÚanalyze_simple_literal_typer8   r=   Ú
from_errorÚget_alias_infor  r  rZ   r•   r@  Úis_field_frozenÚ_infer_dataclass_attr_init_typer¼   rÃ   rÄ   )r_   rH  r0  r  rz   rI  rj   re   Ú	node_typerÁ   rÂ   rï   r¾   rÀ   r¿   Ú	init_types                   rS   rS  z=PydanticModelTransformer.collect_field_or_class_var_from_stmt¢  s%  € ð �i‰iˆà�l‰l˜1‰oˆÜ˜#œxÔ(´×0KÑ0KÈCÏHÉHÔ0UÐY\×YaÑYaÐesÒYsØà�Šä˜4Ÿ;™;¬Ô1Ü˜tŸ{™{×1Ñ1´8Ô<Ü˜tŸ{™{×1Ñ1×8Ñ8¼(ÔCØ—K‘K×&Ñ&×-Ñ-×6Ñ6Ô:MÑMð
 à�x‰x˜:Ñ%àô ! §¡¨DÔ1Øà�l‰l˜1‰oˆÜ˜#œxÔ(Øä×*Ñ*¨3¯8©8Ô4¸¿¹ÀNÒ8RØà�h‰h�n‰n× Ñ  §¡Ó*ˆØˆ;ð à�x‰xˆÜ�dœOÔ,ð
 ä�dœIÔ&Ø�I‰I�N‰NØXØôð ä˜$¤Ô$ð
 ð ×ÒÜ(¨¯©Ó2Ð2ô $ D§I¡IÓ.ˆ	Ü�i¤Ô*¨y¯~©~×/FÑ/FÐJ_Ò/_Ø�I‰I�N‰NØ7Øôð
 ×*Ñ*¨4Ó0ˆØ—‘ Ó&ˆà�8‰8Ð §¢°$×2BÒ2Bð —)‘)×7Ñ7¸¿¹ÈdÐ7ÓSˆCÙØ�•	à—	‘	—‘Ø]Øôô $¤I×$8Ñ$8Ó9�”	à�=Š=™[ä(¨¯©Ó2Ð2à#'×#6Ñ#6°tÓ#<Ñ ˆÐ áØ!×2Ò2°l×6SÒ6SØ×"Ñ"×@Ò@ä*¨4¯9©9°dÔ;Ø×(Ñ(¨Ó.ˆ	à×8Ñ8¸¸c¿h¹hÈÓMˆ	Ü!Ø—‘Ø/Ø#ØØØØ—‘Ø—;‘;ØØ—‘ô
ð 	
rU   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__rO   z(Unsupported signature for "__set__" in "ú"zUnsupported "__set__" in ")r…   ÚimplicitrA   rd   r:   rœ   re   r   Úget_containing_type_infor7   r8   r=   Úunannotatedr9   Ú	arg_kindsr   r
   Ú	arg_typesr  r>  r¶   )	r_   rj   r¶   r±   ÚdefaultÚtÚsetterÚ
super_infoÚsetter_types	            rS   rq  z8PydanticModelTransformer._infer_dataclass_attr_init_type+  sG  € ð
 —(‘(ˆØ�<Š<ØˆNÜ˜CŸH™HÓ%ˆô ˜!œXÔ&ØˆNØ—‘—‘˜IÓ&ˆÚÜ˜&Ÿ+™+¤wÔ/ØŸV™V×<Ñ<¸YÓG�
Ù!Ð!�zØ—;’;Ü"1Ô2IÈ&Ï+É+ÐWX×W]ÑW]Ð_iÓ2jÓ"k‘Kä"¤9×#8Ñ#8Ó9Ð9Ü˜k¬<Ô8¸[×=RÑ=RÜÜÜðWò >ô
 3°;×3HÑ3HÈÑ3KÈQÓOÐOà—I‘I—N‘NÐ%MÈaÏfÉfÏkÉkÈ]ÐZ[Ð#\Ð^eÔfð ˆð —	‘	—‘Ð!;¸A¿F¹F¿K¹K¸=ÈÐJÈGÔTàˆrU   c           
     ó   — d| j                   j                  j                  v r.| j                   j                  j                  d   j                  sy| j                  j
                  }t        |j                  «      }|j                  xs |j                   xr |j                  du}t        |j                  xr |j                   «      }| j                  |||||||d¬«      }	|�rg| j                  j                  t        «      j                   }
t#        |
t$        «      sJ ‚d|
j                  v �r|
j                  d   j                   }t#        |t&        «      sJ ‚|�ð|j(                  �ä|j(                  }t#        |t*        «      sJ ‚t-        |j.                  «      D ]®  \  }}|�"|j1                  d«      s|j1                  d«      sŒ+| j                  j3                  |j4                  |   «      }|�-|dk(  r(|j7                  t9        t:        j<                  «      «      }t?        ||«      }|	jA                  tC        ||dtD        «      «       Œ° | jG                  ||«      sCt?        d	«      }|	jA                  tC        |tI        t:        jJ                  «      dtL        «      «       tO        | j                  | j                   d|	tQ        «       ¬
«       y)z§Adds a fields-aware `__init__` method to the class.

        The added `__init__` will be annotated with types vs. all `Any` depending on the plugin settings.
        r^   NFT)rÎ   rÏ   Úrequires_dynamic_aliasesrÑ   r  rÞ   rÒ   Ú__Ú_Ú_cli_settings_sourceÚkwargs)rÜ   Úreturn_type))r	  r‚   r%  Úplugin_generatedrZ   r”   r–   rÂ   r  r  r  r?  Úget_field_argumentsr  rc   r  re   rd   r)   r   r…   r9   r,  r  Ú
startswithÚ	anal_typer{  ÚacceptÚChangeExplicitTypeOfAnyr=   Úfrom_omitted_genericsr*   Úappendr   r   Úshould_init_forbid_extrar8   rÌ   r   Ú
add_methodr;   )r_   r  r¤   r  rÞ   rÎ   rÏ   rÑ   r‚  rÜ   Úbase_settings_nodeÚbase_settings_init_nodeÚ	func_typeÚarg_idxrJ  Úanalyzed_variable_typerÇ   Úvars                     rS   r  z(PydanticModelTransformer.add_initializerQ  sz  € ð ˜Ÿ™Ÿ™×-Ñ-Ñ-°d·i±i·n±n×6JÑ6JÈ:Ñ6V×6gÒ6gØà×"Ñ"×-Ñ-ˆÜ˜FŸM™MÓ*ˆØ×0Ñ0ÒK°F×4KÑ4KÐLÒvÐQW×QiÑQiÐqvÐQvˆ	Ü#'¨×(BÑ(BÒ(bÈ6×KbÑKbÐGbÓ#cÐ Ø×'Ñ'ØØØ%Ø%=ØØ#Ø'Ø%)ð (ó 	
ˆò Ø!%§¡×!AÑ!AÔBWÓ!X×!]Ñ!]ÐÜÐ0´(Ô;Ð;Ð;ØÐ/×5Ñ5Ò5Ø*<×*BÑ*BÀ:Ñ*N×*SÑ*SÐ'Ü!Ð"9¼7ÔCÐCÐCØ*Ð6Ð;R×;WÑ;WÐ;cØ 7× <Ñ <�IÜ% i´Ô>Ð>Ð>Ü-6°y×7JÑ7JÓ-Kò _Ñ)˜ Ø#Ð+¨x×/BÑ/BÀ4Ô/HÐPX×PcÑPcÐdgÔPhØ$Ø15·±×1DÑ1DÀY×EXÑEXÐY`ÑEaÓ1bÐ.Ø1Ð=À(ÐNdÒBdð 6L×5RÑ5RÜ 7¼	×8WÑ8WÓ Xó6Ð2ô $' xÐ1GÓ#H˜ØŸ™¤H¨XÐ7MÈtÔU\Ó$]Õ^ð_ð ×,Ñ,¨V°VÔ<Ü�h“-ˆCØ�K‰Kœ ¤g¬i×.@Ñ.@Ó&AÀ4ÌÓSÔTä�4—9‘9˜dŸi™i¨¸$ÌHËJÖWrU   c           
     ó  — | j                   j                  t        › d�| j                   j                  t        › d�«      g«      }t        |t	        «       g«      }t        t        d|«      |dt        «      }t        j                  | j                   j                  j                  «      5  | j                  |dt        |j                  «      dd||¬«      }ddd«       | j                  ||«      sCt        d«      }	j!                  t        |	t#        t$        j&                  «      dt(        «      «       |r|gz   n|gz   }t+        | j                   | j,                  d	|t/        | j,                  j0                  «      d¬
«       y# 1 sw Y   Œ¯xY w)zäAdds a fully typed `model_construct` classmethod to the class.

        Similar to the fields-aware __init__ method, but always uses the field names (not aliases),
        and does not treat settings fields as optional.
        z.setz.strÚ_fields_setNTF)rÎ   rÏ   r‚  rÑ   r  rÞ   r†  Úmodel_construct)rÜ   r‡  Úis_classmethod)r  Ú
named_typeÚBUILTINS_NAMEr@   r;   r   r*   r   r5   rÚ   r`   rÛ   r‰  r–   rÂ   r�  r�  r8   r=   rÌ   r   r‘  r	  rB   r‚   )
r_   r  r¤   r  rÞ   Úset_strÚoptional_set_strÚfields_set_argumentrÜ   r—  s
             rS   r  z3PydanticModelTransformer.add_model_construct_method‡  sY  € ð —)‘)×&Ñ&¬-¨¸Ð'=ÀÇ	Á	×@TÑ@TÔXeÐWfÐfjÐUkÓ@lÐ?mÓnˆÜ$ g¬x«zÐ%:Ó;ÐÜ&¤s¨=Ð:JÓ'KÐM]Ð_cÔelÓmÐÜ×&Ñ& t§y¡y×'8Ñ'8×'HÑ'HÓIñ 		Ø×+Ñ+ØØÜ! &§-¡-Ó0Ø).ØØ'Ø+ð ,ó ˆD÷		ð ×,Ñ,¨V°VÔ<Ü�h“-ˆCØ�K‰Kœ ¤g¬i×.@Ñ.@Ó&AÀ4ÌÓSÔTá/<ˆtÐ*Ð+Ò+ÐCVÐBWÐZ^ÑB^ˆäØ�I‰IØ�I‰IØØÜ% d§i¡i§n¡nÓ5Øö	
÷!		ð 		ús   Â),FÆFc                óN  — | j                   j                  }|D �]	  }|j                  j                  |j                  «      }|�u|j
                  }t        |t        «      r|xs |j                  |_	        Œ]t        |t        «      sŒn| j                  j                  rŒ…| j                  j                  «        Œ |j                  ||d¬«      }||_        ||_	        |j                  dz   |j                  z   |_        t#        t$        |«      |j                  |j                  <   �Œ y)z§Marks all fields as properties so that attempts to set them trigger mypy errors.

        This is the same approach used by the attrs and dataclasses plugins.
        NF)rÑ   ú.)r	  r‚   r%  rœ   r¶   re   rd   r*   r¿   Úis_propertyr"   r  Úfinal_iterationÚdeferrË   ri   Ú	_fullnamer&   r   )r_   r  r|   r  r‚   r  rY  r—  s           rS   r  z#PydanticModelTransformer.set_frozen¯  sÛ   € ð
 �y‰y�~‰~ˆØó 	BˆEØ—z‘z—~‘~ e§j¡jÓ1ˆHØÐ#Ø—m‘m�Ü˜c¤3Ô'Ø&,Ò&?°·±�C•OÜ ¤_Õ5¸d¿i¹i×>WÓ>Wà—I‘I—O‘OÕ%ð
 —l‘l 4¨¸�lÓ>�Ø�”Ø"(�”Ø $§¡°Ñ 3°c·h±hÑ >�”Ü'6´t¸SÓ'A�—
‘
˜3Ÿ8™8Ó$ñ#	BrU   c                óþ  — || j                   vry|dk(  rft        |t        «      r|j                  dk(  }n:t        |t        «      r|j
                  dk(  }n|st        || j                  |«       yt        |¬«      S |dk(  r/d}t        |t        «      r|j                  dk(  rd}t        |¬	«      S t        |t        «      r(|j                  d
v rt        di ||j                  dk(  i¤ŽS t        || j                  |«       y)zÐDetermines the config update due to a single kwarg in the ConfigDict definition.

        Warns if a tracked config attribute is set to a value the plugin doesn't know how to interpret (e.g., an int)
        Nr  Úforbid)Úforbid_extrar  Túbuiltins.NoneF)r?  )úbuiltins.Trueúbuiltins.Falser«  rª   )r  rd   r%   r   r   r¶   Úerror_invalid_config_valuer  r4  r    ri   )r_   r¶   rá   r1  r©  r?  s         rS   r7  z*PydanticModelTransformer.get_config_updateÈ  sê   € ð
 �t×1Ñ1Ñ1ØØ�7Š?Ü˜#œwÔ'Ø"Ÿy™y¨HÑ4‘Ü˜C¤Ô,Ø"Ÿx™x¨8Ñ3‘á ô /¨t°T·Y±YÀÔDØÜ"°Ô=Ð=ØÐ$Ò$Ø"&ÐÜ˜#œxÔ(¨S¯\©\¸_Ò-LØ&+Ð#Ü"Ð7JÔKÐKÜ�cœ8Ô$¨¯©Ð9\Ñ)\Ü"ÑM d¨C¯L©L¸OÑ,KÐ%LÑMÐMÜ" 4¨¯©°CÔ8ØrU   c                óÆ  — | j                   }t        |t        «      ryt        |t        «      r¤t        |j                  t
        «      rŠ|j                  j                  t        k(  rmt        |j                  |j                  «      D ]I  \  }}|�|dk(  r|j                  t        uc S |dk(  sŒ't        |t        «      xr |j                  dk(   c S  yt        |t        «       S )zUReturns a boolean indicating whether the field defined in `stmt` is a required field.Fr|  Údefault_factoryrª  )r<  rd   r'   r   r(  r#   ri   ÚFIELD_FULLNAMEr=  rÜ   r  ra   r   r    ©rH  rF  rá   r¶   s       rS   rj  z(PydanticModelTransformer.get_has_defaultë  sÀ   € ð �{‰{ˆÜ�dœHÔ%àÜ�dœHÔ%¬*°T·[±[Ä'Ô*JÈtÏ{É{×OcÑOcÔguÒOuô
 ! §¡¨D¯N©NÓ;ò _‘	��Tà�< 4¨9Ò#4ØŸ=™=´Ð<Ò<ØÐ,Ó,Ü *¨3´Ó 9Ò ]¸c¿l¹lÈoÑ>]Ð^Ò^ð_ð ä˜d¤LÓ1Ð1Ð1rU   c                ól  — | j                   }t        |t        «      r˜t        |j                  t        «      r~|j                  j
                  t        k(  rat        |j                  |j                  «      D ]>  \  }}|dk7  rŒt        |t        «      r"|j
                  dk(  r y|j
                  dk(  r y y y)zEReturns a the `strict` value of a field if defined, otherwise `None`.rÂ   r«  Tr¬  FN)r<  rd   r   r(  r#   ri   r°  r=  rÜ   r  r    r±  s       rS   rk  z#PydanticModelTransformer.get_strict  s”   € ð �{‰{ˆÜ�dœHÔ%¬*°T·[±[Ä'Ô*JÈtÏ{É{×OcÑOcÔguÒOuÜ  §¡¨D¯N©NÓ;ò ‘	��TØ˜8Ò#ØÜ˜c¤8Ô,Ø—|‘| Ò6Ù#ØŸ™Ð)9Ò9Ù$Ùðð rU   c                óè  — | j                   }t        |t        «      ryt        |t        «      r7t        |j                  t
        «      r|j                  j                  t        k(  syd|j                  v r)|j                  |j                  j                  d«         }n8d|j                  v r)|j                  |j                  j                  d«         }nyt        |t        «      r|j                  dfS y)a  Returns a pair (alias, has_dynamic_alias), extracted from the declaration of the field defined in `stmt`.

        `has_dynamic_alias` is True if and only if an alias is provided, but not as a string literal.
        If `has_dynamic_alias` is True, `alias` will be None.
        )NFÚvalidation_aliasr¾   F)NT)r<  rd   r'   r   r(  r#   ri   r°  r  rÜ   Úindexr%   r   )rH  rF  rá   s      rS   ro  z'PydanticModelTransformer.get_alias_info  s¿   € ð �{‰{ˆÜ�dœHÔ%àô �tœXÔ&¬:°d·k±kÄ7Ô+KÐPT×P[ÑP[×PdÑPdÔhvÒPvð à §¡Ñ/Ø—)‘)˜DŸN™N×0Ñ0Ð1CÓDÑE‰CØ˜Ÿ™Ñ&Ø—)‘)˜DŸN™N×0Ñ0°Ó9Ñ:‰Càä�cœ7Ô#Ø—9‘9˜eÐ#Ð#àrU   c                óv  — | j                   }t        |t        «      ryt        |t        «      r7t        |j                  t
        «      r|j                  j                  t        k(  syt        |j                  «      D ]<  \  }}|dk(  sŒ|j                  |   }t        |t        «      xr |j                  dk(  c S  y)al  Returns whether the field is frozen, extracted from the declaration of the field defined in `stmt`.

        Note that this is only whether the field was declared to be frozen in a `<field_name> = Field(frozen=True)`
        sense; this does not determine whether the field is frozen because the entire model is frozen; that is
        handled separately.
        Fr  r«  )r<  rd   r'   r   r(  r#   ri   r°  r,  r  rÜ   r    )rH  rF  r"  rJ  rá   s        rS   rp  z(PydanticModelTransformer.is_field_frozen/  s    € ð �{‰{ˆÜ�dœHÔ%àô �tœXÔ&¬:°d·k±kÄ7Ô+KÐPT×P[ÑP[×PdÑPdÔhvÒPvð ä$ T§^¡^Ó4ò 	U‰KˆAˆxØ˜8Ó#Ø—i‘i ‘l�Ü! #¤xÓ0ÒT°S·\±\À_Ñ5TÒTð	Uð rU   c	                óâ   — | j                   j                  }	|D �
cg c]H  }
|r|
j                  s8|
j                  |	|||xs ||| j                  ||xr |
j
                  dk(  ¬«      ‘ŒJ }}
|S c c}
w )zÈHelper function used during the construction of the `__init__` and `model_construct` method signatures.

        Returns a list of mypy Argument instances for use in the generated signatures.
        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  Ú	argumentss               rS   r‰  z,PydanticModelTransformer.get_field_argumentsH  s‰   € ð �y‰y�~‰~ˆð  ö
ð Ù %×"9Ò"9ð ×ÑØØØ)Ø7ÒF¸;Ø#Ø—I‘IØ)AØ#0Ò#I°U·Z±ZÀ6Ñ5Ið õ 	ð
ˆ	ð 
ð Ðùò
s   ›AA,c                óÄ   — |j                   s2|j                  s&| j                  |t        |j                  «      «      ry|j
                  ry| j                  j                  S )a@  Indicates whether the generated `__init__` should get a `**kwargs` at the end of its signature.

        We disallow arbitrary kwargs if the extra config setting is "forbid", or if the plugin config says to,
        *unless* a required dynamic alias is present (since then we can't determine a valid signature).
        FT)r  r  Úis_dynamic_alias_presentr–   r?  r©  rZ   r“   )r_   r  r¤   s      rS   r�  z1PydanticModelTransformer.should_init_forbid_extrah  sQ   € ð ×'Ò'¨6×+BÒ+BØ×,Ñ,¨V´T¸&×:TÑ:TÓ5UÔVØØ×ÒØØ×!Ñ!×3Ñ3Ð3rU   c                ó\   — | D ]  }|j                   sŒ y |r| D ]  }|j                  �Œ y y)z‘Returns whether any fields on the model have a "dynamic alias", i.e., an alias that cannot be
        determined during static analysis.
        TF)rÀ   r¾   )r  r?  r  s      rS   rº  z1PydanticModelTransformer.is_dynamic_alias_presentu  sE   € ð
 ò 	ˆEØ×&Ó&Ùð	ñ Øò  �Ø—;‘;Ñ&Ùð ð rU   N)
rz   r   r{   zExpression | Statementr|   r1   rZ   rY   rˆ   r‰   )rˆ   r–   )rˆ   r‰   )rˆ   r4  )r0  r4  rÞ   r–   rˆ   zJtuple[list[PydanticModelField] | None, list[PydanticModelClassVar] | None])rH  r   rˆ   úIterator[AssignmentStmt])rb  r   rˆ   r¼  )rH  r   r0  r4  r  z dict[str, PydanticModelClassVar]rˆ   z1PydanticModelField | PydanticModelClassVar | None)rj   r&   r¶   rŠ   r±   r   rˆ   rö   )
r  úlist[PydanticModelField]r¤   r4  r  r–   rÞ   r–   rˆ   r‰   )r  r½  r|   r1   r  r–   rˆ   r‰   r÷   )r¶   rŠ   rá   r   r1  r–   rˆ   úModelConfigData | None)rH  r   rˆ   r–   )rH  r   rˆ   rô   )rH  r   rˆ   ztuple[str | None, bool])r  r½  rÎ   r–   rÏ   r–   rÑ   r–   r‚  r–   r  r–   rÞ   r–   rÒ   r–   rˆ   úlist[Argument])r  r½  r¤   r4  rˆ   r–   )r  r½  r?  r–   rˆ   r–   )rŒ   r�   rŽ   r�   r  r©   r^   r}   r  r  r  r`  rR  rS  rq  r  r  r  r7  Ústaticmethodrj  rk  ro  rp  r‰  r�  rº  rª   rU   rS   ry   ry   ¦  s  … ñò	'Ð˜8ó 	ð+àð+ð 'ð+ð -ð	+ð
 ,ð+ð 
ó+ó"óH2ó6JðXBLØ+ðBLØ<@ðBLà	SóBLóHRóSðG
Ø"ðG
Ø2AðG
ØOoðG
à	:óG
óR$ðL4XØ.ð4XØ8Gð4XØVZð4XØkoð4Xà	ó4Xðl&
à(ð&
ð  ð&
ð ð	&
ð
 ð&
ð 
ó&
óPBô2!ðF ò2ó ð2ð* òó ðð òó ðð: òó ððB */ðà(ðð ðð ð	ð
 ðð #'ðð ðð ðð #'ðð 
óó@4ð òó ñrU   ry   c                  ó,   ‡ — e Zd ZdZdˆ fd„Zdd„Zˆ xZS )r�  z<A type translator used to change type of Any's, if explicit.c                ó0   •— || _         t        ‰| �	  «        y rX   )Ú_type_of_anyr]   r^   )r_   Útype_of_anyra   s     €rS   r^   z ChangeExplicitTypeOfAny.__init__‡  s   ø€ Ø'ˆÔÜ‰ÑÕrU   c                óx   — |j                   t        j                  k(  r|j                  | j                  ¬«      S |S )N)rÄ  )rÄ  r=   rÌ   r×   rÃ  )r_   r}  s     rS   Ú	visit_anyz!ChangeExplicitTypeOfAny.visit_any‹  s0   € Ø�=‰=œI×.Ñ.Ò.Ø—?‘?¨t×/@Ñ/@�?ÓAÐAàˆHrU   )rÄ  rõ   rˆ   r‰   )r}  r8   rˆ   r<   )rŒ   r�   rŽ   r�   r^   rÆ  r�   r‘   s   @rS   r�  r�  „  s   ø„ ÙFõ÷rU   r�  c                  ó`   — e Zd ZdZ	 	 	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dd„Zd	d„Zd
d„Zdd„Zy)r4  z(Pydantic mypy plugin model config class.Nc	                ót   — || _         || _        || _        || _        || _        || _        || _        || _        y rX   )r©  r  r­   r  r  r  r?  rÂ   )	r_   r©  r  r­   r  r  r  r?  rÂ   s	            rS   r^   zModelConfigData.__init__•  sB   € ð )ˆÔØˆŒØ.ˆÔØ 0ˆÔØ!2ˆÔØ 0ˆÔØ#6ˆÔ Øˆ�rU   c                óp   — | j                   j                  «       D ��ci c]  \  }}|€Œ	||“Œ c}}S c c}}w )z†Returns a dict of Pydantic model config names to their values.

        It includes the config if config value is not `None`.
        )Ú__dict__r6  )r_   ÚkÚvs      rS   r  zModelConfigData.get_values_dict©  s1   € ð
 "&§¡×!4Ñ!4Ó!6×H™˜˜A¸!¹-��1‘ÓHÐHùÓHs   ž
2©2c                óp   — |€y|j                  «       j                  «       D ]  \  }}t        | ||«       Œ y)z$Update Pydantic model config values.N)r  r6  rŸ   )r_   r¤   rË  rÌ  s       rS   r8  zModelConfigData.update°  s;   € àˆ>ØØ×*Ñ*Ó,×2Ñ2Ó4ò 	 ‰DˆAˆqÜ�D˜!˜QÕñ	 rU   c                ó8   — t        | |«      €t        | ||«       yy)zFSet default value for Pydantic model config if config value is `None`.N)r„   rŸ   )r_   r¥   r   s      rS   rC  zModelConfigData.setdefault·  s    € ä�4˜ÓÐ%Ü�D˜#˜uÕ%ð &rU   )NNNNNNNN)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�   r^   r  r8  rC  rª   rU   rS   r4  r4  ’  s‚   „ Ù2ð %)Ø"Ø'+Ø(,Ø)-Ø(,Ø+/Ø"ðà!ðð ðð %ð	ð
 &ðð 'ðð &ðð )ðð óó(Ió ô&rU   r4  c                ó,   — | j                  t        «      S )zXReturn whether the type info is a root model subclass (or the `RootModel` class itself).)rf   ÚROOT_MODEL_FULLNAME)r‚   s    rS   rÞ   rÞ   ½  s   € à�=‰=Ô,Ó-Ð-rU   zpydantic-ormzInvalid from_attributes callÚPydanticzpydantic-configzInvalid config valuezpydantic-aliaszDynamic alias disallowedzpydantic-unexpectedzUnexpected behaviorzpydantic-fieldzUntyped field disallowedzInvalid Field defaultsz!Extra field on RootModel subclassc                ó<   — |j                  d| › d�|t        ¬«       y)zCEmits an error when the model does not have `from_attributes=True`.rv  z$" does not have from_attributes=True©ÚcodeN)r>  Ú	ERROR_ORM)Ú
model_namer|   r±   s      rS   rµ   rµ   Ë  s   € à‡H�Hˆq��Ð@ÐAÀ7ÔQZ€HÕ[rU   c                ó<   — |j                  d| › d�|t        ¬«       y)z0Emits an error when the config value is invalid.zInvalid value for "Config.rv  rÓ  N)r>  ÚERROR_CONFIG)r¶   r|   r±   s      rS   r­  r­  Ð  s   € à‡H�HÐ)¨$¨¨qÐ1°7Ä€HÕNrU   c                ó4   — | j                  d|t        ¬«       y)znEmits required dynamic aliases error.

    This will be called when `warn_required_dynamic_aliases=True`.
    z#Required dynamic aliases disallowedrÓ  N)r>  ÚERROR_ALIAS©r|   r±   s     rS   r@  r@  Õ  s   € ð
 ‡H�HÐ2°GÄ+€HÕNrU   c                óV   — d}d| › d�}|d|› d�z  }|j                  ||t        ¬«       y)z Emits unexpected behavior error.z6https://github.com/pydantic/pydantic/issues/new/choosez7The pydantic mypy plugin ran into unexpected behavior: ú
z&Please consider reporting this bug at z so we can try to fix it!rÓ  N)r>  ÚERROR_UNEXPECTED)r¹   r|   r±   ÚlinkÚfull_messages        rS   r°   r°   Ý  sA   € ð
 D€DØLÈVÈHÐTVÐW€LØÐ<¸T¸FÐB[Ð\Ñ\€LØ‡H�Hˆ\˜7Ô)9€HÕ:rU   c                ó4   — | j                  d|t        ¬«       y)z;Emits an error when there is an untyped field in the model.zUntyped fields disallowedrÓ  N)r>  ÚERROR_UNTYPEDrÛ  s     rS   rh  rh  è  s   € à‡H�HÐ(¨'¼€HÕFrU   c                ó4   — | j                  d|t        ¬«       y)z]Emits an error when there is more than just a root field defined for a subclass of RootModel.z2Only `root` is allowed as a field of a `RootModel`rÓ  N)r>  ÚERROR_EXTRA_FIELD_ROOT_MODELrÛ  s     rS   rT  rT  í  s   € à‡H�HÐAÀ7ÔQm€HÕnrU   c                ó>  — |j                   }||j                  v rd|j                  |   }	|	j                  rIt        |	j                  t
        «      r/|j                  j                  j                  |	j                  «       t        | t        «      r| j                  d«      }
n| j                  dg «      }
|r6|xs t        t        |«      «      }t        t        d«      |dt         d«      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|gnd¬«      }t        ||t/        t1        «       g«      «      }||_         t3        ||«      |_        ||_        |j8                  dz   |z   |_        |j<                  |_        ||j                  v r2t?        ||j                  «      }|j                  |   |j                  |<   |rud|_         t        ||j4                  «      }||_         |j:                  |_        d|_!        tE        |tG        d	«      g|«      }|j<                  |_        tI        tJ        |«      }	ntI        tJ        |«      }	d|	_        |	|j                  |<   |jL                  j                  j                  j%                  |«       y)
zhVery closely related to `mypy.plugins.common.add_method_to_class`, with a few pydantic-specific changes.zbuiltins.functionr	  NTÚ__pydantic_self__z"All arguments must be fully typed.)Ú	variablesr¢  rù   )'r‚   r%  rˆ  rd   re   r   r9  r:  Úremover1   rœ  Únamed_generic_typer>   rB   r   r*   r   rÈ   r�  rÇ   r¶   rÊ   r9   r   r!   r3   r…   r.  ri   r¦  rÃ   rC   Úis_decoratedr›  r   r    r&   r   Údefn)r|   rz   r¶   rÜ   r‡  rÙ   Útvar_defr›  r‚   rj   Úfunction_typeÚfirstr{  r  rz  rá   Ú	signaturer-  Úr_namerÌ  Údecs                        rS   r‘  r‘  ò  s¦  € ð �8‰8€Dð ˆt�z‰zÑØ�j‰j˜ÑˆØ×Ò¤J¨s¯x©x¼Ô$AØ�H‰H�M‰M× Ñ  §¡Ô*ä�#Ô6Ô7ØŸ™Ð':Ó;‰à×.Ñ.Ð/BÀBÓGˆáØÒ>¤¬-¸Ó*=Ó!>ˆ	Üœ#˜f›+ y°$¼ÀÓFÐG‰àÒ4¤¨tÓ!4ˆ	ô œ#Ð1Ó2°I¸tÄWÓMÐNˆØ�4‰<€Dà&(¨"¨b˜)ˆy€IØò #ˆØ×"Ò"ÐHÐ$HÓHÐ"Ø×Ñ˜×,Ñ,Ô-Ø×Ñ˜Ÿ™×*Ñ*Ô+Ø×Ñ˜Ÿ™Õ"ð	#ô Ø�9˜i¨°mÑ]eÐPXÉzÐkoô€Iô �4˜œu¤h£j \Ó2Ó3€DØ€D„IÜ! )¨TÓ2€D„IØ"€D„MØ—]‘] SÑ(¨4Ñ/€D„NØ—	‘	€D„Ið ˆt�z‰zÑä-¨d°D·J±JÓ?ˆØ!ŸZ™Z¨Ñ-ˆ�
‰
�6Ññ
 Ø ˆÔÜ��d—i‘iÓ ˆØˆŒØ—n‘nˆŒØˆÔÜ˜œx¨Ó6Ð7¸Ó;ˆØ—9‘9ˆŒÜœd CÓ(‰äœd DÓ)ˆØ€CÔØ€D‡J�JˆtÑà‡I�I‡N�N×Ñ×Ñ˜tÕ$rU   c                ó  — | j                  d«      syt        j                  dk\  rddl}n	 ddl}t        | d«      5 }|j                  |«      cddd«       S # t
        $ r ddl}|j                  dd¬«       Y yw xY w# 1 sw Y   yxY w)	z…Returns a dict of config keys to values.

    It reads configs from toml file and returns `None` if the file is not a toml file.
    z.tomlN)é   é   r   zJNo TOML parser installed, cannot read configuration from `pyproject.toml`.rO   )Ú
stacklevelÚrb)
rr   ÚsysÚversion_infoÚtomllibÚtomliÚImportErrorÚwarningsÚwarnÚopenÚload)rš   Útoml_rü  Úrfs       rS   r›   r›   J  sŠ   € ð
 ×Ñ Ô(Øä
×Ñ˜7Ò"Üð	Û!ô 
ˆk˜4Ó	 ð  BØ�z‰z˜"‹~÷ñ øô ò 	Ûà�M‰MÐfÐstˆMÔuÙð		ú÷ð ús   ¬A ¼A=Á A:Á9A:Á=B)rR   rŠ   rˆ   ztype[Plugin])rv   r.   rˆ   r<   )r‚   r)   rˆ   r–   )rÖ  rŠ   r|   r,   r±   r   rˆ   r‰   )r¶   rŠ   r|   r1   r±   r   rˆ   r‰   )r|   r1   r±   r   rˆ   r‰   )r¹   rŠ   r|   z8CheckerPluginInterface | SemanticAnalyzerPluginInterfacer±   r   rˆ   r‰   )r|   r,   r±   r   rˆ   r‰   )NNF)r|   z8SemanticAnalyzerPluginInterface | CheckerPluginInterfacerz   r   r¶   rŠ   rÜ   r¿  r‡  r<   rÙ   rö   rì  zTypeVarType | Noner›  r–   rˆ   r‰   )rš   rŠ   rˆ   zdict[str, Any] | None)‚r�   Ú
__future__r   r÷  Úcollections.abcr   Úconfigparserr   Útypingr   r   Úmypy.errorcodesr   Úmypy.expandtyper	   r
   Ú
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.pluginr,   r-   r.   r/   r0   r1   Úmypy.plugins.commonr2   Úmypy.semanalr3   Úmypy.server.triggerr4   Ú
mypy.stater5   Úmypy.type_visitorr6   Úmypy.typeopsr7   Ú
mypy.typesr8   r9   r:   r;   r<   r=   r>   r?   r@   rA   Úmypy.typevarsrB   Ú	mypy.utilrC   Úmypy.versionrD   Úmypy_versionÚpydantic._internalrE   Úpydantic.versionrF   r¢   r´   rg   r  rÐ  rm   r°  ÚDATACLASS_FULLNAMEr*  rg  r)  ÚMYPY_VERSION_TUPLEr�  rT   rQ   rY   rs   r¼   rû   ry   r�  r4  rÞ   rÕ  rØ  rÚ  rÞ  râ  ÚERROR_FIELD_DEFAULTSrä  rµ   r­  r@  r°   rh  rT  r‘  r›   rª   rU   rS   ú<module>r     s‹  ðÙ då "ã 
Ý $Ý %ß  å %ß @÷!÷ !÷ !÷ !÷ !÷ !÷ !÷ !ó !õD !÷÷ õõ +Ý 5Ý Ý ,Ý 0÷÷ ÷ õ (Ý 2Ý 4å &Ý /à €Ø'€Ø.Ð Ø=Ð Ø5Ð ØRÐ Ø(€Ø5Ð ØKÐ òÐ ð ,?ÐBtÐAuÑ+uÐ (ñ (¨Ó5Ð Ø€ð €óô3@�Vô 3@÷l+Cñ +Có\#÷4PTñ PT÷f
ñ 
÷2[ñ [ô|˜nô ÷(&ñ (&óV.ñ
 �nÐ&DÀjÓQ€	ÙÐ*Ð,BÀJÓO€ÙÐ(Ð*DÀjÓQ€ÙÐ2Ð4IÈ:ÓVÐ ÙÐ*Ð,FÈ
ÓS€Ù Ð!1Ð3KÈZÓXÐ Ù(Ð)9Ð;^Ð`jÓkÐ ó\ó
Oó
Oð;Øð;ØNð;ØY`ð;à	ó;óGó
oð "Ø#'Ø ðU%Ø	AðU%à	ðU%ð ðU%ð ð	U%ð
 ðU%ð ðU%ð !ðU%ð ðU%ð 
óU%ôprU   