You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm trying to upgrade an application from click 7 to click 8 but I'm running into issues.
I was able to reduce the issue to a minimal reproducible example.
The following program behaves differently in 7.1.2 and 8.0.0
import click
def load_settings(ctx, param, value):
# breakpoint()
if (value is not None):
ctx.default_map['general_foo'] = value + 'foo'
ctx.default_map['general_bar'] = value + 'bar'
def sanitize_foo(ctx, param, val):
click.echo('sanitizing foo')
return val
def sanitize_bar(ctx, param, val):
click.echo('sanitizing bar')
return val
def print_help(ctx, param, value):
if value:
ctx.exit()
@click.command()
@click.option('--general-foo', '--foo', default=None, nargs=2, callback=sanitize_foo)
@click.option('--general-bar', '--bar', default=None, callback=sanitize_bar)
@click.option('--settings', callback=load_settings, default=None, is_eager=True)
@click.pass_context
def hello(ctx, settings, general_bar, general_foo):
click.echo(general_foo)
click.echo(general_bar)
@click.group()
@click.option('--settings', hidden=True)
@click.pass_context
def cli(ctx, settings):
ctx.default_map['hello'] = { 'settings': settings }
cli.add_command(hello)
if __name__ == '__main__':
cli(default_map={})
(.venv) dezsiszabi@SZABI-PC:~/projects/click-test$ python3 main.py hello --settings hello
Usage: main.py hello [OPTIONS]
Try 'main.py hello --help' for help.
Error: Invalid value for '--general-foo' / '--foo': Value must be an iterable.
I assume this difference was introduced intentionally, but I'm having a hard time adapting my code and even after reading the changelog multiple times I'm not sure which change in 8.0.0 is causing it exactly.
Note: the application is basically trying to do this https://jwodder.github.io/kbits/posts/click-config/
I assume the original developer of the application used this guide as well, but unfortunately this is now breaking with 8.0.0 :)
Any help is appreciated.
Environment:
Python version: 3.12.3
Click version: 8.0.0 to latest
The text was updated successfully, but these errors were encountered:
dezsiszabi
changed the title
Settings default_map in callback behaves differently between click 7.1.2 and 8.0.0
Modifying default_map in callback behaves differently between click 7.1.2 and 8.0.0
Jun 20, 2024
Hi,
I'm trying to upgrade an application from click 7 to click 8 but I'm running into issues.
I was able to reduce the issue to a minimal reproducible example.
The following program behaves differently in 7.1.2 and 8.0.0
In click 7.1.2:
In click 8.0.0 (and later):
I assume this difference was introduced intentionally, but I'm having a hard time adapting my code and even after reading the changelog multiple times I'm not sure which change in 8.0.0 is causing it exactly.
Note: the application is basically trying to do this https://jwodder.github.io/kbits/posts/click-config/
I assume the original developer of the application used this guide as well, but unfortunately this is now breaking with 8.0.0 :)
Any help is appreciated.
Environment:
The text was updated successfully, but these errors were encountered: