§
    ŒŸjÝh  ã                  óZ  — d Z ddlmZ ddlmZmZmZmZmZ ddl	m
Z
 ddlmZmZmZ ddlmZmZmZ ddlmZ ddlmZmZ dd	lmZ dd
lmZmZ ddlmZmZ ddl m!Z!m"Z"m#Z#m$Z$ ddl%m&Z& ddl'm(Z(m)Z) ddl*m+Z+ ddl,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2 ddlm3Z3 ddl4m5Z5 erddlm6Z6  G d„ de¦  «        Z7 G d„ de¦  «        Z8d0d„Z9d1d„Z: G d„ d ¦  «        Z;d!„ Z< G d"„ d#e3¦  «        Z= G d$„ d%e5¦  «        Z> G d&„ d'e$e)¦  «        Z? G d(„ d)e$e;¦  «        Z@ G d*„ d+e$e;¦  «        ZA G d,„ d-e;e(e¬.¦  «        ZBd/S )2a  
Like described in the :mod:`parso.python.tree` module,
there's a need for an ast like module to represent the states of parsed
modules.

But now there are also structures in Python that need a little bit more than
that. An ``Instance`` for example is only a ``Class`` before it is
instantiated. This class represents these cases.

So, why is there also a ``Class`` class here? Well, there are decorators and
they change classes in Python 3.

Representation modules also define "magic methods". Those methods look like
``py__foo__`` and are typically mappable to the Python equivalents ``__call__``
and others. Here's a list:

====================================== ========================================
**Method**                             **Description**
-------------------------------------- ----------------------------------------
py__call__(arguments: Array)           On callable objects, returns types.
py__bool__()                           Returns True/False/None; None means that
                                       there's no certainty.
py__bases__()                          Returns a list of base classes.
py__iter__()                           Returns a generator of a set of types.
py__class__()                          Returns the class of an instance.
py__simple_getitem__(index: int/str)   Returns a a set of types of the index.
                                       Can raise an IndexError/KeyError.
py__getitem__(indexes: ValueSet)       Returns a a set of types of the index.
py__file__()                           Only on modules. Returns None if does
                                       not exist.
py__package__() -> List[str]           Only on modules. For the import system.
py__path__()                           Only on modules. For the import system.
py__get__(call_object)                 Only on instances. Simulates
                                       descriptors.
py__doc__()                            Returns the docstring for a value.
====================================== ========================================

