U
    §¦ºe_  ã                   @   sX   d Z ddl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)Úadd_commandsÚset_default_command©Úautocomplete)ÚPARSER_FORMATTERÚArghNamespaceÚdispatchÚ
ArghParserc                       sN   e Zd ZdZ‡ fdd„Zdd„ Zdd„ Zdd	„ Zd
d„ Z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`.
    c                    s"   |  dt¡ tt| ƒj||Ž d S )NÚformatter_class)Ú
setdefaultr   Úsuperr	   Ú__init__©ÚselfÚargsÚkwargs©Ú	__class__© úk/mounts/lovelace/software/anaconda3/envs/qiime2-amplicon-2023.9/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   0   s    zArghParser.autocompletec                 O   s   t | f|ž|ŽS )z/Wrapper for :func:`~argh.dispatching.dispatch`.)r   r   r   r   r   r   4   s    zArghParser.dispatchNc                    s   |pt ƒ }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   r	   Ú
parse_args)r   r   Ú	namespacer   r   r   r   8   s    
zArghParser.parse_args)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   Ú__classcell__r   r   r   r   r	      s   )r   ÚargparseZargh.assemblingr   r   Zargh.completionr   Zargh.dispatchingr   r   r   Ú__all__ÚArgumentParserr	   r   r   r   r   Ú<module>
   s   