| [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 |