o
    ˷e                     @   sr   d dl Z d dlmZ d dlmZmZ d dlmZ d dlm	Z	 G dd deZ
dd	 Zd
d ZdddZdd ZdS )    N)classes)
StringNameget_quote_ending)match)get_str_or_nonec                   @   s   e Zd ZdZdS )PathNamepathN)__name__
__module____qualname__api_type r   r   I/var/www/ideatree/venv/lib/python3.10/site-packages/jedi/api/file_name.pyr   	   s    r   c
              	   c   sj   t tj|}
t||}|drtj|}|d u rd S || }tj|}tj|}|| }|o=tdd |D }|rTt	|||d j
}|d u rPd}n|| }tj| jj|}ztt|dd d}W n ttfyv   Y d S w t|||}|D ]3}|j}t|||	d	r|s| s||7 }n|tjj7 }tj| t| |t ||
 d  d |
|	d
V  qd S )N~c                 s   s    | ]}|j d kV  qdS )zos.path.joinN)	full_name).0sr   r   r   	<genexpr>   s    z%complete_file_name.<locals>.<genexpr>r   Fc                 S   s   | j S )N)name)er   r   r   <lambda>(   s    z$complete_file_name.<locals>.<lambda>)key)fuzzy)stacklike_name_lengthis_fuzzy)lenosr   basename_get_string_additions
startswith
expanduserdirnameall_add_os_path_joinbracket_startjoinprojectsortedscandirFileNotFoundErrorOSErrorr   r   r   is_dirsepr   
Completionr   )inference_statemodule_context
start_leafquotestring	like_namesignatures_callback
code_linespositionr   r   additionmust_start_withsigsis_in_os_path_jointo_be_added	base_pathlistedquote_endingentryr   r   r   r   complete_file_name   sN   


rA   c                    s>    fdd}|    dkrdS | |}t|tt| S )Nc                  3   sR     j } d}t| jd | j  D ]}|rd}|V  q|dkr$ d S d}qd S )NTF+)parentreversedchildrenindex)nodewas_addition
child_noder8   r   r   iterate_nodes?   s   z,_get_string_additions.<locals>.iterate_nodesrB    )get_previous_leafcreate_context_add_stringsrD   list)r0   r1   rK   contextr   rJ   r   r   >   s   
r   Fc           	      C   sn   d}d}|D ].}|  |}t|dkr d S |\}t|}|d u r$ d S |s.|r.|tjj7 }||7 }d}q|S )NrL   T   F)
infer_noder   r   r   r   r-   )	rQ   nodes	add_slashr3   firstrI   valuescr   r   r   r   rO   S   s   
rO   c                    s   fdd}|j dkrT|j}|j|}|dkrR|j|d  }|j dkrRt|jdkrRd}|jd	 j d
krA|jd	 j}|d8 }ng }||j|d  |d d d S d S |}|jd uro|jj dvro|j}|jd uro|jj dvsa| |urwd S |j}	|	d u rd S |	j|}|	jd | }|	j d
kr|	j}
|
j dkr|
j|	}|dksJ |
j|d  dksJ ||
j|d  |d d d S |
j dkr||
jd |d d d S d S |	j dkr||	jd g S |	j dkr||d	 g S d S )Nc                    s6   | j  krd S |sdS |d }t||ddpdS )NrL   r   T)rU   )	start_posrN   rO   )maybe_bracketrT   rQ   r%   r0   r   r   checkf   s   
z _add_os_path_join.<locals>.check
error_leafr   rR   
error_node   arglist)rb   trailerr^   (rc   )typerC   rE   rF   r   get_first_leaf)r0   r1   r%   r\   
value_noderF   r^   arglist_nodessearched_node_childsearched_noderc   trailer_indexr   r[   r   r$   e   sT   
	







r$   )F)r   jedi.apir   jedi.api.stringsr   r   jedi.api.helpersr   jedi.inference.helpersr   r   rA   r   rO   r$   r   r   r   r   <module>   s    1
