Protype click option groups
If click-option-group
is available, this will automatically create option groups:
import click
import typed_settings as ts
@ts.settings
class Coverage:
"""
Coverage settings
"""
src: str = ts.option(default="", click={"param_decls": ("--cov", "src")})
report: str = ""
@ts.settings
class Emoji:
"""
Emoji settings
"""
enable: bool = True
@ts.settings
class Main:
"""
Main settings
"""
a: int = 0
b: int = 0
cov: Coverage = Coverage()
emoji: Emoji = Emoji()
@click.command()
@ts.click_options(Main, "pytest")
def cli(settings: Main):
print(settings)
if __name__ == "__main__":
cli()
❯❯❯ python optgrouptest.py --help
Usage: optgrouptest.py [OPTIONS]
Options:
Main settings:
--a INTEGER [default: 0]
--b INTEGER [default: 0]
Coverage settings:
--cov TEXT
--cov-report TEXT
Emoji settings:
--emoji-enable / --no-emoji-enable
[default: emoji-enable]
--help Show this message and exit.
The behavior can be customized by passing a DecoratorFactory
to click_utils()
. This MR contains two - normal click options and option groups, but users can implement and pass their own.
See: #15 (closed)
Edited by Stefan Scherfke