é    )Úannotations)ÚListÚOptionalÚTupleÚTYPE_CHECKINGÚAny)Údebug)Úget_cached_parent_scopeÚexpr_is_dottedÚfunction_is_property)Úinference_state_method_cacheÚCachedMetaClassÚ&inference_state_method_generator_cache)Úcompiled)ÚLazyKnownValuesÚLazyTreeValue)ÚParserTreeFilter)ÚTreeNameDefinitionÚ	ValueName)Úunpack_arglistÚValuesArguments)ÚValueSetÚiterator_to_value_setÚ	NO_VALUESÚValueWrapper©ÚClassContext)ÚFunctionAndClassBaseÚFunctionMixin)Ú	Decoratee)ÚLazyGenericManagerÚTupleGenericManager)Úplugin_manager)Ú	Parameter)ÚBaseTreeParamName)ÚAbstractSignature)ÚInferenceStatec                  óN   ‡ — e Zd Zˆ fd„Zed„ ¦   «         Zeˆ fd„¦   «         Zˆ xZS )Ú	ClassNamec                óh   •— t          ¦   «                              ||¦  «         || _        || _        d S ©N)ÚsuperÚ__init__Ú_apply_decoratorsÚ_class_value)ÚselfÚclass_valueÚ	tree_nameÚname_contextÚapply_decoratorsÚ	__class__s        €úg/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/jedi/inference/value/klass.pyr-   zClassName.__init__E   s3   ø€ Ý‰Œ×Ò˜ yÑ1Ô1Ð1Ø!1ˆÔØ'ˆÔÐÐó    c              #  ó¾   K  — ddl m}  || j        j        | j        | j        ¦  «        }|D ]0}| j        r#|                     d | j        ¬¦  «        E d {V —† Œ,|V — Œ1d S )Nr   )Útree_name_to_values)Úinstancer1   )Újedi.inference.syntax_treer9   Úparent_contextÚinference_stater2   r.   Ú	py__get__r/   )r0   r9   ÚinferredÚresult_values       r6   ÚinferzClassName.inferJ   s§   è è € ð 	CÐBÐBÐBÐBÐBØ&Ð&ØÔÔ/°Ô1DÀdÄnñVô Vˆð %ð 	#ð 	#ˆLØÔ%ð #Ø'×1Ò1¸4ÈTÔM^Ð1Ñ_Ô_Ð_Ð_Ð_Ð_Ð_Ð_Ð_Ð_à"Ð"Ð"Ð"Ð"ð		#ð 	#r7   c                ó–   •— t          ¦   «         j        }|dk    r.| j                             ¦   «         }|€|S t	          |¦  «        rdS |S )NÚfunctionÚproperty)r,   Úapi_typer2   Úget_definitionr   )r0   Útype_Ú
definitionr5   s      €r6   rE   zClassName.api_typeW   sT   ø€ å‘”Ô ˆØ�JÒÐØœ×6Ò6Ñ8Ô8ˆJØÐ!Ø�Ý# JÑ/Ô/ð "ð "�zØˆr7   )	Ú__name__Ú
__module__Ú__qualname__r-   r   rA   rD   rE   Ú__classcell__©r5   s   @r6   r)   r)   D   sy   ø€ € € € € ð(ð (ð (ð (ð (ð
 ð
#ð 
#ñ Ôð
#ð ðð ð ð ñ „Xðð ð ð ð r7   r)   c                  ó@   ‡ — e Zd Z	 	 dˆ fd„	Zd„ Zd„ Zd„ Zˆ fd„Zˆ xZS )	ÚClassFilterNFc                ó’   •— t          ¦   «                              |                     ¦   «         |||¬¦  «         || _        || _        d S )N)Úuntil_positionÚorigin_scope)r,   r-   Ú
as_contextr/   Ú_is_instance)r0   r1   Únode_contextrQ   rR   Úis_instancer5   s         €r6   r-   zClassFilter.__init__i   sS   ø€ å‰Œ×ÒØ×"Ò"Ñ$Ô$ lØ)Ø%ð 	ñ 	
ô 	
ð 	
ð
 (ˆÔØ'ˆÔÐÐr7   c                ó    ‡ — ˆ fd„|D ¦   «         S )Nc                óV   •— g | ]%}t          ‰j        |‰j        ‰j         ¬ ¦  «        ‘Œ&S ))r1   r2   r3   r4   )r)   r/   Ú_node_contextrT   ©Ú.0Únamer0   s     €r6   ú
<listcomp>z.ClassFilter._convert_names.<locals>.<listcomp>t   sR   ø€ ð 
ð 
ð 
ð õ Ø Ô-ØØ!Ô/Ø%)Ô%6Ð!6ð	ñ ô ð
ð 
ð 
r7   © )r0   Únamess   ` r6   Ú_convert_nameszClassFilter._convert_namess   s0   ø€ ð
ð 
ð 
ð 
ð  ð
ñ 
ô 
ð 	
r7   c                óv   — | j         }|�/|| j        k    s|| j        k    rdS t          | j        |¦  «        }|­/dS )NTF)Ú_origin_scopeÚ_parser_scoper<   r
   Ú_parso_cache_node)r0   Únodes     r6   Ú_equals_origin_scopez ClassFilter._equals_origin_scope}   sQ   € ØÔ!ˆØÐØ�tÔ)Ò)Ð)¨T°TÔ5HÒ-HÐ-HØ�tÝ*¨4Ô+AÀ4ÑHÔHˆDð Ðð ˆur7   c                ó”   — |j                              d¦  «         p-|j                              d¦  «        p|                      ¦   «         S )NÚ__)ÚvalueÚ
startswithÚendswithrf   )r0   r\   s     r6   Ú_access_possiblezClassFilter._access_possible…   sH   € à”:×(Ò(¨Ñ.Ô.Ð.ð +°$´*×2EÒ2EÀdÑ2KÔ2Kð +Ø×(Ò(Ñ*Ô*ð	+r7   c                ód   •‡ — t          ¦   «                              |¦  «        }ˆ fd„|D ¦   «         S )Nc                ó>   •— g | ]}‰                      |¦  «        ¯|‘ŒS r^   )rl   rZ   s     €r6   r]   z'ClassFilter._filter.<locals>.<listcomp>Œ   s,   ø€ ÐFÐFÐF˜¨$×*?Ò*?ÀÑ*EÔ*EÐF�ÐFÐFÐFr7   )r,   Ú_filter)r0   r_   r5   s   ` €r6   ro   zClassFilter._filterŠ   s3   øø€ Ý‘”—’ Ñ&Ô&ˆØFÐFÐFÐF ÐFÑFÔFÐFr7   )NNNF)	rI   rJ   rK   r-   r`   rf   rl   ro   rL   rM   s   @r6   rO   rO   h   s’   ø€ € € € € ØFJØ05ð(ð (ð (ð (ð (ð (ð
ð 
ð 
ðð ð ð+ð +ð +ð
Gð Gð Gð Gð Gð Gð Gð Gð Gr7   rO   ÚreturnúOptional[bool]c                ó¶   — | D ]U}|j         dk    rH|j        d         j        dk    r2|j        d         j        dk    r dS |j        d         j        dk    r dS ŒVd	S )
zž
    Returns:

    - ``True`` if ``@dataclass(init=True)``
    - ``False`` if ``@dataclass(init=False)``
    - ``None`` if not specified ``@dataclass()``
    Úargumentr   Úinité   ÚFalseFÚTrueTN)ÚtypeÚchildrenri   )Ú	arg_nodesÚarg_nodes     r6   Úinit_param_valuer|   �   sv   € ð ð ð ˆàŒM˜ZÒ'Ð'ØÔ! !Ô$Ô*¨fÒ4Ð4àÔ  Ô#Ô)¨WÒ4Ð4Ø�u�uØÔ" 1Ô%Ô+¨vÒ5Ð5Ø�t�tøàˆ4r7   úList[DataclassParamName]c           	     ó@  — g }|                       ¦   «                              ¦   «         }t          |                     ¦   «         d„ ¬¦  «        D ]Ð}|j                             ¦   «         }|j        d         }|j        dk    r�|j        dk    r’|j        d         }|j        dk    r|j        d         j        dk    rŒmt          |j        ¦  «        d	k     rd
}n|j        d         }| 
                    t          | j        |j        |j        d         |¬¦  «        ¦  «         ŒÑ|S )a3  
    ``cls`` is a :class:`ClassMixin`. The type is only documented as mypy would
    complain that some fields are missing.

    .. code:: python

        @dataclass
        class A:
            a: int
            b: str = "toto"

    For the previous example, the param names would be ``a`` and ``b``.
    c                ó   — | j         S r+   )Ú	start_pos)r\   s    r6   ú<lambda>z+get_dataclass_param_names.<locals>.<lambda>´   s   € ¸$¼.€ r7   )Úkeyé   Ú	expr_stmtÚ	annassignÚ	atom_exprr   ÚClassVaré   Né   )r<   r2   Úannotation_nodeÚdefault_node)rS   Úget_global_filterÚsortedÚvaluesr2   rF   ry   rx   ri   ÚlenÚappendÚDataclassParamNamer<   )ÚclsÚparam_namesÚfilter_r\   Údr…   re   Údefaults           r6   Úget_dataclass_param_namesr—   ¤   s,  € ð €KØ�nŠnÑÔ×0Ò0Ñ2Ô2€GÝ�w—~’~Ñ'Ô'Ð-HÐ-HÐIÑIÔIð ð ˆØŒN×)Ò)Ñ+Ô+ˆØ”J˜q”Mˆ	ØŒ6�[Ò Ð  Y¤^°{Ò%BÐ%BØÔ% aÔ(ˆDØŒy˜KÒ'Ð'¨D¬M¸!Ô,<Ô,BÀjÒ,PÐ,PØå�9Ô%Ñ&Ô&¨Ò*Ð*Ø��à#Ô,¨QÔ/�à×ÒÕ1Ø"Ô1Øœ.Ø )Ô 2°1Ô 5Ø$ð	 ñ  ô  ñ ô ð øð Ðr7   c                  ó&  — e Zd ZU ded<   ded<   ded<   ded<   ded<   ded<   ded	<   ded
<   d„ Zd„ Zd„ Zd„ Zed„ ¦   «         Z	d„ Z
 e¦   «         d„ ¦   «         Z	 	 d#d„Zd$d„Zd%d„Zd„ Zd„ Zd&d„Z ed¬¦  «        d„ ¦   «         Zd „ Zd!„ Zd"„ ZdS )'Ú
ClassMixinr   Ú	tree_noder<   r'   r=   Úpy__bases__Úget_metaclassesÚget_metaclass_filtersÚget_metaclass_signaturesÚlist_type_varsc                ó   — dS ©NTr^   ©r0   s    r6   Úis_classzClassMixin.is_classÔ   ó   € Øˆtr7   c                ó   — dS r¡   r^   r¢   s    r6   Úis_class_mixinzClassMixin.is_class_mixin×   r¤   r7   c                óÀ   — ddl m} ddlm} |                      ¦   «         rt           || ¦  «        g¦  «        S t           || j        | j        | |¦  «        g¦  «        S )Nr   )ÚTreeInstance)Ú	TypedDict)Újedi.inference.valuer¨   Újedi.inference.gradual.typingr©   Úis_typeddictr   r=   r<   )r0   Ú	argumentsr¨   r©   s       r6   Ú
py__call__zClassMixin.py__call__Ú   s|   € Ø5Ð5Ð5Ð5Ð5Ð5à;Ð;Ð;Ð;Ð;Ð;Ø×ÒÑÔð 	/Ý˜Y˜Y t™_œ_Ð-Ñ.Ô.Ð.Ý˜˜ dÔ&:¸DÔ<OÐQUÐW`ÑaÔaÐbÑcÔcÐcr7   c                ó6   — t          j        | j        d¦  «        S )Nrx   )r   Úbuiltin_from_namer=   r¢   s    r6   Úpy__class__zClassMixin.py__class__â   s   € ÝÔ)¨$Ô*>ÀÑGÔGÐGr7   c                ó6   — t          | | j        j        ¦  «        S r+   )r   rš   r\   r¢   s    r6   r\   zClassMixin.nameå   s   € å˜˜tœ~Ô2Ñ3Ô3Ð3r7   c                ó   — | j         j        S r+   )r\   Ústring_namer¢   s    r6   Ú
py__name__zClassMixin.py__name__é   s   € ØŒyÔ$Ð$r7   c              #  ó&  K  — | g}| V — |                       ¦   «         D ]r}|                     ¦   «         D ][}	 |j        } |¦   «         D ]}||vr|                     |¦  «         |V — Œ Œ5# t          $ r 	 t          j        d| |¦  «         Y ŒXw xY wŒsd S )Nz$Super class of %s is not a class: %s)r›   rA   Ú	py__mro__r�   ÚAttributeErrorr	   Úwarning)r0   ÚmroÚlazy_clsr’   Ú
mro_methodÚcls_news         r6   r·   zClassMixin.py__mro__ì   sð   è è € àˆfˆØˆ
ˆ
ˆ
ð ×(Ò(Ñ*Ô*ð 	*ð 	*ˆHð  —~’~Ñ'Ô'ð *ð *�ð*Ø!$¤�Jð $. :¡<¤<ð *ð *˜Ø"¨#Ð-Ð-ØŸJšJ wÑ/Ô/Ð/Ø")˜M˜M˜Møð*øõ &ð Uð Uð Uð	õ ”MÐ"HÈ$ÐPSÑTÔTÐTÐTÐTðUøøøð*ð	*ð 	*s   ·A)Á)!BÂBNFTc              #  ó„  K  — |r2|                       ¦   «         }|r|                      ||¦  «        E d {V —† |                      ¦   «         D ]Z}|                     ¦   «         r|                     |¬¦  «        E d {V —† Œ3t          | |                     ¦   «         ||¬¦  «        V — Œ[|s’|r’ddlm}  || j	        d¦  «        }|| k    rwt          g ¦  «        }	|                     |	¦  «        D ]T}
|
                     ¦   «         }t          |d ¦  «         t          |d ¦  «         t          |d ¦  «        }|€J ‚|V — ŒOd S d S d S d S )N)rV   )rU   rR   rV   r   )r°   rx   )rœ   r�   r·   Úis_compiledÚget_filtersrO   rS   Újedi.inference.compiledr°   r=   r   r®   Únext)r0   rR   rV   Úinclude_metaclassesÚinclude_type_when_classÚmetaclassesr’   r°   rG   Úargsr:   Úinstance_filtersÚxs                r6   rÀ   zClassMixin.get_filters  sË  è è € àð 	PØ×.Ò.Ñ0Ô0ˆKØð PØ×5Ò5°kÀ;ÑOÔOÐOÐOÐOÐOÐOÐOÐOà—>’>Ñ#Ô#ð 	ð 	ˆCØ�ŠÑ Ô ð ØŸ?š?°{˜?ÑCÔCÐCÐCÐCÐCÐCÐCÐCÐCå!Ø s§~¢~Ñ'7Ô'7Ø!-Ø +ðñ ô ð ð ð ð ð
 ð 	Ð6ð 	ØAÐAÐAÐAÐAÐAØ%Ð% dÔ&:¸FÑCÔCˆEØ˜Š}ˆ}õ ' rÑ*Ô*�Ø %× 0Ò 0°Ñ 6Ô 6ð ð �HØ'/×';Ò';Ñ'=Ô'=Ð$åÐ)¨4Ñ0Ô0Ð0ÝÐ)¨4Ñ0Ô0Ð0ÝÐ-¨tÑ4Ô4�AØ˜=˜=˜=Ø�G�G�G�Gð	ð 	ð 	ð 	ð ˆ}ð
