Skip to content

Conversation

AlexWaygood
Copy link
Member

@AlexWaygood AlexWaygood commented Oct 18, 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.

https://bugs.python.org/issue39679

…ethods

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.
@ambv ambv added the needs backport to 3.10 only security fixes label Oct 19, 2021
@ambv ambv merged commit ad6d162 into python:main Oct 19, 2021
@miss-islington
Copy link
Contributor

Thanks @AlexWaygood for the PR, and @ambv for merging it 🌮🎉.. I'm working now to backport this PR to: 3.10.
🐍🍒⛏🤖

@bedevere-bot
Copy link

GH-29072 is a backport of this pull request to the 3.10 branch.

@bedevere-bot bedevere-bot removed the needs backport to 3.10 only security fixes label Oct 19, 2021
miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Oct 19, 2021
…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>
ambv pushed a commit that referenced this pull request Oct 19, 2021
…ds (GH-29034) (GH-29072)

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>
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.
@AlexWaygood AlexWaygood deleted the singledispatchmethod-classmethod-bug branch October 28, 2021 12:41
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