优秀的`np-validator`是一个使用https://github.com/TezRomacH/python-package-template创建的Python cli/package。
项目描述
np-validator
快速概述
API
自动生成的步骤
默认情况下,run_validation
可以在文件路径列表上运行。如果提供有效的项目名称,将自动生成一个ValidationStep
列表。如果没有提供项目名称,则项目名称为“default”。
from np_validator import run_validation
filepaths = [
"some/sort/of/path/prefix/uuid-maybe.mapping.pkl",
"some/sort/of/path/prefix/uuid-maybe.behavior.pkl",
"this/will/be/ignored/uuid-maybe.replay.pkl",
]
results = run_validation(filepaths, project="default")
手动生成验证步骤
from np_validator import Processor, Validator, ValidationStep, run_validation
# make a basic filesize validator
fs_validator = Validator(
name="meets_filesize_threshold",
args={
"threshold": 10,
},
)
# add validator to a validation step
validation_step_0 = ValidationStep(
path_suffix=".mapping.pkl",
validators=[fs_validator, ],
)
# make a validation step with a processor
# processors convert the data source from it's basic state, a filepath, to an easier to use object
# unpickle, unpickles an arbitrary filepath into a python object
unpickler = Processor(
name="unpickle",
)
# has_dict_key, checks if a dict-like interface has a key at path
session_uuid_validator = Validator(
name="has_dict_key",
args={
"path": ["session_uuid", ],
}
)
# assembling it all together as a validation step
validation_step_1 = ValidationStep(
path_suffix=".behavior.pkl",
processor=unpickler,
validators=[session_uuid_validator, ],
)
# running a validation
filepaths = [
"some/sort/of/path/prefix/uuid-maybe.mapping.pkl",
"some/sort/of/path/prefix/uuid-maybe.behavior.pkl",
"this/will/be/ignored/uuid-maybe.replay.pkl",
]
results = run_validation(
filepaths,
[validation_step_0, validation_step_1, ],
)
更新自动生成的步骤
from np_validator import Processor, Validator, ValidationStep, autogenerate_validation_steps, update_project_validation_steps
# autogenerated steps are organized by projects
validation_step_0 = ValidationStep(
path_suffix=".mapping.pkl",
validators=[
Validator(
name="meets_filesize_threshold",
args={
"threshold": 10,
},
),
],
)
validation_step_1 = ValidationStep(
path_suffix=".behavior.pkl",
processor=Processor(
name="unpickle",
),
validators=[
Validator(
name="has_dict_key",
args={
"path": ["session_uuid", ],
}
),
],
)
# updating project validation steps overwrites the previous steps
update_project_validation_steps(
"pretest", # project name
[validation_step_0, validation_step_1],
)
# to append, get the current steps with autogenerate_validation_steps and append to it
current = autogenerate_validation_steps("default")
updated = current + [validation_step_0, validation_step_1]
update_project_validation_steps(
"default", # project name
updated, # append new steps
)
文档
有关使用此包的更多详细文档,请参阅文档。
贡献
处理器
要添加新的处理器,请将函数添加到np_validator/processors.py
中。理想情况下,在tests
中为其创建一个测试。运行tests*以帮助确保没有引入回归。每个处理器都应有一个字符串文件路径作为必需参数。
验证器
要添加新的验证器,请将函数添加到np_validator/validators.py
中。理想情况下,在tests
中为其创建一个测试。运行tests*以帮助确保没有引入回归。
*在pull_request上自动运行测试。
安装
pip install -U np-validator
或使用Poetry
安装
poetry add np-validator
Makefile使用
Makefile
包含许多用于快速开发的函数。
1. 下载并删除Poetry
要下载和安装 Poetry,请运行
make poetry-download
要卸载
make poetry-remove
2. 安装所有依赖项和预提交钩子
安装需求
make install
预提交钩子可以在 git init
之后通过以下方式安装:
make pre-commit-install
3. 代码风格
自动格式化使用 pyupgrade
、isort
和 black
。
make codestyle
# or use synonym
make formatting
仅进行代码风格检查,不重写文件
make check-codestyle
注意:
check-codestyle
使用isort
、black
和darglint
库
使用一条命令更新所有开发库到最新版本
make update-dev-deps
4. 代码安全
make check-safety
此命令将启动 Poetry
完整性检查,并使用 Safety
和 Bandit
识别安全漏洞。
make check-safety
5. 类型检查
运行 mypy
静态类型检查器
make mypy
6. 带覆盖率徽章的测试
运行 pytest
make test
7. 所有代码检查器
当然有一个命令可以一次性运行所有代码检查器
make lint
与以下相同
make test && make check-codestyle && make mypy && make check-safety
8. Docker
make docker-build
相当于以下操作
make docker-build VERSION=latest
使用以下命令删除 Docker 镜像:
make docker-remove
更多关于 Docker 的信息,请参阅 GitHub 上的 Docker。
9. 清理
删除 pycache 文件
make pycache-remove
删除包构建
make build-remove
删除 .DS_STORE 文件
make dsstore-remove
删除 .mypycache
make mypycache-remove
或者要删除所有上述文件,请运行
make cleanup
📈 发布
您可以在 GitHub 发布页面 上查看可用的发布列表。
我们遵循 语义版本 规范。
我们使用 Release Drafter
。随着拉取请求的合并,草稿发布会保持最新,列出更改,准备好发布。使用类别选项,您可以使用标签对发布说明中的拉取请求进行分类。
标签列表及其对应标题
标签 | 发布中的标题 |
---|---|
enhancement 、feature |
🚀 功能 |
bug 、refactoring 、bugfix 、fix |
🔧 修复和重构 |
build 、ci 、testing |
📦 构建系统和 CI/CD |
breaking |
💥 破坏性变更 |
documentation |
📝 文档 |
dependencies |
⬆️ 依赖项更新 |
您可以在 release-drafter.yml
中更新它。
GitHub 为您创建了 bug
、enhancement
和 documentation
标签。Dependabot 创建了 dependencies
标签。当您需要时,在 GitHub 仓库的“问题”选项卡上创建剩余的标签。
🛡 许可证
此项目根据 MIT
许可证的条款进行许可。有关更多详细信息,请参阅 LICENSE。
附加信息
初始化新的仓库
初始化您的代码
- 在您的仓库内初始化
git
cd np-validator && git init
- 如果您尚未安装
Poetry
,请运行
make poetry-download
- 初始化 poetry 并安装
pre-commit
钩子
make install
make pre-commit-install
- 运行代码风格检查
make codestyle
- 将初始代码上传到 GitHub
git add .
git commit -m ":tada: Initial commit"
git branch -M main
git remote add origin https://github.com/np_validator/np-validator.git
git push -u origin main
设置机器人
- 设置 Dependabot 以确保您有最新的依赖项。
- 设置 Stale bot 以自动关闭问题。
Poetry
想了解更多关于 Poetry 的信息?请查看 其文档。
Poetry 的详细信息
Poetry 的 命令 非常直观且易于学习,例如:
poetry add numpy@latest
poetry run pytest
poetry publish --build
等
构建和发布您的包
构建应用程序的新版本包含以下步骤:
- 提高您包的版本
poetry version <版本号>
。您可以显式传递新版本,也可以使用major
、minor
或patch
等规则。更多详情,请参考 语义版本 标准。 - 向
GitHub
提交一个版本。 - 创建一个
GitHub 发布版
。 - 然后...发布吧!
poetry publish --build
🎯 接下来是什么
这取决于你 💪🏻。我只能推荐那些帮助过我的包和文章。
Typer
是创建 CLI 应用程序的好工具。Rich
使在终端中添加美观的格式化变得简单。Pydantic
– 使用 Python 类型提示进行数据验证和设置管理。Loguru
使日志记录(非常)简单。tqdm
– Python 和 CLI 的快速、可扩展的进度条。IceCream
是一个用于美味、丝滑调试的小型库。orjson
– 极快的 JSON 解析库。Returns
让您函数的输出变得有意义、类型化和安全!Hydra
是一个用于优雅配置复杂应用的框架。FastAPI
是一个类型驱动的异步 Web 框架。
文章
- 开源指南.
- 开源财务支持的实用指南
- GitHub Actions 文档.
- 也许你想要将 gitmoji 添加到提交名称中。这真的很搞笑。 😄
🚀 功能
开发特性
- 支持
Python 3.9
及更高版本。 Poetry
作为依赖管理器。请参阅pyproject.toml
和setup.cfg
中的配置。- 使用
black
、isort
和pyupgrade
自动进行代码格式化。 - 带有代码格式化的
pre-commit
插件,可直接使用。 - 使用
mypy
进行类型检查;使用darglint
进行文档字符串检查;使用safety
和bandit
进行安全检查。 - 使用
pytest
进行测试。 - 提供可使用的
.editorconfig
、.dockerignore
和.gitignore
。你不必担心这些事情。
部署特性
- 集成
GitHub
:问题和 pr 模板。 - 使用预定义的 构建工作流程 作为默认的 CI/CD。
- 使用
Makefile
,一切已设置就绪,包括安全检查、代码风格检查、代码格式化、测试、代码审查、Docker 构建等。更多详情请参阅 makefile-usage。 - 为您的包提供 Dockerfile。
- 使用
@dependabot
确保依赖项始终是最新的。你只需要 启用它。 - 使用
Release Drafter
自动生成新版本的草稿。您可以在release-drafter.yml
中查看标签列表。与 语义版本规范 完美配合。
开源社区功能
项目详情
下载文件
下载您平台对应的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。