Alex Waygood <alex.wayg...@gmail.com> added the comment:

Happily, this bug appears to have been resolved in Python 3.10 due to the fact 
that a `classmethod` wrapping a function `F` will now have an `__annotations__` 
dict equal to `F`.

In Python 3.9:

```
>>> x = lambda y: y
>>> x.__annotations__ = {'y': int}
>>> c = classmethod(x)
>>> c.__annotations__
Traceback (most recent call last):
  File "<pyshell#37>", line 1, in <module>
    c.__annotations__
AttributeError: 'classmethod' object has no attribute '__annotations__'
```

In Python 3.10:

```
x = lambda y: y
x.__annotations__ = {'y': int}
c = classmethod(x)
c.__annotations__
{'y': <class 'int'>}
```

This change appears to have resolved the bug in 
`functools.singledispatchmethod`. The bug remains in Python 3.9, however.

----------
nosy: +AlexWaygood
versions:  -Python 3.8

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue39679>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to