一个基于Pydantic模型的pydantic CLI创建工具。
项目描述
使用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将为您提供格式良好(并着色)的输出
并使用您的CLI python examples/name.py superman --repeat-count 4
提供的注释定义了您的参数需要转换到的类型。如果您提供了一个无法转换的值,您将看到一个友好的错误
python examples/name.py superman --age too-old
包含
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 test和nox -s quality是您的朋友。
- 请将您的更改更新到 CHANGELOG.md文件中的## [Unreleased]部分。
- 完成后,将您的拉取请求指向 dev开发分支。
谢谢!
项目详情
下载文件
下载适用于您平台的文件。如果您不确定该选择哪个,请了解更多关于 安装包 的信息。
源分布
构建分布
clipstick-0.6.1.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | f7cd156b3d82554463d410b49cc063fa7cd19e2389a5a518954c443b8a9807c5 | |
| MD5 | 84eee4d151787f87170c006f82fd4dc4 | |
| BLAKE2b-256 | 014a75821a6eafb7759ee8fb18767e2d585acaf5eb6d650750cf863a5291a2c0 | 
clipstick-0.6.1-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | ae014e1e607019cc6e50869a08064b3da16a56021579c94d710aec9b3a5cd4d8 | |
| MD5 | a5ae5ffa7fe3e9163b9e6403f85867ac | |
| BLAKE2b-256 | 68ef83cf571a61bd505abb19b18a5f8e621a2e0633ff6f0a25b20ebd75b2de6a |