ð r7   rp   úTuple[bool, Optional[bool]]c                óÌ   — |                       ¦   «         D ]N}t          |t          ¦  «        r7t          |j        t          ¦  «        rd|j                             ¦   «         fc S ŒOdS )NT)FN)rœ   Ú
isinstancer    Ú_wrapped_valueÚDataclassTransformerÚinit_mode_from_new)r0   Úmetas     r6   Ú$_has_dataclass_transform_metaclassesz/ClassMixin._has_dataclass_transform_metaclasses.  ss   € Ø×(Ò(Ñ*Ô*ð 	Fð 	FˆDå˜4¥Ñ+Ô+ðFõ ˜tÔ2Õ4HÑIÔIðFð
 ˜TÔ0×CÒCÑEÔEÐEÐEÐEÐEøàˆ{r7   úList[DataclassSignature]c                ó  — g }d}d}t          t          |                      ¦   «         ¦  «        ¦  «        D ]¼}|sUt          |t          ¦  «        r|j        r
d}|j        }n,t          |t          ¦  «        r|                     ¦   «         \  }}|rŒY|rat          |t          ¦  «        rL| 	                    ¦   «         s| 	                    ¦   «         €$|r"| 
                    t          |¦  «        ¦  «         Œ½|rt          ||¦  «        gS g S )a)  
        Returns: A non-empty list if the class has dataclass semantics else an
        empty list.

        The dataclass-like semantics will be assumed for any class that directly
        or indirectly derives from the decorated class or uses the decorated
        class as a metaclass.
        FNT)ÚreversedÚlistr·   rË   rÍ   Úinit_mode_from_init_subclassr™   rÐ   Ú
ClassValueÚinit_param_modeÚextendr—   ÚDataclassSignature)r0   r“   Úis_dataclass_transformÚdefault_init_moder’   s        r6   Ú#_get_dataclass_transform_signaturesz.ClassMixin._get_dataclass_transform_signatures9  sK  € ð ˆØ!&ÐØ,0ÐÝ�D §¢Ñ!1Ô!1Ñ2Ô2Ñ3Ô3ð %	ð %	ˆCØ)ð õ ˜sÕ$8Ñ9Ô9ðàÔ8ðð .2Ð*Ø(+Ô(HÐ%Ð%õ ˜s¥JÑ/Ô/ðð
 ×@Ò@ÑBÔBñ >Ð*Ð,=ð *ð Øð 'ð
å˜s¥JÑ/Ô/ð
ð ×'Ò'Ñ)Ô)ð	
ð
 ×+Ò+Ñ-Ô-Ð5Ð:KÐ5ð ×"Ò"Ý-¨cÑ2Ô2ñô ð øð "ð 	Ý& s¨KÑ8Ô8Ð9Ð9àˆIr7   c                ó8  ‡ — ‰                       ¦   «         }|r‰                      |¦  «        }|r|S t          g ¦  «        }‰                      |¦  «        }t	          |¦  «        }‰                      ¦   «         }|r|S ˆ fd„|                     ¦   «         D ¦   «         S )Nc                ó:   •— g | ]}|                      ‰¦  «        ‘ŒS r^   )Úbind)r[   Úsigr0   s     €r6   r]   z-ClassMixin.get_signatures.<locals>.<listcomp>‚  s#   ø€ ÐJÐJÐJ s�C—H’H˜T‘N”NÐJÐJÐJr7   )rœ   rž   r   r®   Úinit_or_new_funcrÜ   Úget_signatures)r0   rÅ   ÚsigsrÆ   r:   Ú
