§
    ñyIf¾2  ã                  ó„   — d dl mZ d dl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 d dlmZmZmZ  G d„ d	¦  «        Zd
S )é    )Úannotations)Únodes)ÚInstance)ÚCallContextÚInferenceContext)ÚInferenceErrorÚ	NoDefault)ÚInferenceResult)ÚUninferableÚUninferableBaseÚ
safe_inferc                  óf   — e Zd ZdZ	 	 ddd„Zeddd„¦   «         Zd	„ Zdd„Z	 ddd„Z	ddd„Z
dd„ZdS )ÚCallSitea«  Class for understanding arguments passed into a call site.

    It needs a call context, which contains the arguments and the
    keyword arguments that were passed into a given call site.
    In order to infer what an argument represents, call :meth:`infer_argument`
    with the corresponding function node and the argument name.

    :param callcontext:
        An instance of :class:`astroid.context.CallContext`, that holds
        the arguments for the call site.
    :param argument_context_map:
        Additional contexts per node, passed in from :attr:`astroid.context.Context.extra_context`
    :param context:
        An instance of :class:`astroid.context.Context`.
    NÚcallcontextr   ÚcontextúInferenceContext | Nonec                óJ  — |€i }|| _         |j        }|j        }t          ¦   «         | _        |                      ||¬¦  «        | _        |                      ||¬¦  «        | _        d„ | j        D ¦   «         | _	        d„ | j         
                    ¦   «         D ¦   «         | _        d S )N©r   c                ó<   — g | ]}t          |t          ¦  «        °|‘ŒS © ©Ú
isinstancer   ©Ú.0Úargs     úE/var/www/piapp/venv/lib/python3.11/site-packages/astroid/arguments.pyú
<listcomp>z%CallSite.__init__.<locals>.<listcomp>/   s7   € ð %
ð %
ð %
ØµjÀÅoÑ6VÔ6Vð%
Øð%
ð %
ð %
ó    c                óD   — i | ]\  }}t          |t          ¦  «        °||“ŒS r   r   ©r   ÚkeyÚvalues      r   ú
<dictcomp>z%CallSite.__init__.<locals>.<dictcomp>2   s>   € ð "
ð "
ð "
á��UÝ˜e¥_Ñ5Ô5ð"
Ø�ð"
ð "
ð "
r   )Úargument_context_mapÚargsÚkeywordsÚsetÚduplicated_keywordsÚ_unpack_argsÚ_unpacked_argsÚ_unpack_keywordsÚ_unpacked_kwargsÚpositional_argumentsÚitemsÚkeyword_arguments)Úselfr   r$   r   r%   r&   s         r   Ú__init__zCallSite.__init__    sÄ   € ð  Ð'Ø#%Ð Ø$8ˆÔ!ØÔˆØÔ'ˆÝ-0©U¬UˆÔ Ø"×/Ò/°¸gÐ/ÑFÔFˆÔØ $× 5Ò 5°hÈÐ 5Ñ PÔ PˆÔð%
ð %
ØÔ.ð%
ñ %
ô %
ˆÔ!ð"
ð "
à"Ô3×9Ò9Ñ;Ô;ð"
ñ "
ô "
ˆÔÐÐr   c                óp   — |pt          ¦   «         }t          |j        |j        ¦  «        } | ||¬¦  «        S )zxGet a CallSite object from the given Call node.

        context will be used to force a single inference path.
        r   )r   r   r%   r&   )ÚclsÚ	call_noder   r   s       r   Ú	from_callzCallSite.from_call8   s>   € ð Ð/Õ-Ñ/Ô/ˆÝ! )¤.°)Ô2DÑEÔEˆØˆs�;¨Ð0Ñ0Ô0Ð0r   c                óV   — t          | j        ¦  «        t          | j        ¦  «        k    S )ao  Check if in the current CallSite were passed *invalid* arguments.

        This can mean multiple things. For instance, if an unpacking
        of an invalid object was passed, then this method will return True.
        Other cases can be when the arguments can't be inferred by astroid,
        for example, by passing objects which aren't known statically.
        )Úlenr-   r*   ©r0   s    r   Úhas_invalid_argumentszCallSite.has_invalid_argumentsD   s%   € õ �4Ô,Ñ-Ô-µ°TÔ5HÑ1IÔ1IÒIÐIr   ÚreturnÚboolc                óV   — t          | j        ¦  «        t          | j        ¦  «        k    S )ag  Check if in the current CallSite were passed *invalid* keyword arguments.

        For instance, unpacking a dictionary with integer keys is invalid
        (**{1:2}), because the keys must be strings, which will make this
        method to return True. Other cases where this might return True if
        objects which can't be inferred were passed.
        )r7   r/   r,   r8   s    r   Úhas_invalid_keywordszCallSite.has_invalid_keywordsN   s%   € õ �4Ô)Ñ*Ô*­c°$Ô2GÑ.HÔ.HÒHÐHr   r&   ú%list[tuple[str | None, nodes.NodeNG]]c                ó"  — i }|pt          ¦   «         }| j        |_        |D ]í\  }}|€át          ||¬¦  «        }t	          |t
          j        ¦  «        st          ||<   Œ=|j        D ]¢\  }}t          ||¬¦  «        }t	          |t
          j	        ¦  «        st          ||<   Œ;t	          |j
        t          ¦  «        st          ||<   Œ`|j
        |v r/t          ||j
        <   | j                             |j
        ¦  «         Œ˜|||j
        <   Œ£Œè|||<   Œî|S )Nr   )r   r$   Úextra_contextr   r   r   ÚDictr   r.   ÚConstr"   Ústrr(   Úadd)	r0   r&   r   ÚvaluesÚnamer"   ÚinferredÚdict_keyÚ
dict_values	            r   r+   zCallSite._unpack_keywordsX   s2  € ð
 57ˆØÐ/Õ-Ñ/Ô/ˆØ $Ô 9ˆÔØ#ð 	%ð 	%‰KˆD�%Øˆ|å% e°WÐ=Ñ=Ô=�Ý! (­E¬JÑ7Ô7ð å#.�F˜4‘LØà,4¬Nð 8ð 8Ñ(�H˜jÝ)¨(¸GÐDÑDÔD�HÝ% hµ´Ñ<Ô<ð !Ý'2˜˜t™Ø Ý% h¤nµcÑ:Ô:ð !Ý'2˜˜t™Ø Ø”~¨Ð/Ð/å1<˜˜xœ~Ñ.ØÔ0×4Ò4°X´^ÑDÔDÐDØ Ø-7�F˜8œ>Ñ*Ð*ð8ð  %��t‘�Øˆr   c                óÂ  — g }|pt          ¦   «         }| j        |_        |D ]½}t          |t          j        ¦  «        rŒt          |j        |¬¦  «        }t          |t          ¦  «        r| 	                    t          ¦  «         Œbt          |d¦  «        s| 	                    t          ¦  «         Œ�|                     |j        ¦  «         Œ¨| 	                    |¦  «         Œ¾|S )Nr   Úelts)r   r$   r@   r   r   ÚStarredr   r"   r   Úappendr   ÚhasattrÚextendrK   )r0   r%   r   rE   r   rG   s         r   r)   zCallSite._unpack_args{   sÙ   € ØˆØÐ/Õ-Ñ/Ô/ˆØ $Ô 9ˆÔØð 	#ð 	#ˆCÝ˜#�uœ}Ñ-Ô-ð 
#Ý% c¤i¸ÐAÑAÔA�Ý˜h­Ñ8Ô8ð Ø—M’M¥+Ñ.Ô.Ð.ØÝ˜x¨Ñ0Ô0ð Ø—M’M¥+Ñ.Ô.Ð.ØØ—’˜hœmÑ,Ô,Ð,Ð,à—’˜cÑ"Ô"Ð"Ð"Øˆr   Úfuncnoder
   rF   rC   r   c           	     ó`
  ‡— t          |t          j        t          j        f¦  «        st	          d|›d�| |||¬¦  «        ‚|| j        v rt	          d| |||¬¦  «        ‚	 | j        |                              |¦  «        S # t          $ r Y nw xY wt          | j
        ¦  «        t          |j        j        ¦  «        k    r,|j        j        s |j        j        st	          d| |||¬¦  «        ‚| j
        dt          |j        j        ¦  «        …         }| j
        t          |j        j        ¦  «        d…         }||j        j        |j        j        fv rd}n |j                             |¦  «        d         }d„ |j        j        D ¦   «         Šˆfd	„| j                             ¦   «         D ¦   «         }t          |¦  «        t          |j        j        ¦  «        k     rG|j        j        D ]:}|j        |v r/|                     |j        ¦  «        }	|                     |	¦  «         Œ;|��Y|j        }
