How to direct mypy to ignore type checking for multi-line imports

Question:

Currently I have a multi-line import statement like this:

from my_module import (
    My_custom_class_1, My_custom_class_2, My_custom_class_3, 
    My_custom_class_4, My_custom_class_5, My_custom_class_6, 
)

In this case, I do not want to use from my_module import *. I also would like to ignore this file for type checking.

For single line imports, one can simply do from my_module import * # type: ignore, however this does not work for the multi-line case. I have tried adding after the last line, last parenthesis, after each line, etc.

Lastly, I don’t want to add # type: ignore to the top of my_module.

So, is there a way to tell mypy to ignore multi-line imports like this? Or am I stuck with a 135 character line?

Asked By: SaltyShrub

||

Answers:

In general, when mypy encounters line with implicit continuation because of parenthesis, it attaches all errors of that statement to that line. So (playground)

from nothing import (  # type: ignore
    foo,
    bar, baz
)

passes type checking.

Same holds for multi-line def, for example:

class Base:
    def foo(self, x: int) -> None: pass

class Child(Base):
    def foo(  # type: ignore[override]
        self,
        this_is_a_very_long_and_incompatible_argument: str,
    ) -> None: ...
Answered By: SUTerliakov
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.