[issue41295] CPython 3.8.4 regression on __setattr__ in multiinheritance with metaclasses
New submission from kam193 : CPython 3.8.4 broke previously correct custom __setattr__ implementation, when metaclass inheritances from multiple classes, including not-meta. Following code: ``` class Meta(type): def __setattr__(cls, key, value): type.__setattr__(cls, key, value) class OtherClass: pass class DefaultMeta(OtherClass, Meta): pass obj = DefaultMeta('A', (object,), {}) obj.test = True print(obj.test) ``` Works in Python up to 3.8.3, but in 3.8.4 it raises: Traceback (most recent call last): File "repr.py", line 13, in obj.test = True File "repr.py", line 3, in __setattr__ type.__setattr__(cls, key, value) TypeError: can't apply this __setattr__ to DefaultMeta object This change affects e.g. https://github.com/pallets/flask-sqlalchemy/issues/852 -- messages: 373637 nosy: kam193 priority: normal severity: normal status: open title: CPython 3.8.4 regression on __setattr__ in multiinheritance with metaclasses type: behavior versions: Python 3.8 ___ Python tracker <https://bugs.python.org/issue41295> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue41295] CPython 3.8.4 regression on __setattr__ in multiinheritance with metaclasses
kam193 added the comment: @Stefan: Today I run unit tests for Flask-SQLAlchemy (v2.4.3) as well as for aioxmpp (another library reported this problem https://github.com/horazont/aioxmpp/issues/342). In both cases patch is successful: tests fail on Python 3.8.4 but pass on patched Python. As for me it looks done. Thanks for everyone involved! -- ___ Python tracker <https://bugs.python.org/issue41295> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue41295] CPython 3.8.4 regression on __setattr__ in multiinheritance with metaclasses
kam193 added the comment: @Jonas: I know, running those tests isn't so easy, I think a few libraries are incompatible with python 3.9/3.10 yet or I didn't find right prerequisites. But fortunately, everything is running on patched 3.8, so after back-porting I can run it -- ___ Python tracker <https://bugs.python.org/issue41295> ___ ___ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com