当前位置: 首页 > news >正文

Deal - DbC、检查Python 值、异常和副作用

Deal


文章目录

    • 一、关于 Deal
      • 特点
    • 二、安装
    • 三、30秒内使用 Deal
    • 四、其它
      • 贡献


一、关于 Deal

Deal 是用于 design by contract (DbC) 和 检查值、异常和副作用的Python库。简而言之,交易使您能够编写bug的代码。

通过在代码中添加一些装饰器,您可以获得免费测试、静态分析、形式验证等等。阅读介绍开始。

  • github : https://github.com/life4/deal
  • 官方文档:https://deal.readthedocs.io/


特点

  • 经典DbC:前置、后置、不变。
  • 跟踪异常和副作用。
  • 基于属性的测试。
  • 静态检查器。
  • 与pytest、flake8、sphinx和假设集成。
  • 类型注释支持。
  • 外部验证器支持。
  • 导入模块的合同。
  • 可以在生产中启用或禁用。
  • 无色:只注释你想要的。因此,很容易集成到现有项目中。
  • 多彩:每个命令中每段代码的语法高亮。
  • 内存泄漏检测:deal确保纯函数不会在内存中留下意外对象。
  • DRY:测试发现、错误消息生成。
  • 部分执行:linter执行合约以静态检查可能的值。
  • 形式验证:证明您的代码适用于所有输入(或找出何时不适用)。
  • 零依赖运行时:分析工具有一些依赖关系,但生产中不需要任何依赖关系。
  • 快速:每个代码更改都经过基准测试和分析。
  • 可靠:该库具有100%的测试覆盖率,部分验证,并自2018年以来由多家公司在生产中运行。

二、安装

python3 -m pip install --user 'deal[all]'

三、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 lintflake8以静态检查错误。
  • 运行python3 -m deal testpytest生成并运行测试。
  • 只需在项目中使用该函数并在运行时检查错误。

的文档。


四、其它

贡献

欢迎投稿!您可以贡献的一些想法:

  • 为linter添加新的检查。
  • 改善文档。
  • 添加更多测试。
  • 提高性能。
  • 找到bug?修好它!
  • 写了一篇关于交易的文章?太好了。让我们把它添加到README.md中。
  • 没有时间编码?别担心!只需告诉您的朋友和订阅者该项目。更多用户->更多贡献者->更多酷功能。

要在本地运行测试,您只需要任务。运行task all来运行所有代码格式化程序、linter和测试。

谢谢你❤️


2025-03-19(三)

相关文章:

  • 鸿蒙NEXT项目实战-百得知识库03
  • jpa报错 Validation failed for query for method public abstract
  • MySQL单表查询
  • 练习题:94
  • MutableList 和 ArrayList 区别
  • 格力地产更名“珠免集团“ 全面转型免税赛道
  • 【AI绘画教程】从MJ到SD,九周精通AI绘画,MJ基础至SD模型训练全方位教学
  • 高级java每日一道面试题-2025年3月06日-微服务篇[Eureka篇]-Eureka Server和Eureka Client关系?
  • OpenWrt中使用GPIO模拟I2C控制CAT9555芯片的示例代码
  • 显示模组ESD损伤探讨
  • 调用百度智能云API实现货币识别
  • 蓝桥杯第九天 2022 省赛 第 4 题 最少刷题数
  • QtCreator16创建WebAssembly工程在浏览器中显示图片
  • MSys2统一开发环境,快速搭建windows opencv环境
  • 【Embedded World 2025:边缘 AI、存储革新与 1X nm 工艺重塑嵌入式未来】
  • AI大模型:(一)1.大模型的发展与局限
  • 学习threejs,构建THREE.ParametricGeometry参数化函数生成几何体
  • 逆向中常见的加密算法识别
  • Flutter 打包 ipa出现错误问题 exportArchive
  • 小红书不绑定手机号会显示ip吗
  • 央行最新报告:积极落地5月推出的一揽子金融政策,促进经济供需平衡、物价合理回升
  • 上海“随申兑”服务平台有哪些功能?已归集800余个惠企政策
  • 圆桌丨中俄权威专家详解:两国携手维护战后国际秩序,捍卫国际公平正义
  • 默茨在第二轮投票中当选德国总理
  • 商务部:自5月7日起对原产于印度的进口氯氰菊酯征收反倾销税
  • 以色列计划“占领加沙”,特朗普下周中东行结束之际将是“机会窗口”