
    Mh                         d Z ddlZddlmZ ddlmZ ddlmZ ddlm	Z	  e
            Z G d de          Zd	 Zd
 Zd Zd Zd Zd ZddZdS )ap  
This module is here for string completions. This means mostly stuff where
strings are returned, like `foo = dict(bar=3); foo["ba` would complete to
`"bar"]`.

It however does the same for numbers. The difference between string completions
and other completions is mostly that this module doesn't return defined
names in a module, but pretty much an arbitrary string.
    N)AbstractArbitraryName)infer_call_of_leaf)
Completion)cut_value_at_positionc                       e Zd ZdZdZdS )
StringNamestringFN)__name__
__module____qualname__api_typeis_value_name     P/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/jedi/api/strings.pyr   r      s        HMMMr   r   c           	         |}|dk    r|                                 }d}|rt          |||d          }|dk    r|||urt          ||          }|                     |          }|                                 x}	}
|	dv r|	j        }	|	j        dv r:t          ||
          }t          t          | j	        ||dn|||                    S g S )N[ T)invert_result))]})atomtrailername)fuzzy)
get_previous_leafget_quote_endingr   create_contextparenttyper   list_completions_for_dictsinference_state)module_context
code_linesleafpositionr	   r   bracket_leafcut_end_quotecontextbefore_nodebefore_bracket_leafvaluess               r   complete_dictr/      s   Ls--//M [(XUYZZZs>d,66*4::F //==,8,J,J,L,LL)/))%,K:::'1DEEF..n&      Ir   c           	   #   .  K   t          t          |          d           D ]r}t          ||          }|                    |          rKt	          | |d t          |           pd                    }t          | |d t          |          |          V  sd S )Nc                      t          |           S )N)repr)xs    r   <lambda>z(_completions_for_dicts.<locals>.<lambda>8   s    $q'' r   )key)stacklike_name_lengthis_fuzzy)sorted_get_python_keys_create_repr_string
startswithr   lenr   )r$   dictsliteral_stringr*   r   dict_keydict_key_strr   s           r   r#   r#   7   s      +E228I8IJJJ 
 
*>8DD"">22 	o|<Xc->P>P=P=XTX<X/YZZD!$^!4!4     	
 
r   c                     t          |t          t          f          r| st          |          S t          |          }t	          |           \  }}||S ||d         k    r||z   S ||z   |dd         z   |z   S )Nr      )
isinstancestrbytesr2   _get_string_prefix_and_quote)r?   r@   rprefixquotes        r   r;   r;   E   s    he-- ^ H~~XA0@@MFE}!}}zE>AadG#e++r   c              #      K   | D ]L}|j         dk    r?|                                D ]*}|                    t                    }|t          ur|V  +Md S )Ndict)default)
array_typeget_key_valuesget_safe_value	_sentinel)r>   dctr5   r@   s       r   r:   r:   R   ss       # #>V##))++ # #--i-@@9,,"NNN# #r   c                     t          j        d|           }|dS |                    d          |                    d          fS )Nz(\w*)("""|\'{3}|"|\'))NNrC      )rematchgroup)r	   rW   s     r   rH   rH   [   s=    H-v66E}z;;q>>5;;q>>))r   c                 x    | |d         dz
           |d         |d         t          |          z            }||k    S )Nr   rC   )r=   )r&   rK   r(   r	   s       r   _matches_quote_at_positionrZ   b   s;    a(!Xa[3u::5M)MNFU?r   Fc                 `    t          |           \  }}|dS t          |||          |k    rdS |S )Nr   )rH   rZ   )r	   r&   r(   r   _rK   s         r   r   r   g   s@    +F33HAu}r "*eX>>-OOrLr   )F)__doc__rV   jedi.inference.namesr   jedi.inference.helpersr   jedi.api.classesr   jedi.parser_utilsr   objectrR   r   r/   r#   r;   r:   rH   rZ   r   r   r   r   <module>rc      s    
			 6 6 6 6 6 6 5 5 5 5 5 5 ' ' ' ' ' ' 3 3 3 3 3 3FHH	    &   
  <  
, 
, 
,# # #* * *  
     r   