Commit d673810b authored by Lysandros Nikolaou's avatar Lysandros Nikolaou Committed by Łukasz Langa

bpo-35252: Remove FIXME from test_functools (GH-10551)

parent 287b84de
...@@ -861,9 +861,11 @@ def singledispatch(func): ...@@ -861,9 +861,11 @@ def singledispatch(func):
# only import typing if annotation parsing is necessary # only import typing if annotation parsing is necessary
from typing import get_type_hints from typing import get_type_hints
argname, cls = next(iter(get_type_hints(func).items())) argname, cls = next(iter(get_type_hints(func).items()))
assert isinstance(cls, type), ( if not isinstance(cls, type):
f"Invalid annotation for {argname!r}. {cls!r} is not a class." raise TypeError(
) f"Invalid annotation for {argname!r}. "
f"{cls!r} is not a class."
)
registry[cls] = func registry[cls] = func
if cache_token is None and hasattr(cls, '__abstractmethods__'): if cache_token is None and hasattr(cls, '__abstractmethods__'):
cache_token = get_cache_token() cache_token = get_cache_token()
......
...@@ -2355,9 +2355,6 @@ class TestSingleDispatch(unittest.TestCase): ...@@ -2355,9 +2355,6 @@ class TestSingleDispatch(unittest.TestCase):
)) ))
self.assertTrue(str(exc.exception).endswith(msg_suffix)) self.assertTrue(str(exc.exception).endswith(msg_suffix))
# FIXME: The following will only work after PEP 560 is implemented.
return
with self.assertRaises(TypeError) as exc: with self.assertRaises(TypeError) as exc:
@i.register @i.register
def _(arg: typing.Iterable[str]): def _(arg: typing.Iterable[str]):
...@@ -2366,10 +2363,12 @@ class TestSingleDispatch(unittest.TestCase): ...@@ -2366,10 +2363,12 @@ class TestSingleDispatch(unittest.TestCase):
# types from `typing`. Instead, annotate with regular types # types from `typing`. Instead, annotate with regular types
# or ABCs. # or ABCs.
return "I annotated with a generic collection" return "I annotated with a generic collection"
self.assertTrue(str(exc.exception).startswith(msg_prefix + self.assertTrue(str(exc.exception).startswith(
"<function TestSingleDispatch.test_invalid_registrations.<locals>._" "Invalid annotation for 'arg'."
))
self.assertTrue(str(exc.exception).endswith(
'typing.Iterable[str] is not a class.'
)) ))
self.assertTrue(str(exc.exception).endswith(msg_suffix))
def test_invalid_positional_argument(self): def test_invalid_positional_argument(self):
@functools.singledispatch @functools.singledispatch
......
Throw a TypeError instead of an AssertionError when using an invalid type annotation with singledispatch.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment