| [case testReportBasic] | |
| # flags: --xml-report out | |
| def f(): pass | |
| def g() -> None: pass | |
| [outfile out/index.xml] | |
| <?xml-stylesheet type="text/xsl" href="mypy-html.xslt"?><mypy-report-index name="index"><file module="__main__" name="main" total="4" any="1" empty="2" imprecise="0" precise="1" unanalyzed="0"/></mypy-report-index> | |
| [case testLinePrecisionBasic] | |
| # flags: --lineprecision-report out | |
| def f(): pass | |
| def g() -> None: | |
| a = 1 | |
| [outfile out/lineprecision.txt] | |
| Name Lines Precise Imprecise Any Empty Unanalyzed | |
| ------------------------------------------------------------- | |
| __main__ 5 2 0 1 2 0 | |
| [case testLinePrecisionImpreciseType] | |
| # flags: --lineprecision-report out | |
| def f(x: list) -> None: pass | |
| [builtins fixtures/list.pyi] | |
| [outfile out/lineprecision.txt] | |
| Name Lines Precise Imprecise Any Empty Unanalyzed | |
| ------------------------------------------------------------- | |
| __main__ 2 0 1 0 1 0 | |
| [case testLinePrecisionUnanalyzed] | |
| # flags: --lineprecision-report out | |
| import sys | |
| MYPY = False | |
| if not MYPY: | |
| a = 1 | |
| def f(x: int) -> None: | |
| if isinstance(x, str): | |
| b = 1 | |
| c = 1 | |
| [builtins fixtures/isinstance.pyi] | |
| [outfile out/lineprecision.txt] | |
| Name Lines Precise Imprecise Any Empty Unanalyzed | |
| ------------------------------------------------------------- | |
| __main__ 10 5 0 0 2 3 | |
| [case testLinePrecisionEmptyLines] | |
| # flags: --lineprecision-report out | |
| def f() -> None: | |
| """docstring | |
| long | |
| """ | |
| x = 0 | |
| # comment | |
| y = 0 # comment (non-empty) | |
| [outfile out/lineprecision.txt] | |
| Name Lines Precise Imprecise Any Empty Unanalyzed | |
| ------------------------------------------------------------- | |
| __main__ 10 3 0 0 7 0 | |
| [case testLinePrecisionImportFrom] | |
| # flags: --lineprecision-report out --ignore-missing-imports | |
| from m import f | |
| from m import g | |
| from bad import foo | |
| from bad import ( # treated as a single line | |
| foo2, | |
| foo3, | |
| ) | |
| [file m.py] | |
| def f(): pass | |
| def g() -> None: pass | |
| [outfile out/lineprecision.txt] | |
| Name Lines Precise Imprecise Any Empty Unanalyzed | |
| ------------------------------------------------------------- | |
| __main__ 8 2 0 2 4 0 | |
| m 2 1 0 1 0 0 | |
| [case testLinePrecisionImport] | |
| # flags: --lineprecision-report out --ignore-missing-imports | |
| import m | |
| import bad | |
| import m, bad | |
| [file m.py] | |
| [outfile out/lineprecision.txt] | |
| Name Lines Precise Imprecise Any Empty Unanalyzed | |
| ------------------------------------------------------------- | |
| __main__ 4 1 0 2 1 0 | |
| m 0 0 0 0 0 0 | |
| [case testLinePrecisionStarImport] | |
| # flags: --lineprecision-report out --ignore-missing-imports | |
| from m import * | |
| from bad import * | |
| [file m.py] | |
| def f(): pass | |
| def g() -> None: pass | |
| [outfile out/lineprecision.txt] | |
| Name Lines Precise Imprecise Any Empty Unanalyzed | |
| ------------------------------------------------------------- | |
| __main__ 3 1 0 1 1 0 | |
| m 2 1 0 1 0 0 | |
| [case testLinePrecisionRelativeImport] | |
| # flags: --lineprecision-report out --ignore-missing-imports | |
| import a | |
| [file a/__init__.py] | |
| from .m import f | |
| from .bad import g | |
| [file a/m.py] | |
| def f(): pass | |
| [outfile out/lineprecision.txt] | |
| Name Lines Precise Imprecise Any Empty Unanalyzed | |
| ------------------------------------------------------------- | |
| __main__ 2 1 0 0 1 0 | |
| a 2 1 0 1 0 0 | |
| a.m 1 0 0 1 0 0 | |
| [case testLinePrecisionPassStatement] | |
| # flags: --lineprecision-report out | |
| def f() -> None: | |
| pass | |
| def g(): | |
| pass | |
| class C: | |
| pass | |
| [outfile out/lineprecision.txt] | |
| Name Lines Precise Imprecise Any Empty Unanalyzed | |
| ------------------------------------------------------------- | |
| __main__ 7 4 0 2 1 0 | |
| [case testLinePrecisionBreakAndContinueStatement] | |
| # flags: --lineprecision-report out | |
| import a | |
| import b | |
| [file a.py] | |
| def f() -> int: | |
| while f(): | |
| break | |
| return f() | |
| def g(): | |
| while g(): | |
| break | |
| [file b.py] | |
| def f() -> int: | |
| while f(): | |
| continue | |
| return f() | |
| def g(): | |
| while g(): | |
| continue | |
| [outfile out/lineprecision.txt] | |
| Name Lines Precise Imprecise Any Empty Unanalyzed | |
| ------------------------------------------------------------- | |
| __main__ 3 2 0 0 1 0 | |
| a 7 4 0 3 0 0 | |
| b 7 4 0 3 0 0 | |
| [case testLinePrecisionLiterals] | |
| # flags: --lineprecision-report out | |
| import str_lit | |
| import bytes_lit | |
| import int_lit | |
| import float_lit | |
| import true_lit | |
| import false_lit | |
| import none_lit | |
| import complex_lit | |
| import dots_lit | |
| [file str_lit.py] | |
| def f() -> object: | |
| return '' | |
| def g(): | |
| return '' | |
| [file bytes_lit.py] | |
| def f() -> object: | |
| return b'' | |
| def g(): | |
| return b'' | |
| [file int_lit.py] | |
| def f() -> object: | |
| return 1 | |
| def g(): | |
| return 1 | |
| [file float_lit.py] | |
| def f() -> object: | |
| return 1.1 | |
| def g(): | |
| return 1.1 | |
| [file true_lit.py] | |
| def f() -> object: | |
| return True | |
| def g(): | |
| return True | |
| [file false_lit.py] | |
| def f() -> object: | |
| return False | |
| def g(): | |
| return False | |
| [file none_lit.py] | |
| def f() -> object: | |
| return None | |
| def g(): | |
| return None | |
| [file complex_lit.py] | |
| def f() -> object: | |
| return None | |
| def g(): | |
| return None | |
| [file dots_lit.py] | |
| def f() -> object: | |
| return ... | |
| def g(): | |
| return ... | |
| [outfile out/lineprecision.txt] | |
| Name Lines Precise Imprecise Any Empty Unanalyzed | |
| ---------------------------------------------------------------- | |
| __main__ 10 9 0 0 1 0 | |
| bytes_lit 4 2 0 2 0 0 | |
| complex_lit 4 2 0 2 0 0 | |
| dots_lit 4 2 0 2 0 0 | |
| false_lit 4 2 0 2 0 0 | |
| float_lit 4 2 0 2 0 0 | |
| int_lit 4 2 0 2 0 0 | |
| none_lit 4 2 0 2 0 0 | |
| str_lit 4 2 0 2 0 0 | |
| true_lit 4 2 0 2 0 0 | |
| [case testLinePrecisionIfStatement] | |
| # flags: --lineprecision-report out | |
| if int(): | |
| x = 1 | |
| else: # This is treated as empty | |
| x = 2 | |
| [outfile out/lineprecision.txt] | |
| Name Lines Precise Imprecise Any Empty Unanalyzed | |
| ------------------------------------------------------------- | |
| __main__ 5 3 0 0 2 0 | |
| [case testLinePrecisionCallAnyArg] | |
| # flags: --lineprecision-report out | |
| from m import f | |
| def g() -> None: | |
| f(1) # Precise | |
| f(1, 2) # Any | |
| [file m.py] | |
| from typing import Any | |
| def f(x: int, y: Any = 0) -> None: | |
| pass | |
| [outfile out/lineprecision.txt] | |
| Name Lines Precise Imprecise Any Empty Unanalyzed | |
| ------------------------------------------------------------- | |
| __main__ 5 3 0 1 1 0 | |
| m 3 2 0 1 0 0 | |
| [case testLinePrecisionCallImpreciseArg] | |
| # flags: --lineprecision-report out | |
| from m import f | |
| def g() -> None: | |
| f(1) # Precise | |
| f(1, [2]) # Imprecise | |
| [file m.py] | |
| from typing import List, Any | |
| def f(x: int, y: List[Any] = []) -> None: | |
| pass | |
| [builtins fixtures/list.pyi] | |
| [outfile out/lineprecision.txt] | |
| Name Lines Precise Imprecise Any Empty Unanalyzed | |
| ------------------------------------------------------------- | |
| __main__ 5 3 1 0 1 0 | |
| m 3 2 1 0 0 0 | |
| [case testLinePrecisionCallAnyArgWithKeywords] | |
| # flags: --lineprecision-report out | |
| from m import f | |
| def g() -> None: | |
| f(x=1) # Precise | |
| f(x=1, z=1) # Precise | |
| f(z=1, x=1) # Precise | |
| f(y=1) # Any | |
| f(y=1, x=1) # Any | |
| [file m.py] | |
| from typing import Any | |
| def f(x: int = 0, y: Any = 0, z: int = 0) -> None: | |
| pass | |
| [outfile out/lineprecision.txt] | |
| Name Lines Precise Imprecise Any Empty Unanalyzed | |
| ------------------------------------------------------------- | |
| __main__ 8 5 0 2 1 0 | |
| m 3 2 0 1 0 0 | |
| [case testLinePrecisionCallAnyMethodArg] | |
| # flags: --lineprecision-report out | |
| from m import C | |
| def g(c: C) -> None: | |
| c.f(1) # Precise | |
| c.f(1, 2) # Any | |
| [file m.py] | |
| from typing import Any | |
| class C: | |
| def f(self, x: int, y: Any = 0) -> None: | |
| pass | |
| [outfile out/lineprecision.txt] | |
| Name Lines Precise Imprecise Any Empty Unanalyzed | |
| ------------------------------------------------------------- | |
| __main__ 5 3 0 1 1 0 | |
| m 4 3 0 1 0 0 | |
| [case testLinePrecisionCallAnyConstructorArg] | |
| # flags: --lineprecision-report out | |
| from m import C | |
| def g() -> None: | |
| C(1) # Precise | |
| C(1, 2) # Any | |
| [file m.py] | |
| from typing import Any | |
| class C: | |
| def __init__(self, x: int, y: Any = 0) -> None: | |
| pass | |
| [outfile out/lineprecision.txt] | |
| Name Lines Precise Imprecise Any Empty Unanalyzed | |
| ------------------------------------------------------------- | |
| __main__ 5 3 0 1 1 0 | |
| m 4 3 0 1 0 0 |