には と同等のClick
ものはありませんが、悪用できる特定の引数命名動作があります。具体的には、複数の可能な名前を持つパラメーターの場合、破線のない名前が優先され、2 番目の優先順位として、短い名前よりも長い名前が優先されます。dest
argparse
URL: http://click.pocoo.org/dev/parameters/#parameter-names
したがって、オプションを次のように宣言すると...
@click.option('--format', 'not-format', type=click.Choice(['t', 'j']))
...次にクリックすると、破線以外のバリアント ( 'not-format'
) が優先され、引数を指定して関数が呼び出されますnot_format=...
。
もちろん、この代替スペルはコマンド ラインでも使用できることも意味します。それが望ましくない場合は、デコレータを追加してキーワード引数の名前を変更できると思います。
import functools
def rename_kwargs(**replacements):
def actual_decorator(func):
@functools.wraps(func)
def decorated_func(*args, **kwargs):
for internal_arg, external_arg in replacements.iteritems():
if external_arg in kwargs:
kwargs[internal_arg] = kwargs.pop(external_arg)
return func(*args, **kwargs)
return decorated_func
return actual_decorator
テスト コード:
if __name__ == '__main__':
@rename_kwargs(different_arg='format')
def tester(different_arg):
print different_arg
tester(format='test value')
テスト出力:
$ python test_decor.py
test value
あなたの場合、次のようになります。
@click.option('--format', type=click.Choice(['t', 'j']))
@replace_kwargs(not_format='format')
def plug(not_format):
pass