§
    ŒŸjS  ã                   ó  — d Z ddlmZ ddlmZ ddlmZ dedfdedfd	e	d
fde
dfde
dfde
dfde
dfde
dfde
dfde
dfde
dfde
dfde
dfdedfdedfdœZ G d„ d¦  «        Z G d„ de¦  «        Zdedfd„Zd„ Zd„ Zd!d „ZdS )"z
Module for statical analysis.
é    )Útree)Údebug)Ú	is_stringé   zPotential AttributeError.é   zPotential NameError.é   zPotential ImportError.é   Né   é   é   é   é	   é
   é   é   é   é   é   )úattribute-errorz
name-errorzimport-errorztype-error-too-many-argumentsztype-error-too-few-argumentsztype-error-keyword-argumentztype-error-multiple-valuesztype-error-star-starztype-error-starztype-error-operationztype-error-not-iterableztype-error-isinstanceztype-error-not-subscriptablezvalue-error-too-many-valueszvalue-error-too-few-valuesc                   óv   — e Zd Zdd„Zed„ ¦   «         Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ Z	d„ Z
d	„ Zd
„ ZdS )ÚErrorNc                 ór   — || _         || _        || _        |€t          | j                 d         }|| _        d S )Nr   )ÚpathÚ
_start_posÚnameÚCODESÚmessage)Úselfr   Úmodule_pathÚ	start_posr   s        úd/var/www/finuniver-perm.ru/html/student/venv/lib/python3.11/site-packages/jedi/inference/analysis.pyÚ__init__zError.__init__   s8   € ØˆŒ	Ø#ˆŒØˆŒ	Øˆ?Ý˜DœIÔ& qÔ)ˆGØˆŒˆˆó    c                 ó   — | j         d         S ©Nr   ©r   ©r   s    r!   Úlinez
Error.line&   ó   € àŒ˜qÔ!Ð!r#   c                 ó   — | j         d         S )Nr   r&   r'   s    r!   ÚcolumnzError.column*   r)   r#   c                 óv   — | j         j        d         }|t          t          | j                 d         ¦  «        z   S r%   )Ú	__class__Ú__name__Ústrr   r   )r   Úfirsts     r!   Úcodez
Error.code.   s2   € ð ”Ô'¨Ô*ˆØ•s�5 ¤Ô+¨AÔ.Ñ/Ô/Ñ/Ð/r#   c           	      óT   — | j         ›d| j        ›d| j        ›d| j        ›d| j        ›�	S )Nú:ú: ú )r   r(   r+   r1   r   r'   s    r!   Ú__str__zError.__str__4   s4   € Ø$(¤I I I¨t¬y¨y¨y¸$¼+¸+¸+Ø$(¤I I I¨t¬|¨|ð=ð 	=r#   c                 ób   — | j         |j         k    o| j        |j        k    o| j        |j        k    S ©N)r   r   r   ©r   Úothers     r!   Ú__eq__zError.__eq__8   s5   € Ø”	˜UœZÒ'ð 8¨D¬I¸¼Ò,Cð 8Ø”O uÔ'7Ò7ð	9r#   c                 ó.   — |                       |¦  «         S r8   )r;   r9   s     r!   Ú__ne__zError.__ne__<   s   € Ø—;’;˜uÑ%Ô%Ð%Ð%r#   c                 óD   — t          | j        | j        | j        f¦  «        S r8   )Úhashr   r   r   r'   s    r!   Ú__hash__zError.__hash__?   s   € Ý�T”Y ¤°´Ð;Ñ<Ô<Ð<r#   c                 óz   — d| j         j        ›d| j        ›d| j        ›d| j        d         ›d| j        d         ›d�S )	Nú<r5   r4   ú@r   ú,r   ú>)r-   r.   r   r   r   r'   s    r!   Ú__repr__zError.__repr__B   sN   € € Ø&*¤nÔ&=Ð&=Ð&=Ø&*¤i i i°´°°Ø&*¤o°aÔ&8Ð&8Ð&8¸$¼/È!Ô:LÐ:LÐ:LðNð 	Nr#   r8   )r.   Ú
__module__Ú__qualname__r"   Úpropertyr(   r+   r1   r6   r;   r=   r@   rF   © r#   r!   r   r      sÉ   € € € € € ðð ð ð ð ð"ð "ñ „Xð"ð ð"ð "ñ „Xð"ð ð0ð 0ñ „Xð0ð
=ð =ð =ð9ð 9ð 9ð&ð &ð &ð=ð =ð =ðNð Nð Nð Nð Nr#   r   c                   ó   — e Zd ZdS )ÚWarningN)r.   rG   rH   rJ   r#   r!   rL   rL   H   s   € € € € € Ø€Dr#   rL   c                 óN  — t           |         d         }t          | |||¦  «        rd S |                      ¦   «         }|                     ¦   «         } ||||j        |¦  «        }	t          j        t          |	¦  «        d¬¦  «         | j        j	         
                    |	¦  «         |	S )Nr   F)Úformat)r   Ú_check_for_exception_catchÚget_root_contextÚ
py__file__r    r   Úwarningr/   Úinference_stateÚanalysisÚappend)
Únode_contextÚ
error_nameÚnoder   ÚtypÚpayloadÚ	exceptionÚmodule_contextr   Úissue_instances
             r!   Úaddr^   L   s¤   € Ý�jÔ! !Ô$€IÝ! ,°°iÀÑIÔIð Øˆð "×2Ò2Ñ4Ô4€NØ ×+Ò+Ñ-Ô-€KØ�S˜ [°$´.À'ÑJÔJ€NÝ	„M•#�nÑ%Ô%¨eÐ4Ñ4Ô4Ð4ØÔ Ô)×0Ò0°Ñ@Ô@Ð@ØÐr#   c                 óÒ   ‡— |                       ¦   «         }|j        Š‰€dS 	 ‰                     ¦   «         d         }n# t          $ r Y dS w xY wt	          ˆfd„|D ¦   «         ¦  «        S )zU
    Check if there's any setattr method inside an instance. If so, return True.
    NFÚsetattrc              3   ó˜   •K  — | ]D}‰j         |j         cxk     o
‰j        k     nc o |j        j        d k    o|j        j        |k     V — ŒEdS )ÚfuncdefN)r    Úend_posÚparentÚtyper   )Ú.0ÚnrX   s     €r!   ú	<genexpr>z%_check_for_setattr.<locals>.<genexpr>i   s~   øè è € ð $ð $ð ð Œ~ ¤Ð:Ð:Ò:Ð:¨d¬lÒ:Ð:Ð:Ð:ð Kàœœ¨Ò2ÐI°q´x´}ÈÒ7IÐJð$ð $ð $ð $ð $ð $r#   )rP   Ú	tree_nodeÚget_used_namesÚKeyErrorÚany)ÚinstanceÚmoduleÚ
stmt_namesrX   s      @r!   Ú_check_for_setattrrp   Z   s£   ø€ ð ×&Ò&Ñ(Ô(€FØÔ€DØ€|àˆuðØ×(Ò(Ñ*Ô*¨9Ô5ˆ
ˆ
øÝð ð ð Øˆuˆuðøøøõ ð $ð $ð $ð $ð #ð$ñ $ô $ñ $ô $ð $s   ¢= ½
AÁ
Ac                 óÒ   — d|›d|›d�}t           }|                     ¦   «         r*|                     ¦   «         st          |¦  «        rt          }||f}t          | d||||¦  «         d S )NzAttributeError: z has no attribute ú.r   )r   Úis_instanceÚis_compiledrp   rL   r^   )Úname_contextÚlookup_valuer   r   rY   rZ   s         r!   Úadd_attribute_errorrw   o   s„   € € Ø<H¸L¸LÈ$È$È$ÐO€Gõ €CØ×ÒÑ!Ô!ð ¨,×*BÒ*BÑ*DÔ*Dð õ ˜lÑ+Ô+ð 	ÝˆCà˜DÐ €GÝˆÐ'¨¨w¸¸WÑEÔEÐEÐEÐEr#   c                 ó¸  ‡ ‡‡‡— d„ Šˆˆˆ fd„}ˆˆ ˆfd„}‰}|�Àt          |t          j        t          j        f¦  «        sšt          |t          j        ¦  «        rQ|j        dk    r |||¦  «        rdS |t          k    r-|j        dv r$ ||j        d         |j        d	         ¦  «        rdS |j        }|�&t          |t          j        t          j        f¦  «        ¯šd
S )a  
    Checks if a jedi object (e.g. `Statement`) sits inside a try/catch and
    doesn't count as an error (if equal to `exception`).
    Also checks `hasattr` for AttributeErrors and uses the `payload` to compare
    it.
    Returns True if the exception was catched.
    c                 óÒ   — |                       ¦   «         sdS |                     ¦   «         D ];}|                      ¦   «         |j        k    r| j                             ¦   «         r dS Œ<dS )NFT)Úis_classÚmroÚ
py__name__r.   Úparent_contextÚis_builtins_module)Úclsr[   Ú
python_clss      r!   Úcheck_matchz/_check_for_exception_catch.<locals>.check_match†   sj   € Ø�|Š|‰~Œ~ð 	Ø�5à#Ÿ-š-™/œ/ð 	ð 	ˆJØ�~Š~ÑÔ :Ô#6Ò6Ð6ØÔ*×=Ò=Ñ?Ô?ð 7à�t�tøØˆur#   c                 ó  •— t          | j        ¦  «        }|D ]G}t          |¦  «         t          |¦  «        }|dk    r!|j        ‰j        cxk     r|j        k    sn  dS ŒH|                      ¦   «         D ]˜}|€ dS ‰                     |¦  «        }|D ]y}ddlm} t          ||j
        ¦  «        rL|j        dk    rA|                     ¦   «         D ]+}	|	                     ¦   «         D ]}
 ‰|
|¦  «        r    dS ŒŒ,Œi ‰||¦  «        r  dS ŒzŒ™d S )NÚtryFTr   )ÚiterableÚtuple)ÚiterÚchildrenÚnextr    rc   Úget_except_clause_testsÚ
infer_nodeÚjedi.inference.valuer„   Ú
isinstanceÚSequenceÚ
array_typeÚ
py__iter__Úinfer)Úobjr[   ÚiteratorÚbranch_typeÚsuiterX   Úexcept_classesr   r„   Ú
lazy_valuerY   r�   Ú	jedi_namerV   s              €€€r!   Úcheck_try_for_exceptz8_check_for_exception_catch.<locals>.check_try_for_except�   s…  ø€ å˜œÑ%Ô%ˆØ#ð 	ð 	ˆKÝ�‰NŒNˆNÝ˜‘N”NˆEØ˜eÒ#Ð#Ø(Ô2°YÔ5HÐYÐYÒYÐYÈEÌMÒYÐYÐYÐYØ�u�uøà×/Ò/Ñ1Ô1ð 	(ð 	(ˆDØˆ|Ø�t�tà!-×!8Ò!8¸Ñ!>Ô!>�Ø)ð (ð (�CØ=Ð=Ð=Ð=Ð=Ð=Ý! # xÔ'8Ñ9Ô9ð 	(ØœN¨gÒ5Ð5à*-¯.ª.Ñ*:Ô*:ð 0ð 0˜JØ'1×'7Ò'7Ñ'9Ô'9ð 0ð 0 Ø#. ;¨s°IÑ#>Ô#>ð !0Ø+/¨4¨4¨4¨4¨4ð!0ð0ð0ð
 '˜; s¨IÑ6Ô6ð (Ø#' 4 4 4ð(ð(ð	(ð 	(r#   c                 ó   •— 	 |j         ‰j         cxk    r|j        k     sn J ‚| j        dv sJ ‚| j        d         }|j        dk    r|j        dk    sJ ‚| j        d         }|j        dk    sJ ‚|j        d         }|j        dk    sJ ‚ddlm}  |‰j        ‰|¦  «        }t          | 	                    ¦   «         ¦  «        }t          |¦  «        d	k    sJ ‚|d         \  }}	t          |	                     ¦   «         ¦  «        }
t          |
¦  «        dk    rt          |
d         ¦  «        sJ ‚|
d                              ¦   «         ‰d         j        k    sJ ‚|d         \  }}	|	                     ¦   «         }‰d         |v S # t          $ r Y d
S w xY w)N)ÚpowerÚ	atom_exprr   r   Úhasattrr   ÚtrailerÚarglist)ÚTreeArgumentsr   F)r    rc   re   r‡   ÚvalueÚjedi.inference.argumentsrŸ   rS   ÚlistÚunpackÚlenr�   r   Úget_safe_valueÚAssertionError)rX   r”   Úbaser�   rž   rŸ   ÚargsÚunpacked_argsÚkeyr–   ÚnamesÚobjectsr—   rV   rZ   s               €€€r!   Úcheck_hasattrz1_check_for_exception_catch.<locals>.check_hasattr¬   sÎ  ø€ ð	Ø”? iÔ&9ÐIÐIÒIÐI¸E¼MÒIÐIÐIÐIÐIÐIØ”9Ð 6Ð6Ð6Ð6Ð6Ø”= Ô#ˆDØ”9 Ò&Ð&¨4¬:¸Ò+BÐ+BÐ+BÐ+BØ”m AÔ&ˆGØ”< 9Ò,Ð,Ð,Ð,ØÔ& qÔ)ˆGØ”< 9Ò,Ð,Ð,Ð,Ø>Ð>Ð>Ð>Ð>Ð>Ø �= Ô!=¸|ÈWÑUÔUˆDÝ  §¢¡¤Ñ/Ô/ˆMå�}Ñ%Ô%¨Ò*Ð*Ð*Ð*ð ,¨AÔ.‰OˆC�Ý˜×)Ò)Ñ+Ô+Ñ,Ô,ˆEÝ�u‘:”: ’?�?¥y°°q´Ñ':Ô':�?�?�?Ø˜”8×*Ò*Ñ,Ô,°¸´
Ô0@Ò@Ð@Ð@Ð@ð ,¨AÔ.‰OˆC�Ø ×&Ò&Ñ(Ô(ˆGØ˜1”: Ð(Ð(øÝð 	ð 	ð 	Ø�5�5ð	øøøs   ƒE;E? Å?
FÆFNÚtry_stmtT)Úif_stmtÚ
while_stmtr   r   F)	rŒ   r   ÚFunctionÚClassÚFlowre   ÚAttributeErrorr‡   rd   )rV   r—   r[   rZ   r˜   r­   r‘   r�   s   `` `   @r!   rO   rO   ~   s   øøøø€ ðð ð ð(ð (ð (ð (ð (ð (ð (ð8ð ð ð ð ð ð ð: €CØ
ˆ/¥*¨Sµ4´=Å$Ä*Ð2MÑ"NÔ"Nˆ/Ý�c�4œ9Ñ%Ô%ð 	 àŒx˜:Ò%Ð%Ð*>Ð*>¸sÀIÑ*NÔ*NÐ%Ø�tà�NÒ*Ð*¨s¬xÐ;TÐ/TÐ/TØ �= ¤¨a¤°#´,¸q´/ÑBÔBð  Ø˜4ØŒjˆð ˆ/¥*¨Sµ4´=Å$Ä*Ð2MÑ"NÔ"Nˆ/ð ˆ5r#   r8   )Ú__doc__Úparso.pythonr   Újedir   Újedi.inference.helpersr   r´   Ú	NameErrorÚImportErrorÚ	TypeErrorÚ
ValueErrorr   r   rL   r^   rp   rw   rO   rJ   r#   r!   ú<module>r½      s«  ððð ð Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ð ˜>Ð+FÐGØ�iÐ!7Ð8Ø˜Ð%=Ð>Ø&'¨°DÐ%9Ø%&¨	°4Ð$8Ø$% y°$Ð#7Ø#$ i°Ð"6Ø 	¨4Ð0Ø˜9 dÐ+Ø ¨DÐ1Ø " I¨tÐ4Ø  )¨TÐ2Ø%'¨°DÐ$9Ø$&¨
°DÐ#9Ø#% z°4Ð"8ð	ð 	€ð&(Nð (Nð (Nð (Nð (Nñ (Nô (Nð (NðV	ð 	ð 	ð 	ð 	ˆeñ 	ô 	ð 	ð 15¸%Èð ð ð ð ð$ð $ð $ð*Fð Fð FðWð Wð Wð Wð Wð Wr#   