From cc7cc3c9ec73055703acc78c8d92eb0242e5cd20 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Thu, 9 Jun 2022 09:53:43 -0400 Subject: dont transfer __weakref__ to regenerated class Repaired a deprecation warning class decorator that was preventing key objects such as :class:`_engine.Connection` from having a proper ``__weakref__`` attribute, causing operations like Python standard library ``inspect.getmembers()`` to fail. Fixes: #8115 Change-Id: Ifd0bc2325fb9dc9e1431998c308b7fc081968373 --- lib/sqlalchemy/util/deprecations.py | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/sqlalchemy') diff --git a/lib/sqlalchemy/util/deprecations.py b/lib/sqlalchemy/util/deprecations.py index 2ef51608b..a7bba2cf8 100644 --- a/lib/sqlalchemy/util/deprecations.py +++ b/lib/sqlalchemy/util/deprecations.py @@ -378,6 +378,7 @@ def _decorate_cls_with_warning( clsdict = dict(cls.__dict__) clsdict["__doc__"] = doc clsdict.pop("__dict__", None) + clsdict.pop("__weakref__", None) cls = type(cls.__name__, cls.__bases__, clsdict) # type: ignore if constructor is not None: constructor_fn = clsdict[constructor] -- cgit v1.2.1