init_funcsÚdataclass_sigss   `      r6   râ   zClassMixin.get_signaturesq  s¯   ø€ ð ×*Ò*Ñ,Ô,ˆØð 	Ø×0Ò0°Ñ=Ô=ˆDØð Ø�Ý˜rÑ"Ô"ˆØ—?’? 4Ñ(Ô(ˆÝ% hÑ/Ô/ˆ
à×AÒAÑCÔCˆØð 	KØ!Ð!àJÐJÐJÐJ¨j×.GÒ.GÑ.IÔ.IÐJÑJÔJÐJr7   c                ó    — t          | ¦  «        S r+   r   r¢   s    r6   Ú_as_contextzClassMixin._as_context„  s   € Ý˜DÑ!Ô!Ð!r7   c                ó\   — |rd|                       ¦   «         z  S |                       ¦   «         S )NzType[%s])rµ   )r0   Úadd_class_infos     r6   Úget_type_hintzClassMixin.get_type_hint‡  s/   € Øð 	2Ø §¢Ñ 1Ô 1Ñ1Ð1Ø�ŠÑ Ô Ð r7   ©r–   c                óJ  — ddl m} |                      ¦   «         D ]‡}t          |t          ¦  «        s dS |j        }t          |¦  «        s dS |                     ¦   «         D ]?}t          ||¦  «        r  dS 	 |j        } |¦   «         r  dS Œ-# t          $ r Y   dS w xY wŒˆdS )Nr   )ÚTypedDictClassFT)
r«   rí   r›   rË   r   Údatar   rA   r¬   r¸   )r0   rí   r»   rš   r’   Úmethods         r6   r¬   zClassMixin.is_typeddictŒ  s   € ð 	AÐ@Ð@Ð@Ð@Ð@Ø×(Ò(Ñ*Ô*ð 	$ð 	$ˆHÝ˜h­Ñ6Ô6ð Ø�u�uØ œˆIõ " )Ñ,Ô,ð Ø�u�uà—~’~Ñ'Ô'ð $ð $�Ý˜c >Ñ2Ô2ð  Ø˜4˜4˜4ð	$Ø Ô-�Fð �v‘x”xð $Ø#˜t˜t˜tð$øõ &ð !ð !ð !ð !˜5˜5˜5˜5ð	!øøøð$ð ˆus   Á9BÂ
BÂBc                óš   ‡ ‡‡— ddl mŠ |s$t          j        d¦  «         t	          ‰ g¦  «        S t	          ˆˆˆ fd„|D ¦   «         ¦  «        S )Nr   ©ÚGenericClassz:Class indexes inferred to nothing. Returning class insteadc              3  óX   •K  — | ]$} ‰‰t          ‰j        |¬ ¦  «        ¦  «        V — Œ%dS ))Úcontext_of_indexÚindex_valueN)r!   Úcontext)r[   rõ   rò   Úcontextualized_noder0   s     €€€r6   ú	<genexpr>z+ClassMixin.py__getitem__.<locals>.<genexpr>¯  sc   øè è € ð 	
ð 	
ð ð ˆLØÝ"Ø%8Ô%@Ø +ðñ ô ñô ð	
ð 	
ð 	
ð 	
ð 	
ð 	
r7   )Újedi.inference.gradual.baserò   r	   r¹   r   )r0   Úindex_value_setr÷   rò   s   ` `@r6   Úpy__getitem__zClassMixin.py__getitem__ª  s„   øøø€ Ø<Ð<Ð<Ð<Ð<Ð<Øð 	$ÝŒMÐVÑWÔWÐWÝ˜T˜FÑ#Ô#Ð#Ýð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð  /ð	
ñ 	
ô 	
ñ 	
ô 	
ð 		
r7   c                ó@   — ddl m}  || t          |¦  «        ¦  «        S )Nr   rñ   )rù   rò   r"   )r0   Úgenerics_tuplerò   s      r6   Úwith_genericszClassMixin.with_genericsº  s6   € Ø<Ð<Ð<Ð<Ð<Ð<Øˆ|ØÝ Ñ/Ô/ñ
ô 
ð 	
r7   c                óº   ‡ ‡— ddl m} ˆ ˆfd„}‰r<t           |‰ t          t	           |¦   «         ¦  «        ¦  «        ¦  «        g¦  «        S t          ‰ h¦  «        S )Nr   rñ   c               3  ó˜   •K  — ‰                      ¦   «         D ]1} ‰                     |                      ¦   «         t          ¦  «        V — Œ2dS )aa  
            The TypeVars in the resulting classes have sometimes different names
            and we need to check for that, e.g. a signature can be:

            def iter(iterable: Iterable[_T]) -> Iterator[_T]: ...

            However, the iterator is defined as Iterator[_T_co], which means it has
            a different type var name.
            N)rŸ   Úgetrµ   r   )Útype_varr0   Útype_var_dicts    €€r6   Úremap_type_varsz3ClassMixin.define_generics.<locals>.remap_type_varsÄ  s]   øè è € ð !×/Ò/Ñ1Ô1ð Jð J�Ø#×'Ò'¨×(;Ò(;Ñ(=Ô(=½yÑIÔIÐIÐIÐIÐIðJð Jr7   )rù   rò   r   r"   Útuple)r0   r  rò   r  s   ``  r6   Údefine_genericszClassMixin.define_genericsÁ  s™   øø€ Ø<Ð<Ð<Ð<Ð<Ð<ð	Jð 	Jð 	Jð 	Jð 	Jð 	Jð ð 	Ý˜\˜\ØÝ#¥E¨/¨/Ñ*;Ô*;Ñ$<Ô$<Ñ=Ô=ñô ð ñ ô ð õ ˜˜ÑÔÐr7   )NFTT)rp   rÉ   )rp   rÑ   ©T)rI   rJ   rK   Ú__annotations__r£   r¦   r®   r±   rD   r\   rµ   r   r·   rÀ   rÐ   rÜ   râ   rç   rê   r   r¬   rû   rþ   r  r^   r7   r6   r™   r™   Ê   s×  € € € € € € Ø€N€N�NØÐÐÑØ#Ð#Ð#Ñ#ØÐÐÑØÐÐÑØÐÐÑØ!Ð!Ð!Ñ!ØÐÐÑðð ð ðð ð ðdð dð dðHð Hð Hð ð4ð 4ñ „Xð4ð%ð %ð %ð ,Ð+Ñ-Ô-ð*ð *ñ .Ô-ð*ð@ :?ØFJðð ð ð ðB	ð 	ð 	ð 	ð6ð 6ð 6ð 6ðpKð Kð Kð&"ð "ð "ð!ð !ð !ð !ð
 "Ð!¨%Ð0Ñ0Ô0ðð ñ 1Ô0ðð:
ð 
ð 
ð 
ð 
ð 
ð ð  ð  ð  ð  r7   r™   c                ó`  — |                       d¦  «        }t          |¦  «        dk    r…t          t          |¦  «        ¦  «        }	 |j        }|                     ¦   «                              ¦   «         r*|j        j        j        dk    r|                       d¦  «        S n# t          $ r Y nw xY w|S )Nr-   rƒ   ÚobjectÚ__new__)
Úpy__getattribute__r�   rÂ   ÚiterÚclass_contextÚget_root_contextÚis_builtins_moduler\   r´   r¸   )ri   rä   rt   r  s       r6   rá   rá   Ù  s½   € Ø×)Ò)¨*Ñ5Ô5€JÝ
ˆ:�„˜!ÒÐÝ•D˜Ñ$Ô$Ñ%Ô%ˆð		;Ø Ô.ˆMð ×-Ò-Ñ/Ô/×BÒBÑDÔDð ;ØÔ*Ô/Ô;¸xÒGÐGØ×/Ò/°	Ñ:Ô:Ð:øøõ ð 	ð 	ð 	ØˆDð	øøøð Ðs   ÁB Â
B+Â*B+c                  ó.   ‡ — e Zd ZdZˆ fd„Zd„ Zd„ Zˆ xZS )r‘   zL
    Represent a field declaration on a class with dataclass semantics.
    c                óh   •— t          ¦   «                              ||¦  «         || _        || _        d S r+   )r,   r-   rŠ   r‹   )r0   r<   r2   rŠ   r‹   r5   s        €r6   r-   zDataclassParamName.__init__ï  s3   ø€ Ý‰Œ×Ò˜¨Ñ3Ô3Ð3Ø.ˆÔØ(ˆÔÐÐr7   c                ó   — t           j        S r+   )r$   ÚPOSITIONAL_OR_KEYWORDr¢   s    r6   Úget_kindzDataclassParamName.get_kindô  s   € ÝÔ.Ð.r7   c                ó\   — | j         €t          S | j                             | j         ¦  «        S r+   )rŠ   r   r<   Ú
