Skip to content

Conversation

miss-islington
Copy link
Contributor

@miss-islington miss-islington commented Oct 19, 2021

In Python 3.8 and 3.9, stacking @functools.singledispatchmethod on top of
@classmethod or @staticmethod caused an exception to be raised if the
method was registered using type-annotations rather than
@method.register(int). This was not caught by unit tests, however, as the
tests only tested the @method.register(int) way of registering additional
implementations. The bug is no longer present in Python 3.10+, but
test_functools.py is still lacking regression tests for these cases. This
commit adds these test cases.
(cherry picked from commit ad6d162)

Co-authored-by: Alex Waygood Alex.Waygood@Gmail.com

https://bugs.python.org/issue39679

…ds (pythonGH-29034)

In Python 3.8 and 3.9, stacking `@functools.singledispatchmethod` on top of
`@classmethod` or `@staticmethod` caused an exception to be raised if the
method was registered using type-annotations rather than
`@method.register(int)`. This was not caught by unit tests, however, as the
tests only tested the `@method.register(int)` way of registering additional
implementations. The bug is no longer present in Python 3.10+, but
`test_functools.py` is still lacking regression tests for these cases. This
commit adds these test cases.
(cherry picked from commit ad6d162)

Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
@bedevere-bot bedevere-bot added the tests Tests in the Lib/test dir label Oct 19, 2021
@ambv ambv merged commit c15ba30 into python:3.10 Oct 19, 2021
@miss-islington miss-islington deleted the backport-ad6d162-3.10 branch October 19, 2021 22:07
AlexWaygood added a commit to AlexWaygood/cpython that referenced this pull request Oct 20, 2021
This commit fixes a bug in the 3.9 branch where stacking
`@functools.singledispatchmethod` on top of `@classmethod` or `@staticmethod`
caused an exception to be raised if the method was registered using
type-annotations rather than `@method.register(int)`. Tests for this scenario
were added to the 3.11 and 3.10 branches in python#29034 and python#29072; this commit
also backports those tests to the 3.9 branch.
ambv added a commit that referenced this pull request Oct 28, 2021
…od` bug (GH-29087)

This commit fixes a bug in the 3.9 branch where stacking
`@functools.singledispatchmethod` on top of `@classmethod` or `@staticmethod`
caused an exception to be raised if the method was registered using
type-annotations rather than `@method.register(int)`. Tests for this scenario
were added to the 3.11 and 3.10 branches in #29034 and #29072; this commit
also backports those tests to the 3.9 branch.

Co-authored-by: Yurii Karabas <1998uriyyo@gmail.com>
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
tests Tests in the Lib/test dir
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants