[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-05-12 Thread Eric V. Smith


Change by Eric V. Smith :


--
assignee:  -> eric.smith

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-05-06 Thread Eric V. Smith


Change by Eric V. Smith :


--
keywords: +3.8regression, 3.9regression -patch
resolution: fixed -> 
stage: resolved -> needs patch
status: closed -> open

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-05-06 Thread Eric V. Smith


Eric V. Smith  added the comment:

Hmm. I think maybe the intent was that if you're frozen, treat all the fields 
as frozen, including ones you inherit, regardless if the base classes are 
frozen or not.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-05-06 Thread Ulrich Petri


Ulrich Petri  added the comment:

@eric.smith Sure, here you go:


dataclass_empty.py:
```
from dataclasses import dataclass


@dataclass
class A:
pass


@dataclass(frozen=True)
class B(A):
x: int

print("42")
```

Running this on < 3.8.10:
```
$ ~/.pythonz/pythons/CPython-3.8.1/bin/python3.8 --version
Python 3.8.1

$ ~/.pythonz/pythons/CPython-3.8.1/bin/python3.8 dataclass_empty.py
42
```

And on 3.8.10:
```
$ /usr/local/opt/python@3.8/bin/python3 --version
Python 3.8.10

$ /usr/local/opt/python@3.8/bin/python3 dataclass_empty.py
Traceback (most recent call last):
  File "dataclass_empty.py", line 10, in 
class B(A):
  File 
"/usr/local/Cellar/python@3.8/3.8.10/Frameworks/Python.framework/Versions/3.8/lib/python3.8/dataclasses.py",
 line 1011, in wrap
return _process_class(cls, init, repr, eq, order, unsafe_hash, frozen)
  File 
"/usr/local/Cellar/python@3.8/3.8.10/Frameworks/Python.framework/Versions/3.8/lib/python3.8/dataclasses.py",
 line 896, in _process_class
raise TypeError('cannot inherit frozen dataclass from a '
TypeError: cannot inherit frozen dataclass from a non-frozen one
```

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-05-06 Thread Eric V. Smith


Eric V. Smith  added the comment:

Can you provide a small snippet of code showing the kind of thing that broke?

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-05-06 Thread Ulrich Petri


Ulrich Petri  added the comment:

Wether the original behaviour was intentional or not this change introduces 
backwards incompatibility (and in our case, breakage) between 3.8.10 and 
previous releases (I expect the same to be true for the equivalent 3.9 
releases).

--
nosy: +ulope

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-04-06 Thread Eric V. Smith


Eric V. Smith  added the comment:


New changeset 2df971afd5f29574be3bb44f2d8569cc240b800d by Miss Islington (bot) 
in branch '3.9':
Fix blurb for bpo-43176. (GH-25215) (GH-25217)
https://github.com/python/cpython/commit/2df971afd5f29574be3bb44f2d8569cc240b800d


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-04-06 Thread miss-islington


miss-islington  added the comment:


New changeset 76c4a9fb8ae370901b387a4edb609295bcc159e7 by Miss Islington (bot) 
in branch '3.8':
[3.8] Fix blurb for bpo-43176. (GH-25215) (GH-25218)
https://github.com/python/cpython/commit/76c4a9fb8ae370901b387a4edb609295bcc159e7


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-04-06 Thread Eric V. Smith


Eric V. Smith  added the comment:


New changeset 1744c96ebc98b240f2564f75191097704b37244f by Eric V. Smith in 
branch 'master':
Fix blurb for bpo-43176. (GH-25215)
https://github.com/python/cpython/commit/1744c96ebc98b240f2564f75191097704b37244f


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-04-06 Thread miss-islington


Change by miss-islington :


--
pull_requests: +23956
pull_request: https://github.com/python/cpython/pull/25218

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-04-06 Thread miss-islington


Change by miss-islington :


--
pull_requests: +23955
pull_request: https://github.com/python/cpython/pull/25217

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-04-06 Thread Eric V. Smith


Change by Eric V. Smith :


--
pull_requests: +23953
pull_request: https://github.com/python/cpython/pull/25215

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-04-06 Thread Eric V. Smith


Eric V. Smith  added the comment:


New changeset 8a34a0793bcb830350dac675524310bb285e5e4f by Miss Islington (bot) 
in branch '3.9':
bpo-43176: Fix processing of empty dataclasses (GH-24484) (GH-25205)
https://github.com/python/cpython/commit/8a34a0793bcb830350dac675524310bb285e5e4f


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-04-06 Thread Eric V. Smith


Eric V. Smith  added the comment:

Thanks!

--
resolution:  -> fixed
stage: patch review -> resolved
status: open -> closed
versions:  -Python 3.6, Python 3.7

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-04-05 Thread miss-islington


miss-islington  added the comment:


New changeset b132be8b43afa739b7eda271b82711d64a83da4f by Miss Islington (bot) 
in branch '3.8':
bpo-43176: Fix processing of empty dataclasses (GH-24484)
https://github.com/python/cpython/commit/b132be8b43afa739b7eda271b82711d64a83da4f


--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-04-05 Thread miss-islington


Change by miss-islington :


--
pull_requests: +23945
pull_request: https://github.com/python/cpython/pull/25206

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-04-05 Thread miss-islington


Change by miss-islington :


--
keywords: +patch
pull_requests: +23944
stage:  -> patch review
pull_request: https://github.com/python/cpython/pull/25205

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-04-05 Thread miss-islington


miss-islington  added the comment:


New changeset 376ffc6ac491da74920aed1b8e35bc371cb766ac by Iurii Kemaev in 
branch 'master':
bpo-43176: Fix processing of empty dataclasses (GH-24484)
https://github.com/python/cpython/commit/376ffc6ac491da74920aed1b8e35bc371cb766ac


--
nosy: +miss-islington

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-02-08 Thread Karthikeyan Singaravelan


Change by Karthikeyan Singaravelan :


--
nosy: +eric.smith

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue43176] Dataclasses derived from empty frozen bases skip immutability checks

2021-02-08 Thread Iurii Kemaev


New submission from Iurii Kemaev :

Dataclasses derived from empty frozen bases skip immutability checks.

Repro snippet:

```
import dataclasses

@dataclasses.dataclass(frozen=True)
class Base:
  pass

@dataclasses.dataclass
class Derived(Base):
  a: int

d = Derived(2)
# OK
```

Usecase: sometimes developers define an empty frozen base dataclass with 
detailed docs and require other dataclasses to inherit from it as a code 
contract to avoid accidental in-place modifications. 
This bug makes this strategy ineffective.

Affects all versions of Python that support dataclasses (including the backport 
for py3.6).

--
components: Library (Lib)
messages: 386695
nosy: hbq1
priority: normal
pull_requests: 23278
severity: normal
status: open
title: Dataclasses derived from empty frozen bases skip immutability checks
type: behavior
versions: Python 3.10, Python 3.6, Python 3.7, Python 3.8, Python 3.9

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com