OptionSection

class lsst.daf.butler.cli.utils.OptionSection(sectionName: str, sectionText: str)

Bases: MWOption

Implements an Option that prints a section label in the help text and does not pass any value to the command function.

This class does a bit of hackery to add a section label to a click command help output: first, expose_value is set to False so that no value is passed to the command function. Second, this class overrides click.Option.get_help_record to return the section label string without any prefix so that it stands out as a section label.

This class overrides the hidden attribute because our documentation build tool, sphinx-click, implements its own get_help_record function which builds the record from other option values (e.g. name, opts), which breaks the hack we use to make get_help_record only return the sectionText. Fortunately, Click gets the value of hidden inside the Option’s get_help_record, and sphinx-click calls opt.hidden before entering its _get_help_record function. So, making the hidden property return True hides this option from sphinx-click, while allowing the section text to be returned by our get_help_record method when using Click.

The intention for this implementation is to do minimally invasive overrides of the click classes so as to be robust and easy to fix if the click internals change.

Parameters:
sectionNamestr

The parameter declaration for this option. It is not shown to the user, it must be unique within the command. If using the section decorator to add a section to a command’s options, the section name is auto-generated.

sectionTextstr

The text to print in the section identifier.

Attributes Summary

hidden

human_readable_name

Returns the human readable name of this parameter.

param_type_name

Methods Summary

add_to_parser(parser, ctx)

consume_value(ctx, opts)

get_default(ctx[, call])

Get the default for the parameter.

get_error_hint(ctx)

Get a stringified version of the param for use in error messages to indicate which param caused the error.

get_help_record(ctx)

get_usage_pieces(ctx)

handle_parse_result(ctx, opts, args)

make_metavar()

Make the metavar for the help menu.

process_value(ctx, value)

prompt_for_value(ctx)

This is an alternative flow that can be activated in the full value processing if a value does not exist.

resolve_envvar_value(ctx)

shell_complete(ctx, incomplete)

Return a list of completions for the incomplete value.

to_info_dict()

Gather information that could be useful for a tool generating user-facing documentation.

type_cast_value(ctx, value)

Convert and validate a value against the option's type, multiple, and nargs.

value_from_envvar(ctx)

value_is_missing(value)

Attributes Documentation

hidden
human_readable_name

Returns the human readable name of this parameter. This is the same as the name for options, but the metavar for arguments.

param_type_name = 'option'

Methods Documentation

add_to_parser(parser: OptionParser, ctx: Context) None
consume_value(ctx: Context, opts: Mapping[str, Parameter]) Tuple[Any, ParameterSource]
get_default(ctx: Context, call: bool = True) Any | Callable[[], Any] | None

Get the default for the parameter. Tries Context.lookup_default() first, then the local default.

Parameters:
  • ctx – Current context.

  • call – If the default is a callable, call it. Disable to return the callable instead.

Changed in version 8.0.2: Type casting is no longer performed when getting a default.

Changed in version 8.0.1: Type casting can fail in resilient parsing mode. Invalid defaults will not prevent showing help text.

Changed in version 8.0: Looks at ctx.default_map first.

Changed in version 8.0: Added the call parameter.

get_error_hint(ctx: Context) str

Get a stringified version of the param for use in error messages to indicate which param caused the error.

get_help_record(ctx: Context | None) tuple[str, str]
get_usage_pieces(ctx: Context) List[str]
handle_parse_result(ctx: Context, opts: Mapping[str, Any], args: List[str]) Tuple[Any, List[str]]
make_metavar() str

Make the metavar for the help menu.

Overrides click.Option.make_metavar. Adds a space and an ellipsis after the metavar name if the option accepts multiple inputs, otherwise defers to the base implementation.

By default click does not add an ellipsis when multiple is True and nargs is 1. And when nargs does not equal 1 click adds an ellipsis without a space between the metavar and the ellipsis, but we prefer a space between.

Does not get called for some option types (e.g. flag) so metavar transformation that must apply to all types should be applied in get_help_record.

process_value(ctx: Context, value: Any) Any
prompt_for_value(ctx: Context) Any

This is an alternative flow that can be activated in the full value processing if a value does not exist. It will prompt the user until a valid value exists and then returns the processed value as result.

resolve_envvar_value(ctx: Context) str | None
shell_complete(ctx: Context, incomplete: str) List[CompletionItem]

Return a list of completions for the incomplete value. If a shell_complete function was given during init, it is used. Otherwise, the type shell_complete() function is used.

Parameters:
  • ctx – Invocation context for this command.

  • incomplete – Value being completed. May be empty.

New in version 8.0.

to_info_dict() Dict[str, Any]

Gather information that could be useful for a tool generating user-facing documentation.

Use click.Context.to_info_dict() to traverse the entire CLI structure.

New in version 8.0.

type_cast_value(ctx: Context, value: Any) Any

Convert and validate a value against the option’s type, multiple, and nargs.

value_from_envvar(ctx: Context) Any | None
value_is_missing(value: Any) bool