Hi all,

As of now (Django 1.7.x and master) the migration writer serializes classes 
like the CreateModel operation with kwargs and not args. Which is the right way 
to do. However, as soon as Django changes some of these operations' constructor 
signatures (as I plan to do in https://code.djangoproject.com/ticket/23822) 
newly created migration files become backwards incompatible for 3rd party apps.

As a concrete example: CreateModel will get a "managers" argument in 1.8 (if my 
pull request will be accepted). Hence all migration files created with Django 
1.8 will contain a managers argument as well. Third party apps that want to 
provide compatibility for 1.7 and 1.8 will have a problem as managers is an 
unknown kwarg to CreateModel in 1.7.

I therefore propose to add **kwargs to all operations and would like that to be 
backported to 1.7 although its neither a bug nor security fix.

I haven't looked into other classes that are serialized by the migration writer 
if they would profit from the same patch, but from my perspective model fields 
don't need that change as their signature didn't change over "a decade".

Another possible problem I want to address but that I haven't looked into yet, 
is the serialization of args in general. I think having **kwargs for every 
deconstructible class and always serialize with kwargs and not having any args 
in the migration classes will prevent problems in the future, too.

Markus

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers  (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-developers.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/E1XrnQg-0003J4-TT%40smtprelay01.ispgateway.de.
For more options, visit https://groups.google.com/d/optout.

Reply via email to