infer_noder¢   s    r6   rA   zDataclassParamName.infer÷  s+   € ØÔÐ'ÝÐàÔ&×1Ò1°$Ô2FÑGÔGÐGr7   )rI   rJ   rK   Ú__doc__r-   r  rA   rL   rM   s   @r6   r‘   r‘   ê  sg   ø€ € € € € ðð ð)ð )ð )ð )ð )ð
/ð /ð /ðHð Hð Hð Hð Hð Hð Hr7   r‘   c                  ó*   ‡ — e Zd ZdZˆ fd„Zdd„Zˆ xZS )rÙ   zn
    It represents the ``__init__`` signature of a class with dataclass semantics.

    .. code:: python

    c                óX   •— t          ¦   «                              |¦  «         || _        d S r+   )r,   r-   Ú_param_names)r0   ri   r“   r5   s      €r6   r-   zDataclassSignature.__init__  s)   ø€ Ý‰Œ×Ò˜ÑÔÐØ'ˆÔÐÐr7   Fc                ó   — | j         S r+   )r  )r0   Úresolve_starss     r6   Úget_param_namesz"DataclassSignature.get_param_names	  s   € ØÔ Ð r7   )F)rI   rJ   rK   r  r-   r  rL   rM   s   @r6   rÙ   rÙ   þ  sV   ø€ € € € € ðð ð(ð (ð (ð (ð (ð!ð !ð !ð !ð !ð !ð !ð !r7   rÙ   c                  ó.   ‡ — e Zd ZdZd	d
