Skip to content

argument with nargs=-1 and envvar ignores values from command line #1903

@mschmitzer

Description

@mschmitzer

Since click 8.0, the value(s) provided on the command line for a nargs=-1 argument are ignored if the argument has envvar set.

Example:

#!/usr/bin/env python
import click

@click.command()
@click.argument("foo", nargs=-1, envvar="FOO")
def cli(foo):
    click.echo(foo)

if __name__ == "__main__":
    cli()
$ ./clickbug arg1 arg2
()

When arguments are passed on the command line, the foo value remains empty. Removing the envvar option makes it work again. Values from the environment variable are picked up, though. Reverting to click<8 also fixes the problem.

The cause of the bug is possibly here: The incoming value (which at this point still contains the correct arguments) is overwritten with None if nargs is -1 and the argument has an envvar set.

Environment:

  • Python version: 3.8.5
  • Click version: 8.0.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions