
    fS                         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y)"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                   b    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y)ErrorNc                 l    || _         || _        || _        |t        | j                     d   }|| _        y )Nr   )path
_start_posnameCODESmessage)selfr   module_path	start_posr   s        R/var/www/cvtools/html/venv/lib/python3.12/site-packages/jedi/inference/analysis.py__init__zError.__init__   s6    	#	?DII&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                 x    | j                   j                  d   }|t        t        | j                     d         z   S r%   )	__class____name__strr   r   )r   firsts     r!   codez
Error.code.   s6     ''*s5+A.///r#   c           	          | j                   d| j                  d| j                  d| j                  d| j                  	S )N::  )r   r(   r+   r1   r   r'   s    r!   __str__zError.__str__4   s,    $(IItyy$++$(IIt||= 	=r#   c                     | j                   |j                   k(  xr4 | j                  |j                  k(  xr | j                  |j                  k(  S N)r   r   r   r   others     r!   __eq__zError.__eq__8   sB    		UZZ' 8DII,C 8OOu'7'77	9r#   c                 &    | j                  |       S r8   )r;   r9   s     r!   __ne__zError.__ne__<   s    ;;u%%%r#   c                 Z    t        | j                  | j                  | j                  f      S r8   )hashr   r   r   r'   s    r!   __hash__zError.__hash__?   s     TYY;<<r#   c                     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   s?    &*nn&=&=&*ii&*ooa&8$//!:LN 	Nr#   r8   )r.   
__module____qualname__r"   propertyr(   r+   r1   r6   r;   r=   r@   rF    r#   r!   r   r      s]     " " " " 0 0
=9&=Nr#   r   c                       e Zd Zy)WarningN)r.   rG   rH   rJ   r#   r!   rL   rL   H   s    r#   rL   c                 0   t         |   d   }t        | |||      ry | j                         }|j                         } ||||j                  |      }	t        j                  t        |	      d       | j                  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 "224N ++-K[$..'JN	MM#n%e4  ))00@r#   c                     | j                         }|j                  y	 j                         d   }t	        fd|D              S # t        $ r Y yw xY w)zU
    Check if there's any setattr method inside an instance. If so, return True.
    Fsetattrc              3      K   | ]i  }j                   |j                   cxk  xr j                  k  nc xr5 |j                  j                  d k(  xr |j                  j                  |k(    k yw)funcdefN)r    end_posparenttyper   ).0nrX   s     r!   	<genexpr>z%_check_for_setattr.<locals>.<genexpr>i   sb      $  ~~:dll: K2Iqxx}}7IJK $s   A/A2)rP   	tree_nodeget_used_namesKeyErrorany)instancemodule
stmt_namesrX   s      @r!   _check_for_setattrrp   Z   sp     &&(FD|((*95
  $ #$ $ $  s   A	 		AAc                     d|d|d}t         }|j                         r!|j                         st        |      rt        }||f}t        | d||||       y )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   sV    <H$OG C!,*B*B*D l+CD G'wWEr#   c                     d  fd} fd}}|t        |t        j                  t        j                  f      st        |t        j                        rT|j
                  dk(  r
 |||      ry|t        k(  r2|j
                  dv r$ ||j                  d   |j                  d         ry|j                  }|+t        |t        j                  t        j                  f      sy	)
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                     | j                         sy|j                         D ]<  }| j                         |j                  k(  s!| j                  j                         s< y y)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   sR    ||~#--/ 	J~~:#6#66**==?	 r#   c                    t        | j                        }|D ]L  }t        |       t        |      }|dk(  s|j                  j                  cxk  r|j                  k  rI y  y | j                         D ]  }| yj                  |      }|D ]r  }ddlm} t        ||j                        rH|j                  dk(  r9|j                         D ]%  }	|	j                         D ]  }
 |
|      s    y ' g ||      sq  y  y )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NEe#(22Y5H5HYEMMY Z	 //1 	(D|!-!8!8!>) (C=!#x'8'89NNg5*-..*: 0J'1'7'7'9 0#.sI#>+/00
 'sI6#'(	(r#   c                 
   	 |j                   j                   cxk  r|j                  k  sJ  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        |j                               }t        |      d	k(  sJ |d   \  }}	t        |	j                               }
t        |
      dk(  rt        |
d         sJ |
d   j                         d   j                  k(  sJ |d   \  }}	|	j                         }d   |v S # t        $ r Y y
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&9IEMMIIIII99 6666==#D99&4::+BBBmmA&G<<9,,,&&q)G<<9,,,> !=!=|WUD /M}%*** ,A.OC))+,Eu:?yq':::8**,
0@0@@@@ ,A.OC &&(G1:(( 		s   E2E6 6	FF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
/*S4==$**2M"Nc499%xx:%*>sI*NN*sxx;T/T a#,,q/Bjj /*S4==$**2M"N r#   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9d+D1 "It4 )T2%'D$9$&
D#9#%z4"8	&(N (NV	e 	 15% $*FWr#   