
    f7                         d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d Z
d ZddZd Zd	 Zd
 Zd Zd Zd Zd Z G d de      Zed        ZddZd Zd Zy)    N)chain)contextmanager)treec                    | j                   }d|v sd|v ryt        j                  j                  t        j
                  dd      }t        t        j                  t        j                  |      dz   t        |                   S )Nzdist-packageszsite-packagesFlibpythonz\d.\d)partsospathjoinsysprefixboolrematchescapestr)r   r	   	base_paths      Q/var/www/cvtools/html/venv/lib/python3.12/site-packages/jedi/inference/helpers.pyis_stdlib_pathr      sa     JJE%?e#;SZZ9I9-8#d)DEE    c                    t        j                   |       }g }| j                  D ]\  }t        |t        j                        rt        j                   |      }||_        nt        |      }||_        |j                  |       ^ ||_        |S )zO
    Much, much faster than copy.deepcopy, but just for parser tree nodes.
    )copychildren
isinstancer   Leafparentdeep_ast_copyappend)objnew_objnew_childrenchild	new_childs        r   r   r      s~    
 iinG L 'eTYY'		%(I&I%e,I&II&' $GNr   c                    |j                   }|j                  dk(  r!ddlm} |j	                  | j
                        S |j                  dk7  s ||j                  d   |j                  d   fvr>|dk(  rddlm} |S |j                  dk(  r| j                  |      S | j                  |      S |j                   }|j                  j                  |      }|r|}n|d	z   }|j                  d
k(  r;|}		 |	d	z  }	|j                  |	   }
|
j                  dk7  rn%|j                  |	d	z   | }n|j                  d   }
|j                  d	| }|
dk(  r
|d   }
|d	d }| j                  |
      }ddlm} |D ]  } || ||      } |S )a  
    Creates a "call" node that consist of all ``trailer`` and ``power``
    objects.  E.g. if you call it with ``append``::

        list([]).append(3) or None

    You would get a node with the content ``list([]).append`` back.

    This generates a copy of the original ast node.

    If you're using the leaf, e.g. the bracket `)` it will return ``list([])``.

    We use this function for two purposes. Given an expression ``bar.foo``,
    we may want to
      - infer the type of ``foo`` to offer completions after foo
      - infer the type of ``bar`` to be able to jump to the definition of foo
    The option ``cut_own_trailer`` must be set to true for the second purpose.
    fstringr   )compiledtrailer:)	NO_VALUESatom   
error_nodeawaitN)infer_trailer)r   typejedi.inferencer'   get_string_value_setinference_stater   jedi.inference.base_valuer+   
infer_nodeindexjedi.inference.syntax_treer0   )contextleafcut_own_trailerr(   r'   r+   powerr7   cutstartbasetrailersvaluesr0   s                 r   infer_call_of_leafrB   -   s   & kkG||y +,,W-D-DEE
 ||y D1A1A!1DgFVFVWYFZ0[$[3;;<<6!%%g..!!$''NNENN  )Eaizz\!QJE>>%(DyyI%	 
 >>%!)C0~~a >>!C(w{AB<%F8 9w89Mr   c                     	 | j                   }t        t        j                  d |D                    S # t        $ r | j
                  dk(  r| gcY S g cY S w xY w)Nc              3   2   K   | ]  }t        |        y wN)get_names_of_node).0cs     r   	<genexpr>z$get_names_of_node.<locals>.<genexpr>x   s     'O(9!(<'Os   name)r   listr   from_iterableAttributeErrorr1   )noder   s     r   rF   rF   o   sX    Q== E'''Oh'OOPP  996MI	s   3 AAAc                 f    | j                         xr  t        | j                  d       t              S N)default)is_compiledr   get_safe_valuer   values    r   	is_stringrV   {   s,    V:e.B.B4.B.PRU#VVr   c                 2    t        |       xs t        |       S rE   )	is_numberrV   rT   s    r   
is_literalrY      s    U/y//r   c                 D    | j                  d       } t        | |      r| S y rP   )rS   r   )rU   accepts     r   _get_safe_value_or_noner\      s)       .E%  !r   c                 "    t        | t              S rE   )r\   intrT   s    r   get_int_or_noner_          "5#..r   c                 "    t        | t              S rE   )r\   r   rT   s    r   get_str_or_nonerb      r`   r   c                 2    t        | t        t        f      d uS rE   )r\   r^   floatrT   s    r   rX   rX      s    "53,7tCCr   c                       e Zd Zy)SimpleGetItemNotFoundN)__name__
__module____qualname__ r   r   rf   rf      s    r   rf   c               '   F   K   	 d  y # | $ r}t        |      d }~ww xY wwrE   )rf   )exception_classeses     r   reraise_getitem_errorsrn      s(     ' '#A&&'s   !	 !!c                 ^   d}g }| dd  D ]  }|dv r|r
|t        |j                        z  }#|j                  dk(  r4|j                  d d d   D ]  }|j	                  |       ||u s n a ||fS |j                  dk(  r|j	                  |       ||u s ||fS |dk(  r|rg } ||fS  ||fS )Nr   r-   ).z...dotted_name   rJ   ,)lenrU   r1   r   r   )nodesis_import_from
until_nodelevelnamesrN   ns          r   parse_dotted_namesr{      s    EEab	 <TZZ(YY-']]3Q3' Q
?
  %< YY& LLz! %< S[! %</. %<r   c                 N    | j                  |d d       j                  |d         S )Nr)   )import_modulepy__getattribute__)r4   ry   s     r   values_from_qualified_namesr      s(    ((s4GGb	RRr   c                 J    | j                         j                  }|y|d   dv S )NFr   )pandasnumpy
tensorflow
matplotlib)get_root_contextstring_names)r9   r   s     r   is_big_annoying_libraryr      s1    ++-::L
 ?MMMr   )FrE   )r   r   r   r
   	itertoolsr   
contextlibr   parso.pythonr   r   r   rB   rF   rV   rY   r\   r_   rb   rX   	Exceptionrf   rn   r{   r   r   rj   r   r   <module>r      s     
 	 	  % 	F,?D	QW0//D	I 	 ' ':SNr   