|dk    �r
|j        d
v �r |
€)|j        dk    r|r|d                              |¬¦  «        S |
€|j                             ¦   «         }
t          |
t          j        ¦  «        rA|j                             ¦   «         }||
                     |¬¦  «        u rt9          |
f¦  «        S |j        dk    r9t          |
t:          ¦  «        s|
                     ¦   «         }
t9          |
f¦  «        S |j        dk    rt9          |
f¦  «        S |j        d
v r|
r|dz  }	 | j
        |                              |¦  «        S # t>          $ r Y nw xY w|j        j        |k    r»|                       ¦   «         r t	          d| j        | j!        | |||¬¦  «        ‚t          j"        |j        j#        |j        j$        |j        |j        j%        |j        j&        ¬¦  «        }| '                    d„ |                     ¦   «         D ¦   «         ¦  «         t9          |f¦  «        S |j        j        |k    r‰|  (                    ¦   «         r t	          d| j
        | j)        | |||¬¦  «        ‚t          j*        |j        j#        |j        j$        |j        ¬¦  «        }| '                    |¦  «         t9          |f¦  «        S 	 |j         +                    |¦  «                             |¦  «        S # tX          $ r Y nw xY wt	          d| |||¬¦  «        ‚)z>Infer a function argument value according to the call context.z<Can not infer function argument value for non-function node ú.)Ú	call_siteÚfuncr   r   z9The arguments passed to {func!r} have duplicate keywords.zJToo many positional arguments passed to {func!r} that does not have *args.Nr   c                ó   — h | ]	}|j         ’Œ