ˆ fd„Zdd„Zˆ xZS )ÚDataclassDecoratora  
    A dataclass(-like) decorator with custom parameters.

    .. code:: python

        @dataclass(init=True) # this
        class A: ...

        @dataclass_transform
        def create_model(*, init=False): pass

        @create_model(init=False) # or this
        class B: ...
    TÚdefault_initÚboolc                óŠ   •— t          ¦   «                              |¦  «         |                      |¦  «        }|�|n|| _        dS )zÑ
        Args:
            function: Decoratee | function
            arguments: The parameters to the dataclass function decorator
            default_init: Boolean to indicate the default init value
        N)r,   r-   Ú_init_param_valuer×   )r0   rC   r­   r!  Úargument_initr5   s        €r6   r-   zDataclassDecorator.__init__  sJ   ø€ õ 	‰Œ×Ò˜Ñ"Ô"Ð"Ø×.Ò.¨yÑ9Ô9ˆà*Ð6ˆMˆM¸Lð 	ÔÐÐr7   rp   rq   c                óz   — |j         sd S |j         j        dk    r|j         j        n|j         g}t          |¦  «        S )NÚarglist)Úargument_noderx   ry   r|   )r0   r­   rz   s      r6   r$  z$DataclassDecorator._init_param_value*  sQ   € ØÔ&ð 	Ø�4ð Ô&Ô+¨yÒ8Ð8ð Ô#Ô,Ð,àÔ)Ð*ð 	õ   	Ñ*Ô*Ð*r7   r  )r!  r"  ©rp   rq   )rI   rJ   rK   r  r-   r$  rL   rM   s   @r6   r   r     s`   ø€ € € € € ðð ð
ð 
ð 
ð 
ð 
ð 
ð 
ð
+ð 
+ð 
+ð 
+ð 
+ð 
+ð 
+ð 
+r7   r   c                  óB   ‡ — e Zd ZdZˆ fd„Zdd„Zed	d„¦   «         Zˆ xZS )
rÍ   aO  
    A class decorated with the ``dataclass_transform`` decorator. dataclass-like
    semantics will be assumed for any class that directly or indirectly derives
    from the decorated class or uses the decorated class as a metaclass.
    Attributes on the decorated class and its base classes are not considered to
    be fields.
    c                óJ   •— t          ¦   «                              |¦  «         d S r+   )r,   r-   )r0   Úwrapped_valuer5   s     €r6   r-   zDataclassTransformer.__init__?  s!   ø€ Ý‰Œ×Ò˜Ñ'Ô'Ð'Ð'Ð'r7   rp   r"  c                ó*  — | j                              d¦  «        }|sdS t          |¦  «        d         }|                     ¦   «         D ]J}|j        dk    r=|j        r6|j        j        dk    r&|j        j        dk    r dS |j        j        dk    r dS ŒKdS )	z$Default value if missing is ``True``r  Tr   rt   Úkeywordrv   Frw   )rÌ   r  rÔ   r  r´   r‹   rx   ri   )r0   Únew_methodsÚ
new_methodÚparams       r6   rÎ   z'DataclassTransformer.init_mode_from_newB  s²   € àÔ)×<Ò<¸YÑGÔGˆàð 	Ø�4å˜+Ñ&Ô& qÔ)ˆ
à×/Ò/Ñ1Ô1ð 		 ð 		 ˆEàÔ! VÒ+Ð+ØÔ&ð ,àÔ&Ô+¨yÒ8Ð8àÔ%Ô+¨wÒ6Ð6Ø ˜5˜5ØÔ'Ô-°Ò7Ð7Ø˜4˜4øàˆtr7   rq   c                ó   — dS r¡   r^   r¢   s    r6   rÕ   z1DataclassTransformer.init_mode_from_init_subclassX  s	   € ð ˆtr7   )rp   r"  r)  )	rI   rJ   rK   r  r-   rÎ   rD   rÕ   rL   rM   s   @r6   rÍ   rÍ   7  sv   ø€ € € € € ðð ð(ð (ð (ð (ð (ðð ð ð ð, ðð ð ñ „Xðð ð ð ð r7   rÍ   c                  ó*   ‡ — e Zd ZdZdˆ fd„Zd„ Zˆ xZS )ÚDataclassWrappera}  
    A class with dataclass semantics from a decorator. The init parameters are
    only from the current class and parent classes decorated where the ``init``
    parameter was ``True``.

    .. code:: python

        @dataclass
        class A: ... # this

        @dataclass_transform
        def create_model(): pass

        @create_model()
        class B: ... # or this
    Úshould_generate_initr"  c                óX   •— t          ¦   «                              |¦  «         || _        d S r+   )r,   r-   r5  )r0   r,  r5  r5   s      €r6   r-   zDataclassWrapper.__init__q  s+   ø€ õ 	‰Œ×Ò˜Ñ'Ô'Ð'Ø$8ˆÔ!Ð!Ð!r7   c                ó  — g }t          t          |                      ¦   «         ¦  «        ¦  «        D ]@}t          |t          ¦  «        r)|j        r"|                     t          |¦  «        ¦  «         ŒAt          ||¦  «        gS r+   )	rÓ   rÔ   r·   rË   r4  r5  rØ   r—   rÙ   )r0   r“   r’   s      r6   râ   zDataclassWrapper.get_signaturesw  s…   € ØˆÝ�D §¢Ñ!1Ô!1Ñ2Ô2Ñ3Ô3ð 	Cð 	CˆCå˜3Õ 0Ñ1Ô1ðCàÔ,ðCð ×"Ò"Õ#<¸SÑ#AÔ#AÑBÔBÐBøÝ" 3¨Ñ4Ô4Ð5Ð5r7   )r5  r"  )rI   rJ   rK   r  r-   râ   rL   rM   s   @r6   r4  r4  _  sV   ø€ € € € € ðð ð"9ð 9ð 9ð 9ð 9ð 9ð6ð 6ð 6ð 6ð 6ð 6ð 6r7   r4  c                  óú   — e Zd ZdZ e¦   «         d„ ¦   «         Zd„ Z ed¬¦  «        d„ ¦   «         Z ej	        ¦   «         d„ ¦   «         Z
 ee¬¦  «        d„ ¦   «         Zdd„Z ej	        ¦   «         d„ ¦   «         ZdS )rÖ   Úclassc                óÚ   — g }| j                              ¦   «         }|€g S t          |¦  «        D ];\  }}|rŒddlm}  || j        |¦  «        D ]}||vr|                     |¦  «         ŒŒ<|S )Nr   )Úfind_unknown_type_vars)rš   Úget_super_arglistr   Ú!jedi.inference.gradual.annotationr;  r<   r�   )r0   Úfoundr'  Ústarsre   r;  r  s          r6   rŸ   zClassValue.list_type_vars…  s¥   € àˆØ”.×2Ò2Ñ4Ô4ˆØˆ?ØˆIå)¨'Ñ2Ô2ð 	+ð 	+‰KˆE�4Øð ØàPÐPÐPÐPÐPÐPØ2Ð2°4Ô3FÈÑMÔMð +ð +�Ø 5Ð(Ð(à—L’L Ñ*Ô*Ð*øð+ð ˆr7   c                óŠ   — | j                              ¦   «         }|r'ddlm} |                     | j        | j        |¦  «        S d S )Nr   )r­   )rš   r<  Újedi.inferencer­   ÚTreeArgumentsr=   r<   )r0   r'  r­   s      r6   Ú_get_bases_argumentszClassValue._get_bases_arguments—  sT   € Ø”.×2Ò2Ñ4Ô4ˆØð 	_Ø0Ð0Ð0Ð0Ð0Ð0Ø×*Ò*¨4Ô+?ÀÔATÐV]Ñ^Ô^Ð^Øˆtr7   r^   rë   c                ó2  — |                       ¦   «         }|�"d„ |                     ¦   «         D ¦   «         }|r|S |                      ¦   «         dk    r| j                             ¦   «         rg S t          | j        j                             d¦  «        ¦  «        gS )Nc                ó   — g | ]	\  }}|­|‘Œ
S r+   r^   ©r[   r‚   ri   s      r6   r]   z*ClassValue.py__bases__.<locals>.<listcomp>¢  s   € ÐHÐHÐH™Z˜S %¸C¸K�5¸K¸K¸Kr7   r
  )	rC  Úunpackrµ   r<   r  r   r=   Úbuiltins_moduler  )r0   rÆ   Úlsts      r6   r›   zClassValue.py__bases__ž  s    € à×(Ò(Ñ*Ô*ˆØÐØHÐH¨4¯;ª;©=¬=ÐHÑHÔHˆCØð Ø�
à�?Š?ÑÔ Ò(Ð(ØÔ'×:Ò:Ñ<Ô<ð )àˆIÝØÔ Ô0×CÒCÀHÑMÔMñ
ô 
ð ð 	r7   c                ó0   — t          j        d|¦  «         g S )NzUnprocessed metaclass %s)r	   r¹   )r0   rÅ   rV   s      r6   r�   z ClassValue.get_metaclass_filters­  s   € åŒÐ0°+Ñ>Ô>Ð>Øˆ	r7   c                óª  — |                       ¦   «         }|�Yd„ |                     ¦   «         D ¦   «         }t          j        d„ |D ¦   «         ¦  «        }t          d„ |D ¦   «         ¦  «        }|r|S |                      ¦   «         D ]I}|                     ¦   «         D ]2}|                     ¦   «         r|                     ¦   «         }|r|c c S Œ3ŒJt          S )Nc                ó$   — g | ]\  }}|d k    ¯|‘ŒS ©Ú	metaclassr^   rF  s      r6   r]   z.ClassValue.get_metaclasses.<locals>.<listcomp>¶  s&   € ÐMÐMÐM™:˜3 ¸#ÀÒ:LÐ:L�Ð:LÐ:LÐ:Lr7   c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S r+   )rA   )r[   Ú
lazy_values     r6   rø   z-ClassValue.get_metaclasses.<locals>.<genexpr>·  s.   è è € Ð,TÐ,TÀJ¨Z×-=Ò-=Ñ-?Ô-?Ð,TÐ,TÐ,TÐ,TÐ,TÐ,Tr7   c              3  óB   K  — | ]}|                      ¦   «         ¯|V — Œd S r+   )r£   )r[   Úms     r6   rø   z-ClassValue.get_metaclasses.<locals>.<genexpr>¸  s/   è è € Ð"JÐ"J¨¸Q¿ZºZ¹\¼\Ð"J 1Ð"JÐ"JÐ"JÐ"JÐ"JÐ"Jr7   )	rC  rG  r   Ú	from_setsr›   rA   r£   rœ   r   )r0   rÆ   rR  rÅ   Ú	lazy_baseri   rŽ   s          r6   rœ   zClassValue.get_metaclasses²  sø   € à×(Ò(Ñ*Ô*ˆØÐØMÐM¨¯ª©¬ÐMÑMÔMˆAÝ"Ô,Ð,TÐ,TÐRSÐ,TÑ,TÔ,TÑTÔTˆKÝ"Ð"JÐ"J¨kÐ"JÑ"JÔ"JÑJÔJˆKØð #Ø"Ð"à×)Ò)Ñ+Ô+ð 	&ð 	&ˆIØ"ŸšÑ*Ô*ð &ð &�Ø—>’>Ñ#Ô#ð &Ø"×2Ò2Ñ4Ô4�FØð &Ø%˜˜˜˜˜øð	&õ
 Ðr7   rp   rq   c                óˆ   — |                       ¦   «         }|€dS |j        j        dk    rdS t          |j        j        ¦  «        S )zQ
        It returns ``True`` if ``class X(init=False):`` else ``False``.
        Nr'  )rC  r(  rx   r|   ry   )r0   Úbases_argumentss     r6   r×   zClassValue.init_param_modeÄ  sL   € ð ×3Ò3Ñ5Ô5ˆàÐ"Ø�4àÔ(Ô-°Ò:Ð:ð �4å Ô =Ô FÑGÔGÐGr7   c                ó   — g S r+   r^   )r0   rÅ   s     r6   rž   z#ClassValue.get_metaclass_signaturesÔ  s   € àˆ	r7   Nr)  )rI   rJ   rK   rE   r   rŸ   rC  r›   r#   Údecorater�   r   rœ   r×   rž   r^   r7   r6   rÖ   rÖ   ‚  s  € € € € € Ø€Hà!Ð!Ñ#Ô#ðð ñ $Ô#ðð"ð ð ð "Ð!¨"Ð-Ñ-Ô-ðð ñ .Ô-ðð €^ÔÑÔðð ñ Ôðð "Ð!¨)Ð4Ñ4Ô4ðð ñ 5Ô4ðð"Hð Hð Hð Hð  €^ÔÑÔðð ñ Ôðð ð r7   rÖ   rM  Nr)  )rp   r}   )Cr  Ú
__future__r   Útypingr   r   r   r   r   Újedir	   Újedi.parser_utilsr
   r   r   Újedi.inference.cacher   r   r   rA  r   Újedi.inference.lazy_valuer   r   Újedi.inference.filtersr   Újedi.inference.namesr   r   Újedi.inference.argumentsr   r   Újedi.inference.base_valuer   r   r   r   Újedi.inference.contextr   Újedi.inference.value.functionr   r   Újedi.inference.value.decoratorr    Újedi.inference.gradual.genericsr!   r"   Újedi.pluginsr#   Úinspectr$   r%   Újedi.inference.signaturer&   r'   r)   rO   r|   r—   r™   rá   r‘   rÙ   r   rÍ   r4  rÖ   r^   r7   r6   ú<module>rj     s  ðð%ð %ðL #Ð "Ð "Ð "Ð "Ð "à <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <Ð <à Ð Ð Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð+ð +ð +ð +ð +ð +ð +ð +ð +ð +à #Ð #Ð #Ð #Ð #Ð #Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ DØ 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø >Ð >Ð >Ð >Ð >Ð >Ð >Ð >Ø DÐ DÐ DÐ DÐ DÐ DÐ DÐ Dðð ð ð ð ð ð ð ð ð ð ð à /Ð /Ð /Ð /Ð /Ð /Ø MÐ MÐ MÐ MÐ MÐ MÐ MÐ MØ 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø SÐ SÐ SÐ SÐ SÐ SÐ SÐ SØ 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6àð .Ø-Ð-Ð-Ð-Ð-Ð-ð!ð !ð !ð !ð !Ð"ñ !ô !ð !ðH$Gð $Gð $Gð $Gð $GÐ"ñ $Gô $Gð $GðNð ð ð ð*#ð #ð #ð #ðLL ð L ð L ð L ð L ñ L ô L ð L ð^ð ð ð"Hð Hð Hð Hð HÐ*ñ Hô Hð Hð(!ð !ð !ð !ð !Ð*ñ !ô !ð !ð'+ð '+ð '+ð '+ð '+˜ }ñ '+ô '+ð '+ðT%ð %ð %ð %ð %˜<¨ñ %ô %ð %ðP 6ð  6ð  6ð  6ð  6�| Zñ  6ô  6ð  6ðFTð Tð Tð Tð T�Ð1¸_ð Tñ Tô Tð Tð Tð Tr7   