Remove mypy error codes from the test_cases directory (#8083)

This commit is contained in:
Alex Waygood
2022-06-15 15:31:45 +01:00
committed by GitHub
parent 640053e8e3
commit 5fa31e6759
5 changed files with 23 additions and 26 deletions

View File

@@ -76,16 +76,12 @@ assert_type(pow(4.7, 9.2, None), Any)
assert_type((-95) ** 8.42, Any)
# All of the following cases should fail a type-checker.
#
# mypy/pyright will emit errors if any of them do not fail:
# - We use --warn-unused-ignores for mypy when checking this subdirectory;
# - For pyright, we have reportUnnecessaryTypeIgnoreComment=true at the top of this file
pow(1.9, 4, 6) # type: ignore[misc]
pow(4, 7, 4.32) # type: ignore[misc]
pow(6.2, 5.9, 73) # type: ignore[misc]
pow(complex(6), 6.2, 7) # type: ignore[misc]
pow(Fraction(), 5, 8) # type: ignore[call-overload]
Decimal("8.7") ** 3.14 # type: ignore[operator]
pow(1.9, 4, 6) # type: ignore
pow(4, 7, 4.32) # type: ignore
pow(6.2, 5.9, 73) # type: ignore
pow(complex(6), 6.2, 7) # type: ignore
pow(Fraction(), 5, 8) # type: ignore
Decimal("8.7") ** 3.14 # type: ignore
# TODO: This fails at runtime, but currently passes mypy and pyright:
pow(Decimal("8.5"), 3.21)

View File

@@ -40,12 +40,12 @@ sum([5.6, 3.2]) # mypy: `float`; pyright: `float | Literal[0]`
sum([2.5, 5.8], 5) # mypy: `float`; pyright: `float | int`
# These all fail at runtime
sum("abcde") # type: ignore[arg-type]
sum([["foo"], ["bar"]]) # type: ignore[list-item]
sum([("foo",), ("bar", "baz")]) # type: ignore[list-item]
sum([Foo(), Foo()]) # type: ignore[list-item]
sum([Bar(), Bar()], Bar()) # type: ignore[call-overload]
sum([Bar(), Bar()]) # type: ignore[list-item]
sum("abcde") # type: ignore
sum([["foo"], ["bar"]]) # type: ignore
sum([("foo",), ("bar", "baz")]) # type: ignore
sum([Foo(), Foo()]) # type: ignore
sum([Bar(), Bar()], Bar()) # type: ignore
sum([Bar(), Bar()]) # type: ignore
# TODO: these pass pyright with the current stubs, but mypy erroneously emits an error:
# sum([3, Fraction(7, 22), complex(8, 0), 9.83])

View File

@@ -7,7 +7,7 @@ assert_type(codecs.decode("x", "unicode-escape"), str)
assert_type(codecs.decode(b"x", "unicode-escape"), str)
assert_type(codecs.decode(b"x", "utf-8"), str)
codecs.decode("x", "utf-8") # type: ignore[call-overload]
codecs.decode("x", "utf-8") # type: ignore
assert_type(codecs.decode("ab", "hex"), bytes)
assert_type(codecs.decode(b"ab", "hex"), bytes)

View File

@@ -16,14 +16,14 @@ case.assertAlmostEqual(2.4, 2.41, places=8)
case.assertAlmostEqual(2.4, 2.41, delta=0.02)
case.assertAlmostEqual(2.4, 2.41, None, "foo", 0.02)
case.assertAlmostEqual(2.4, 2.41, places=9, delta=0.02) # type: ignore[call-overload]
case.assertAlmostEqual("foo", "bar") # type: ignore[call-overload]
case.assertAlmostEqual(datetime(1999, 1, 2), datetime(1999, 1, 2, microsecond=1)) # type: ignore[arg-type]
case.assertAlmostEqual(2.4, 2.41, places=9, delta=0.02) # type: ignore
case.assertAlmostEqual("foo", "bar") # type: ignore
case.assertAlmostEqual(datetime(1999, 1, 2), datetime(1999, 1, 2, microsecond=1)) # type: ignore
case.assertNotAlmostEqual(Fraction(49, 50), Fraction(48, 50))
case.assertNotAlmostEqual(datetime(1999, 1, 2), datetime(1999, 1, 2, microsecond=1), delta=timedelta(hours=1))
case.assertNotAlmostEqual(datetime(1999, 1, 2), datetime(1999, 1, 2, microsecond=1), None, "foo", timedelta(hours=1))
case.assertNotAlmostEqual(2.4, 2.41, places=9, delta=0.02) # type: ignore[call-overload]
case.assertNotAlmostEqual("foo", "bar") # type: ignore[call-overload]
case.assertNotAlmostEqual(datetime(1999, 1, 2), datetime(1999, 1, 2, microsecond=1)) # type: ignore[arg-type]
case.assertNotAlmostEqual(2.4, 2.41, places=9, delta=0.02) # type: ignore
case.assertNotAlmostEqual("foo", "bar") # type: ignore
case.assertNotAlmostEqual(datetime(1999, 1, 2), datetime(1999, 1, 2, microsecond=1)) # type: ignore

View File

@@ -229,6 +229,7 @@ def get_mypy_flags(
custom_typeshed: bool = False,
strict: bool = False,
test_suite_run: bool = False,
enforce_error_codes: bool = True,
) -> list[str]:
flags = [
"--python-version",
@@ -240,8 +241,6 @@ def get_mypy_flags(
"--warn-incomplete-stub",
"--show-error-codes",
"--no-error-summary",
"--enable-error-code",
"ignore-without-code",
"--strict-equality",
]
if temp_name is not None:
@@ -260,6 +259,8 @@ def get_mypy_flags(
flags.extend(["--exclude", "tests/pytype_test.py"])
else:
flags.append("--no-site-packages")
if enforce_error_codes:
flags.extend(["--enable-error-code", "ignore-without-code"])
return flags
@@ -406,7 +407,7 @@ def test_the_test_scripts(code: int, major: int, minor: int, args: argparse.Name
def test_the_test_cases(code: int, major: int, minor: int, args: argparse.Namespace) -> TestResults:
test_case_files = list(map(str, Path("test_cases").rglob("*.py")))
num_test_case_files = len(test_case_files)
flags = get_mypy_flags(args, major, minor, None, strict=True, custom_typeshed=True)
flags = get_mypy_flags(args, major, minor, None, strict=True, custom_typeshed=True, enforce_error_codes=False)
print(f"Running mypy on the test_cases directory ({num_test_case_files} files)...")
print("Running mypy " + " ".join(flags))
if args.dry_run: