Skip to main content

A flake8 plugin that checks the use of type alternatives from the typing module over actual run time types, especially from the collections module.

Project description

flake8-typing-collections

A flake8 plugin that checks the use of type alternatives from the typing module over actual run time types, especially from the collections module.

Options

The plugin offers the following flags to select which errors to enable. All errors that are not explicitly enabled, are not reported.

  • --tyc_generic_alt: Enables TYC101, TYC102, TYC103, TYC106, TYC107, TYC108, TYC109, TYC110, TYC111, TYC112, TYC114, TYC115, TYC116, TYC117, TYC118, TYC119, TYC120, TYC121, TYC122, TYC123, TYC124, TYC125, TYC126, TYC127, TYC128, TYC129, TYC130, TYC131, and TYC132.
  • --tyc_alias_alt: Enables TYC104, TYC105, and TYC113.
  • --tyc_general_args: Enables TYC200, TYC201, and TYC202.

If none of these flags is given, the default selection is used instead, which is --tyc_generic_alt and --tyc_general_args.

Error Codes

TYC1xx class

The typing module defines several generic versions of built-in classes, such as typing.List[T] instead of list. Their usage is preferred.

# Good
def sum_list(x: List[SupportsFloat]) -> float:
    ...

# Bad
def sum_list(x: list) -> float:
    ...

TYC100

Use typing.Iterable instead of collections.abc.Iterable for type annotations.

TYC101

Use typing.Iterator instead of collections.abc.Iterator for type annotations.

TYC102

Use typing.Reversible instead of collections.abc.Reversible for type annotations.

TYC103

Use typing.Container instead of collections.abc.Container for type annotations.

TYC104

Use typing.Hashable instead of collections.abc.Hashable for type annotations.

TYC105

Use typing.Sized instead of collections.abc.Sized for type annotations.

TYC106

Use typing.Collection instead of collections.abc.Collection for type annotations.

TYC107

Use typing.AbstractSet instead of collections.abc.Set for type annotations.

TYC108

Use typing.MutableSet instead of collections.abc.MutableSet for type annotations.

TYC109

Use typing.Mapping instead of collections.abc.Mapping for type annotations.

TYC110

Use typing.MutableMapping instead of collections.abc.MutableMapping for type annotations.

TYC111

Use typing.Sequence instead of collections.abc.Sequence for type annotations.

TYC112

Use typing.MutableSequence instead of collections.abc.MutableSequence for type annotations.

TYC113

Use typing.ByteString instead of bytes for type annotations.

TYC114

Use typing.Deque instead of collections.Deque for type annotations.

TYC115

Use typing.List instead of list for type annotations.

TYC116

Use typing.Set instead of set for type annotations.

TYC117

Use typing.FrozenSet instead of frozenset for type annotations.

TYC118

Use typing.MappingView instead of collections.abc.MappingView for type annotations.

TYC119

Use typing.KeysView instead of collections.abc.KeysView for type annotations.

TYC120

Use typing.ItemsView instead of collections.abc.ItemsView for type annotations.

TYC121

Use typing.ValuesView instead of collections.abc.ValuesView for type annotations.

TYC122

Use typing.Awaitable instead of collections.abc.Awaitable for type annotations.

TYC123

Use typing.Coroutine instead of collections.abc.Coroutine for type annotations.

TYC124

Use typing.AsyncIterable instead of collections.abc.AsyncIterable for type annotations.

TYC125

Use typing.AsyncIterator instead of collections.abc.AsyncIterator for type annotations.

TYC126

Use typing.ContextManager instead of contextlib.AbstractContextManager for type annotations.

TYC127

Use typing.AsyncContextManager instead of contextlib.AbstractAsyncContextManager for type annotations.

TYC128

Use typing.Dict instead of dict for type annotations.

TYC129

Use typing.DefaultDict instead of collections.defaultdict for type annotations.

TYC130

Use typing.OrderedDict instead of collections.OrderedDict for type annotations.

TYC131

Use typing.Counter instead of collections.Counter for type annotations.

TYC132

Use typing.ChainMap instead of collections.ChainMap for type annotations.

TYC2xx class

The documentation of the typing module recommends to use more general types such as typing.Sequence over specialized types such as typing.List in function parameters.

# Good
def sum_list(x: Sequence[int]) -> int:
    ...

# Bad
def sum_list(x: List[int]) -> int:
    ...

TYC200

Use typing.Sequence or typing.MutableSequence instead of typing.List in function arguments.

TYC201

Use typing.AbstractSet or typing.MutableSet instead of typing.Set in function arguments.

TYC201

Use typing.Mapping or typing.MutableMapping instead of typing.Dict in function arguments.

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

flake8_typing_collections-2.1.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

flake8_typing_collections-2.1-py3-none-any.whl (8.9 kB view details)

Uploaded Python 3

File details

Details for the file flake8_typing_collections-2.1.tar.gz.

File metadata

File hashes

Hashes for flake8_typing_collections-2.1.tar.gz
Algorithm Hash digest
SHA256 5bebe595178aafd87a7a978afdda56f8192ea5afcac278ec16e2e96dffb642e8
MD5 35b99399bd2888cba8a609e156d62646
BLAKE2b-256 884ca836d1f3ac4c6116a7587af0cec914d1980c84950e7a3a6346cf8318296b

See more details on using hashes here.

File details

Details for the file flake8_typing_collections-2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for flake8_typing_collections-2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 92b64994193d314fe069188b64fabb53e189251f7a68de24bd1fc5dab05b9319
MD5 1c788857cbb13618738a349a434ef1e1
BLAKE2b-256 3ecc80d8bbcc5c5820d099895ae40720c54927c18d4dd45211d377aab9d86267

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page