The biggest issue is that now makemigrations is detecting changes since we
upgraded to django 2.0 (only with python 3.5) that aren't changes at all,
just reordered kwargs on the Q objects in out limit_choices_to on some
foreignkeys.
This also means we randomly can't commit/release because we have pre-
commit hooks and CI that runs ''makemigrations --check --dryrun''
Upgrading to python 3.6 would fix it (because of ordered kwargs) but as
Ubuntu 16.04 is still the latest LTS, python 3.5 is what we are stuck
with.
--
Ticket URL: <https://code.djangoproject.com/ticket/29125>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
Old description:
> Here is a branch with a randomly failing test that proves this:
> https://github.com/hvdklauw/django/blob/bug/q_destruct/tests/queries/test_q.py#L63
>
> The biggest issue is that now makemigrations is detecting changes since
> we upgraded to django 2.0 (only with python 3.5) that aren't changes at
> all, just reordered kwargs on the Q objects in out limit_choices_to on
> some foreignkeys.
>
> This also means we randomly can't commit/release because we have pre-
> commit hooks and CI that runs ''makemigrations --check --dryrun''
>
> Upgrading to python 3.6 would fix it (because of ordered kwargs) but as
> Ubuntu 16.04 is still the latest LTS, python 3.5 is what we are stuck
> with.
New description:
Here is a branch with a randomly failing test that proves this:
https://github.com/hvdklauw/django/blob/bug/q_destruct/tests/queries/test_q.py#L63
The biggest issue is that now makemigrations is detecting changes since we
upgraded to django 2.0 (only with python 3.5) that aren't changes at all,
just reordered kwargs on the Q objects in out limit_choices_to on some
foreignkeys.
This also means we randomly can't commit/release because we have pre-
commit hooks and CI that runs ''makemigrations --check --dryrun''
Upgrading to python 3.6 would fix it (because of ordered kwargs) but as
Ubuntu 16.04 is still the latest LTS, python 3.5 is what we are stuck
with.
This is the commit that broke it:
https://github.com/django/django/commit/508b5debfb16843a8443ebac82c1fb91f15da687
--
--
Ticket URL: <https://code.djangoproject.com/ticket/29125#comment:1>
* stage: Unreviewed => Accepted
Comment:
Apart from preserving the `kwargs` nature of some children I'd argue that
`Q.deconstruct` should also use `django.utils.models.Q` as path instead of
`django.db.models.query_utils.Q` like we do with
`django.db.models.fields.*` and should avoid adding `_connector` if it's
`'AND'` and `_negated` if it's `False` to `kwargs` because these are the
default values.
--
Ticket URL: <https://code.djangoproject.com/ticket/29125#comment:2>
* keywords: has_test =>
* has_patch: 0 => 1
Comment:
[https://github.com/django/django/pull/9694 PR]
I don't understand why `{'_connector': 'AND'}` should be omitted but I
implemented it.
--
Ticket URL: <https://code.djangoproject.com/ticket/29125#comment:3>
Comment (by Tim Graham <timograham@…>):
In [changeset:"9ba3df82402e7e23b353da20aea6894935241ef9" 9ba3df8]:
{{{
#!CommitTicketReference repository=""
revision="9ba3df82402e7e23b353da20aea6894935241ef9"
Refs #29125 -- Made Q.deconstruct() omit 'query_utils' in the path and
_connector='AND' since it's a default value.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/29125#comment:5>
* status: new => closed
* resolution: => fixed
Comment:
In [changeset:"b95c49c954e3b75678bb258e9fb2ec30d0d960bb" b95c49c9]:
{{{
#!CommitTicketReference repository=""
revision="b95c49c954e3b75678bb258e9fb2ec30d0d960bb"
Fixed #29125 -- Made Q.deconstruct() deterministic with multiple keyword
arguments.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/29125#comment:4>
Comment (by Tim Graham <timograham@…>):
In [changeset:"aeb35548dc3a669aebec45f8f51a9cd3fbfc8801" aeb35548]:
{{{
#!CommitTicketReference repository=""
revision="aeb35548dc3a669aebec45f8f51a9cd3fbfc8801"
[2.0.x] Fixed #29125 -- Made Q.deconstruct() deterministic with multiple
keyword arguments.
Backport of b95c49c954e3b75678bb258e9fb2ec30d0d960bb from master
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/29125#comment:6>
Comment (by Tim Graham <timograham@…>):
In [changeset:"fd18345e10b9e5c9713c606509feaf18e57178e2" fd18345e]:
{{{
#!CommitTicketReference repository=""
revision="fd18345e10b9e5c9713c606509feaf18e57178e2"
[2.0.x] Refs #29125 -- Made Q.deconstruct() omit 'query_utils' in the path
and _connector='AND' since it's a default value.
Backport of 9ba3df82402e7e23b353da20aea6894935241ef9 from master
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/29125#comment:7>