awesome-python-typing

awesome-python-typing

Python类型注解全面资源指南

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

Python类型检查静态类型动态类型mypyGithub开源项目

超赞的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 - 显式类型别名

第三方文章

社区

相关

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

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

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多