Skip to content

bpo-39679: Add tests for classmethod/staticmethod singledispatchmethods - #29034

Merged
ambv merged 2 commits into
python:mainfrom
AlexWaygood:singledispatchmethod-classmethod-bug
Oct 19, 2021
Merged

ambv merged 2 commits into
python:mainfrom
AlexWaygood:singledispatchmethod-classmethod-bug

Conversation

@AlexWaygood

@AlexWaygood AlexWaygood commented Oct 18, 2021 •

Copy link
Copy Markdown
Member

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 merged commit ad6d162 into python:main Oct 19, 2021
@miss-islington

Copy link
Copy Markdown
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
Copy Markdown

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

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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
Co-authored-by: Łukasz Langa <[email protected]>
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