一个专门用于标记类型注释的导入的flake8插件
项目描述
flake8-typing-only-imports
插件仍在开发中
告诉您哪些导入应放在类型检查块中。
代码
代码 | 描述 |
---|---|
TYO100 | 将导入移动到类型检查块中 |
TYO101 | 将第三方导入移动到类型检查块中 |
TYO102 | 找到多个类型检查块 |
TYO200 | 添加 'from __future__ import annotations' 导入 |
TYO201 | 注释不需要是字符串字面量 |
TYO300 | 注释需要转换为字符串字面量 |
TYO301 | 注释不需要是字符串字面量 |
理由
TYO100
可以防止 导入循环 。 TYO101
应用相同的逻辑,用于 venv
或 stdlib
导入。
剩余的错误代码用于帮助管理前向引用,可以通过在需要的地方使用字符串字面量,或者启用注释的延迟评估来实现。因此,错误代码系列 TYO2XX
和 TYO3XX
应该被视为互斥的,因为它们代表了管理前向引用的两种不同方式。
请参阅这个出色的Stack Overflow回答,了解前向引用的快速解释。
安装
pip install flake8-typing-only-imports
建议使用
只有当您希望在小幅提高启动性能时,才启用 TYO101
。
TYO2XX
和 TYO3XX
是为帮助管理前向引用而保留的错误代码。同时启用这两个系列是没有意义的,它们应该被视为互斥的。
如果您要将此代码添加到项目中,我们建议如下
select = TYO100, TYO200, TYO200 # or TYO300 and TYO301
ignore = TYO101, TYO300, TYO301 # or TYO200 and TYO201
示例
糟糕的代码
models/a.py
from models.b import B
class A(Model):
def foo(self, b: B): ...
models/b.py
from models.a import A
class B(Model):
def bar(self, a: A): ...
这将首先导致以下错误
>> a.py: TYO101: Move third-party import 'models.b.B' into a type-checking block
>> b.py: TYO101: Move third-party import 'models.a.A' into a type-checking block
并且如果导入仅移动到类型检查块中,而没有适当的前向引用处理,则随之引发这些错误
>> a.py: TYO300: Annotation 'B' needs to be made into a string literal
>> b.py: TYO300: Annotation 'A' needs to be made into a string literal
良好的代码
models/a.py
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from models.b import B
class A(Model):
def foo(self, b: 'B'): ...
models/b.py
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from models.a import A
class B(Model):
def bar(self, a: 'A'): ...
作为预提交钩子
您可以将此flake8插件作为pre-commit钩子运行
- repo: https://gitlab.com/pycqa/flake8
rev: 3.7.8
hooks:
- id: flake8
additional_dependencies: [ flake8-typing-only-imports ]
支持项目
如果此项目对您有所帮助,请留下一个⭐️!
贡献总是受欢迎 👏
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定选择哪一个,请了解更多关于安装包的信息。
源分发
flake8-typing-only-imports-0.2.2.tar.gz (10.6 kB 查看散列)
构建分发
关闭
散列 for flake8_typing_only_imports-0.2.2-py3-none-any.whl
算法 | 散列摘要 | |
---|---|---|
SHA256 | ef6d080a81f0ae5b3c891dc36378ddae9a7ea84192f6a01644d490ba4593da49 |
|
MD5 | 7f718fc4b26248a659f0f11b25fab6ce |
|
BLAKE2b-256 | 2cf9105cffd4ac293ff82c339a21e4cfddc3c1182208656e73fccf20aa79576d |