Change log - Migration guide.

ddbmock 0.4.1 aka 1.0.0 RC

This section documents all user visible changes included between ddbmock versions 0.4.0 and versions 0.4.1

This iteration was mostly focused on polishing and brings last missing bits.


  • Add support for ExclusiveStartKey, LastEvaluatedKey and Limit for Scan


  • Wrap all write operations in a table scope lock: each individual operation should be atomic
  • Addressed Thread safety issues
  • Add option to disable status update timers (#8)
  • Fix BETWEEN bug (#7)

ddbmock 0.4.0

This section documents all user visible changes included between ddbmock versions 0.3.2 and versions 0.4.0

This iteration wa focused on modularity and planification.


  • consistent_read parameter to Query

  • central file with all constraints

  • timer for table status changes

  • full Query support

  • throughput statistics to help plan real usage

  • pre-instanciate DynamoDB as dynamodb

  • datastore API
    • bundle memory store
    • bundle sqlite store
    • add config param to switch
  • clean_boto_patch to restore original boto.dynamodb behavior

  • allow ConsistentRead on a per-table basis for BatchGetItem


  • legacy connect_boto and connect_ddbmock
  • dynamodb_api_validate decorator. It is now called automatically
  • wrap_exceptions decorator. It is now integrated to the router
  • minimum throughput change of 10 %


  • global refactoring
  • rename routes module to operations for consistency with DynamoDB
  • Move from Voluptuous to Onctuous for validations, less code
  • fix server startup with pserver (bad backage name)
  • fix server crash on validation exception (bad serialization)
  • accurate throughput for all Read operations
  • accurate throughput for all Write operations
  • move ‘views’ to ‘routes’
  • remove all pyramid code from ‘views’/’routes’
  • pyramid and boto entry points now shares most of the router
  • UpdateItem failed to save keys properly
  • integrate boto dynamodb integration tests to test suite (disabled unless ‘–no-skip’)
  • do not require (real) user credentials in boto patch version (#5)


  • rename connect_boto to connect_boto_patch
  • rename connect_ddbmock to connect_boto_network
  • rename all DynamoDB() to ``dynamodb
  • replace ...import DynamoDB by ... import dynamodb

ddbmock 0.3.2

This section documents all user visible changes included between ddbmock versions 0.3.1 and versions 0.3.2

This iteration was focused on passing boto integration tests.


  • preliminary batchWriteItem support


  • fix number validation
  • fix: item where created by defaultdict magic when looking for bogus item.
  • return no Item field when not found, but empty when filtered
  • [botopatch] handle DynamoDBConditionalCheckFailedError error

ddbmock 0.3.1

This section documents all user visible changes included between ddbmock versions 0.3.0 and versions 0.3.1

This iteration was focused on accuracy


  • 100% tests coverage
  • add basic tests for pyramid entry-point (#1)
  • add plenty of unit and functional tests. Coverage is 100%
  • add support for all ALL_OLD ALL_NEW UPDATED_OLD UPDATED_NEW in UpdateItem
  • add accurate field size calculation
  • add accurate item size calculation
  • add accurate table size calculation
  • add MAX_TABLES check at table creation


  • accurate table statuses
  • fix pyramid entry-point
  • fix list validations. Len limitation was not working
  • attempt to store empty field/set raise ValidationError (#4)
  • accurate exception detection and reporting in UpdateTable
  • accurate hash_key and range_key size validation
  • accurate number limitations (max 38 digits precision; between 10^-128 and 10^+126)
  • rename connect_boto to connect_boto_patch + compat layer
  • rename connect_ddbmock to connect_boto_network + compat layer
  • block PutItem/UpdateItem when bigger than MAX_ITEM_SIZE


Nothing mandatory as this is a minor release but, I recommend that you:

  • rename connect_boto to connect_boto_patch
  • rename connect_ddbmock to connect_boto_network

ddbmock 0.3.0

Initial ddbmock release. This is alpha quality sofware. Some import features such as “Excusive Start Key”, “Reverse” and “Limit” as well as BatchWriteItem have not been written (yet).


  • entry-point WEB (network mode)
  • entry-point Boto (standalone mode)
  • support for CreateTable method
  • support for DeleteTable method
  • support for UpdateTable method
  • support for DescribeTable method
  • support for GetItem method
  • support for PutItem method
  • support for DeleteItem method
  • support for UpdateItem method (small approximations)
  • support for BatchGetItem method (initial)
  • support for Query method (initial)
  • support for Scan method (initial)
  • all comparison operators
  • aggresive input validation

Known bugs - limitations

  • no support for BatchWriteItem
  • no support for “Excusive Start Key”, “Reverse” and “Limit” in Query and Scan
  • no support for “UnprocessedKeys” in BatchGetItem
  • Web entry-point is untested, fill bugs if necessary :)