[New-bugs-announce] [issue45081] dataclasses that inherit from Protocol subclasses have wrong __init__
Julian Fortune
report at bugs.python.org
Wed Sep 1 17:06:11 EDT 2021
New submission from Julian Fortune <juliandfortune at gmail.com>:
I believe [`bpo-44806: Fix __init__ in subclasses of protocols`](https://github.com/python/cpython/pull/27545) has caused a regression when using a Dataclass.
In Python `3.9.7`, a `dataclass` that inherits from a subclass of `typing.Protocol` (i.e., a user-defined protocol), does not have the correct `__init__`.
### Demonstration
```python
from dataclasses import dataclass
from typing import Protocol
class P(Protocol):
pass
@dataclass
class B(P):
value: str
print(B("test"))
```
In `3.9.7`:
```shell
Traceback (most recent call last):
File "test.py", line 11, in <module>
print(B("test"))
TypeError: B() takes no arguments
```
In `3.9.6`:
```shell
B(value='test')
```
### Affected Projects
- [dbt](https://github.com/dbt-labs/dbt/issues/3843)
----------
components: Library (Lib)
messages: 400868
nosy: julianfortune
priority: normal
severity: normal
status: open
title: dataclasses that inherit from Protocol subclasses have wrong __init__
type: behavior
versions: Python 3.9
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue45081>
_______________________________________
More information about the New-bugs-announce
mailing list