Release 2.3
-----------
* Removes code producing DeprecationError
* add :setting:`AUTO_CREATE_TRIGGERS`  and deprecate :setting:`MANUAL_TRIGGERS`
* add support for Postgres 13
* add ability to customise SQL to create triggers :setting:`TRIGGERS_FACTORY`

Release 2.2
-------------
* drop suppot django<3.0
* drop suppot Python<3.6


Release 2.1.1
-------------
* fixes packaging

Release 2.1 ( not released on pypi)
-----------------------------------
* drop support Python < 3.5
* add support Django 2.2 / 3.0
* drop support Django < 1.11


Release 2.0
-----------
* drop official support to Django < 1.10
* add support Django 2.1
* removed deprecated api `concurrency_check`
* BACKWARD INCOMPATIBLE: version field is now mandatory in any save operation. Use ``VERSION_FIELD_REQUIRED=False`` to have the old behaviour.
* `disable_concurrency` now has `start()`, `finish()` to be called as command


Release 1.4 (13 Sep 2016)
-------------------------
* closes :issue:`81`. Add docs and check.
* fixes :issue:`80`. (thanks Naddiseo for the useful support)
* Django 1.11 compatibility
* some minor support for Django 2.0


Release 1.3.2 (10 Sep 2016)
---------------------------
* fixes bug in ConditionalVersionField that produced 'maximum recursion error' when a model had a ManyToManyField with a field to same model (self-relation)


Release 1.3.1 (15 Jul 2016)
---------------------------
* just packaging


Release 1.3 (15 Jul 2016)
-------------------------
* drop support for Python < 3.3
* add support Django>=1.10
* change license
* fixes :issue:`36`. (thanks claytondaley)
* new :setting:`IGNORE_DEFAULT` to ignore default version number


Release 1.2 (05 Apr 2016)
-------------------------
* better support for django 1.9 ( ``TemplateDoesNotExist`` is now in ``django.template.exceptions``
* improved eror message in ``ConcurrencyListEditableMixin`` :issue:`63` :issue:`64`
* fixes :issue:`61`. Error in ``ConditionalVersionField`` (thanks ticosax)
* fixes ``skipif`` test in pypy


Release 1.1 (13 Feb 2016)
-------------------------
* drop support for django<1.7
* add support for pypy
* new :class:`concurrency.fields.ConditionalVersionField`
* new decorator :class:`concurrency.api.concurrency_disable_increment`
* :class:`concurrency.api.disable_concurrency` is now a noop if applied to a model not under concurrency management


Release 1.0.1
-------------
* fixes :issue:`56` "Can't upgrade django-concurrency to 1.0" (thanks oppianmatt).


Release 1.0
-----------
* **BACKWARD INCOMPATIBLE**:: dropped support for Django prior 1.6
* code clean
* fixes :issue:`54` "Incorrect default for IntegerVersionField" (thanks vmspike).
* fixes :issue:`53`. updates Documentation
* :ref:`disable_concurrency` can now disable concurrency in any model
* :ref:`disable_concurrency` is now also a decorator
* **BACKWARD INCOMPATIBLE**:: removed custom backends. ``TriggerVerionField`` can be used with standard Django
* new way to create triggers (thanks Naddiseo)
* new trigger code
* new :attr:`TriggerVersionField.check`.
* new :attr:`TriggerVersionField.trigger_name`.
* new :setting:`CONCURRECY_ENABLED` to fully disable concurrency
* new :setting:`CONCURRECY_MANUAL_TRIGGERS` to disable triggers auto creation fixes :issue:`41` (thanks Naddiseo)


Release 0.9
-----------
* Django 1.8 compatibility
* python 3.4 compatibility
* **BACKWARD INCOMPATIBLE** :func:`disable_concurrency` works differently if used with classes or instances
* better support for external Models (models that are part of plugged-in applications)
* fixes issue with TriggerVersionField and Proxy Models (thanx Richard Eames)


Release 0.8.1
-------------
* avoid to use concurrency when selecting all items (select_across)


Release 0.8
-----------
* Django 1.7 compatibility
* fixes typo in ``delete_selected_confirmation.html`` template
* python 3.2/3.3 compatibility


Release 0.7.1
-------------
* backward compatibility updates. Do not check for concurrency if `0` is passed as version value
    (ie. no value provided by the form)


Release 0.7
-----------
* new :class:`concurrency.fields.TriggerVersionField`
* start using pytest
* moved tests outside main package
* new protocol see:ref:`protocols`
* it's now possible disable concurrency in Models that extends concurrency enabled models
* fixed :issue:`23` (thanks matklad)
* new :setting:`USE_SELECT_FOR_UPDATE`


Release 0.6.0
-------------
* new :ref:`disable_concurrency` context manager
* added documentation for :ref:`concurrency.middleware.ConcurrencyMiddleware <concurrencymiddleware>`
* **BACKWARD INCOMPATIBLE** Fixed typo: ``CONCURRECY_SANITY_CHECK`` now ``CONCURRENCY_SANITY_CHECK``
* added ``disable_sanity_check`` context manager
* added configuration
* check admin actions for concurrent deletion
* added concurrency check for admin's :ref:`list_editable`


Release 0.5.0
-------------
* python 3.x compatibility
* new :setting:`CONCURRENCY_FIELD_SIGNER`


Release 0.4.0
-------------
* start deprecation of ``concurrency.core.VersionChangedError``, ``concurrency.core.RecordModifiedError``,
    ``concurrency.core.InconsistencyError``,moved in ``concurrency.exceptions``
* start deprecation of ``concurrency.core.apply_concurrency_check``, ``concurrency.core.concurrency_check`` moved in ``concurrency.api``
* added :setting:`CONCURRECY_SANITY_CHECK` settings entry
* signing of version number to avoid tampering (:ref:`concurrentform`)
* added :ref:`concurrencytestmixin` to help test on concurrency managed models
* changed way to add concurrency to existing models (:ref:`apply_concurrency_check`)
* fixed :issue:`4` (thanks FrankBie)
* removed RandomVersionField
* new `concurrency_check`
* added :ref:`concurrentform` to mitigate some concurrency conflict
* select_for_update now executed with ``nowait=True``
* removed some internal methods, to avoid unlikely but possible name clashes


Release 0.3.2
-------------
* fixed :issue:`3` (thanks pombredanne)
* fixed :issue:`1` (thanks mbrochh)
