使用click builder进行配置
cock的Python项目详细描述
公鸡
Cock代表«co配置文件,使用cli ck»。它是一个配置聚合器,位于shiny^{
原因
没有模块点击平面配置文件,这将模拟实际的点击选项。有^{
特点
- 将对象配置和cli选项聚合为平面配置。在
- 尊重所有的点击检查和转换。在
- 平面点访问(^{
} 包装)配置。在 - 入口点生成器。在
许可证
cock
是根据麻省理工学院的许可证提供的。在
要求
- python 3.7+
使用
example.py
:
importclickfromcockimportbuild_entrypointdefmain(config):print(config)options=[click.option("--a-b-c",default="foo"),click.option("--b-c-d",default="bar"),]entrypoint=build_entrypoint(main,options,auto_envvar_prefix="EXAMPLE",show_default=True)if__name__=="__main__":entrypoint(prog_name="example")
这几乎是纯粹的点击设置
^{pr2}$但是有一个CONFIGURATION_FILE
参数。让我们看看用例。在
所有死亡
$ python example.py
{'configuration_file': None, 'a_b_c': 'foo', 'b_c_d': 'bar'}
从环境变量
$ EXAMPLE_A_B_C=foo-env python example.py
{'configuration_file': None, 'a_b_c': 'foo-env', 'b_c_d': 'bar'}
从cli参数
$ EXAMPLE_A_B_C=foo-env python example.py --a-b-c foo-cli
{'a_b_c': 'foo-cli', 'configuration_file': None, 'b_c_d': 'bar'}
从配置
config-example.yml
:
a-b-c:foo-file
$ EXAMPLE_A_B_C=foo-env python example.py --a-b-c foo-cli config-example.yml
{'a_b_c': 'foo-file', 'configuration_file': '/absolute/path/to/config-example.yml', 'b_c_d': 'bar'}
优先级很明显:file>;cli arguments>;env variables
如features段落中所述,配置在使用click选项链接之前被展平。因此,下面列出的所有配置文件都是相等的:
a-b-c:foo-file
a:b:c:foo-file
a-b:c:foo-file
如果提供的文件有关键交叉点:
a-b-c:foo-file1a:b-c:foo-file2
然后ValueError
将被提升。在
cock
使用pyyaml
库进行配置加载,因此它支持yaml
和{
配置也可以定义为字典
fromcockimportbuild_entrypoint,build_options_from_dict,Optiondefmain(config):print(config)options={"a":{"b":{"c":Option(default="foo"),},},}entrypoint=build_entrypoint(main,build_options_from_dict(options),auto_envvar_prefix="EXAMPLE",show_default=True)if__name__=="__main__":entrypoint(prog_name="example")
美国石油学会
defbuild_entrypoint(main:Callable[[AdDict],Any],options:List[click.option],**context_settings)->Callable[...,Any]:
main
是一个只有一个参数的用户空间函数,一个点访问配置包装器。在options
是click.option
decorators的iterable。在**context_settings
是传递给command
装饰器的dict。在
- 项目
标签: