From 75c6017e6aa38adc0187b7cd44990905db32538f Mon Sep 17 00:00:00 2001 From: Johan Walles Date: Fri, 16 Feb 2018 10:01:11 +0100 Subject: [PATCH] Add a mypy config file `mypy` provides optional static type checking: https://pypi.python.org/pypi/mypy With this config file in place, here's what I get: ``` src/blam.py:62: error: Implicit generic "Any". Use 'typing.List' and specify generic parameters src/blam.py:66: error: "Type[List[Any]]" has no attribute "__getslice__" src/blam.py:88: error: Module has no attribute "div" src/blam.py:142: error: Slice index must be an integer or None src/blam.py:170: error: Access to generic instance variables via class is ambiguous src/blam.py:370: error: Incompatible types in assignment (expression has type "complex", variable has type "float") src/blam.py:1097: error: Need type annotation for variable src/blam.py:1102: error: Need type annotation for variable src/blam.py:1151: error: Need type annotation for variable src/blam.py:1210: error: Name 'f10Idx' is not defined src/blam.py:1224: error: Name 'f10dx' is not defined src/blam.py:1400: error: Need type annotation for variable src/blam.py:1422: error: Need type annotation for variable src/blam.py:1471: error: Need type annotation for variable ``` The most suspicious warnings are the ones about `f10Idx` and `f10dx` being accessed without first being set to anything, these should be fixed. Also, the slice index is currently a `float` and that code needs to be fixed. `__getslice__` and `div` are most likely leftovers from earlier Python versions and should be benign. Mixing `float` with `complex` could be fine. The ambiguous generics thing needs more research. The rest of the warnings are mypy complaining about that it can't deduce the types for the contents of various collections. Those can be added in a separate PR if this gets merged. --- .gitignore | 2 ++ mypy.ini | 13 +++++++++++++ 2 files changed, 15 insertions(+) create mode 100644 mypy.ini diff --git a/.gitignore b/.gitignore index c3ee062..1501eb7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ .DS_Store *.blend* +/env/ +/.mypy_cache/ diff --git a/mypy.ini b/mypy.ini new file mode 100644 index 0000000..63494ea --- /dev/null +++ b/mypy.ini @@ -0,0 +1,13 @@ +[mypy] +ignore_missing_imports = True + +check_untyped_defs = True + +disallow_any_explicit = True +disallow_any_generics = True +# disallow_subclassing_any = True +disallow_untyped_decorators = True + +warn_incomplete_stub = True +warn_redundant_casts = True +warn_unused_ignores = True