Change Log

All notable changes to this project are documented in this file.

5.0.1 2019-06-26

Fixed

  • Pass dependencies and other arguments to list decorator when decorating class

5.0.0 2019-05-06

Changed

  • BACKWARD INCOMPATIBLE: Bump Django requirement to version 2.2
  • BACKWARD INCOMPATIBLE: Bump Django REST framework requirement to version 3.9

Added

  • Support Python 3.7

4.2.1 2019-05-06

Fixed

  • Pin django-priority-batch to version 1.1 to fix compatibility issues

4.2.0 2019-04-15

Changed

  • Bump channels requirement to version 2.2

4.1.0 2019-03-28

Changed

  • Use django-filter instead of djangorestframework-filters
  • Bump django-filter requirement to version 2.0

Fixed

  • Wrap observable decorator with functools.wraps to preserve metadata

4.0.0 2019-03-19

Changed

  • BACKWARD INCOMPATIBLE: Protocol has changed, including the names of Channels workers.
  • BACKWARD INCOMPATIBLE: Observe changes in the queryset model only (by default). Other tables can be tracked by explicitly listing the dependencies in @observable decorator.
  • BACKWARD INCOMPATIBLE: Ensure observers exist when subscribing. Subscribe (and observer creation) was separated from the evaluation step. Subscribe includes subscriber and observer creation if needed, and executes in single query. Observer instances are not removed from database anymore. Observers without subscribers are skipped to optimize performance. Observers and subscribers can be deleted using clearobservers Django command.
  • BACKWARD INCOMPATIBLE: Overhaul Python source distribution (sdist)
  • Support PostgreSQL 10

Added

  • Observers with the same ID are throttled. The default throttle rate is 2 seconds.

3.1.0 2018-10-19

Added

  • Optionally batch observer notifications

3.0.9 2018-09-07

Fixed

  • Retry taking the observer lock before evaluation on IntegrityError due to concurrent observer creation

3.0.8 2018-07-10

Fixed

  • Do not mutate received update message in client consumer
  • Use a bounded cache with LRU eviction policy for executors

3.0.7 2018-06-19

Fixed

  • Do not generate notification messages when there are no updates

3.0.6 2018-06-15

Fixed

  • Fix IntegrityError on concurrent evaluations

3.0.5 2018-06-12

Fixed

  • Rewrite query interceptor to properly handle multiple threads

3.0.4 2018-06-08

Added

  • Add clearobservers management command which clears all observer state from the database.

Fixed

  • Fix viewsets without dependencies returning no results
  • Fix issues with handling observer subscribers

3.0.3 2018-06-08

Fixed

  • Defer ordering unique constraints when updating items
  • Dispatch observer evaluations to other workers instead of processing everything in the same worker
  • Fix issues with query interceptor in multiple threads
  • Cast primary keys in ORM signals to string to avoid JSON serialization failures

3.0.2 2018-06-04

Fixed

  • Ignore own ORM updates when processing observers

3.0.1 2018-05-16

Fixed

  • Fix issues with handling observer subscribers

3.0.0 2018-05-15

Changed

  • BACKWARD INCOMPATIBLE: Port to Django Channels 2.1 and add support for running multiple workers.

2.0.1 2018-02-05

Fixed

  • Do not override primary key when an endpoint returns a single item and it already has a primary key set
  • Fix Channels dependencies

2.0.0 2017-11-24

Changed

  • BACKWARD INCOMPATIBLE: Use Django Channels for WebSockets

1.0.0 2017-10-26

Changed

  • BACKWARD INCOMPATIBLE: Bump Django requirement to version 1.11.x

Fixed

  • Dependency detection when subqueries are used
  • Reactivity when M2M relationships are modified

0.13.0 2017-08-24

Added

  • Python 3 compatibility
  • Improve logging for use with Sentry

Fixed

  • Force evaluation when full results requested

0.12.0 2017-06-22

Added

  • Logging of slow observers and automatic stopping of very slow observers (both are configurable)
  • Status endpoint to track server status
  • Configurable update batch delay
  • Polling observers

Fixed

  • META passthrough in requests
  • Correct passthrough of request.method
  • Improved observer concurrency

Changed

  • More easily support different concurrency backends

0.11.0 2017-01-24

Changed

  • Transparently support paginated viewsets