Project Icon

awesome-python-typing

Python类型注解全面资源指南

该项目汇集了Python类型注解相关的全面资源,包括静态和动态类型检查器、存根包、附加类型、实用工具和集成方案。涵盖了从mypy到pyre等主流类型检查器,以及用于注解添加、类型处理和测试的多种工具。此外还提供了相关PEP文档链接,为开发者提供了系统的Python类型注解参考资料。

超赞的Python类型注解 Awesome Gitter

收集了一系列很棒的Python类型、存根、插件以及与之相关的工具。

目录

PyPi上带类型注解项目的完整列表在这里。

静态类型检查器

  • basedmypy - 基于基线功能的静态类型检查。
  • basedpyright - Pyright的分支,改进了VSCode支持和其他各种修复。
  • mypy - 可选静态类型检查(PEP 484)。
  • pyanalyze - 可扩展的静态分析器和类型检查器。
  • pycharm - 专业开发者的IDE。
  • pylyzer - 用Rust编写的快速Python静态代码分析器和语言服务器。
  • pyre - 高性能类型检查器。
  • pyright - 快速类型检查器,适用于大型Python源代码库。它可以在"监视"模式下运行,并在文件修改时执行快速增量更新。
  • pytype - 无需类型注解即可检查和推断类型的工具。

动态类型检查器

  • beartype - 纯Python实现的超快O(1)运行时类型检查。
  • pydantic - 使用Python类型提示进行数据解析。支持数据类。
  • pytypes - 提供丰富的运行时类型检查工具集。
  • strongtyping - 检查函数是否以正确类型参数调用的装饰器。
  • typedpy - 类型安全、严格的Python。与标准Python配合良好。
  • typeguard - 另一个运行时类型检查器。
  • typical - 使用类型提示进行数据解析和自动类型转换。支持数据类、标准类、函数签名等。
  • trycast - 解析由类型化字典(TypedDicts)和其他标准Python类型提示定义形状的类JSON值。

存根包

附加类型

  • meiga - 简单、类型化和基于单子的Result类型。
  • option - 类似Rust的Option和Result类型。
  • optype - 独特的collections.abcoperators替代方案:灵活的单方法协议和具有可预测名称的类型化操作符。
  • phantom-types - 幻影类型。
  • returns - 使您的函数返回有意义、类型化和安全的结果。
  • safetywrap - 完全类型安全的、类似Rust的Result和Option类型。
  • typet - 长度受限的类型,动态对象验证。
  • useful-types - 有用协议和类型别名的集合。

向后移植和改进

  • future-typing - 标准集合中泛型类型提示和联合类型(如X | Y)的向后移植。
  • typing-extensions - 向后移植和实验性类型提示。
  • typing-utils - 向后移植3.8+运行时类型工具(例如:get_origin)并添加issubtype等功能。

工具

代码检查工具

  • flake8-annotations-complexity - flake8 的插件,用于验证注解复杂度。
  • flake8-annotations - flake8 的插件,用于检查函数定义中是否存在类型注解。
  • flake8-pyi - Flake8 的插件,为类型提示存根文件提供专门化。
  • flake8-type-checking - 插件,帮助你正确地保护任何仅用于类型注解的导入。
  • flake8-typing-imports - 插件,检查 typing 导入是否被正确保护。
  • flake8-typing-only-imports - flake8 插件,帮助识别哪些导入应放入类型检查块,以及在移动导入后如何调整类型注解。
  • flake8-type-ignore - flake8 插件,禁止在你的类型化 Python 代码中使用 type: ignore 注释。
  • wemake-python-styleguide - 有史以来最严格和最固执的 Python 代码检查工具。
  • Ruff - 极快的代码检查工具,支持许多其他代码检查工具(如 flake8)的规则。

测试

处理类型

  • com2ann - 将类型注释转换为类型注解的工具。
  • merge-pyi - pytype 工具链的一部分,将存根文件应用到源代码上。
  • mypy-baseline - 将 mypy 与现有代码库集成。一个 CLI 工具,过滤掉现有的类型错误,只报告新的错误。
  • mypy-protobuf - 从 protobuf 生成 mypy 存根的工具。
  • mypy-silent - 通过添加或删除代码注释来使 mypy 保持静默。
  • mypyc - 将带有 mypy 注解的、静态类型化的 Python 模块编译成 CPython C 扩展。
  • retype - 另一个将存根应用到代码的工具。
  • typeforce - CLI 工具,通过类型注解丰富你的 Python 环境,增强 mypy 的功能。
  • typesplainer - Python 类型解释器。
  • typing-inspect - typing_inspect 模块定义了用于运行时检查 typing 模块中定义的类型的实验性 API。
  • typing-json - 用于处理类型化对象和 JSON 的库。

为现有代码添加注解的辅助工具

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

Mypy插件

集成

文章

PEPs

  • PEP-3107 - 函数注解
  • PEP-482 - 类型提示文献概述
  • PEP-483 - 类型提示理论
  • PEP-484 - 类型提示
  • PEP-526 - 变量注解语法
  • PEP-544 - 协议:结构化子类型(静态鸭子类型)
  • PEP-557 - 数据类
  • PEP-560 - typing模块和泛型类型的核心支持
  • PEP-561 - 类型信息的分发和打包
  • PEP-563 - 注解的延迟评估
  • PEP-585 - 标准集合中的类型提示泛型
  • PEP-586 - 字面类型
  • PEP-589 - TypedDict:具有固定键集的字典的类型提示
  • PEP-591 - 向typing添加final限定符
  • PEP-593 - 灵活的函数和变量注解
  • PEP-604 - Union[]的补充语法
  • PEP-612 - 参数规范变量
  • PEP-613 - 显式类型别名

第三方文章

社区

相关

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号