§
    ŒŸjÒ(  ã                   ó¢   — d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZmZmZ d dlmZ d dlmZ d	„ Z G d
„ de¦  «        Zd„ Zd„ Zd„ ZdS )é    )Údefaultdict)Ú	Parameter)Údebug)ÚPushBackIterator)Úanalysis)ÚLazyKnownValueÚLazyTreeValueÚLazyUnknownValue)Úiterable)Ú	ParamNamec                 ó¤   — t          |t          ¦  «        r:|j        }|j        j        dk    r|j        }t          j        |j        | ||¦  «        S d S )NÚargument)Ú
isinstancer	   ÚdataÚparentÚtyper   ÚaddÚcontext)Ú
error_nameÚ
lazy_valueÚmessageÚnodes       úa/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/jedi/inference/param.pyÚ_add_argument_issuer      sX   € Ý�*�mÑ,Ô,ð KØŒˆØŒ;Ô˜zÒ)Ð)Ø”;ˆDÝŒ|˜JÔ.°
¸DÀ'ÑJÔJÐJð	Kð Kó    c                   ó2   ‡ — e Zd Zdˆ fd„	Zd„ Zd„ Zd„ Zˆ xZS )ÚExecutedParamNameFc                 óv   •— t          ¦   «                              ||j        |¬¦  «         || _        || _        d S )N)Ú	arguments)ÚsuperÚ__init__ÚnameÚ_lazy_valueÚ_is_default)ÚselfÚfunction_valuer   Ú
param_noder   Ú
is_defaultÚ	__class__s         €r   r!   zExecutedParamName.__init__   s:   ø€ Ý‰Œ×Ò˜¨¬ÀIÐÑNÔNÐNØ%ˆÔØ%ˆÔÐÐr   c                 ó4   — | j                              ¦   «         S ©N)r#   Úinfer©r%   s    r   r,   zExecutedParamName.infer   s   € ØÔ×%Ò%Ñ'Ô'Ð'r   c                 ó^  ‡— | j         rdS |                      ¦   «                              ¦   «         }|                      ¦   «         t          j        t          j        fv rdS |                      d¬¦  «        Š‰sdS t          ˆfd„|D ¦   «         ¦  «        }t          j
        d||‰d¬¦  «         |S )NTF)Úexecute_annotationc              3   óp   •K  — | ]0}‰                      ¦   «         D ]}|                     |¦  «        V — ŒŒ1d S r+   )Úgather_annotation_classesÚis_sub_class_of)Ú.0Úc1Úc2Úannotationss      €r   ú	<genexpr>z6ExecutedParamName.matches_signature.<locals>.<genexpr>)   sq   øè è € ð Ið IØØ +× EÒ EÑ GÔ GðIð Iàð ×(Ò(¨Ñ,Ô,ð Ið Ið Ið Ið Ið Ið Ir   zparam compare %s: %s <=> %sÚBLUE)Úcolor)r$   r,   Úpy__class__Úget_kindr   ÚVAR_POSITIONALÚVAR_KEYWORDÚinfer_annotationÚanyr   Údbg)r%   Úargument_valuesÚmatchesr6   s      @r   Úmatches_signaturez#ExecutedParamName.matches_signature   sâ   ø€ ØÔð 	Ø�4ØŸ*š*™,œ,×2Ò2Ñ4Ô4ˆØ�=Š=‰?Œ?�yÔ7½Ô9NÐOÐOÐOØ�4Ø×+Ò+¸uÐ+ÑEÔEˆØð 	ð �4Ýð Ið Ið Ið IØ /ðIñ Iô Iñ Iô Iˆõ 	Œ	Ð/Ø˜?¨K¸vð	Gñ 	Gô 	Gð 	Gàˆr   c                 ó2   — d| j         j        ›d| j        ›d�S )Nú<z: ú>)r)   Ú__name__Ústring_namer-   s    r   Ú__repr__zExecutedParamName.__repr__0   s#   € € Ø!œ^Ô4Ð4Ð4°dÔ6FÐ6FÐ6FÐGÐGr   )F)rG   Ú
