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

第三方文章

社区

相关

编辑推荐精选

Trae

Trae

字节跳动发布的AI编程神器IDE

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

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多