S r   )rF   r   s     r   ú	<setcomp>z*CallSite.infer_argument.<locals>.<setcomp>¿   s   € ÐCÐCÐC 3�c”hÐCÐCÐCr   c                ó$   •— i | ]\  }}|‰v¯	||“ŒS r   r   )r   r!   r"   Ú
kwonlyargss      €r   r#   z+CallSite.infer_argument.<locals>.<dictcomp>À   s4   ø€ ð 
ð 
ð 
á��UØ˜*Ð$Ð$ð �à$Ð$Ð$r   >   ÚmethodÚclassmethodrY   r   rZ   é   z‡Inference failed to find values for all keyword arguments to {func!r}: {unpacked_kwargs!r} doesn't correspond to {keyword_arguments!r}.)r/   Úunpacked_kwargsrS   rT   r   r   )ÚlinenoÚ
col_offsetÚparentÚ
end_linenoÚend_col_offsetc                ó@   — g | ]\  }}t          j        |¦  «        |f‘ŒS r   )r   Úconst_factoryr    s      r   r   z+CallSite.infer_argument.<locals>.<listcomp>  s,   € ÐTÐTÐT±z°s¸E•%Ô% cÑ*Ô*¨EÐ2ÐTÐTÐTr   z‹Inference failed to find values for all positional arguments to {func!r}: {unpacked_args!r} doesn't correspond to {positional_arguments!r}.)r-   Úunpacked_argsrS   rT   r   r   )r]   r^   r_   z-No value found for argument {arg} to {func!r})-r   r   ÚFunctionDefÚLambdar   r(   r/   ÚinferÚKeyErrorr7   r-   r%   ÚvarargÚposonlyargsÚkwargÚfind_argnamerX   r.   rF   ÚpoprM   Ú	boundnodeÚtyper_   ÚframeÚClassDefÚscopeÚ	metaclassÚiterr   Úinstantiate_classÚ
IndexErrorr=   r,   rA   r]   r^   r`   ra   Úpostinitr9   r*   ÚTupleÚdefault_valuer	   )r0   rP   rF   r   Ú
positionalri   ÚargindexÚkwargsÚfunc_argr   rn   Úmethod_scoperk   r%   rX   s                 @r   Úinfer_argumentzCallSite.infer_argument�   sá  ø€ õ ˜(¥UÔ%6½¼Ð$EÑFÔFð 	Ý Ø\ÈxÐ\Ð\Ð\ØØØØðñ ô ð ð �4Ô+Ð+Ð+Ý ØKØØØØðñ ô ð ð	ØÔ)¨$Ô/×5Ò5°gÑ>Ô>Ð>øÝð 	ð 	ð 	ØˆDð	øøøõ ˆtÔ(Ñ)Ô)­C°´Ô0BÑ,CÔ,CÒCÐCØ”=Ô'ð 	°´Ô0Ið 	Ý$ð&ð #Ø!ØØ#ðñ ô ð ð Ô.Ð/Hµ°X´]Ô5GÑ1HÔ1HÐ/HÔIˆ
ØÔ*­3¨x¬}Ô/AÑ+BÔ+BÐ+DÐ+DÔEˆð �H”MÔ(¨(¬-Ô*=Ð>Ð>Ð>ØˆHˆHà”}×1Ò1°$Ñ7Ô7¸Ô:ˆHàCÐC¨(¬-Ô*BÐCÑCÔCˆ
ð
ð 
ð 
ð 
à"Ô4×:Ò:Ñ<Ô<ð
ñ 
ô 
ˆõ ˆz‰?Œ?�S ¤Ô!3Ñ4Ô4Ò4Ð4Ø$œMÔ.ð +ð +�Ø”= FÐ*Ð*Ø Ÿ*š* X¤]Ñ3Ô3�CØ×%Ò% cÑ*Ô*Ð*øàÑØÔ)ˆIà˜1Š}‰} ¤Ð2KÐ!KÑ!Kð Ð$¨¬¸(Ò)BÐ)BÀzÐ)BØ% aœ=×.Ò.°wÐ.Ñ?Ô?Ð?ØÐ$à (¤× 5Ò 5Ñ 7Ô 7�Iå˜i­¬Ñ8Ô8ð 2ð
 $,¤?×#8Ò#8Ñ#:Ô#:�LØ# y×':Ò':À7Ð':Ñ'KÔ'KÐKÐKÝ# Y LÑ1Ô1Ð1à”= HÒ,Ð,Ý% iµÑ:Ô:ð BØ$-×$?Ò$?Ñ$AÔ$A˜	Ý  Ñ-Ô-Ð-Ø”= MÒ1Ð1Ý  Ñ-Ô-Ð-ð Œ}Ð 9Ð9Ð9¸iÐ9Ø˜A‘�ðØÔ0°Ô:×@Ò@ÀÑIÔIÐIøÝð ð ð Ø�ðøøøð Œ=Ô $Ò&Ð&ð ×(Ò(Ñ*Ô*ð Ý$ð-ð '+Ô&<Ø$(Ô$9Ø"Ø!ØØ#ð
ñ 
ô 
ð 
õ ”JØ”}Ô+Ø#œ=Ô3Ø”}Ø#œ=Ô3Ø'œ}Ô;ðñ ô ˆEð �NŠNØTÐTÀVÇ\Â\Á^Ä^ÐTÑTÔTñô ð õ ˜˜‘>”>Ð!ØŒ=Ô 4Ò'Ð'ð ×)Ò)Ñ+Ô+ð Ý$ð>ð *.Ô)BØ"&Ô"5Ø"Ø!ØØ#ð
ñ 
ô 
ð 
õ ”;Ø”}Ô+Ø#œ=Ô3Ø”}ðñ ô ˆDð
 �MŠM˜&Ñ!Ô!Ð!Ý˜˜‘=”=Ð ð	Ø”=×.Ò.¨tÑ4Ô4×:Ò:¸7ÑCÔCÐCøÝð 	ð 	ð 	ØˆDð	øøøåØ;ØØØØð
ñ 
ô 
ð 	
s6   ÁA> Á>
BÂ
BÍ
M* Í*
M7Í6M7Ó,T Ô
TÔT)NN)r   r   r   r   )N)r   r   )r:   r;   )r&   r>   r   r   )rP   r
   rF   rC   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r1   rZ   r5   r9   r=   r+   r)   r   r   r   r   r   r      sà   € € € € € ðð ð& "Ø+/ð	
ð 
ð 
ð 
ð 
ð0 ð	1ð 	1ð 	1ð 	1ñ „[ð	1ðJð Jð JðIð Ið Ið Ið ,0ð!ð !ð !ð !ð !ðFð ð ð ð ð$f
ð f
ð f
ð f
ð f
ð f
r   r   N)Ú
__future__r   Úastroidr   Úastroid.basesr   Úastroid.contextr   r   Úastroid.exceptionsr   r	   Úastroid.typingr
   Úastroid.utilr   r   r   r   r   r   r   ú<module>r‹      sÙ   ðð
 #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø *Ð *Ð *Ð *Ð *Ð *Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ Aðd
ð d
ð d
ð d
ð d
ñ d
ô d
ð d
ð d
ð d
r   