Skip to content

[mypyc] Fix default_factory for inherited dataclass - #21785

Merged
p-sawicki merged 1 commit into
python:masterfrom
DanielNoord:fix-default-factory-for-dict
Aug 6, 2026
Merged

[mypyc] Fix default_factory for inherited dataclass#21785
p-sawicki merged 1 commit into
python:masterfrom
DanielNoord:fix-default-factory-for-dict

Conversation

@DanielNoord

Copy link
Copy Markdown
Contributor

Closes mypyc/mypyc#1204, a mypyc issue.

The issue likely unblocks isort from being compiled with mypyc, which is why I took an interest it. Full disclosure is that I used AI to write this, it provided this test and code just from the linked issue but it looks sensible to me. I did not use additional prompting. Like I said, fix looks sensible: we now call dataclass_type for each entry in the MRO, instead of once.

I am aware the contributing guidelines say new contributors are not encourage to use LLMs but I hope the size of the PR and my track record as open source maintainer gives some flexibility here. I'm very aware that reviewing AI written PRs creates maintainer burden, but I'm committed to getting this over the finish line. To that end I:

Tested locally with pytest mypyc/test/test_run.py and that looked okay.
Also tested that without the changes the added test would fail on master.
Also tried to run CI on my local fork (DanielNoord#1), which succeeded.

Feel free to push changes to the branch or cherry pick this into another branch. I am not necessarily interested in getting credits for the fix/PR, I'd just like to continue with my attempt to get isort compiled and for that I need this in a mypy release :)

@p-sawicki p-sawicki changed the title Fix default_factory for inherited dataclass [mypyc] Fix default_factory for inherited dataclass Aug 6, 2026

@p-sawicki p-sawicki left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

looks good, thanks!

@p-sawicki
p-sawicki merged commit 20a49fa into python:master Aug 6, 2026
18 checks passed
p-sawicki pushed a commit that referenced this pull request Aug 10, 2026
Closes mypyc/mypyc#1210

This fixes another issue I ran into while trying to use `mypyc` for
`isort`.

I am aware the contributing guidelines say new contributors are not
encouraged to use LLMs but I hope this can get the same handling as
#21785. I have tried to ensure this
patch works as much as I can by:

Testing locally with `pytest mypyc/test/test_run.py `.
Tested that the test fails on `master` without the changes.
Also tried to run CI on my local fork
(DanielNoord#2), which succeeded.

As with the previous PR, feel free to push changes to the branch or
cherry pick this into another branch. I just want to unblock `isort` :)
@DanielNoord
DanielNoord deleted the fix-default-factory-for-dict branch August 11, 2026 21:14
hauntsaninja pushed a commit that referenced this pull request Aug 15, 2026
Closes mypyc/mypyc#1204, a `mypyc` issue.

The issue likely unblocks `isort` from being compiled with `mypyc`,
which is why I took an interest it. Full disclosure is that I used AI to
write this, it provided this test and code just from the linked issue
but it looks sensible to me. I did not use additional prompting. Like I
said, fix looks sensible: we now call `dataclass_type` for each entry in
the MRO, instead of once.

I am aware the contributing guidelines say new contributors are not
encourage to use LLMs but I hope the size of the PR and my track record
as open source maintainer gives some flexibility here. I'm very aware
that reviewing AI written PRs creates maintainer burden, but I'm
committed to getting this over the finish line. To that end I:

Tested locally with `pytest mypyc/test/test_run.py ` and that looked
okay.
Also tested that without the changes the added test would fail on
`master`.
Also tried to run CI on my local fork
(DanielNoord#1), which succeeded.

Feel free to push changes to the branch or cherry pick this into another
branch. I am not necessarily interested in getting credits for the
fix/PR, I'd just like to continue with my attempt to get `isort`
compiled and for that I need this in a `mypy` release :)
hauntsaninja pushed a commit that referenced this pull request Aug 15, 2026
Closes mypyc/mypyc#1210

This fixes another issue I ran into while trying to use `mypyc` for
`isort`.

I am aware the contributing guidelines say new contributors are not
encouraged to use LLMs but I hope this can get the same handling as
#21785. I have tried to ensure this
patch works as much as I can by:

Testing locally with `pytest mypyc/test/test_run.py `.
Tested that the test fails on `master` without the changes.
Also tried to run CI on my local fork
(DanielNoord#2), which succeeded.

As with the previous PR, feel free to push changes to the branch or
cherry pick this into another branch. I just want to unblock `isort` :)
hauntsaninja pushed a commit that referenced this pull request Aug 15, 2026
Closes mypyc/mypyc#1204, a `mypyc` issue.

The issue likely unblocks `isort` from being compiled with `mypyc`,
which is why I took an interest it. Full disclosure is that I used AI to
write this, it provided this test and code just from the linked issue
but it looks sensible to me. I did not use additional prompting. Like I
said, fix looks sensible: we now call `dataclass_type` for each entry in
the MRO, instead of once.

I am aware the contributing guidelines say new contributors are not
encourage to use LLMs but I hope the size of the PR and my track record
as open source maintainer gives some flexibility here. I'm very aware
that reviewing AI written PRs creates maintainer burden, but I'm
committed to getting this over the finish line. To that end I:

Tested locally with `pytest mypyc/test/test_run.py ` and that looked
okay.
Also tested that without the changes the added test would fail on
`master`.
Also tried to run CI on my local fork
(DanielNoord#1), which succeeded.

Feel free to push changes to the branch or cherry pick this into another
branch. I am not necessarily interested in getting credits for the
fix/PR, I'd just like to continue with my attempt to get `isort`
compiled and for that I need this in a `mypy` release :)
hauntsaninja pushed a commit that referenced this pull request Aug 15, 2026
Closes mypyc/mypyc#1210

This fixes another issue I ran into while trying to use `mypyc` for
`isort`.

I am aware the contributing guidelines say new contributors are not
encouraged to use LLMs but I hope this can get the same handling as
#21785. I have tried to ensure this
patch works as much as I can by:

Testing locally with `pytest mypyc/test/test_run.py `.
Tested that the test fails on `master` without the changes.
Also tried to run CI on my local fork
(DanielNoord#2), which succeeded.

As with the previous PR, feel free to push changes to the branch or
cherry pick this into another branch. I just want to unblock `isort` :)
MateoGreil pushed a commit to MateoGreil/python-comwatt-client that referenced this pull request Aug 15, 2026
This PR contains the following updates:

| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [mypy](https://github.com/python/mypy) ([changelog](https://mypy.readthedocs.io/en/latest/changelog.html)) | `==2.3.0` → `==2.3.1` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/mypy/2.3.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/mypy/2.3.0/2.3.1?slim=true) |

---

### Release Notes

<details>
<summary>python/mypy (mypy)</summary>

### [`v2.3.1`](https://github.com/python/mypy/blob/HEAD/CHANGELOG.md#Mypy-231)

[Compare Source](python/mypy@v2.3.0...v2.3.1)

- Fix mypyc crash on double yielding Iterators (Daniël van Noord, PR [21826](python/mypy#21826))
- Fix mypyc `default_factory` for inherited dataclass (Daniël van Noord, PR [21785](python/mypy#21785))
- Clear mypyc coroutine env on coroutine completion (Piotr Sawicki, PR [21734](python/mypy#21734))
- Fix crash when unpacking return value from overload (Shantanu, PR [21830](python/mypy#21830))

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4zMC4zIiwidXBkYXRlZEluVmVyIjoiNDQuMzAuMyIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->

Co-authored-by: Renovate Bot <renovate-bot@git.greil.fr>
Reviewed-on: https://git.greil.fr/mat/python-comwatt-client/pulls/54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

TypeError/SystemError for dataclasses that uses default_factory and is subclassed

2 participants