多码网
返回 编程语言
编程语言

Awesome python typing

很棒的 Python 类型、存根、插件和使用它们的工具的集合.

Awesome python typing

Awesome Python Typing Awesome Gitter

很棒的 Python 类型、存根、插件和使用它们的工具的集合.

Full list of typed projects on PyPi 在这儿.

Static type checkers

  • basedmypy - 具有基线功能的基于静态类型.
  • mypy - 可选的静态类型(PEP 484).
  • pyanalyze - 可扩展的静态分析器和类型检查器.
  • pycharm - 面向专业开发人员的 IDE.
  • pylyzer - 用于 Python 的快速静态代码分析器和语言服务器,用 Rust 编写.
  • pyre - 高性能类型检查器.
  • pyright - 适用于大型 Python 源库的快速类型检查器. 它可以在“监视”模式下运行,并在文件修改时执行快速增量更新.
  • pytype - 检查和推断类型的工具 - 无需类型注释.

Dynamic type checkers

  • beartype - 纯 Python 中难以忍受的快速“O(1)”运行时类型检查.
  • pydantic - 使用 Python 类型提示进行数据解析. 支持数据类.
  • pytypes - 提供丰富的运行时类型检查实用程序.
  • strongtyping - 装饰器检查是否使用正确类型的参数调用函数.
  • typedpy - 类型安全、严格的 Python. 与标准 Python 配合良好.
  • typeguard - 另一种运行时类型检查器.
  • typical - 使用类型提示的数据解析和自动类型强制. 支持数据类、标准类、函数签名等.
  • trycast - 解析类似 JSON 的值,其形状由类型化字典 (TypedDicts) 和其他标准 Python 类型提示定义.

Stub packages

Additional types

  • meiga - 简单、类型化和基于 monad 的结果类型.
  • option - Rust 类似选项和结果类型.
  • phantom-types - 幻影类型.
  • returns - 让你的函数返回一些有意义的、有类型的、安全的东西.
  • safetywrap - 完全类型安全、类似 Rust 的结果和选项类型.
  • typet - 长度限制类型、动态对象验证.

Backports and improvements

  • future-typing - 将标准集合和联合类型中的类型提示泛型向后移植为“X |” Y`.
  • typed-ast - Modified fork of CPython's ast module that parses # type: comments.
  • typing-extensions - 向后移植和实验类型提示.
  • typing-utils - 向后移植 3.8+ 运行时输入实用程序(例如:get_origin)并添加 issubtype 等.
  • typingplus - 向后移植支持、动态 is_instance 和抽象类型的强制转换.

Tools

Linters

Testing

Working with types

  • com2ann - 将类型注释翻译为类型注释的工具.
  • merge-pyi - pytype 工具链的一部分,将存根文件应用到源代码上.
  • mypy-baseline - 将 mypy 与现有代码库集成. 一种 CLI 工具,可过滤掉现有类型错误并仅报告新错误.
  • mypy-protobuf - 从 protobuf 生成 mypy 存根的工具.
  • mypy-silent - 通过添加或删除代码注释来沉默 mypy.
  • mypyc - 将 mypy 注释的静态类型 Python 模块编译为 CPython C 扩展.
  • pep585-upgrade - 预提交挂钩配置为自动将类型提示升级到 PEP 585 中实现的新本机类型.
  • retype - 将存根应用于代码的另一个工具.
  • typeforce - CLI 工具,通过类型注释丰富您的 Python 环境,为 mypy 提供支持.
  • typesplainer - Python 类型解释器.
  • typing-inspect -typing_inspect 模块定义了实验性 API,用于对“typing”模块中定义的类型进行运行时检查.
  • typing-json - 用于处理类型化对象和 JSON 的库.

Helper tools to add annotations to existing code

  • autotyping - 自动为函数添加简单的返回类型注释(bool、None、Optional).
  • infer-types - CLI 工具自动推断类型注释并将其添加到 Python 代码中.
  • jsonschema-gentypes - 根据 JSON 模式中的 TypedDict 生成 Python 类型.
  • monkeytype - 收集函数参数和返回值的运行时类型,并可以根据运行时收集的类型自动生成存根文件,甚至直接将草稿类型注释添加到您的代码中.
  • pyannotate - 根据运行时观察到的调用参数和返回类型将注释插入到源代码中.
  • PyTypes - 通过 Python 跟踪推断类型.
  • pyre infer - Pyre 具有将代码库迁移到类型格式的强大功能. 这 infer 命令行选项摄取文件或目录,对所使用的类型进行有根据的猜测,并将注释应用于文件.
  • pytest-annotate - 用于 pytest 的 Pyannotate 插件.
  • pytest-monkeytype - 用于 pytest 的 MonkeyType 插件.
  • pytype annotate-ast - 一个正在开发的工具,用于使用 Python 类型注释 AST 的节点.
  • type4py - 基于深度相似学习的类型推断.
  • typilus - 用于预测 Python 类型的深度学习算法. 也可作为 GitHub action
  • auto-optional - 当默认参数为“None”时,使类型参数可选.

Mypy plugins

Integrations

Articles

PEPs

  • PEP-3107 - 函数注释.
  • PEP-482 - 类型提示的文献概述.
  • PEP-483 - 类型提示理论.
  • PEP-484 - 类型提示.
  • PEP-526 - 变量注释的语法.
  • PEP-544 - 协议:结构子类型(静态鸭子类型).
  • PEP-557 - 数据类.
  • PEP-560 - Core support for typing module and generic types.
  • PEP-561 - 分发和包装类型信息.
  • PEP-563 - 推迟对注释的评估.
  • PEP-585 - 标准集合中的类型提示泛型.
  • PEP-586 - 文字类型.
  • PEP-589 - TypedDict:具有固定键集的字典的类型提示.
  • PEP-591 - 为打字添加最终限定符.
  • PEP-593 - 灵活的函数和变量注释.
  • PEP-604 - Union[] 的补充语法.
  • PEP-612 - 参数规范变量.
  • PEP-613 - 显式类型别名.

Third-party articles

Communities

相关项目