Change log - Migration guide.
DynamoDBMapper 1.8.0.dev
This section documents all user visible changes included between DynamoDBMapper
versions 1.8.0 and versions 1.7.1
Additions
- add DynamoDBModel.validate() based on Onctuous
- data are validated prior to any write operations
- cache tables objects in ConnectionBorg to avoid superfluous``DescribeTable`` requests
Changes
- __schema__ can now use Onctuous for deep definitions
- DynamoDBModel.__init__ set members with no value nor default value to None instead of “neutral” value
- revert the fix for bug #17 (regressions).
- move dev deps to requirements.dev.txt (pip install -r requirements.dev.txt)
Upgrade
- all functions relying on type coercion in __init__ will now need to it themselves
- make sure all fields are set before saving or marked as optional as “neutral” values are no longer generated
DynamoDBMapper 1.7.1
This section documents all user visible changes included between DynamoDBMapper
versions 1.7.1 and versions 1.7.0
Changes
- OverwriteError inherits from ConflictError so that raise_on_conflict always raises ConflictError while staying retro-compatible
- fix bug #17: enforce type coercion in DynamoDBModel.__init__. (thanks luckyasser)
- (internal) no more “MAGIC_ITEM” initialisation for auto_inc_int. It is not needed.
DynamoDBMapper 1.7.0
This section documents all user visible changes included between DynamoDBMapper
versions 1.6.2 and versions 1.7.0
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
DynamoDBMapper 1.6.3
This section documents all user visible changes included between DynamoDBMapper
versions 1.6.2 and versions 1.6.3
Changes
- fix bug #11 in delete. Keys were not serialized
DynamoDBMapper 1.6.2
This section documents all user visible changes included between DynamoDBMapper
versions 1.6.1 and versions 1.6.2
Additions
- transactions may generate a list of sub-transactions to run after the main one
- log all successful queries
- add parameter limit on query method defaulting to None
- extensive documentation
Upgrade
- sub-transactions
- If __init__() is called in any of your transactions, make sure to call
super(MyTransactionClass, self).__init__(**kwargs)
Known bugs - limitations
- #7 Can’t save models where a datetime field is nested in a dict/list
- Can’t use datetime objects in scan and query filters
- DynamoDBModel.from_dict() does not check types as opposed to __init__()
DynamoDBMapper 1.6.1
This section documents all user visible changes included between DynamoDBMapper
version 1.6.0 and version 1.6.1
DynamoDBMapper 1.6.0
This section documents all user visible changes included between DynamoDBMapper
versions 1.5.0 and versions 1.6.0
Additions
- support for default values in a __defaults__ dict
- specify instances members via global __init__ **kwargs
- autogenerated API documentation
Changes
- transactions engine rewrite to support multiple targets
- transactions always persisted after first write attempt
- transactions engine now embeds its own minimal schema
- transactions can be set transient on a ‘per instance basis’ instead of class
- autoinc hash key now relies on atomic add to prevent risks of races
- autoinc magic element moved to -1 instead of 0 to prevent accidental overwrite
- autoinc magic element now hidden from scan results
- factorized default value code
- enforce batch size 100 limit
- full inline documentation
- fixed issue: All transactions fail if they have a bool field set to False
- 99% test coverage
Upgrade
- autoinc
- For all tables relying on autoinc feature, manually move element
at 'hash_key' = 0 to 'hash_key' = -1
- transactions
- Should be retro-compatible but you are strongly advised to adopt the
new API
- specify targets and setters via Transactions._get_transactors
- avoid any use of Transactions._get_target and Transactions._alter_target
- save is now called automatically as long as at least 1 write was attempted
- __schema__ might not be required anymore due to Transaction having a new one
- requester_id hash key must be set by the user
See these method’s documentation for more informations