一个基于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 |