Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Select destination variable for click parser

I'm wondering how to override destination variable for the click.option (Click lib). For example in such piece of code

import click

@click.command()
@click.option('--output', default='data')
def generate_data(output_folder):
    print(output_folder)

So I want to use --output flag but pass its value to output_folder argument, kinda this: @click.option('--output', default='data', dest='output_folder')? Is there is such an ability in click? I know that argparse allow such a behaviour.

like image 295
Most Wanted Avatar asked Apr 24 '26 13:04

Most Wanted


1 Answers

Yes, see the section in the click documentation on parameter names, which covers both options and arguments.

If a parameter is not given a name without dashes, a name is generated automatically by taking the longest argument and converting all dashes to underscores. For an option with ('-f', '--foo-bar'), the parameter name is foo_bar. For an option with ('-x',), the parameter is x. For an option with ('-f', '--filename', 'dest'), the parameter is called dest.

Here's your example:

from __future__ import print_function
import click

@click.command()
@click.option('--output', 'data')
def generate_data(data):
    print(data)

if __name__ == '__main__':
    generate_data()

Running it:

$ python2.7 stack_overflow.py --output some_output
some_output
like image 123
Jacob Avatar answered Apr 27 '26 09:04

Jacob



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!