Format: application/x-python-code
⬇ Download File (12.6 KB)
   1  o
   2  
   3  �h&J�@szdZddlZddlmZddlmZddlmZddlm	Z	ddl
   4  mZddlm
   5  Z
   6  dd	lmZdd
   7  lmZddlmZddlmZdd
   8  lmZddlmZmZddlmZedgd��Zdd�Zdd�Zd=dd�Z dd�Z!dd�Z"dd�Z#Gdd �d e$�Z%d!d"�Z&d#d$�Z'd%d&�Z(d=d'd(�Z)Gd)d*�d*�Z*d+d,�Z+d-d.�Z,d/d0�Z-d1d2�Z.ed3�d4d5��Z/d6d7�Z0d>d9d:�Z1d;d<�Z2dS)?z
   9  Helpers for the API
  10  �N)�
  11  namedtuple)�dedent)�chain��wraps)�	Parameter)�Parser)�tree)�	NO_VALUES)�
  12  infer_atom)�infer_call_of_leaf)�get_string_value_set)�signature_time_cache�memoize_method)�get_parent_scope�CompletionParts)�pathZhas_dot�namecCs
  13  |�|�S�N)�
  14  startswith)�string�	like_name�r�Fc:\Users\shubh\Videos\agent\nova\Lib\site-packages\jedi/api/helpers.py�_start_matchs
  15  rcCsLt|�dkr
  16  ||vS|�|d�}|dkr$t||dd�|dd��SdS)N�rF)�len�find�_fuzzy_match)rr�posrrrrsrFcCs|rt||�St||�Sr)rr)rrZfuzzyrrr�match&s
  17  
  18  r cCst|dd�d�S)NcSs$t|jpd�|jp
  19  d|jpd|jfS)N�r)�str�module_path�line�columnr)�xrrr�<lambda>/s
  20  �z$sorted_definitions.<locals>.<lambda>)�key)�sorted)Zdefsrrr�sorted_definitions-sr*cCst|�|�}|dus|jdvr%||dd}t�d|d|d���d�S|jdvr,dS|jd|d|jd�S)N)r�
  21  error_leafrrz(?!\d)\w+$|$)r�keywordr!)�get_leaf_for_position�type�re�search�group�value�	start_pos)Zmodule_node�lines�position�leafr$rrr�get_on_completion_name5s
  22  
  23  r7cCsR||dd|d�}|dd|d�|d<|d|dd�|d<d�|�S)Nrr�����r!)�join)�
  24  code_linesr3�end_posr4rrr�	_get_codeCs
  25  r<c@seZdZedd��ZdS)�OnErrorLeafcCs
  26  |jdS�Nr)�args��selfrrrr+Ns
  27  zOnErrorLeaf.error_leafN)�__name__�
  28  __module__�__qualname__�propertyr+rrrrr=Msr=cCs�|j|kr|��}|durdS|jdk}|jdkr(|��}|dur#dS|jdks|jdks2|jdkrA|jd|dkr=dSt|��|}	|jjdvrKn|j}qD|r\|jd|dkr\dSt||��|�S)	Nr!�newliner+rrT)Z
  29  file_inputZsuiteZsimple_stmtr)r3�get_previous_leafr.r=�parentr<Zget_start_pos_of_prefix)r:r6r5Zis_after_newlineZ	user_stmtrrr�_get_code_for_stackSs0
  30  
  31  
  32  
  33  ��rIcs�Gdd�dt�����fdd�}tt|||��}d�|d�}t�jdd�}z
  34  |j||�d	�Wn�y=|jYSwtd
  35  t||����)zU
  36      Returns the possible node names (e.g. import_from, xor_test or yield_stmt).
  37      c@seZdZdS)z/get_stack_at_position.<locals>.EndMarkerReachedN)rBrCrDrrrr�EndMarkerReachedsrJc3sZ���|�}|D]"}|j�kr���|j���r���|j���r'|V���|VqdSr)�	_tokenizer�prefix�endswith)�code�tokens�token�rJ�grammarZsafewordrr�tokenize_without_endmarker�s�
  38  
  39  �z9get_stack_at_position.<locals>.tokenize_without_endmarkerZ)ZZZ_USER_WANTS_TO_COMPLETE_HERE_WITH_JEDI� T)Zerror_recovery)rOz7This really shouldn't happen. There's a bug in Jedi:
  40  %s)	�	ExceptionrrIrZ
  41  _pgen_grammar�parse�stack�SystemError�list)rRr:r6rrSrN�prrQr�get_stack_at_position{s 
  42  �
  43  ��r[cCs~|jdkr|�||�S|j}t}|jdkr|�|j�}|S|jdkr)t||�}|St|tj�r4t	||�S|jdvr=t
  44  |�S|S)Nr�atom�trailer)Zfstring_stringZ
  45  fstring_startZfstring_end)r.�inferrHr
  46  Z
  47  infer_noder�
  48  isinstancer	�Literalrr
  49  )�inference_state�contextr6rH�definitionsrrrr^�s
  50  
  51  	
  52  �
  53  �
  54  
  55  r^ccsj�|D]/}|��r/tt|��|d��}d}|r#|D]	}|jdur"d}q|r)|Vq|EdHq|VqdS)N)�follow_builtin_importsFT)Z	is_importrY�filter_follow_importsZgotor3)�namesrdrZ	new_namesZ
  56  found_builtin�new_namerrrre�s$��
  57  ��rec@sPeZdZdd�Zedd��Zedd��Zedd��Zd	d
  58  �Z	dd�Z
  59  d
  60  d�ZdS)�CallDetailscCs||_||_||_dSr)�bracket_leaf�	_children�	_position)rAri�childrenr5rrr�__init__�s
  61  zCallDetails.__init__cC�t|j|j�dSr>��_get_index_and_keyrjrkr@rrr�index��zCallDetails.indexcCrn)Nrror@rrr�keyword_name_str�rrzCallDetails.keyword_name_strcCstt|j|j��Sr)rY�_iter_argumentsrjrkr@rrr�_list_arguments�rrzCallDetails._list_argumentscCs\d}t�}d}|��}|s|rdSdSd}t|�D]&\}\}}}	||	|dkBO}|r+q|dt|�kr?|	r;|�|�q|d7}qt|�D]g\}}
  62  |
  63  ��}|sg|tjkrW|S|tjtj	fvrg||krg|S|duro|dkrs|dkr�|
  64  j
  65  |vr�|tjks�|tjkr�||kr�|r�|S|	r�|
  66  j
  67  |kr�|Sn
  68  |
  69  j
  70  �|�r�|S|tj
  71  kr�|SqDdS)Nrr8F�r)�setru�	enumerater�addZget_kindr�VAR_POSITIONAL�POSITIONAL_OR_KEYWORD�POSITIONAL_ONLYZstring_name�KEYWORD_ONLYr�VAR_KEYWORD)rAZparam_namesZpositional_countZ
  72  used_names�
  73  star_countr?Zis_kwarg�i�	key_start�	had_equal�
  74  param_name�kindrrr�calculate_index�sV�
  75  
  76  
  77  
  78  
  79  �
  80  �zCallDetails.calculate_indexccs,�t|���D]\}}}|r|r|VqdSr)rYru)rArr�r�rrr�iter_used_keyword_argumentss���z'CallDetails.iter_used_keyword_argumentscCs:d}|��dd�D]\}}}|s|r|S|d7}q
  81  |S)Nrr8r)ru)rA�countrr�r�rrr�count_positional_argumentss
  82  �z&CallDetails.count_positional_argumentsN)rBrCrDrmrErqrsrrur�r�r�rrrrrh�s
  83  
  84  
  85  3rhc
  86  #sZ��fdd�}�fdd�|D�}|djdkr$t|dj��EdHdSd}d}t|�D]�\}}|jd	kr�d
  87  }|jd}|jd}	|	dkr`|	j�krW|jd
  88  krWd|jd
  89  fVn3d||�dfVn*|dvrpt|j�||	�dfVn|��}
  90  |
  91  jd
  92  kr�|
  93  j�kr�d||
  94  �dfVndVd}q,|jdkr�|jddd�D]}|jdkr�d}|jd}|||�dfVd}q�tt|j�d�}q,t	|t
  95  j�r�|jdkr�|s�|ddfVd}d}q,t	|t
  96  j�r�|jdvr�t|j�}q,|dk�r|d�rd
  97  }||d}|jd
  98  k�rd|jd
  99  fVndVd}q,|�s+|djd
 100  k�r#|||d�dfVdS|ddfVdSdS)Ncs*|jdkrdS|jd�d|jd�S)Nrr)r.r2r3)r�r5rr�remove_after_pos"s
 101  z)_iter_arguments.<locals>.remove_after_posc�g|]	}|j�kr|�qSr�r3��.0�cr�rr�
 102  <listcomp>(�z#_iter_arguments.<locals>.<listcomp>r8�arglistFr�argumentTr�=r)�*z**)rNFZtestlist_star_exprrvZ	star_expr�,r!)r.rtrlrxr3r2rZget_first_leaf�boolr_r	Z
 103  PythonLeaf)
 104  �nodesr5r��nodes_beforeZprevious_node_yieldedZ
 105  stars_seenr��node�first�secondZ
 106  first_leaf�n�beforerr�rrt!sh�
 107  
 108  
 109  
 110  
 111  
 112  ��rtcs��fdd�|D�}|djdkrt|dj��Sd}|d}|jdkr9|jddkr9|jdj�kr9|jd	j}n	|dkrB|d
 113  j}|�d�|fS)zG
 114      Returns the amount of commas and the keyword argument string.
 115      cr�rr�r�r�rrr�hr�z&_get_index_and_key.<locals>.<listcomp>r8r�Nr�rr�r�����r�)r.rprlr;r2r�)r�r5r�Zkey_str�lastrr�rrpds
 116  rpcCs�ttt|j���D]6\}}|dkr?|j|kr?|dkr?|j|d�}|��}|dur*q	|jdks5|jjdvr?t||||�Sq	dS)N�(rr)r]r\)	�reversedrYrxrlr;rGr.rHrh)r��additional_childrenr5rq�elementrlrrrr�&_get_signature_details_from_error_nodeys��r�cCs>|j|dd�}|j|kr|��}|durdS|j}|dur�|jdvr$dSg}t|j�D](}|j|krS|jdkrMt|||�}|durE|S|j|dd�<q+|�d|�q+|jdkr`|jddksl|jdkr�|jd	dkr�||jd
 117  urx||j	ks�|��}|dur�dSt
 118  |jdkr�|jdn|jd	|j|�S|j}|dusdS)NT)Zinclude_prefixes)ZfuncdefZclassdefZ	decorated�
 119  async_stmtZ
 120  error_noderr]r��	decoratorrvr8)r-r3rGrHr.r�rlr��insertr;rh)�moduler5r6r�r�r��resultrrr�get_signature_details�sH
 121  
 122  
 123  
 124  ����'r�Zcall_signatures_validityccs��|dd}||d|d�}||jd|�}d�||g�}t�d|tj�}	|����}
 125  |
 126  dur8dVn|
 127  |	|jfVt|||���VdS)z'This function calculates the cache key.rrNr!z.*\()	r3r9r/r �DOTALLZget_root_contextZ
 128  py__file__r^rG)rarbrir:Zuser_pos�
 129  line_indexZ
 130  before_cursorZother_linesZwholeZbefore_bracketr#rrr�cache_signatures�s�
 131  �r�cst��d�fdd�	�}|S)Ncs�|durtt|j�d�n|}d|krt|j�ks#td��td��|j|d}t|�}|�d�r8|d8}n	|�d�rA|d8}|durG|n|}d|krS|ks^ntd||||f���|||g|�Ri|��S)Nrrz)`line` parameter is not in a valid range.z
 132  rv�
 133  zH`column` parameter (%d) is not in a valid range (0-%d) for line %d (%r).)�maxrZ_code_lines�
 134  ValueErrorrM)rAr$r%r?�kwargs�line_stringZline_len��funcrr�wrapper�s$�
 135  
 136  
 137  ��z%validate_line_column.<locals>.wrapper)NNr)r�r�rr�r�validate_line_column�sr�TcsP��fdd�}tt��������}|s#�fdd���fdd�|D�}t||�S)zZ
 138      Returns a dictionary with name parts as keys and their call paths as
 139      values.
 140      cs|��}�r|p�o|Sr)Z
 141  is_definition)rZis_def)rc�
 142  referencesrr�def_ref_filter�sz(get_module_names.<locals>.def_ref_filtercs(t|�}|r|jdkr|j}|�dfvS)Nr�)rr.rH)rZparent_scope)r�rr�is_module_scope_name�sz.get_module_names.<locals>.is_module_scope_namecsg|]}�|�r|�qSrr)r�r�)r�rrr�sz$get_module_names.<locals>.<listcomp>)rYr�
 143  from_iterableZget_used_names�values�filter)r�Z
 144  all_scopesrcr�r�rfr)rcr�r�r�r�get_module_names�s
 145  r�cCs*|�d�\}}}|dkrd}||�d�fS)NrT�def�function�.)�
 146  rpartition�split)rr.�_Zdotted_namesrrr�split_search_stringsr�)F)TF)3�__doc__r/�collectionsr�textwrapr�	itertoolsr�	functoolsr�inspectrZparso.python.parserrZparso.pythonr	Zjedi.inference.base_valuer
 147  Zjedi.inference.syntax_treerZjedi.inference.helpersrZjedi.inference.compiledr
 148  Z
 149  jedi.cacherrZjedi.parser_utilsrrrrr r*r7r<rUr=rIr[r^rerhrtrpr�r�r�r�r�r�rrrr�<module>sJ
 150  	
 151  (*
 152  SC7
 153  
 154