o
    PDi                     @  s0   d dl mZ d dlmZ 	deddddZdS )	    )annotations)RichHelpFormatterN__init__)formatter_classmethod_namec                 s,   ddl  fdd}| du r|S || S )aE  Patch the default `formatter_class` parameter of an argument parser constructor.

    Parameters
    ----------
    cls : (type, optional)
        The class to patch. If not provided, a decorator is returned.
    formatter_class : (type, optional)
        The new formatter class to use. Defaults to ``RichHelpFormatter``.
    method_name : (str, optional)
        The method name to patch. Defaults to ``__init__``.

    Examples
    --------
    Can be used as a normal function to patch an existing class::

        # Patch the default formatter class of `argparse.ArgumentParser`
        patch_default_formatter_class(argparse.ArgumentParser)

        # Patch the default formatter class of django commands
        from django.core.management.base import BaseCommand, DjangoHelpFormatter
        class DjangoRichHelpFormatter(DjangoHelpFormatter, RichHelpFormatter): ...
        patch_default_formatter_class(
            BaseCommand, formatter_class=DjangoRichHelpFormatter, method_name="create_parser"
        )
    Or as a decorator to patch a new class::

        @patch_default_formatter_class
        class MyArgumentParser(argparse.ArgumentParser):
            pass

        @patch_default_formatter_class(formatter_class=RawDescriptionRichHelpFormatter)
        class MyOtherArgumentParser(argparse.ArgumentParser):
            pass
    r   Nc                  sR   t |  t std| j d d  fdd}t| | | S )N'.z' is not callablec                    s   | d  | i |S )Nr   )
setdefault)argskwargs)r   method P/var/www/Datamplify/venv/lib/python3.10/site-packages/rich_argparse/_patching.pywrapper6   s   zApatch_default_formatter_class.<locals>.decorator.<locals>.wrapper)getattrcallable	TypeError__name__wrapssetattr)clsr   r   	functoolsr   )r   r   	decorator1   s   
z0patch_default_formatter_class.<locals>.decorator)r   )r   r   r   r   r   r   r   patch_default_formatter_class
   s
   %r   )N)
__future__r   rich_argparse._argparser   r   r   r   r   r   <module>   s   