Jump to >

Djblets 0.9.5 Release Notes

Release date: February 9, 2017


  • Simplified installation of dependencies for contributors to Djblets.

    If you’re working on the Djblets codebase, installing the package in development mode (running setup.py develop) will now install all of Python packages as Wheels instead of Eggs (simplifying installation on most systems), and will install the node.js dependencies needed for building static media.

    This should help contributors get going with development. It does not impact consumers of the Djblets packages in any way.

  • The complete list of package dependencies now lives in the djblets.dependencies module instead of setup.py.

    Package maintainers looking to update the list of dependencies in some way or wanting to stay up-to-date on the list of dependencies should consult the djblets/dependencies.py file. Note that only the Python dependencies listed in there are requirements for consuming the package. The node.js dependencies are only used to build the Djblets packages.


  • ForwardingCacheBackend now ignores errors when closing the old backend during a reset.

    This avoids crashes when the old caching backend configuration was bad in some way (such as the memcached host string being invalid).


  • Added a MySQL database backend that fixes problems with Django’s BinaryField.

    The new djblets.db.backends.mysql backend is a drop-in replacement for django.db.backends.mysql that sends the correct SQL when inserting binary content into the database using a BinaryField.

    Django’s backend, prior to 1.10.5, will cause warnings from MySQL, which will result in errors if settings.DEBUG is set to True. This backend backports Django’s fix to older versions of Django.


  • Added automatic installation of node.js packages needed for building static media for extensions.

    In order to simplify the building of extension packages that use static media, the extension packaging code now installs the LessCSS compiler and UglifyJS minifier automatically inside of a node_modules directory in the extension’s source tree. LessCSS is installed only if *.less files are used, and UglifyJS is installed only if *.js files are used.

    Consumers of Djblets can override the dependencies being installed by implementing their own BuildStaticFiles.install_pipeline_deps() method.

  • Added access to the current HTTP request object in JSExtension.get_model_data().

    This can be used to inject data into the page that’s specific to the user or HTTP request in some way. Note that extensions implementing this method must now accept **kwargs. Older methods that don’t will trigger warnings in the logs.

    Patch by Erik Johansson.



  • Added a smarter version of Django’s @cached_property decorator.

    This introduces a new cached_property() decorator, which is a version of Django’s decorator that retains the original method’s documentation and name, which Django’s does not. This allows for proper introspection and documentation generation for methods using this decorator.


  • Christian Hammond
  • Erik Johansson
  • Michael Stensby