All notable changes to this project are documented on Releases page.
The format is based on Keep a Changelog, and this project adheres to PEP 440 -- Version Identification and Dependency Specification.
- Revert
batch_delete_records
call indynamo_table.clear_table
#64
DataTable.filter_records
: add support fornot_equals
operand #60
- Generate
DynamoTable.primary_index
dynamically to respect overriden table keys #61 - Handle
UPDATING
status indyanmo_table.create_table
#62
- Case insensitive column names bug in
DataTable.drop_duplicates
#58
- Ignore case in column names match in
DataTable.drop_duplicates
#56
- Added
DataTable.drop_duplicates
#54
- Nested keys support for
ConditionExpression
#52
- Fix missing required record keys error on internal
batch_get
usage #50
DynamoTable.cached_batch_get
methodDynamoTable.cached_get_record
methodDynamoTable.invalidate_cache
method #48
DynamoTable
does not use sort key if it does not exist in record- Always use provided
DynamoQuery
subclass inDynamoTable
- Filter out non-key data from batch methods #48
DynamoDictClass.get_required_field_names
methodDynamoDictClass.get_field_names
method #44
DynamoTable
now works withDynamoDictClass
with required fieldsDynamoDictClass
child class methods were detected as field namesDynamoDictClass
fields are initialized only once per class #44
DynamoTable.read_capacity_units
argumentDynamoTable.write_capacity_units
argumentread_capacity_units
andwrite_capacity_units
arguments toDynamoTableIndex
#41projection
argument toDynamoTableIndex
#42
DynamoTable
no longer has default provision throughput specified #41DynamoTable.batch_upsert_record
no longer works as a generatorDynamoTable.batch_delete_record
no longer works as a generator #42
DynamoTable.clear_records
method #38
DynamoTable
class is no longer abstractDictClass
sanitization of initial data happens in the end on all values, even non-setDynamoTable
normalizes records in singular methodsDynamoTable.batch_delete
returns correct record typeDynamoTable.clear_table
respectssort_key
/sort_key_prefix
arguments even ifpartition_key
is None (full scan) #38
Important info:
- release notes are managed automatically
- do not add new sections, but all sections can be edited, including this one
- always edit release notes before publishing
- on publish all release notes are included to
CHANGELOG.md
DictClass
record typeLooseDictClass
record typeDynamoDictClass
record type #36
- Untyped
DynamoTable
usesLooseDictClass
DataTable
with providedrecord_class
does not need explicit typing #36
- Duplicate items detection in
DynamoTable.batch_delete
#36
DynamoRecord.sanitize
method for all values clean upDynamoRecord.sanitize_key
method for value clean upDynamoRecord.get_key_{key}
custom methods supportDynamoRecord.sanitize_key_{key}
custom methods support #34
DynamoRecord
attribute default values are now immutableDynamoRecord
uppercased class attributes no longer affect fields #34
DynamoTable.batch_get_records
that works with iteratorsDynamoTable.batch_upsert_records
that works with iteratorsDynamoTable.batch_delete_records
that works with iteratorsDynamoTable.dynamo_query_class
attribute that allows to use customDynamoQuery
DynamoTable.max_batch_size
property for easier subclassing #28DynamoRecord
UserDict class for class-basedrecord_type
argument toDataClass
init that accepts anyUserDict
-based classesDynamoTable.get_table_status
method to get current table statusDynamoAutoscaler
class #30DataTable.copy
method #31
DynamoTable.clear_table
uses generators to reduce memory usage #28DataTable.get_record
returns arecord_type
object if it was providedDataTable.get_records
yieldsrecord_type
objects if it was providedDataTable.add_record
processes arecord_type
object if it was providedDynamoTable.create_table
setsProvisionedThroughput
argumentsDynamoTable.create_table
handles intermediate table statesDynamoTable.delete_table
handles intermediate table statesDynamoTable.get_partition_key
method is not longer abstractDynamoTable.get_sort_key
method is not longer abstract #30DataTable.keys
returns an iterator (not compatible with a regular dict)DataTable.values
returns an iterator (not compatible with a regular dict)DataTable.items
returns an iterator (not compatible with a regular dict)DataTable.__iter__
iterates over records (used to be keys) and fails for non-normalized tablesDynamoQuery.execute_dict
method'sdata
argument made optionalDynamoQuery.execute
method'sdata_table
argument acceptsIterable[Dict]
a well as aDataTable
#31
DynamoTable
is marked as abstractmypy
can correctly use types from this library #29- Typing for subclassed
DataTable
#31 typing-extensions
is no longer a direct dependency #32
Boto3Retrier
classtests/test_boto3_retrier.py
#23
DataTable
is a regular dictionary, used to be adefaultdict
- Circular error due to bad naming
partiton_key
argument is mandatory inDynamoTable.query
DynamoTable.clear_table
error ifpartition_key_prefix
is used- On fail, requests are repeated 5 times (was 3)
- Check for valid operators in
DynamoTable.query
opertaion