New error codes:
- Y058: Use
Iterator
rather thanGenerator
as the return value for simple__iter__
methods, andAsyncIterator
rather thanAsyncGenerator
as the return value for simple__aiter__
methods. - Y059:
Generic[]
should always be the last base class, if it is present in the bases of a class. - Y060, which flags redundant inheritance from
Generic[]
. - Y061: Do not use
None
inside aLiteral[]
slice. For example, useLiteral["foo"] | None
instead ofLiteral["foo", None]
.
Other changes:
- The undocumented
pyi.__version__
andpyi.PyiTreeChecker.version
attributes has been removed. Useflake8 --version
from the command line, orimportlib.metadata.version("flake8_pyi")
at runtime, to determine the version offlake8-pyi
installed at runtime. - Y038 now flags
from typing_extensions import AbstractSet
as well asfrom typing import AbstractSet
. - Y022 and Y037 now flag more imports from
typing_extensions
. - Y034 now attempts to avoid flagging methods inside classes that inherit from
builtins.type
,abc.ABCMeta
and/orenum.EnumMeta
. Classes that have one or more of these as bases are metaclasses, and PEP 673 forbids the use oftyping(_extensions).Self
for metaclasses. While reliably determining whether a class is a metaclass in all cases would be impossible for flake8-pyi, the new heuristics should reduce the number of false positives from this check. - Attempting to import
typing_extensions.Text
now causes Y039 to be emitted rather than Y023. - Y053 will no longer be emitted for the argument to
@typing_extensions.deprecated
.