在python程序中使用的可嵌套、可选项卡选项

optioneer的Python项目详细描述


https://img.shields.io/pypi/v/optioneer.svghttps://img.shields.io/pypi/status/optioneer.svghttps://travis-ci.com/topper-123/optioneer.svg?branch=masterhttps://img.shields.io/badge/License-BSD%203--Clause-blue.svghttps://img.shields.io/pypi/pyversions/optioneer.svg

optioner在程序选项中生成:

  • 可嵌套且可分组,
  • REPL中是否可以使用tab键,以便轻松找到选项
  • 为每个选项提供一个可选的文档字符串,以便轻松解释该选项
  • 可根据透明折旧周期进行折旧
  • 可在更改时验证
  • 可以执行自定义回调

optioner基于中的core/config.py模块 pandas

安装

使用pip安装很容易:

pip install optioneer

使用指南

config.py文件中设置选项:

fromoptioneerimportOptioneeroptions_maker=Optioneer()options_maker.register_option('api_key','abcdefg')options_maker.register_option('display.width',200,doc='Width of our display')options_maker.register_option('display.height',200,doc='Height of our display')options_maker.register_option('color','red',validator=options_maker.is_str)options=options_maker.options

然后,在你图书馆的相关位置,只要 from config import options你已经设置好了选项。

库的用户现在可以从相关位置访问选项 在您的软件包中,例如,如果您已经提供了顶级的 __init__.py一个名为mylib的包:

>>>importmylib>>>importmylib.optionsOptions(api_key:Nodescriptionavailable.[default:abcdefg][currently:abcdefg]color:Nodescriptionavailable.[default:red][currently:red]display.height:Heightofourdisplay[default:200][currently:200]display.width:Widthofourdisplay[default:200][currently:200])

请注意repr输出如何显示相关选项及其说明。

使用REPL中的选项卡可以发现相关选项:

>>>mylib.options.<TAB>option.api_keyoptions.coloroptions.display>>>mylib.options.display.<TAB>options.display.heightoptions.display.width

您还可以很容易地看到中的子组的选项及其值和文档 repr字符串:

>>>mylib.options.displayOptions(display.height:Heightofourdisplay[default:200][currently:200]display.width:Widthofourdisplay[default:200][currently:200])

回调

通过在注册选项时提供回调,更改选项可能会触发 期望的行动。例如,如果您在config.pydo:

options_maker.register_option('shout',True,callback=lambdax:print("YEAH!"))

然后用户在更改该选项时将看到:

>>>mylib.options.shout=FalseYEAH!

当然,回调可能比上面更实际,例如日志记录或 设置一些内部选项或其他内容。

弃用选项

如果您想否决某个选项,optioneer允许您这样做:

options_maker.deprecate_option('api_key',msg='An api key is no longer needed')

现在,如果您的用户访问此选项,将收到一个弃用警告:

>>>mylib.options.api_keyAnapikeyisnolongerneededC:\Users\TP\Documents\Python\optioneer\optioneer\lib.py:677:FutureWarning:Anapikeyisnolongerneededwarnings.warn(deprecated_option.msg,FutureWarning)Out[20]:'abcdefg'

如果一个选项应该被重命名和/或一个标记应该在什么时候 也可以删除:

options_maker.register_option('display.length',300,doc='Length of our display')options_maker.deprecate_option('display.height',redirect_key='display.length',removal_version='v1.3')

然后访问该选项将显示

>>>mylib.options.display.heightC:\Users\TP\Documents\Python\optioneer\optioneer\lib.py:689:FutureWarning:'display.height'isdeprecatedandwillberemovedinv1.3,pleaseuse'display.length'instead.warnings.warn(msg,FutureWarning)Out[24]:300

不推荐的选项不会显示在repr输出或制表符完成时。

依赖关系

认股人没有外部依赖关系。

optioner使用pytest进行测试。

许可证

认股权人获得BSD 3许可。

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

推荐PyPI第三方库


热门话题
在EclipseIDE中设计JavaSwingGUI的最简单方法是什么?   用java显示字符串的第二行   java如何编写一个自定义的crudepository方法(@Query)来过滤我的案例中的结果   如何在Java中解析字符串?   java如何使两个数组随机相等   java为什么hang()方法只执行一次?   java图像缩小问题   java将按键从小程序“转发”到JFrame   错误处理是否适合捕获java。多线程应用程序中的lang.ExceptionInInitializerError?   JAVAlang.IllegalArgumentException:文件不包含有效的私钥:/Users/x/application。钥匙   为什么我们使用动态代理   java VBA填充网页文本框   在方法调用中间没有中断的java IntLIJ思想行包装   java WebDriver driver=新的ChromeDriver(选项);显示构造函数ChromeDriver(ChromeOptions)未定义