Home python Mypy misses the inconsistency of the types inside the

Mypy misses the inconsistency of the types inside the

Author

Date

Category

When checking mypy does not give any errors, believes that everything is in order.
If after calling FUNC2 Add line:

value_b = func1 ('11 ')

The error messages immediately go:

error: "func1" Does not return a value
Error: Argument 1 to "Func1" HAS Incompatible Type "STR"; EXPECTED "INT"

Why Mypy ignores errors inside the FUNC2 method ?


Answer 1, Authority 100%

Mypy does not check the code inside the functions that no annotations (apparently, it is done so that it is possible to add annotations gradually).

Exposure from the documentation:

no errors reported For Obviously Wrong Code

There Are Several Common Reasons Why Obviously Wrong Code Is Not Flagged AS An Error.

  • The Function Containing The Error Is Not Annotated. Functions That Do Not Have Any Annotations (Neiter for Any Argument Nor for the Return Type) Are Not Type-Checked, and Even The Most Blatant Type Errs (EG 2 + 'A' ) Pass Silently. The Solutions Is To Add Annotations. WHERE THAT ISNTATIONS CAN BE CHECKED USING - Check-Untyped-Defs .

That is, if the second function, specify the return - & gt returned value; None or when calling myPy Add the - check-untyped-defs flag, then the code inside the second function will start checked:

$ mypy --check-untyped-defs test.py
test.py:8: error: "Func1" Does Not Return A Value
test.py:8: Error: Argument 1 to "Func1" HAS Incompatible Type "STR"; EXPECTED "INT"
Found 2 Errors In 1 File (Checked 1 Source File)

For hardcore lovers, I can also recommend the -Strict , when it is turned on, it will give a whole 4 errors:

$ mypy --Strict test.py
test.py:6: Error: Function Is Missing A Return Type Annotation
Test.PY: 6: Note: Use "- & gt; none" If Function Does Not Return A Value
test.py:8: error: "Func1" Does Not Return A Value
test.py:8: Error: Argument 1 to "Func1" HAS Incompatible Type "STR"; EXPECTED "INT"
test.py:12: Error: Call to Untyped Function "Func2" in Typed Context
Found 4 Errors In 1 File (Checked 1 Source File)

Turning on - Strict equivalent to turning on the following flags (list is obtained by running Mypy -h ): - Warn-Unused-Configs , - Disallow-Any-Generics , - Disallow-Subclassing-Any , - DiSallow-Untyped-Calls , - -disallow-unhyped-defs , - disallow-incomplete-defs , - check-untyped-defs , - Disallow-Untyped- Decorators , - No-implicit-optional , - Warn-Redundant-Casts , - Warn-Unused-Ignores , - Warn-Return-Any , - No-implicit-reexport , - Strict-Equality .

Actually, the desired option - Check-Untyped-DEFS originally found the addition of all these flags and launching with the removal of flags one by one.

Programmers, Start Your Engines!

Why spend time searching for the correct question and then entering your answer when you can find it in a second? That's what CompuTicket is all about! Here you'll find thousands of questions and answers from hundreds of computer languages.

Recent questions