Skip to content
flake8 plugin to validate annotations complexity
Python Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.gitignore add initial version Feb 7, 2019
requirements_dev.txt pin pydocstyle version Sep 1, 2019
setup.cfg add initial version Feb 7, 2019 add initial version Feb 7, 2019


Build Status Maintainability Test Coverage

An extension for flake8 to report on too complex type annotations.

Complex type annotations often means bad annotations usage, wrong code decomposition or improper data structure choice. They are also hard to read and make code look java-like.

Annotation complexity is maximum annotation nesting level. So List[int] complexity is 2 and Tuple[List[Optional[str]], int] is 4.

Default max annotation complexity is 3 and can be configured via --max-annotations-complexity option.


pip install flake8-annotations-complexity


Sample file:


def foo() -> List[int]:
    return [1]


$ flake8 --max-annotations-complexity=1 TAE002 too complex annotation (2 > 1)

Tested on Python 3.5.0 and flake8 3.7.4.


We would love you to contribute to our project. It's simple:

  1. Create an issue with bug you found or proposal you have. Wait for approve from maintainer.
  2. Create a pull request. Make sure all checks are green.
  3. Fix review comments if any.
  4. Be awesome.

Here are useful tips:

  • You can run all checks and tests with make check. Please do it before TravisCI does.
  • We use BestDoctor python styleguide. Sorry, styleguide is available only in Russian for now.
  • We respect Django CoC. Make soft, not bullshit.
You can’t perform that action at this time.