Closed
Description
Bug report
Bug description:
Metaclass __call__
is expected to run everytime a class is instantiated but in Python 3.13 it only run once.
Minimal reproducer:
class _TypeMetaclass(type):
def __call__(cls, *args, **kwargs):
print("Metaclass.__call__", cls.__qualname__, args)
inst = type.__call__(cls, *args, **kwargs)
return inst
class Type(metaclass=_TypeMetaclass):
def __init__(self, obj):
self._obj = obj
class Function(Type):
pass
for i in range(100):
Function(i)
On python 3.12, the output is:
Metaclass.__call__ Function (0,)
Metaclass.__call__ Function (1,)
Metaclass.__call__ Function (2,)
...
Metaclass.__call__ Function (98,)
Metaclass.__call__ Function (99,)
On python 3.13 (docker image 3.13.0a3-bullseye
), the output is unexpectedly:
Metaclass.__call__ Function (0,)
CPython versions tested on:
3.12, 3.13
Operating systems tested on:
Linux
Linked PRs
Metadata
Metadata
Assignees
Labels
Projects
Status
Done