跳转到主要内容

轻松的参数解析器

项目描述

GitHub PyPI conda-forge
Read the Docs Build

defopt是一个轻量级、无需努力的参数解析器。

defopt将

  • 允许函数可以从代码和命令行运行,无需修改。

  • 奖励您对函数进行文档化。

  • 让您免于编写、测试和维护参数解析代码。

defopt将不会

  • 以任何方式修改您的函数。

  • 允许您构建高度复杂或定制的命令行工具。

如果您希望完全控制命令行的外观或行为,请尝试docoptclickargh。如果您只想编写Python代码,并将命令行界面留给其他人,那么defopt就是为您准备的。

用法

一旦您编写并记录了您的函数,只需将其传递给defopt.run()即可完成。

import defopt

# Use type hints:
def main(greeting: str, *, count: int = 1):
    """
    Display a friendly greeting.

    :param greeting: Greeting to display
    :param count: Number of times to display the greeting
    """
    for _ in range(count):
        print(greeting)

# ... or document parameter types in the docstring:
def main(greeting, *, count=1):
    """
    Display a friendly greeting.

    :param str greeting: Greeting to display
    :param int count: Number of times to display the greeting
    """
    for _ in range(count):
        print(greeting)

if __name__ == '__main__':
    defopt.run(main)

参数描述以及函数本身的描述被用来构建一个信息丰富的帮助信息。

$ python test.py -h
usage: test.py [-h] [-c COUNT] greeting

Display a friendly greeting.

positional arguments:
  greeting              Greeting to display

optional arguments:
  -h, --help            show this help message and exit
  -c COUNT, --count COUNT
                        Number of times to display the greeting
                        (default: 1)

现在,您可以从Python和命令行以相同的方式调用您的函数。

>>> from test import main
>>> main('hello!', count=2)
hello!
hello!
$ python test.py hello! --count 2
hello!
hello!

哲学

defopt是在以下指导原则下开发的

  1. 界面可以在几秒钟内完全理解。如果需要更长的时间,您的时间将更好地用于学习更灵活的工具。

  2. 您所学的任何内容都适用于现有的生态系统。defopt使用的确切docstrings也被Sphinx的autodoc扩展用于生成文档,以及由您的IDE用于类型检查。您可能已经知道您需要知道的一切来使用defopt。

  3. 所有内容都为您处理。如果您使用defopt,那是因为您根本不想编写任何解析参数的代码。您可以信任它为您的函数构建一个逻辑上一致的命令行界面,无需任何配置。

  4. 您的Python函数永远不会被修改。类型转换仅应用于来自命令行的数据。当在代码中使用时,鸭子类型仍然按照您期望的方式工作,没有惊喜。

开发

有关源代码、示例、问题、功能请求和错误报告,请访问GitHub存储库

文档

文档托管在Read the Docs

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

defopt-6.4.0.tar.gz (42.3 kB 查看哈希)

上传时间

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面