/ lib / jedi / api / helpers.pyc
helpers.pyc
  1  o

  2  )��c&J�@szdZddlZddlmZddlmZddlmZddlm	Z	ddl
  3  mZddlm
Z
dd	lmZdd
  4  lmZddlmZddlmZdd
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
  5  Helpers for the API
  6  �N)�
  7  namedtuple)�dedent)�chain��wraps)�	Parameter)�Parser)�tree)�	NO_VALUES)�
  8  infer_atom)�infer_call_of_leaf)�get_string_value_set)�signature_time_cache�memoize_method)�get_parent_scope�CompletionParts)�pathZhas_dot�namecCs
  9  |�|�S�N)�
 10  startswith)�string�	like_name�r��C:\Users\Jacks.GUTTSPC\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\jedi\api\helpers.py�_start_matchs
 11  rcCsLt|�dkr
 12  ||vS|�|d�}|dkr$t||dd�|dd��SdS)N�rF)�len�find�_fuzzy_match)rr�posrrrrsrFcCs|rt||�St||�Sr)rr)rr�fuzzyrrr�match&s
 13  
 14  r!cCst|dd�d�S)NcSs$t|jpd�|jp
 15  d|jpd|jfS)N�r)�str�module_path�line�columnr)�xrrr�<lambda>/s
 16  �z$sorted_definitions.<locals>.<lambda>)�key)�sorted)�defsrrr�sorted_definitions-sr,cCst|�|�}|dus|jdvr%||dd}t�d|d|d���d�S|jdvr,dS|jd|d|jd�S)N)r�
 17  error_leafrrz(?!\d)\w+$|$)r�keywordr")�get_leaf_for_position�type�re�search�group�value�	start_pos)�module_node�lines�position�leafr%rrr�get_on_completion_name5s
 18  
 19  r:cCsR||dd|d�}|dd|d�|d<|d|dd�|d<d�|�S)Nrr�����r")�join)�
 20  code_linesr5�end_posr7rrr�	_get_codeCs
 21  r?c@seZdZedd��ZdS)�OnErrorLeafcCs
 22  |jdS�Nr)�args��selfrrrr-Ns
 23  zOnErrorLeaf.error_leafN)�__name__�
 24  __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)�
 25  file_input�suite�simple_stmtr)r5�get_previous_leafr0r@�parentr?�get_start_pos_of_prefix)r=r9r8Zis_after_newlineZ	user_stmtrrr�_get_code_for_stackSs0
 26  
 27  
 28  
 29  ��rPcs�Gdd�dt�����fdd�}tt|||��}d�|d�}t�jdd�}z
 30  |j||�d	�Wn�y=|jYSwtd
 31  t||����)zU
 32      Returns the possible node names (e.g. import_from, xor_test or yield_stmt).
 33      c@seZdZdS)z/get_stack_at_position.<locals>.EndMarkerReachedN)rErFrGrrrr�EndMarkerReachedsrQc3sZ���|�}|D]"}|j�kr���|j���r���|j���r'|V���|VqdSr)�	_tokenizer�prefix�endswith)�code�tokens�token�rQ�grammarZsafewordrr�tokenize_without_endmarker�s�
 34  
 35  �z9get_stack_at_position.<locals>.tokenize_without_endmarkerZ)ZZZ_USER_WANTS_TO_COMPLETE_HERE_WITH_JEDI� T)�error_recovery)rVz7This really shouldn't happen. There's a bug in Jedi:
 36  %s)	�	ExceptionrrPr�
_pgen_grammar�parse�stack�SystemError�list)rYr=r9rrZrU�prrXr�get_stack_at_position{s 
 37  �
 38  ��rdcCs~|jdkr|�||�S|j}t}|jdkr|�|j�}|S|jdkr)t||�}|St|tj�r4t	||�S|jdvr=t
 39  |�S|S)Nr�atom�trailer)�fstring_string�
