mirror of
https://github.com/python/cpython.git
synced 2025-10-10 08:53:14 +00:00
gh-90172: add test for functools.singledispatch on Union types with None type (#92174)
Signed-off-by: prwatson <prwatson@redhat.com> Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
This commit is contained in:
parent
ff3e9cdf33
commit
f03d3dd9af
1 changed files with 43 additions and 0 deletions
|
@ -2792,6 +2792,49 @@ class TestSingleDispatch(unittest.TestCase):
|
||||||
self.assertEqual(f(1), "types.UnionType")
|
self.assertEqual(f(1), "types.UnionType")
|
||||||
self.assertEqual(f(1.0), "types.UnionType")
|
self.assertEqual(f(1.0), "types.UnionType")
|
||||||
|
|
||||||
|
def test_union_conflict(self):
|
||||||
|
@functools.singledispatch
|
||||||
|
def f(arg):
|
||||||
|
return "default"
|
||||||
|
|
||||||
|
@f.register
|
||||||
|
def _(arg: typing.Union[str, bytes]):
|
||||||
|
return "typing.Union"
|
||||||
|
|
||||||
|
@f.register
|
||||||
|
def _(arg: int | str):
|
||||||
|
return "types.UnionType"
|
||||||
|
|
||||||
|
self.assertEqual(f([]), "default")
|
||||||
|
self.assertEqual(f(""), "types.UnionType") # last one wins
|
||||||
|
self.assertEqual(f(b""), "typing.Union")
|
||||||
|
self.assertEqual(f(1), "types.UnionType")
|
||||||
|
|
||||||
|
def test_union_None(self):
|
||||||
|
@functools.singledispatch
|
||||||
|
def typing_union(arg):
|
||||||
|
return "default"
|
||||||
|
|
||||||
|
@typing_union.register
|
||||||
|
def _(arg: typing.Union[str, None]):
|
||||||
|
return "typing.Union"
|
||||||
|
|
||||||
|
self.assertEqual(typing_union(1), "default")
|
||||||
|
self.assertEqual(typing_union(""), "typing.Union")
|
||||||
|
self.assertEqual(typing_union(None), "typing.Union")
|
||||||
|
|
||||||
|
@functools.singledispatch
|
||||||
|
def types_union(arg):
|
||||||
|
return "default"
|
||||||
|
|
||||||
|
@types_union.register
|
||||||
|
def _(arg: int | None):
|
||||||
|
return "types.UnionType"
|
||||||
|
|
||||||
|
self.assertEqual(types_union(""), "default")
|
||||||
|
self.assertEqual(types_union(1), "types.UnionType")
|
||||||
|
self.assertEqual(types_union(None), "types.UnionType")
|
||||||
|
|
||||||
def test_register_genericalias(self):
|
def test_register_genericalias(self):
|
||||||
@functools.singledispatch
|
@functools.singledispatch
|
||||||
def f(arg):
|
def f(arg):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue