
    Mh7                         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dS )    N)chain)contextmanager)treec                    | j         }d|v sd|v rdS t          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      V/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jedi/inference/helpers.pyis_stdlib_pathr      sm     JE%?e#;#;uSZ99I9--8#d))DDEEE    c                    t          j         |           }g }| j        D ]c}t          |t          j                  rt          j         |          }||_        nt          |          }||_        |                    |           d||_        |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    
 innG L ' 'eTY'' 	'	%((I&I%e,,I&II&&&&#GNr   Fc                    |j         }|j        dk    r ddlm} |                    | j                  S |j        dk    s||j        d         |j        d         fvrC|dk    rddlm} |S |j        dk    r| 	                    |          S | 	                    |          S |j         }|j        
                    |          }|r|}n|d	z   }|j        d
k    r5|}		 |	d	z  }	|j        |	         }
|
j        dk    rn|j        |	d	z   |         }n|j        d         }
|j        d	|         }|
dk    r|d         }
|d	d         }| 	                    |
          }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_nodeT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   & kG|y  ++++++,,W-DEEE
 |y  D1A!1DgFVWYFZ0[$[$[3;;;;;;;;<6!!%%g...!!$'''NEN  ))E aiz\!!	QJE>%(DyI%%		
 >%!)C-0~a >!C%(w{ABB<%%F888888 9 9w88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   4   K   | ]}t          |          V  d S N)get_names_of_node).0cs     r   	<genexpr>z$get_names_of_node.<locals>.<genexpr>x   s+      'O'O(9!(<(<'O'O'O'O'O'Or   name)r   listr   from_iterableAttributeErrorr1   )noder   s     r   rF   rF   o   sw    Q= E''O'Oh'O'O'OOOPPP    96MMMIII	s   4 AAAc                 |    |                                  o(t          |                     d           t                    S N)default)is_compiledr   get_safe_valuer   values    r   	is_stringrV   {   s5    V:e.B.B4.B.P.PRU#V#VVr   c                 >    t          |           pt          |           S rE   )	is_numberrV   rT   s    r   
is_literalrY      s    U/y///r   c                 V    |                      d           } t          | |          r| S d S rP   )rS   r   )rU   accepts     r   _get_safe_value_or_noner\      s9       ..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                 >    t          | t          t          f          d uS rE   )r\   r^   floatrT   s    r   rX   rX      s    "53,77tCCr   c                       e Zd ZdS )SimpleGetItemNotFoundN)__name__
__module____qualname__ r   r   rf   rf      s        Dr   rf   c               '   L   K   	 d V  d S # | $ r}t          |          d }~ww xY wrE   )rf   )exception_classeses     r   reraise_getitem_errorsrn      sE      ' ' ' '#A&&&'s   
 ##c                 D   d}g }| dd          D ]}|dv r|s|t          |j                  z  } |j        dk    r1|j        d d d         D ]}|                    |           ||u r nZ n3|j        dk    r|                    |           ||u r n|dk    r|sg } ||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abb	  < )TZ(Y-'']33Q3'  Q
??E # EY&  LLz!! "S[[!  %<r   c                 n    |                      |d d                                       |d                   S )Nr)   )import_modulepy__getattribute__)r4   ry   s     r   values_from_qualified_namesr      s0    ((ss44GGb	RRRr   c                 P    |                                  j        }|dS |d         dv S )NFr   )pandasnumpy
tensorflow
matplotlib)get_root_contextstring_names)r9   r   s     r   is_big_annoying_libraryr      s3    ++--:Lu
 ?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 	F 	F  ,? ? ? ?D	Q 	Q 	QW W W0 0 0  / / // / /D D D	 	 	 	 	I 	 	 	 ' ' '   :S S SN N N N Nr   