fstring_start�fstring_end)r0�inferrNr
 40 41  infer_noder�
 42  isinstancer	�Literalrr
)�inference_state�contextr9rN�definitionsrrrrj�s
 43  
 44  	
 45 46  �
 47  
 48  rjccsj�|D]/}|��r/tt|��|d��}d}|r#|D]	}|jdur"d}q|r)|Vq|EdHq|VqdS)N)�follow_builtin_importsFT)�	is_importrb�filter_follow_imports�gotor5)�namesrqr�	new_namesZ
found_builtin�new_namerrrrs�s$��
 49  ��rsc@sPeZdZdd�Zedd��Zedd��Zedd��Zd	d
 50  �Z	dd�Z
 51  d
d�ZdS)�CallDetailscCs||_||_||_dSr)�bracket_leaf�	_children�	_position)rDry�childrenr8rrr�__init__�s
 52  zCallDetails.__init__cC�t|j|j�dSrA��_get_index_and_keyrzr{rCrrr�index��zCallDetails.indexcCr~)NrrrCrrr�keyword_name_str�r�zCallDetails.keyword_name_strcCstt|j|j��Sr)rb�_iter_argumentsrzr{rCrrr�_list_arguments�r�zCallDetails._list_argumentscCs\d}t�}d}|��}|s|rdSdSd}t|�D]&\}\}}}	||	|dkBO}|r+q|dt|�kr?|	r;|�|�q|d7}qt|�D]g\}}
 53  |
 54  ��}|sg|tjkrW|S|tjtj	fvrg||krg|S|duro|dkrs|dkr�|
 55  j
 56  |vr�|tjks�|tjkr�||kr�|r�|S|	r�|
 57  j
 58  |kr�|Sn
 59  |
 60  j
 61  �|�r�|S|tj
kr�|SqDdS)Nrr;F�r)�setr��	enumerater�add�get_kindr�VAR_POSITIONAL�POSITIONAL_OR_KEYWORD�POSITIONAL_ONLY�string_name�KEYWORD_ONLYr�VAR_KEYWORD)rD�param_names�positional_count�
 62  used_names�
 63  star_countrBZis_kwarg�i�	key_start�	had_equal�
 64  param_name�kindrrr�calculate_index�sV�
 65  
 66  
 67  
 68  
 69  �
 70  �zCallDetails.calculate_indexccs,�t|���D]\}}}|r|r|VqdSr)rbr�)rDr�r�r�rrr�iter_used_keyword_argumentss���z'CallDetails.iter_used_keyword_argumentscCs:d}|��dd�D]\}}}|s|r|S|d7}q
 71  |S)Nrr;r)r�)rD�countr�r�r�rrr�count_positional_argumentss
 72  �z&CallDetails.count_positional_argumentsN)rErFrGr}rHr�r�rr�r�r�r�rrrrrx�s
 73  
 74  
 75  3rxc
#sZ��fdd�}�fdd�|D�}|djdkr$t|dj��EdHdSd}d}t|�D]�\}}|jd	kr�d
 76  }|jd}|jd}	|	dkr`|	j�krW|jd
krWd|jd
 77  fVn3d||�dfVn*|dvrpt|j�||	�dfVn|��}
 78  |
 79  jd
kr�|
 80  j�kr�d||
 81  �dfVndVd}q,|jdkr�|jddd�D]}|jdkr�d}|jd}|||�dfVd}q�tt|j�d�}q,t	|t
 82  j�r�|jdkr�|s�|ddfVd}d}q,t	|t
 83  j�r�|jdvr�t|j�}q,|dk�r|d�rd
 84  }||d}|jd
k�rd|jd
 85  fVndVd}q,|�s+|djd
k�r#|||d�dfVdS|ddfVdSdS)Ncs*|jdkrdS|jd�d|jd�S)Nrr)r0r4r5)r�r8rr�remove_after_pos"s
 86  z)_iter_arguments.<locals>.remove_after_posc�g|]	}|j�kr|�qSr�r5��.0�cr�rr�
 87  <listcomp>(�z#_iter_arguments.<locals>.<listcomp>r;�arglistFr�argumentTr�=r)�*z**)rNF�testlist_star_exprr��	star_expr�,r")r0r�r|r�r5r4r�get_first_leaf�boolrlr	�
 88  PythonLeaf)
�nodesr8r��nodes_beforeZprevious_node_yieldedZ
 89  stars_seenr��node�first�second�
 90  first_leaf�n�beforerr�rr�!sh�
 91  
 92  
 93  
 94  
 95  
 96  ��r�cs��fdd�|D�}|djdkrt|dj��Sd}|d}|jdkr9|jddkr9|jdj�kr9|jd	j}n	|dkrB|d
 97  j}|�d�|fS)zG
 98      Returns the amount of commas and the keyword argument string.
 99      cr�rr�r�r�rrr�hr�z&_get_index_and_key.<locals>.<listcomp>r;r�Nr�rr�r�����r�)r0r�r|r>r4r�)r�r8r�Zkey_str�lastrr�rr�ds
100  r�cCs�ttt|j���D]6\}}|dkr?|j|kr?|dkr?|j|d�}|��}|dur*q	|jdks5|jjdvr?t||||�Sq	dS)N�(rr)rfre)	�reversedrbr�r|r>rMr0rNrx)r��additional_childrenr8r��elementr|rrrr�&_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
101  urx||j	ks�|��}|dur�dSt
102  |jdkr�|jdn|jd	|j|�S|j}|dusdS)NT)�include_prefixes)�funcdef�classdef�	decorated�
103  async_stmt�
104  error_noderrfr��	decoratorr�r;)r/r5rMrNr0r�r|r��insertr>rx)�moduler8r9r�r�r��resultrrr�get_signature_details�sH
105  
106  
107  
108  ����'r��call_signatures_validityccs��|dd}||d|d�}||jd|�}d�||g�}t�d|tj�}	|����}
109  |
110  dur8dVn|
111  |	|jfVt|||���VdS)z'This function calculates the cache key.rrNr"z.*\()	r5r<r1r!�DOTALL�get_root_context�
112  py__file__rjrM)rnroryr=Zuser_pos�
113  line_index�
before_cursorZother_lines�wholeZbefore_bracketr$rrr�cache_signatures�s�
114  �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
115  r��
116  zH`column` parameter (%d) is not in a valid range (0-%d) for line %d (%r).)�maxr�_code_lines�
117  ValueErrorrT)rDr%r&rB�kwargs�line_string�line_len��funcrr�wrapper�s$�
118  
119  
120  ��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
121      Returns a dictionary with name parts as keys and their call paths as
122      values.
123      cs|��}�r|p�o|Sr)�
is_definition)rZis_def)rp�
124  referencesrr�def_ref_filter�sz(get_module_names.<locals>.def_ref_filtercs(t|�}|r|jdkr|j}|�dfvS)Nr�)rr0rN)r�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>)rbr�
from_iterable�get_used_names�values�filter)r��
125  all_scopesrpr�r�rur)rpr�r�r�r�get_module_names�s
126  r�cCs*|�d�\}}}|dkrd}||�d�fS)Nr[�def�function�.)�
127  rpartition�split)rr0�_Zdotted_namesrrr�split_search_stringsr�)F)TF)3�__doc__r1�collectionsr�textwrapr�	itertoolsr�	functoolsr�inspectr�parso.python.parserr�parso.pythonr	�jedi.inference.base_valuer
128  �jedi.inference.syntax_treer�jedi.inference.helpersr�jedi.inference.compiledr
�
129  jedi.cacherr�jedi.parser_utilsrrrrr!r,r:r?r]r@rPrdrjrsrxr�r�r�r�r�r�r�r�rrrr�<module>sJ
130  	
131  (*
132  SC7
133  
134