o
    ï›hô  ã                   @   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__Zapi_type© r   r   úHc:\Users\shubh\Videos\agent\nova\Lib\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)Z	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_lengthZ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   Z
Completionr   )Zinference_stateÚmodule_contextÚ
start_leafÚquoteÚstringZ	like_nameZsignatures_callbackZ
code_linesÚpositionr   r   ÚadditionZmust_start_withZsigsZis_in_os_path_joinZto_be_addedÚ	base_pathZlistedZquote_endingÚentryr   r   r   r   Úcomplete_file_name   sN   €

ÿ
û€ør3   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)ÚnodeZwas_additionÚ
child_node©r0   r   r   Úiterate_nodes?   s   €øz,_get_string_additions.<locals>.iterate_nodesr4   Ú )Zget_previous_leafÚcreate_contextÚ_add_stringsr6   Úlist)r+   r,   r<   Úcontextr   r;   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 )Nr=   Té   F)Z
infer_noder   r   r   r   r*   )	rA   ÚnodesÚ	add_slashr.   Úfirstr:   ÚvaluesÚcr   r   r   r   r?   S   s   
r?   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 r€d S |	j |¡}|	jd |… }|	j d
krÔ|	j}
|
j dkrÀ|
j |	¡}|dks¦J ‚|
j|d  dks±J ‚||
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 )Nr=   r   T)rD   )Ú	start_posr>   r?   )Zmaybe_bracketrC   rA   ©r"   r+   r   r   Úcheckf   s   
z _add_os_path_join.<locals>.checkZ
error_leafr   rB   Ú
error_nodeé   éþÿÿÿéÿÿÿÿÚarglist)rO   ÚtrailerrK   ú(rP   )Útyper5   r7   r8   r   Zget_first_leaf)r+   r,   r"   rJ   Z
value_noder8   rK   Zarglist_nodesZsearched_node_childZsearched_noderP   Ztrailer_indexr   rI   r   r!   e   sT   
	


þ


ÿ

þr!   )F)r   Zjedi.apir   Zjedi.api.stringsr   r   Zjedi.api.helpersr   Zjedi.inference.helpersr   r   r3   r   r?   r!   r   r   r   r   Ú<module>   s    1
