Verifies python 3.7+ files use from __future__ import annotations
Project description
flake8-future-annotations
Verifies python 3.7+ files use from __future__ import annotations
if a type is used in the module that can be rewritten using PEP 563.
Pairs well with pyupgrade with the --py37-plus
flag or higher, since pyupgrade only replaces type annotations with the PEP 563 rules if from __future__ import annotations
is present.
flake8 codes
Code | Description |
---|---|
FA100 | Missing import if a type used in the module can be rewritten using PEP563 |
FA101 | Missing import when no rewrite using PEP563 is available (see config) |
FA102 | Missing import when code uses simplified types (list, dict, set, etc) |
Example
import typing as t
from typing import List
def function(a_dict: t.Dict[str, t.Optional[int]]) -> None:
a_list: List[str] = []
a_list.append("hello")
As a result, this plugin will emit:
hello.py:1:1: FA100 Missing from __future__ import annotations but imports: List, t.Dict, t.Optional
After adding the future annotations import, running pyupgrade
allows the code to be automatically rewritten as:
from __future__ import annotations
def function(a_dict: dict[str, int | None]) -> None:
a_list: list[str] = []
a_list.append("hello")
Configuration
If the --force-future-annotations
option is set, missing from __future__ import annotations
will be reported regardless of a rewrite available according to PEP 563; in this case, code FA101 is used instead of FA100.
If the --check-future-annotations
option is set, missing from __future__ import annotations
will be reported because the following code will error on Python versions older than 3.10 (this check does not output anything for versions 3.10+):
def function(a_dict: dict[str, int | None]) -> None:
a_list: list[str] = []
a_list.append("hello")
hello.py:1:1: FA102 Missing from __future__ import annotations but uses simplified type annotations: dict, list, union
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for flake8-future-annotations-1.1.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | df416bd2b9e1eda7ea639a5fd2a083dabb942ffe49d197f836df380d0dcf6608 |
|
MD5 | ed3c8f57ec74601c090dff6e2d9c40ab |
|
BLAKE2b-256 | ceebeee3a350b4c1cae50f9040e78b80b39a3a0d7a5165c5837b68bff00513b3 |
Hashes for flake8_future_annotations-1.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 555f16f51ae24ab4d0683b1ce8d0f59d36259c3a7e776bd5642f58c78ce7d3ab |
|
MD5 | 38abc98630f34d96e5e79d20034fc360 |
|
BLAKE2b-256 | 45e4e3e6f788d9d5b5ff9a5fe2ceb6aaff9dea248aaa24c0217866c65fa5d0bf |