跳转到主要内容

将函数转换为CLI的小工具

项目描述

https://i.imgur.com/5hCKc9u.png

从函数注解构建参数解析器。一个简单的小工具,受Firedocopt启发。适用于经常编写单个入口点脚本的用户的即时解决方案。

如何?

使用ancli构建CLI的过程非常简单。

  1. 编写一个带有注解参数的纯Python函数。

  2. make_cli包装它。

  3. 运行您的脚本。

示例

1. 带有注解参数的函数

函数run明确注解了参数,并且其签名用于实例化接受特定类型和默认(如果有)参数的argparse.ArgumentParser实例。如果没有提供默认值,则该参数被视为必需的。

from ancli import make_cli

def run(path: str, flag: bool = True, iterations: int = 1):
    print(f'run: path={path}, flag={flag}, iterations={iterations}')

if __name__ == '__main__':
    make_cli(run)

现在这个片段可以这样使用。

$ python script.py --path file.txt --flag 0
run: path=file.txt, flag=False, iterations=1

2. 没有注解的函数

没有类型注解的函数尝试根据它们的默认值推断参数类型。

from ancli import make_cli

def run(a, b=2, c=3.0):
    for param in (a, b, c):
        print(type(param))

if __name__ == '__main__':
    make_cli(run)

没有默认值的参数被视为字符串。

$ python script.py --a 1 --b 2 --c 3.0
<type 'str'>
<type 'int'>
<type 'float'>

3. 将ancli作为模块运行

将包作为模块运行允许从某些函数动态构建CLI。您只需指定模块的路径,以及应被视为入口点的函数。

$ python -m ancli examples.functions:compute --a 2 --b 6
42

支持者