Changelog#

24.1#

Release Date: January 19th, 2024

  • Fixed attribute type condition.

  • Consistent handling of transaction cancelled errors. Thanks to @aclemons.

  • OR and AND conditions are now flattened when possible.

  • Create table now returns its description and no longer calls describe table if the table is already active after being created.

  • Official support for Python 3.12.

23.10.1#

Release Date: October 19th, 2023

23.10#

Release Date: October 4th, 2023

22.12#

Release Date: December 27th, 2022

22.9#

Release Date: September 20th, 2022

  • Updated minimum supported mypy version to 0.971, fixing some typing issues thanks to @akawasaki.

  • Fixed support for exceptions when using dynamodb-local thanks to @aclemons.

22.8#

Release Date: August 16th, 2022

22.6#

Release Date: June 2nd, 2022

22.4#

Release Date: April 20th, 2022

  • Fixed handling of timeout errors in httpx.

22.2.2#

Release Date: February 14th, 2022

  • Fixed 503 errors from DynamoDB not being retried.

  • Fixed mypy type hint errors introduced in 22.2

22.2.1#

Release Date: February 7th, 2022

  • Fixed a critical bug introduced in 22.2 where errors from DynamoDB were not correctly handled when retrying requests.

22.2#

Release Date: February 3rd, 2022

Breaking Changes#

HTTP Client Adaptor Interface#

The HTTP Client Adaptor Interface has changed completely. This change should only affect users who implement their own adaptor or use the interface directly, for example when implementing a custom Credentials Loader.

Previously, the interface required the adaptor to be a class with two methods, one for GET and one for POST, with different semantics for both. Further, adaptors were required to handle DynamoDB errors themselves. This was confusing, led to issues with error handling and limited its use in Credential Loaders.

The new interface is a callable which takes a aiodynamo.http.types.Request and returns an awaitable aiodynamo.http.types.Response.

Both built-in adaptors still use the same interface for initialization, so no changes should be required by most users.

Retry and Throttling Unification#

Previously, aiodynamo had two very similar types to handle retrying and client side throttling: aiodynamo.models.ThrottleConfig and aiodynamo.models.WaitConfig. These have been combined into aiodynamo.models.RetryConfig.

aiodynamo.models.ThrottleConfig was used to configure the aiodynamo.client.Client and if you used a custom configuration, you will need to replace it with the equivalent aiodynamo.models.RetryConfig implementation.

aiodynamo.models.WaitConfig was used in table-level operations such as aiodynamo.client.Client.create_table() along others to wait for the table operation to actually complete. If you used a custom wait configuration, you will need to replace it with the equivalent aiodynamo.models.RetryConfig implementation.

Credentials Loader Changes#

The internal, undocumented method fetch_with_retry in aiodynamo.credentials.Credentials has been removed.

Fixes#

21.12#

Release Date: December 20th, 2021

  • Breaking Change aiodynamo.expressions.F.set() no longer treats empty strings or empty bytes are removes.

  • aiodynamo.expressions.F now supports __eq__ and __repr__`

  • Added aiodynamo.errors.ResourceInUse

21.11#

Release Date: November 16th, 2021

21.10#

Release Date: October 7th, 2021

  • Added support for PAY_PER_REQUEST billing mode

  • Explicit typing imports to support static type checkers

21.9#

Release Date: September 1st, 2021

21.8#

Release Date: August 24th, 2021

  • Allow wider version range for httpx optional dependency

21.7#

Release Date: July 30th, 2021

  • Improved performance of DynamoDB Item deserialization, by @stupoid

21.6#

Release Date: June 16th, 2021

21.5#

Release Date: May 27th, 2021

20.11#

Release Date: November 30th, 2020

20.10.1#

Release Date: October 15th, 2020

20.10#

Release Date: October 13th, 2020

20.5#

Release Date: May 22nd, 2020

  • Removed special handling of empty strings, as DynamoDB now supports empty strings for non-key, non-index fields. Detection of empty strings is handled by the server now and will raise a aiodynamo.errors.ValidationError.

  • Retry API calls on internal DynamoDB errors.

20.4.3#

Release Date: April 22nd, 2020

  • Fixed handling of missing credentials

20.4.2#

Release Date: April 15th, 2020

20.4.1#

Release Date: April 13th, 2020

  • Fixed put_item and delete_item with a condition which does not carry any values.

  • Wrap underlying HTTP client errors, such as connection issues, so networking issues during requests are retried.

20.4#

Release Date: April 3rd, 2020

  • Fixed scan with a projection but no filter_expression.

  • Fixed logs leaking session tokens (request sending) and keys (metadata fetch).

20.3#

Release Date: March 31st, 2020

  • Added TTL support

  • Added support for pluggable HTTP clients. Built in support for httpx and aiohttp.

  • Added custom client implementation.

  • Added custom credentials loaders, with support for custom credential loaders.

  • Fixed a typo in delete_item

  • Improved item deserialization performance

  • Improved overall client performance, especially for query, scan and count, which are now up to twice as fast.

  • Changed condition, key condition and filter expression APIs to not rely on boto3.

  • Moved aiodynamo.models.F to aiodynamo.expressions.F.

  • Removed boto3 dependency

  • Removed botocore dependency

  • Removed aiobotocore dependency

19.9#

Release Date: September 6th, 2019

  • Fixed bug in UpdateExpression encoder incorrectly encoding booleans as integers or vice versa.

19.3#

Release Date: March 4th, 2019

  • Initial public release