
Security News
Next.js Patches Critical Middleware Vulnerability (CVE-2025-29927)
Next.js has patched a critical vulnerability (CVE-2025-29927) that allowed attackers to bypass middleware-based authorization checks in self-hosted apps.
click-option-group is a Click-extension package that adds option groups missing in Click.
Click is a package for creating powerful and beautiful command line interfaces (CLI) in Python, but it has no the functionality for creating option groups.
Option groups are convenient mechanism for logical structuring CLI, also it allows you to set the specific behavior and set the relationship among grouped options (mutually exclusive options for example). Moreover, argparse stdlib package contains this functionality out of the box.
At the same time, many Click users need this functionality. You can read interesting discussions about it in the following issues:
The aim of this package is to provide group options with extensible functionality using canonical and clean API (Click-like API as far as possible).
Install and update using pip:
pip install -U click-option-group
Here is a simple example how to use option groups in your Click-based CLI.
Just use optgroup
for declaring option groups by decorating
your command function in Click-like API style.
# app.py
import click
from click_option_group import optgroup, RequiredMutuallyExclusiveOptionGroup
@click.command()
@optgroup.group('Server configuration',
help='The configuration of some server connection')
@optgroup.option('-h', '--host', default='localhost', help='Server host name')
@optgroup.option('-p', '--port', type=int, default=8888, help='Server port')
@optgroup.option('-n', '--attempts', type=int, default=3, help='The number of connection attempts')
@optgroup.option('-t', '--timeout', type=int, default=30, help='The server response timeout')
@optgroup.group('Input data sources', cls=RequiredMutuallyExclusiveOptionGroup,
help='The sources of the input data')
@optgroup.option('--tsv-file', type=click.File(), help='CSV/TSV input data file')
@optgroup.option('--json-file', type=click.File(), help='JSON input data file')
@click.option('--debug/--no-debug', default=False, help='Debug flag')
def cli(**params):
print(params)
if __name__ == '__main__':
cli()
$ python app.py --help
Usage: app.py [OPTIONS]
Options:
Server configuration: The configuration of some server connection
-h, --host TEXT Server host name
-p, --port INTEGER Server port
-n, --attempts INTEGER The number of connection attempts
-t, --timeout INTEGER The server response timeout
Input data sources: [mutually_exclusive, required]
The sources of the input data
--tsv-file FILENAME CSV/TSV input data file
--json-file FILENAME JSON input data file
--debug / --no-debug Debug flag
--help Show this message and exit.
https://click-option-group.readthedocs.io
optgroup.help_option
decorator to add help option to the group (PR #50)tests/
directory to tarballtests_cov
extra dependencies for testing with coverage<9
(Issue #33)name
in optgroup
decorator must be keyword-onlyAllOptionGroup
class: all options from the group must be set or none must be set (PR #13)hidden=True
to _GroupTitleFakeOption
as a temporary workaroud for issue #4RequiredMutuallyExclusiveOptionGroup
class instead of required
argument for MutuallyExclusiveOptionGroup
FAQs
Option groups missing in Click
We found that click-option-group demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Next.js has patched a critical vulnerability (CVE-2025-29927) that allowed attackers to bypass middleware-based authorization checks in self-hosted apps.
Security News
A survey of 500 cybersecurity pros reveals high pay isn't enough—lack of growth and flexibility is driving attrition and risking organizational security.
Product
Socket, the leader in open source security, is now available on Google Cloud Marketplace for simplified procurement and enhanced protection against supply chain attacks.