[issue41295] CPython 3.8.4 regression on __setattr__ in multiinheritance with metaclasses

2020-07-14 Thread kam193


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

2020-07-18 Thread kam193


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

2020-07-19 Thread kam193


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