跳转到主要内容

一个基于Pydantic模型的pydantic CLI创建工具。

项目描述

coverage PyPI - Version code style - black types - Mypy

使用Pydantic模型创建您的CLI。

按常规方式定义一个pydantic模型,将其传递给clipstick,您将获得一个包含子命令、良好的docstrings和基于类型和pydantic验证器的验证的CLI。

安装

pip安装clipstick

示例

按常规方式创建一个pydantic模型。

from pydantic import BaseModel

from clipstick import parse


class MyName(BaseModel):
    """What is my name.

    In case you forgot I will repeat it x times.
    """

    name: str
    """Your name."""

    age: int = 24
    """Your age"""

    repeat_count: int = 10
    """How many times to repeat your name."""

    def main(self):
        for _ in range(self.repeat_count):
            print(f"Hello: {self.name}, you are {self.age} years old")


if __name__ == "__main__":
    model = parse(MyName)
    model.main()

就是这样。clipstick解析器将根据分配给模型的属性、提供的类型和docstrings将其转换为命令行界面。

因此,python examples/name.py -h将为您提供格式良好(并着色)的输出

help_output

并使用您的CLI python examples/name.py superman --repeat-count 4

usage output

提供的注释定义了您的参数需要转换到的类型。如果您提供了一个无法转换的值,您将看到一个友好的错误

python examples/name.py superman --age too-old

wrong age

包含def main(self)方法不是必需的。clipstick根据提供的CLI参数生成一个pydantic模型,并将其返回给您以供进一步使用。使用def main()是进一步处理它的一个选项。

为什么?

市面上有许多其他工具也能做到类似的功能,但它们都不完全符合我的需求。

clipstip 的目标是利用 pydantic 来通过利用

  • 自动转换输入变量。
  • 强大的验证能力。
  • 文档字符串作为 CLI 文档。
  • 无需其他思维模型,只需 Typing 和 Pydantic。

clipstick 受益于 tyro 的启发,它非常出色且比这个工具更灵活。但在我看来,它的主要焦点不是构建类似于 Argparse 或 Click 的 CLI 工具,而是更多地从命令行组合复杂对象。要让 tyro 表现得像“传统”CLI,需要额外的 Annotation 标志,这我不希望使用。

一些其他类似工具不支持 pydantic v2,因此我决定自己创建一个。除此之外,我还想尝试构建自己的解析器而不是使用 Argparse,因为……为什么不呢。

有关更多信息,请访问 文档

开发

非常欢迎拉取请求!以下是一些指导

  • 在此存储库上创建分支,并使用以下内容在 dev 分支上创建您的分支。
  • 此项目使用 Poetry。使用 Poetry install 安装所有开发所需的组件。
  • 此项目使用 Nox。在这里,nox -s testnox -s quality 是您的朋友。
  • 请将您的更改更新到 CHANGELOG.md 文件中的 ## [Unreleased] 部分。
  • 完成后,将您的拉取请求指向 dev 开发分支。

谢谢!

项目详情


下载文件

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

源分布

clipstick-0.6.1.tar.gz (14.3 kB 查看哈希值)

上传时间

构建分布

clipstick-0.6.1-py3-none-any.whl (15.2 kB 查看哈希值)

上传时间 Python 3

支持者