**Deal** 是一个用于 [基于合同的编程][wiki] (DbC) 的 Python 库。
项目描述
一个用于 基于合同的编程 (DbC) 和检查值、异常和副作用(side-effects)的 Python 库。简而言之,deal 可以帮助你编写无错误的代码。通过向你的代码中添加一些装饰器(decorators),你可以免费获得测试、静态分析、形式化验证等更多功能。阅读 入门介绍 开始使用。
功能
- 经典 DbC:前置条件、后置条件、不变量。
- 跟踪异常和副作用。
- 基于属性的测试。
- 静态检查器。
- 与 pytest、flake8、sphinx 和 hypothesis 集成。
- 支持类型注解。
- 支持外部验证器。
- 支持导入模块的合同。
- 可以在生产环境中启用或禁用。
- 无色:仅注释您想要的内容。因此,易于集成到现有项目中。
- 彩色:为每个命令中的每段代码提供语法高亮。
- 内存泄漏检测:deal 确保纯函数不会在内存中留下意外的对象。
- DRY:测试发现,错误信息生成。
- 部分执行:代码检查器执行合约以静态检查可能的值。
- 形式化验证:证明您的代码对所有输入都有效(或者找出它何时无效)。
- 无依赖运行时:分析工具有一些依赖项,但在生产环境中不需要任何东西。
- 快速:每次代码更改都会进行基准测试和性能分析。
- 可靠:该库具有100%的测试覆盖率,部分经过验证,自2018年以来由多家公司运行于生产环境中。
30秒内完成 Deal
# the result is always non-negative
@deal.post(lambda result: result >= 0)
# the function has no side-effects
@deal.pure
def count(items: List[str], item: str) -> int:
return items.count(item)
# generate test function
test_count = deal.cases(count)
现在我们可以
- 运行
python3 -m deal lint
或flake8
以进行静态错误检查。 - 运行
python3 -m deal test
或pytest
以生成和运行测试。 - 只需在项目中使用该函数并检查运行时错误。
在 文档 中了解更多。
安装
python3 -m pip install --user 'deal[all]'
贡献
欢迎贡献!以下是一些您可以贡献的想法
- 为代码检查器添加新的检查。
- 改进文档。
- 添加更多测试。
- 提高性能。
- 发现了bug?修复它!
- 写了一篇关于 deal 的文章?太好了!让我们将其添加到
README.md
中。 - 没有时间编码?没关系!只需告诉您的朋友和订阅者有关此项目的信息。用户越多 -> 贡献者越多 -> 更酷的功能。
要本地运行测试,您需要 task。运行 task all
以运行所有代码格式化器、代码检查器和测试。
谢谢 :heart
项目详情
下载文件
下载您平台上的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
deal-4.24.4.tar.gz (724.4 kB 查看哈希值)
构建分发
deal-4.24.4-py3-none-any.whl (206.9 kB 查看哈希值)
关闭
deal-4.24.4.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0470af54234cebc760346f4be1a6fdaeefe0215fc58efd630cd4b2d193e4e82e |
|
MD5 | 9b8b81dfef33cc1e5a541fee1613bd34 |
|
BLAKE2b-256 | 2b7f50dc3e77b4bb4ea0164f8e09204b263de3ce7d2f206cd8ee8bc49a9a956b |
关闭
deal-4.24.4-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7fa4139296843fc16e5b8edd49b9a379d829113b1b4bdab0d8a7374cc826e031 |
|
MD5 | bd2033e6c92b647a628ae7e2c173d6c4 |
|
BLAKE2b-256 | 7bcf4c27b6c1afc6320c79c3db756e54f337ba0c36c243a16c2c1ea54d61e8d1 |