__module__Ú__qualname__r!   r,   rC   rI   Ú__classcell__)r)   s   @r   r   r      sq   ø€ € € € € ð&ð &ð &ð &ð &ð &ð
(ð (ð (ðð ð ð$Hð Hð Hð Hð Hð Hð Hr   r   c           
      ó>	  ‡‡‡‡— ˆˆˆˆfd„}g Šg }i }| j         Š|                      ¦   «         }‰                     ¦   «         D ]}|||j        j        <   Œt          ‰                     ‰¦  «        ¦  «        Št          t          ‰¦  «        ¦  «        }t          d„ ¦  «        }i }	d}
d}‰                     ¦   «         D �]Â}d}t          |d¦  «        \  }}|�¬d}
	 ||         }||	v r]d}d‰j        ›d|›d	�}‰                     ¦   «         D ]7}‰                     t          j        |j        d
|j        |¬¦  «        ¦  «         Œ8n+t#          | ‰||¦  «        |	|<   n# t$          $ r |||<   Y nw xY wt          |d¦  «        \  }}|­¬	 |                     |	|j        j                 ¦  «         Œí# t$          $ r Y nw xY w|j        dk    r{g }|�M|                     |¦  «         |D ]5\  }}|r|                     ||f¦  «          n|                     |¦  «         Œ6t+          j        | j        |¦  «        }t1          |¦  «        }nî|j        dk    rF|� ||¦  «         t+          j        | j        t5          |¦  «        ¦  «        }t1          |¦  «        }i }n�|€™|j        €zt9          ¦   «         }|
si‰                     ¦   «         D ]T}t;          ‰t=          ‰¦  «        ¦  «        }‰                     t          j        |j        d|j        |¬¦  «        ¦  «         ŒUnt?          ||j        ¦  «        }d}n|}|                     t#          | ‰|||¬¦  «        ¦  «         tA          |t8          ¦  «        s|d         |	|j        j        <   �ŒÄ|
r¥tC          |¦  «        tC          |	¦  «        z
  D ]…}||         }|sy|sw|j        sp|j        si‰                     ¦   «         D ]T}t;          ‰t=          ‰¦  «        ¦  «        }‰                     t          j        |j        d|j        |¬¦  «        ¦  «         ŒUŒ†| "                    ¦   «         D ]8\  }}d‰j        ›d|›d	�}‰                     tG          d||¬¦  «        ¦  «         Œ9t          |¦  «        }|r|d         \  }} ||¦  «         |‰fS )aÀ  
    Return a tuple of:
      - a list of `ExecutedParamName`s corresponding to the arguments of the
        function execution `function_value`, containing the inferred value of
        those arguments (whether explicit or default)
      - a list of the issues encountered while building that list

    For example, given:
    ```
    def foo(a, b, c=None, d='d'): ...

    foo(42, c='c')
    ```

    Then for the execution of `foo`, this will return a tuple containing:
      - a list with entries for each parameter a, b, c & d; the entries for a,
        c, & d will have their values (42, 'c' and 'd' respectively) included.
      - a list with a single entry about the lack of a value for `b`
    c                 ó  •— t          ‰t          ‰¦  «        ¦  «        }‰                     ¦   «         r'‰                     t	          d| |¬¦  «        ¦  «         d S ‰                     d ¦  «         t          j        d|¦  «         d S )Nztype-error-too-many-arguments©r   znon-public warning: %s)Ú_error_argument_countÚlenÚget_calling_nodesÚappendr   r   Úwarning)r   Úmr   ÚfuncdefÚissuesÚunpacked_vas     €€€€r   Útoo_many_argsz:get_executed_param_names_and_issues.<locals>.too_many_argsH   s˜   ø€ Ý! '­3¨{Ñ+;Ô+;Ñ<Ô<ˆð ×&Ò&Ñ(Ô(ð 	7à�MŠMÝ#Ø3ØØðñ ô ñô ð ð ð ð �MŠM˜$ÑÔÐÝŒMÐ2°AÑ6Ô6Ð6Ð6Ð6r   c                  ó   — g S r+   © r[   r   r   ú<lambda>z5get_executed_param_names_and_issues.<locals>.<lambda>g   s   € ¨B€ r   F)NNNTúTypeError: z-() got multiple values for keyword argument 'z'.ztype-error-multiple-valuesrO   é   é   ztype-error-too-few-arguments)r(   éÿÿÿÿz'() got an unexpected keyword argument 'ztype-error-keyword-argumentr   )$Ú	tree_nodeÚget_default_param_contextÚ
get_paramsr"   ÚvalueÚlistÚunpackr   Úiterr   ÚnextrR   rS   r   r   r   r   r   ÚKeyErrorÚ
star_countÚ	push_backr   Ú	FakeTupleÚinference_stater   ÚFakeDictÚdictÚdefaultr
   rP   rQ   r	   r   ÚsetÚitemsr   )r&   r   rY   Úresult_paramsÚ
param_dictÚdefault_param_contextÚparamÚvar_arg_iteratorÚnon_matching_keysÚ	keys_usedÚ	keys_onlyÚhad_multiple_value_errorr(   Úkeyr   Ú	key_paramrU   Úcontextualized_nodeÚlazy_value_listÚseqÚ
result_argÚdctÚkr   Úremaining_argumentsÚ	first_keyrV   rW   rX   s    `                        @@@r   Ú#get_executed_param_names_and_issuesr†   4   s  øøøø€ ð(7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð" €FØ€MØ€JØÔ&€Gð +×DÒDÑFÔFÐà×#Ò#Ñ%Ô%ð -ð -ˆØ',ˆ
�5”:Ô#Ñ$Ð$Ý�y×'Ò'¨Ñ0Ô0Ñ1Ô1€KÝ'­¨[Ñ(9Ô(9Ñ:Ô:Ðå# J JÑ/Ô/ÐØ€IØ€IØ$ÐØ×#Ò#Ñ%Ô%ð R<ñ R<ˆð
 ˆ
ÝÐ-¨|Ñ<Ô<‰ˆˆXØˆoØˆIðHØ& sœO�	ð ˜)Ð#Ð#Ø/3Ð,Ð,à#œL˜L˜L¨#¨#¨#ð/�Aà/8×/JÒ/JÑ/LÔ/Lð ð Ð+ØŸšÝ$œLÐ)<Ô)DØ)EØ)<Ô)AÈ1ðNñ Nô Nñô ð ð ðõ &7Ø&¨	°9¸hñ&Hô &H�I˜c‘N�Nøõ ð 2ð 2ð 2Ø)1Ð! #Ñ&Ð&Ð&ð2øøøõ  !Ð!1°<Ñ@Ô@‰MˆC�ð) ˆoð,	Ø× Ò  ¨5¬:Ô+;Ô!<Ñ=Ô=Ð=ØøÝð 	ð 	ð 	ØˆDð	øøøð Ô˜qÒ Ð à ˆOØÐ#Ø×&Ò& xÑ0Ô0Ð0Ø%5ð 5ð 5‘M�C˜àð Ø(×2Ò2°C¸°?ÑCÔCÐCØ˜Ø#×*Ò*¨8Ñ4Ô4Ð4Ð4ÝÔ$ ^Ô%CÀ_ÑUÔUˆCÝ'¨Ñ,Ô,ˆJˆJØÔ Ò"Ð"ØÐ#Ø�˜hÑ'Ô'Ð'åÔ# NÔ$BÅDÐIZÑD[ÔD[Ñ\Ô\ˆCÝ'¨Ñ,Ô,ˆJØ "ÐÐð Ðà”=Ð(Ý!1Ñ!3Ô!3�JØ$ð 
Ø3<×3NÒ3NÑ3PÔ3Pð 	ð 	Ð/Ý 5°g½sÀ;Ñ?OÔ?OÑ PÔ P˜AØ"ŸMšMÝ (¤Ø$7Ô$?Ø$BØ$7Ô$<Ø,-ð	!"ñ !"ô !"ñô ð ð øõ "/Ð/DÀeÄmÑ!TÔ!T�JØ!%�J�Jà%�
à×ÒÕ.Ø˜I u¨jÀZð
ñ 
ô 
ñ 	ô 	ð 	õ ˜*Õ&6Ñ7Ô7ð 	<Ø*7¸Ô*;ˆI�e”jÔ&Ñ'ùàð õ �Z‘”¥3 y¡>¤>Ñ1ð 	ð 	ˆAØ˜q”MˆEà%ð 	Ð)Að 	ØÔ'ð	Ø+0¬=ð	ð ,5×+FÒ+FÑ+HÔ+Hð ð Ð'Ý-¨gµs¸;Ñ7GÔ7GÑHÔH�AØ—M’MÝ œÐ%8Ô%@Ø%CØ%8Ô%=ÀqðJñ Jô Jñô ð ð øð -×2Ò2Ñ4Ô4ð 	
ð 	
‰ˆˆZˆZàŒ|ˆ|ˆ|˜S˜S˜Sð"ˆà�ŠÝØ-ØØðñ ô ñ	
ô 	
ð 	
ð 	
õ Ð/Ñ0Ô0ÐØð "Ø 3°AÔ 6Ñˆ	�:Øˆ�jÑ!Ô!Ð!Ø˜&Ð Ð s$   ÃEÅE*Å)E*Æ%F)Æ)
F6Æ5F6c                 ó.   — t          | |¦  «        d         S )a|  
    Return a list of `ExecutedParamName`s corresponding to the arguments of the
    function execution `function_value`, containing the inferred value of those
    arguments (whether explicit or default). Any issues building this list (for
    example required arguments which are missing in the invocation) are ignored.

    For example, given:
    ```
    def foo(a, b, c=None, d='d'): ...

    foo(42, c='c')
    ```

    Then for the execution of `foo`, this will return a list containing entries
    for each parameter a, b, c & d; the entries for a, c, & d will have their
    values (42, 'c' and 'd' respectively) included.
    r   )r†   )r&   r   s     r   Úget_executed_param_namesrˆ   ã   s   € õ$ /¨~¸yÑIÔIÈ!ÔLÐLr   c                 óØ   — |                       ¦   «         }t          d„ |D ¦   «         ¦  «        }|dk    rd}ndt          |¦  «        |z
  z  }d| j        ›d|›t          |¦  «        ›d|›d�S )	Nc              3   ó6   K  — | ]}|j         s|j        ¯d V — ŒdS )r^   N)rp   rj   )r3   Úps     r   r7   z(_error_argument_count.<locals>.<genexpr>ú   s0   è è € ÐKÐK !°´ÐK¸a¼lÐK˜AÐKÐKÐKÐKÐKÐKr   r   zexactly zfrom %s to r]   z	() takes z arguments (z given).)rc   ÚsumrQ   r"   )rV   Úactual_countÚparamsÚdefault_argumentsÚbefores        r   rP   rP   ø   s„   € Ø×ÒÑ!Ô!€FÝÐKÐK vÐKÑKÔKÑKÔKÐà˜AÒÐØˆˆà¥# f¡+¤+Ð0AÑ"AÑBˆøàŒ|ˆ|ˆ|˜V˜V¥S¨¡[¤[ [ [°,°,°,ð@ð Ar   N)Úcollectionsr   Úinspectr   Újedir   Újedi.inference.utilsr   Újedi.inferencer   Újedi.inference.lazy_valuer   r	   r
   Újedi.inference.valuer   Újedi.inference.namesr   r   r   r†   rˆ   rP   r[   r   r   ú<module>r™      s<  ðØ #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø 1Ð 1Ð 1Ð 1Ð 1Ð 1Ø #Ð #Ð #Ð #Ð #Ð #ð$ð $ð $ð $ð $ð $ð $ð $ð $ð $à )Ð )Ð )Ð )Ð )Ð )Ø *Ð *Ð *Ð *Ð *Ð *ðKð Kð KðHð Hð Hð Hð H˜	ñ Hô Hð Hð>l!ð l!ð l!ð^Mð Mð Mð*	Að 	Að 	Að 	Að 	Ar   