
    f                         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y)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y)
StringNamestringFN)__name__
__module____qualname__api_typeis_value_name     K/var/www/cvtools/html/venv/lib/python3.12/site-packages/jedi/api/strings.pyr   r      s    HMr   r   c           	      p   |}|dk7  r|j                         }d}|rt        |||d      }|dk(  r|||urt        ||      }| j                  |      }|j                         x}	}
|	dv r|	j                  }	|	j
                  dv r3t        ||
      }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s>d,6*4:F //=,8,J,J,LL)/)%,,K::'1DEF...n&   Ir   c           	   #      K   t        t        |      d       D ]X  }t        ||      }|j                  |      s!t	        | |d t        |       xs d        }t        | |d t        |      |       Z y w)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28IJ 
*>8D"">2o|<Xc->P=P=XTX/YZD!$^!4 	
s
   8A6;A6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   sl    he-^H~XA0@MFE}!}zE>AaG#e++r   c              #      K   | D ]J  }|j                   dk(  s|j                         D ]%  }|j                  t              }|t        us"| ' L y w)Ndict)default)
array_typeget_key_valuesget_safe_value	_sentinel)r>   dctr5   r@   s       r   r:   r:   R   sY      #>>V#))+ #--i-@9,"N##s   A1A
	Ac                 x    t        j                  d|       }|y|j                  d      |j                  d      fS )Nz(\w*)("""|\'{3}|"|\'))NNrC      )rematchgroup)r	   rW   s     r   rH   rH   [   s6    HH-v6E};;q>5;;q>))r   c                 L    | |d   dz
     |d   |d   t        |      z    }||k(  S )Nr   rC   )r=   )r&   rK   r(   r	   s       r   _matches_quote_at_positionrZ   b   s6    a(!Xa[3u:5MNFU?r   c                 J    t        |       \  }}|yt        |||      |k7  ry|S )Nr   )rH   rZ   )r	   r&   r(   r   _rK   s         r   r   r   g   s3    +F3HAu} "*eX>-O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      sR    
 6 5 ' 3H	& 
<
,#*
r   