Message402855
While I was working on a patch to port wrapt to limited API and stable ABI, I noticed a possible regression in __annotations__ PyGetSetDef. It looks like C heap type subclasses no longer inherit the __annotations__ descriptor from a C heap type parent class. A gdb session confirmed that 3.10 no longer calls the WraptObjectProxy_set_annotations setter of the parent class while 3.9 does.
I had to add
{ "__annotations__", (getter)WraptObjectProxy_get_annotations,
(setter)WraptObjectProxy_set_annotations, 0},
to PyGetSetDef of the child class in order to fix the behavior. Python 3.9 and older work as expected.
You can reproduce the behavior by disabling WRAPT_ANNOTATIONS_GETSET_WORKAROUND and run "tox -e py310-install-extensions". The PR is https://github.com/GrahamDumpleton/wrapt/pull/187. |
|
Date |
User |
Action |
Args |
2021-09-29 11:51:40 | christian.heimes | set | recipients:
+ christian.heimes, pablogsal |
2021-09-29 11:51:39 | christian.heimes | set | messageid: <1632916299.97.0.729247269758.issue45319@roundup.psfhosted.org> |
2021-09-29 11:51:39 | christian.heimes | link | issue45319 messages |
2021-09-29 11:51:39 | christian.heimes | create | |
|