U
    .e &                  	   @   s   d dl mZ d dlZd dlmZ d dlZd dlmZmZ ddl	m
Z
mZ dgZejdkZzd dlZd	Zd
ZW n( eefk
r   d dlZdZdZY nX dd ZG dd deZdS )    )unicode_literalsN)iglob)
Completion	Completer   )_resolve_contextsplit_arg_stringClickCompleterntTshell_completeFautocompletionc                 C   s
   d | S )Nz{})format)text r   9/tmp/pip-unpacked-wheel-rnw4k0lb/click_repl/_completer.py	text_type   s    r   c                   @   sR   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dddZdS )r	   )clictxparsed_args
parsed_ctxctx_commandc                 C   s$   || _ || _g | _|| _|j| _d S N)r   r   r   r   commandr   )selfr   r   r   r   r   __init__$   s
    zClickCompleter.__init__c                 C   s   g }t r|||}n||||}|D ]}t|tr^|tt|d t| |d d q(t rt|t	j
jr|tt|jt|  q(|tt|t|  q(|S )Nr   r   Zdisplay_meta)HAS_CLICK_V8r   r   
isinstancetupleappendr   r   lenclickZshell_completionZCompletionItemvalue)r   paramautocomplete_ctxargs
incompleteZparam_choicesZautocompletionsautocompleter   r   r   -_get_completion_from_autocompletion_functions+   s8      

 z<ClickCompleter._get_completion_from_autocompletion_functionsc                    sF   t |jdds,    fdd|jjD S  fdd|jjD S d S )NZcase_sensitiveTc                    sF   g | ]>}|   rtt|t  td |kr8t|n|dqS  Zdisplay)lower
startswithr   r   r    repr.0choicer&   r   r   
<listcomp>V   s   zJClickCompleter._get_completion_from_choices_click_le_7.<locals>.<listcomp>c                    sB   g | ]:}|  rtt|t  td |kr4t|n|dqS r)   )r-   r   r   r    r.   r/   r2   r   r   r3   a   s   
)getattrtyper,   choicesr   r#   r&   r   r2   r   '_get_completion_from_choices_click_le_7S   s    

z6ClickCompleter._get_completion_from_choices_click_le_7c           
      C   s   d|krg S g }t j|}|dddd }d}d|krX|D ]}|dkrB|} qXqBt|D ]p}	d|	kr|rz||	 }	qtrt|	dd}	ntr|	dd}	|t	t
|	t| t
t j|	dd	 q`|S )
N*z'"	
 z\\\ r*   )'"z'"r+   )ospath
expandvarsstripreplacer   
IS_WINDOWSr.   r   r   r   r    basename)
r   r#   r%   r&   r6   Z_incompleteZsearch_patternquoteir?   r   r   r   _get_completion_for_Path_typesk   s6    
z-ClickCompleter._get_completion_for_Path_typesc                    s    fddddd  D S )Nc              	      sH   g | ]@\}}t  fd d|D rtt|t  td|dqS )c                 3   s   | ]}|  V  qd S r   )r-   )r0   rF   r2   r   r   	<genexpr>   s     zMClickCompleter._get_completion_for_Boolean_type.<locals>.<listcomp>.<genexpr>/r   )anyr   r   r    join)r0   kvr2   r   r   r3      s     zCClickCompleter._get_completion_for_Boolean_type.<locals>.<listcomp>)1truetyesyon)0falsefnonoff)rO   rU   )itemsr7   r   r2   r    _get_completion_for_Boolean_type   s
    
z/ClickCompleter._get_completion_for_Boolean_typec                 C   s   g }|j }ts.t|tjr.|| || npt|tjjrP|| 	|| nNt|tj
tjfrx|| ||| n&t|td d k	r|| |||| |S r   )r5   r   r   r!   ZChoiceextendr8   typesZBoolParamTyper[   PathZFilerG   r4   AUTO_COMPLETION_PARAMr(   )r   r$   r%   r#   r&   r6   Z
param_typer   r   r   _get_completion_from_params   s(    
	z*ClickCompleter._get_completion_from_paramsc           	   	   C   s   g }d}|j D ]}t|jtjjr*g   S t|ddr:qqt|tjr|j|j	 D ]V}|||j
d d  krvd} qqR||rR|tt|t| t|jpdd qR|r| ||||}qt|tjr|| |||| q|S )NFhiddenTr;   r   )paramsr   r5   r!   r]   ZUnprocessedParamTyper4   OptionoptsZsecondary_optsnargsr-   r   r   r   r    helpr`   ZArgumentr\   )	r   r   r&   r$   r%   r6   Zparam_calledr#   optionr   r   r   _get_completion_for_cmd_args   sJ    

      z+ClickCompleter._get_completion_for_cmd_argsNc              
   c   sx  t |jdd}g }|j |jk}|jdr2d S |rD|rD| }nd}| j|krp|| _t|| j| _| jj	| _
t| j
ddrd S z|| | j
|| j| t| j
tjr| }| j
| jD ]X}| j
| j|}	t|	ddrqq| |r|tt|t| t|	ddd qW n@ tk
r` }
 z tdt|
jt|
 W 5 d }
~
X Y nX |D ]}|V  qfd S )	NF)posix)!:r;   ra   Z
short_helpr   z{}: {})r   Ztext_before_cursorrstripr-   popr   r   r   r   r   r   r4   r\   ri   r   r!   ZMultiCommandr,   Zlist_commandsZget_commandr   r   r   r    	ExceptionZechor   r5   __name__str)r   documentZcomplete_eventr%   r6   Zcursor_within_commandr&   Zincomplete_lowernamer   eitemr   r   r   get_completions   sT    


   

.zClickCompleter.get_completions)N)rp   
__module____qualname__	__slots__r   r(   r8   rG   r[   r`   ri   rv   r   r   r   r   r	   !   s   ($1)
__future__r   r>   globr   r!   Zprompt_toolkit.completionr   r   utilsr   r   __all__rs   rC   Zclick.shell_completionr   r_   ImportErrorModuleNotFoundErrorZclick._bashcompleter   r	   r   r   r   r   <module>   s"   

