*** django-compat-patcher 0.2 has been released. ***

DCP is a “magic” package which adds backwards/forwards compatibility patches to Django, so that your app ecosystem doesn’t get broken by trivial changes made to the core of the framework.

It injects compatibility shims like function/attribute aliases, restores data structures which were replaced by stdlib ones, extends the behaviour of callables (eg. referring to a view by object, by name, or by dotted path), and can even preserve deprecated module as “import aliases” (ex. keep importing from “django.contrib.comments” instead of the now external “django_comments”).

This allows to you upgrade your dependencies one at a time, to fork/patch them when you have a proper opportunity, and most importantly to not get stuck, when deadlines are tight and your dependencies suddenly have conflicting requirements. DCP somehow relaxes the deprecation policy of Django, so that it comes closer to semantic versioning.

Technically, DCP manages a set of “fixers”, small utilities which advertise the change that they make, the versions of Django that they support, and which on monkey-patch the Django framework on demand. By applying these fixers in a proper order (sometimes before, sometimes after django.setup()), DCP can workaround multiple breaking changes which target the same part of the code (eg. a tag library being added and then removed).

Beware, DCP is aimed at project maintainers. If you are developing a reusable Django application, you can’t expect all your users to integrate DCP as well. In this case, to support a wide range of Django versions, you should rather use a toolkit like Django-compat <https://github.com/arteria/django-compat>. You may think of DCP as a “runtime 2to3 for Django’, wherease Django-Compat is rather a “six module for Django”.

Feel free to contribute new fixers, for backwards or forwards compatibility, depending on the compatibility troubles you encounter on your projects

https://pypi.python.org/pypi/django-compat-patcher
https://github.com/pakal/django-compat-patcher
--
https://mail.python.org/mailman/listinfo/python-announce-list

       Support the Python Software Foundation:
       http://www.python.org/psf/donations/

Reply via email to