o
    NK&h
                     @   s   d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZmZ d	ed
dfddZG dd deZG dd dZdS )    N)ArgumentParser)run)	signature)Callable)Sanic)get_logo)SanicArgumentParserSanicHelpFormatterparserreturnc                 C   s   | j ddd d S )NcommandzCommand to execute)help)add_argument)r
    r   E/var/www/html/venv/lib/python3.10/site-packages/sanic/cli/executor.pymake_executor_parser   s   
r   c                       s   e Zd Z fddZ  ZS )ExecutorSubParserc                    s2   t  j|i | | jsd| _td| j | _d S )N T)super__init__descriptionr   )selfargskwargs	__class__r   r   r      s   zExecutorSubParser.__init__)__name__
__module____qualname__r   __classcell__r   r   r   r   r      s    r   c                   @   sv   e Zd ZdededdfddZdedee ddfd	d
Zdeee	f fddZ
defddZdede	ddfddZdS )Executorappr   r   Nc                 C   s$   || _ || _|  | _|  | _d S )N)r!   r   _make_commandscommands_make_parserr
   )r   r!   r   r   r   r   r       s   
zExecutor.__init__r   r   c                 C   s`   |dkrdg}| j |}|| jvrtd| t|}|d t| j| di | d S )Nexecz--helpzUnknown command: r   r   )r
   
parse_argsr#   
ValueErrorvarspopr   )r   r   r   parsed_argsparsed_kwargsr   r   r   r   &   s   

zExecutor.runc                 C   s   dd | j jD }|S )Nc                 S   s   i | ]}|j |jqS r   )namefunc).0cr   r   r   
<dictcomp>1   s    z+Executor._make_commands.<locals>.<dictcomp>)r!   _future_commands)r   r#   r   r   r   r"   0   s   zExecutor._make_commandsc                    sv   t  j tdtd fddd}|jddtd}| jjD ]}|j	|j
|jjp-d	|j
 td
}| ||j q|S )NsanicTc                    s   t |  dkrdnddd dS )N`   $         )max_help_positionindent_incrementwidth)r	   )progr9   r   r   <lambda>9   s    z'Executor._make_parser.<locals>.<lambda>)r:   r   formatter_classr   z
  Commands)desttitleparser_classzExecute )r   r=   )shutilget_terminal_sizecolumnsr   r   add_subparsersr   r!   r1   
add_parserr,   r-   __doc__r	   _add_arguments)r   r
   
subparsersr   subr   r;   r   r$   4   s&   

zExecutor._make_parserr
   r-   c                 C   sV   t |}|j D ]}i }|j|jur|j|d< |jd|j fd|ji| q	d S )Ndefaultz--r   )r   
parametersvaluesrJ   emptyr   r,   
annotation)r   r
   r-   sigparamr   r   r   r   rG   P   s   

zExecutor._add_arguments)r   r   r   r   dictr   strlistr   r   r"   r   r$   r   rG   r   r   r   r   r       s    
r    )rA   argparser   asyncior   inspectr   typingr   r2   r   sanic.application.logor   sanic.cli.baser   r	   r   r   r    r   r   r   r   <module>   s    