[Django] #37018: Generated migrations should use tuples instead of lists

7 views
Skip to first unread message

Django

unread,
Apr 1, 2026, 7:30:40 AMApr 1
to django-...@googlegroups.com
#37018: Generated migrations should use tuples instead of lists
-------------------------------------+-------------------------------------
Reporter: Daniel Quinn | Type:
| Cleanup/optimization
Status: new | Component:
| Migrations
Version: 6.0 | Severity: Normal
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
When running `makemigrations`, the typical output contains a `Migration`
class with at least two attributes: `dependencies` and `operations`, both
of which are mutable lists rather than immutable tuples. This upsets my
linter ([https://docs.astral.sh/ruff/ ruff]) which I think rightly
[https://docs.astral.sh/ruff/rules/mutable-class-default/ complains] that
we've got a class here with mutable default values:

{{{
error[RUF012]: Mutable default value for class attribute
--> plugins/generic_to_clickhouse/migrations/0001_initial.py:13:20
|
11 | initial = True
12 |
13 | dependencies = []
| ^^
14 |
15 | operations = (
|
help: Consider initializing in `__init__` or annotating with
`typing.ClassVar`
}}}

Digging through the
[https://github.com/django/django/blob/main/django/db/migrations/writer.py#L311-L323
source], I see that this is just the result of a hard-coded template using
`[` instead of `(`, so I have to assume that a fix would be pretty
straightforward.

So unless there's a reason we want these values to be mutable, I'm happy
to do this work. I just don't want to do the work and have it rejected
for unforseen reasons.
--
Ticket URL: <https://code.djangoproject.com/ticket/37018>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

Django

unread,
Apr 1, 2026, 9:16:40 AMApr 1
to django-...@googlegroups.com
#37018: Generated migrations should use tuples instead of lists
-------------------------------------+-------------------------------------
Reporter: Daniel Quinn | Owner: (none)
Type: | Status: closed
Cleanup/optimization |
Component: Migrations | Version: 6.0
Severity: Normal | Resolution: wontfix
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Sarah Boyce):

* resolution: => wontfix
* status: new => closed

Comment:

Hi Daniel! Thank you for the ticket
Unfortunately I think this would be a breaking change. If folks expect
`dependencies` to be a list, then they can append/extend the list.
I believe we do this inside `MigrationAutodetector._optimize_migrations()`
for example and it is likely that other third party apps might be doing
similar things
This change would then need a deprecation path and I am not sure it is
worth the effort

If this is something you have considered and you have a plan for this,
feel free to reopen the ticket for another review
--
Ticket URL: <https://code.djangoproject.com/ticket/37018#comment:1>
Reply all
Reply to author
Forward
0 new messages