跳转到主要内容

优秀的`np-validator`是一个使用https://github.com/TezRomacH/python-package-template创建的Python cli/package。

项目描述

np-validator

Build status Python Version Dependencies Status

Code style: black Security: bandit Pre-commit Semantic Versions License Coverage Report

np-validator是一个简单的Python cli/package,使用模板工作流程验证neuropixel pipline的数据源。

快速概述

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. 代码风格

自动格式化使用 pyupgradeisortblack

make codestyle

# or use synonym
make formatting

仅进行代码风格检查,不重写文件

make check-codestyle

注意:check-codestyle 使用 isortblackdarglint

使用一条命令更新所有开发库到最新版本

make update-dev-deps

4. 代码安全

make check-safety

此命令将启动 Poetry 完整性检查,并使用 SafetyBandit 识别安全漏洞。

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。随着拉取请求的合并,草稿发布会保持最新,列出更改,准备好发布。使用类别选项,您可以使用标签对发布说明中的拉取请求进行分类。

标签列表及其对应标题

标签 发布中的标题
enhancementfeature 🚀 功能
bugrefactoringbugfixfix 🔧 修复和重构
buildcitesting 📦 构建系统和 CI/CD
breaking 💥 破坏性变更
documentation 📝 文档
dependencies ⬆️ 依赖项更新

您可以在 release-drafter.yml 中更新它。

GitHub 为您创建了 bugenhancementdocumentation 标签。Dependabot 创建了 dependencies 标签。当您需要时,在 GitHub 仓库的“问题”选项卡上创建剩余的标签。

🛡 许可证

License

此项目根据 MIT 许可证的条款进行许可。有关更多详细信息,请参阅 LICENSE

附加信息

初始化新的仓库

初始化您的代码

  1. 在您的仓库内初始化 git
cd np-validator && git init
  1. 如果您尚未安装 Poetry,请运行
make poetry-download
  1. 初始化 poetry 并安装 pre-commit 钩子
make install
make pre-commit-install
  1. 运行代码风格检查
make codestyle
  1. 将初始代码上传到 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 <版本号>。您可以显式传递新版本,也可以使用 majorminorpatch 等规则。更多详情,请参考 语义版本 标准。
  • GitHub 提交一个版本。
  • 创建一个 GitHub 发布版
  • 然后...发布吧!poetry publish --build

🎯 接下来是什么

这取决于你 💪🏻。我只能推荐那些帮助过我的包和文章。

  • Typer 是创建 CLI 应用程序的好工具。
  • Rich 使在终端中添加美观的格式化变得简单。
  • Pydantic – 使用 Python 类型提示进行数据验证和设置管理。
  • Loguru 使日志记录(非常)简单。
  • tqdm – Python 和 CLI 的快速、可扩展的进度条。
  • IceCream 是一个用于美味、丝滑调试的小型库。
  • orjson – 极快的 JSON 解析库。
  • Returns 让您函数的输出变得有意义、类型化和安全!
  • Hydra 是一个用于优雅配置复杂应用的框架。
  • FastAPI 是一个类型驱动的异步 Web 框架。

文章

🚀 功能

开发特性

部署特性

开源社区功能

项目详情


下载文件

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

源代码分发

np-validator-0.10.0.tar.gz (25.8 kB 查看哈希值)

上传时间 源代码

构建分发

np_validator-0.10.0-py3-none-any.whl (21.1 kB 查看哈希值)

上传时间 Python 3

支持者:

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