Source code for cloup._params

import click
from click.decorators import _param_memo


[docs]class Argument(click.Argument): """A :class:`click.Argument` with help text.""" def __init__(self, *args, help=None, **attrs): super().__init__(*args, **attrs) self.help = help
[docs] def get_help_record(self, ctx): return self.make_metavar(), self.help or ""
[docs]class Option(click.Option): """A :class:`click.Option` with an extra field ``group`` of type ``OptionGroup``.""" def __init__(self, *args, group=None, **attrs): super().__init__(*args, **attrs) self.group = group
GroupedOption = Option """Alias of ``Option``."""
[docs]def argument(*param_decls, cls=None, **attrs): ArgumentClass = cls or Argument def decorator(f): _param_memo(f, ArgumentClass(param_decls, **attrs)) return f return decorator
[docs]def option(*param_decls, cls=None, group=None, **attrs): """Attach an ``Option`` to the command. Refer to :class:`click.Option` and :class:`click.Parameter` for more info about the accepted parameters. In your IDE, you won't see arguments relating to shell completion, because they are different in Click 7 and 8 (both supported by Cloup): - in Click 7, it's ``autocompletion`` - in Click 8, it's ``shell_complete``. These arguments have different semantics, refer to Click's docs. """ OptionClass = cls or Option def decorator(f): _param_memo(f, OptionClass(param_decls, **attrs)) new_option = f.__click_params__[-1] new_option.group = group if group and group.hidden: new_option.hidden = True return f return decorator