U
    ù6eÐ  ã                   @   sh   d Z ddlZddlmZmZ ddlmZmZ ddlm	Z	 ddl
mZmZmZ dgZG dd„ dejƒZdS )	z
Helpers
~~~~~~~
é    N)ÚOptionalÚSequence)Úadd_commandsÚset_default_command©Úautocomplete)ÚPARSER_FORMATTERÚArghNamespaceÚdispatchÚ
ArghParserc                       s~   e Zd ZdZddœ‡ fdd„Zddœdd„Zddœdd	„Zddœd
d„Zee	 dœdd„Z
deee	  dœ‡ fdd„Z‡  ZS )r   ae  
    A subclass of :class:`argparse.ArgumentParser` with support for and a
    couple of convenience methods.

    All methods are but wrappers for stand-alone functions
    :func:`~argh.assembling.add_commands`,
    :func:`~argh.completion.autocomplete` and
    :func:`~argh.dispatching.dispatch`.

    Uses :attr:`~argh.dispatching.PARSER_FORMATTER`.
    N)Úreturnc                    s   |  dt¡ tƒ j||Ž d S )NÚformatter_class)Ú
setdefaultr   ÚsuperÚ__init__©ÚselfÚargsÚkwargs©Ú	__class__© ú+lib/python3.8/site-packages/argh/helpers.pyr   %   s    zArghParser.__init__c                 O   s   t | f|ž|ŽS )z9Wrapper for :func:`~argh.assembling.set_default_command`.)r   r   r   r   r   r   )   s    zArghParser.set_default_commandc                 O   s   t | f|ž|ŽS )z2Wrapper for :func:`~argh.assembling.add_commands`.)r   r   r   r   r   r   -   s    zArghParser.add_commandsc                 C   s   t | ƒS )z2Wrapper for :func:`~argh.completion.autocomplete`.r   )r   r   r   r   r   1   s    zArghParser.autocompletec                 O   s   t | f|ž|ŽS )z/Wrapper for :func:`~argh.dispatching.dispatch`.)r
   r   r   r   r   r
   5   s    zArghParser.dispatch)r   c                    s   |pt ƒ }tƒ  ||¡S )zê
        Wrapper for :meth:`argparse.ArgumentParser.parse_args`.  If `namespace`
        is not defined, :class:`argh.dispatching.ArghNamespace` is used.
        This is required for functions to be properly used as commands.
        )r	   r   Ú
parse_args)r   r   Ú	namespacer   r   r   r   9   s    

zArghParser.parse_args)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   Ústrr
   r   r   Ú__classcell__r   r   r   r   r      s     ý
þ)r   ÚargparseÚtypingr   r   Zargh.assemblingr   r   Zargh.completionr   Zargh.dispatchingr   r	   r
   Ú__all__ÚArgumentParserr   r   r   r   r   Ú<module>
   s   