返回 编程语言
Awesome Python Typing
Awesome python typing
Awesome Python Typing
¶
很棒的 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¶
- asgiref - ASGI规范,提供 asgiref.typing 带有 ASGI 服务器类型注释的模块.
- boto3-stubs - 存根 boto3.
- types-aiobotocore - 存根 aiobotocore.
- botostubs - 为您提供任何 IDE 中任何 boto3 API 的代码帮助.
- celery-types - 类型存根 Celery 及其相关包 django-celery-results, ampq, kombu, billiard, vine 和 ephem.
- data-science-types - 存根 numpy, pandas, 和 matplotlib.
- django-stubs - 存根 Django.
- djangorestframework-stubs - 存根 DRF.
- grpc-stubs - 存根 grpc.
- lxml-stubs - 存根 lxml.
- ordered-set-stubs - 存根 OrderedSet.
- PyQt5-stubs - 存根 PyQt5.
- pyspark-stubs - 存根 PySpark.
- pythonista-stubs - 存根 Pythonista.
- sqlalchemy-stubs - 存根 SQLAlchemy.
- sqlalchemy2-stubs - 官方存根和 mypy 插件 SQLAlchemy.
- torchtyping - 增强类型注释 pytorch.
- typeshed - 库存根的集合,具有静态类型.
- wsgitypes - WSGI 应用程序实现者的打字. 这些不是存根文件,它们是您标记支持的接口,以帮助类型检查 WSGI 一致性.
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¶
- flake8-annotations-complexity - flake8 的插件,用于验证注释的复杂性.
- flake8-annotations - flake8 的插件,用于检查函数定义中是否存在类型注释.
- flake8-pyi - Flake8 插件,提供类型提示存根文件的专业化.
- flake8-type-checking - 插件可帮助您正确保护任何仅类型注释的导入.
- flake8-typing-imports - 检查输入导入是否受到适当保护的插件.
- flake8-typing-only-imports - flake8 插件,帮助识别将哪些导入放入类型检查块中,以及在导入移动后如何调整类型注释.
- flake8-type-ignore - flake8 插件禁止输入:忽略输入的 Python 代码中的注释.
- wemake-python-styleguide - 有史以来最严格、最固执己见的 Python linter.
Testing¶
- mypy-test - 测试 mypy 插件、存根、自定义类型.
- pytest-mypy-plugins - Pytest 插件,用于测试 mypy 类型、存根和插件.
- pytest-mypy-testing - Pytest 插件来测试 mypy 静态类型分析.
- pytest-mypy - 用于 Pytest 的 Mypy 静态类型检查器插件.
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¶
- kubernetes-typed - Kubernetes 插件 CRD 类型检查.
- loguru-mypy - 插件 loguru 支持.
- mypy-zope - 插件 zope.interface 支持.
- mypy/plugins - 插件已集成到 mypy 中.
- numpy - 插件 NumPy 支持.
- pynamodb-mypy - 插件 PynamoDB 支持.
Integrations¶
- emacs-flycheck-mypy - Emacs 的 Mypy 集成.
- linter-mypy - Atom 的 Mypy 集成.
- mypy-playground - mypy 的在线游乐场.
- mypy-pycharm-plugin - PyCharm 的 Mypy 集成.
- pylance - VSCode 的 PyRight 集成.
- vim-mypy - Vim 的 Mypy 集成.
- nbQA - 在 Jupyter Notebooks 上运行类型检查器(例如 Mypy).
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¶
- 1-minute guide to real constants in Python - 关于“Final”常量和继承的完整教程.
- Simple dependent types in Python - 关于“Literal”类型的完整教程.
- Testing mypy stubs, plugins, and types - 关于测试 mypy 类型的完整教程.
- Our journey to type checking 4 million lines of Python - Dropbox 是首批采用这种规模的 Python 静态类型检查的公司之一.
- PyTest MonkeyType Introduction - 使用 MonkeyType 对现有的 Python Django 代码库进行类型注释.
- The state of type hints in Python - 截至 2018 年 5 月.
- Type hints cheat sheet - MyPy 团队编写类型注释的备忘单.
- Typechecking Django and DRF - 关于 django 类型检查的完整教程.
- Type Check Your Django Application - 一篇基于最近两次有关向 Django 添加类型检查的演讲的文章.
- typing - “typing”模块的官方 Python 文档.
- Python-typing-koans - 一组用于学习 Python 中可选静态类型的示例.
- Python Type Checking (Guide) - 在本指南中,您将了解 Python 类型检查.
- Adding type hints to urllib3 - 测试还不够:案例研究向 urllib3 添加类型提示.
- Adam Johnsons Blog - Adam Johnson 关于打字练习的博客.
- ParamSpec Guide - “PEP612”中新发布的功能允许您使用函数及其签名执行许多高级输入操作.
- Static Typing Python Decorators - Python 中准确的静态类型装饰器是一件棘手的事情. 包装函数混淆静态确定包装函数的参数类型和返回值所需的类型信息.
Communities¶
- python/typing - 官方打字 gitter 聊天.
- TypedDjango - 官方组织 gitter 聊天.
- PythonRu#typing - 俄罗斯闲聊(邀请是 here)关于类型.
Related¶
- awesome-python - 精选的精彩 Python 框架、库、软件和资源列表.
- python-typecheckers - Python 类型检查器列表:静态和运行时.
