
    -h7                         S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SKJ	r	  S r
S rSS jrS rS	 rS
 rS rS rS rS r " S S\5      r\S 5       rSS jrS rS rg)    N)chain)contextmanager)treec                    U R                   nSU;   d  SU;   a  g[        R                  R                  [        R
                  SS5      n[        [        R                  " [        R                  " U5      S-   [        U 5      5      5      $ )Nzdist-packageszsite-packagesFlibpythonz\d.\d)partsospathjoinsysprefixboolrematchescapestr)r   r	   	base_paths      iC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\jedi/inference/helpers.pyis_stdlib_pathr      sa     JJE%?e#;SZZ9I9-8#d)DEE    c                 $   [         R                   " U 5      n/ nU R                   Ha  n[        U[        R                  5      (       a  [         R                   " U5      nXl        O[        U5      nXl        UR                  U5        Mc     X!l        U$ )zG
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      sv    
 iinG LeTYY''		%(I&%e,I&I&  $Nr   c                    UR                   nUR                  S:X  a!  SSKJn  UR	                  U R
                  5      $ UR                  S:w  d!  XR                  S   UR                  S   4;  a@  US:X  a  SSKJn  U$ UR                  S:X  a  U R                  U5      $ U R                  U5      $ UR                   nUR                  R                  U5      nU(       a  UnOUS	-   nUR                  S
:X  a=  Un	 U	S	-  n	UR                  U	   n
U
R                  S:w  a  OM'  UR                  U	S	-   U nOUR                  S   n
UR                  S	U nU
S:X  a
  US   n
US	S nU R                  U
5      nSSKJn  U H  nU" XU5      nM     U$ )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 D1A1A!1DgFVFVWYFZ0[$[3;;<<6!%%g..!!$''NNENN  )Eaizz\!QJE>>%(DyyI%	 
 >>%!)C0~~a >>!C(w{AB<%F8w8 Mr   c                      U R                   n[        [        R                  " S U 5       5      5      $ ! [         a    U R
                  S:X  a  U /s $ / s $ f = f)Nc              3   8   #    U  H  n[        U5      v   M     g 7fN)get_names_of_node).0cs     r   	<genexpr>$get_names_of_node.<locals>.<genexpr>x   s     'Oh(9!(<(<hs   name)r   listr   from_iterableAttributeErrorr1   )noder   s     r   rF   rF   o   sX    Q== E'''Oh'OOPP  996MI	s   4 AAAc                 j    U R                  5       =(       a    [        U R                  S S9[        5      $ N)default)is_compiledr   get_safe_valuer   values    r   	is_stringrW   {   s,    V:e.B.B4.B.PRU#VVr   c                 <    [        U 5      =(       d    [        U 5      $ rE   )	is_numberrW   rU   s    r   
is_literalrZ      s    U/y//r   c                 F    U R                  S S9n [        X5      (       a  U $ g rQ   )rT   r   )rV   accepts     r   _get_safe_value_or_noner]      s*       .E%   !r   c                 "    [        U [        5      $ rE   )r]   intrU   s    r   get_int_or_noner`          "5#..r   c                 "    [        U [        5      $ rE   )r]   r   rU   s    r   get_str_or_nonerc      ra   r   c                 2    [        U [        [        45      S L$ rE   )r]   r_   floatrU   s    r   rY   rY      s    "53,7tCCr   c                       \ rS rSrSrg)SimpleGetItemNotFound    N)__name__
__module____qualname____firstlineno____static_attributes__ri   r   r   rg   rg      s    r   rg   c               '   H   #     S v   g ! U  a  n[        U5      eS nAff = f7frE   )rg   )exception_classeses     r   reraise_getitem_errorsrr      s'     ' '#A&&'s   "	 ""c                    Sn/ nU SS   H  nUS;   a#  U(       d  U[        UR                  5      -  nM*  M,  UR                  S:X  a6  UR                  S S S2    H  nUR	                  U5        XbL d  M    O   Mn    X44$ UR                  S:X  a  UR	                  U5        XRL a    X44$ M  US:X  a  U(       d  / nM  M    X44$    X44$ )Nr   r-   ).z...dotted_name   rK   ,)lenrV   r1   r   r   )nodesis_import_from
until_nodelevelnamesrO   ns          r   parse_dotted_namesr      s    EEab	<TZZ( YY-']]3Q3'Q? (
  < YY& LL! < "S[! "
 </ . <r   c                 N    U R                  US S 5      R                  US   5      $ )Nr)   )import_modulepy__getattribute__)r4   r}   s     r   values_from_qualified_namesr      s(    ((s4GGb	RRr   c                 N    U R                  5       R                  nUc  gUS   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   rW   rZ   r]   r`   rc   rY   	Exceptionrg   rr   r   r   r   ri   r   r   <module>r      s     
 	 	  % 	F,?D	QW0//D	I 	 ' ':SNr   