使用click builder进行配置

cock的Python项目详细描述


公鸡

Travis status for master branchCodecov coverage for master branchPypi versionPypi downloads count

Cock代表«co配置文件,使用cli ck»。它是一个配置聚合器,位于shiny^{}库上。在

原因

没有模块点击平面配置文件,这将模拟实际的点击选项。有^{}和{a7},但它们的目标是另一个目标。在

特点

  • 将对象配置和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是一个只有一个参数的用户空间函数,一个点访问配置包装器。在
  • optionsclick.optiondecorators的iterable。在
  • **context_settings是传递给command装饰器的dict。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JFrame中的Java多线程   java Servlet异常映射   java无法从输出流读取   swing Java带来的小程序GUI问题   java什么原因导致错误“'void'类型此处不允许”以及如何修复它?   Java选择器select(长)与selectNow的区别   java自定义arraylist<mygames>获得不同   java Icepdf注释让页面消失   java反向整数数组   java I在生成同步“无法解析配置的所有依赖项”时遇到此错误:app:debugRuntimeClasspath   多个虚拟机上的java线程访问单个DB实例上的表,有时会导致性能低下和异常   swing更改Java中的默认按钮,使其看起来“更好”   java慢速MQ主题订阅。并行化不能提高性能   java运行Boggle Solver需要一个多小时。我的代码怎么了?   数据库中的java循环与应用程序中的java循环   正则表达式匹配${123…456}并在Java中提取2个数字?   java如何制作我们软件的试用版   Java内存参数计算   从另一个类调用方法时出现java问题