Additions
---------
- migration engine - single object
- method ``ConnectionBorg.set_region`` to specify Amazon's region (thanks kimscheibel)
- method ``DynamoDBModel.from_db_dict`` which additionaly saves ``_raw_data``
- ``raise_on_conflict`` on ``DynamoDBModel.save``, defaults to ``False``
- ``raise_on_conflict`` on ``DynamoDBModel.delete``, defaults to ``False``
Changes
-------
- rename ``ExpectedValueError`` to ``ConflictError`` to reflect its true meaning
- rename ``to_db_dict`` to ``_to_db_dict``. Should not be used anymore
- rename ``from_dict`` to ``_from_db_dict``. Should not be used anymore
- transactions may create new Items (side effect of ``raise_on_conflict`` refactor)
- fix bug 13 in dates de-serialization. (thanks Merwok)
- open only one shared boto connection per process instead of on/thread. Boto is thread-safe
- re-implement ``get_batch`` to rely on boto new generator. Fixes 100 Items limitation and paging.
- boto min version is 2.6.0
Removal
-------
- ``expected_values`` feature was incompatible with the migration engine
- ``allow_overwrite`` feature was not needed with ``raise_on_conflict``
- ``to_db_dict`` and ``from_dict`` are no longer public
- ``ThroughputError``. Throughput checks are delegated to Amazon's API (thanks kimscheibel)
- ``new_batch_list_nominal`` is not needed anymore with boto>=2.6.0
Upgrade
-------
conflict detection
Wherever ``save`` was called with ``expected_values=...`` and/or
``allow_overwrite=False``, replace it with a call to save with
``raise_on_conflict=True``. It should handle most if not all use cases. In
some place, you'll even be able to get rid of ``to_db_dict``. Rename also
all instances of ``ExpectedValueError`` to ``ConflictError``
``raise_on_conflict=True`` --> ``allow_overwrite=False`` for new objects
``raise_on_conflict=True`` --> ``expected_values=...`` for existing objects
data (de-)serialization
``from_dict`` and ``to_db_dict`` have been moved to private ``_from_db_dict``
and ``_to_db_dict``. Any direct use of these should be avoided
``_from_db_dict`` *will* mark data as coming from the DB
- ``from_dict(data_dict)`` for initialization should be replaced by ``__init__(**data_dict)``
- ``to_db_dict`` for data export should be replaced by ``to_json_dict``
- overloading for custom DB Item (de-)serialization can still be done provided that the function is renamed
====================