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
Fixed issue with refreshable credentials not working due to timing issue introduced in 23.10.
Improved performance of
aiodynamo.credentials.ChainCredentials
.
23.10#
Release Date: October 4th, 2023
Drop support for Python 3.7
Added support for ScyllaDB Alternator
Added debug helpers for
aiodynamo.expressions.Condition
andaiodynamo.expressions.UpdateExpression
Support pay-per-requests for Global Secondary Indices. Thanks to @alexjurkiewicz.
Added support for Instance Metadata Service Version 2 for loading credentials. Thanks to @y26805.
Updated maximum allowed number of operations per transaction to 100. Thanks to @stupoid.
22.12#
Release Date: December 27th, 2022
aiodynamo.credentials.FileCredentials
will now use the profile specified in theAWS_PROFILE
environment variable if it is set and no explicit profile is passed. Thanks to @BTripp1986.
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
Added support for
aiodynamo.client.Client.transact_write_items()
andaiodynamo.client.Client.transact_get_items()
thanks to @nicolaszein.Added continuous integration for localstack thanks to @nicolaszein.
22.6#
Release Date: June 2nd, 2022
Removed unsupported APIs from
aiodynamo.expressions.RangeKey
.
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#
aiodynamo.credentials.FileCredentials
now supports session tokens
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
Added support for Python 3.10
Added support for consistent reads
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
Added the limit parameter to
aiodynamo.client.Client.count()
Require (somewhat) newer httpx>=0.15.0
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
More documented APIs
20.11#
Release Date: November 30th, 2020
aiodynamo.credentials.Credentials.auto()
will now also tryaiodynamo.credentials.StaticCredentials
, after environment variables but before instance metadata.
20.10.1#
Release Date: October 15th, 2020
Fixed instance metadata credentials not supporting arn-based roles.
Added full PEP-484 type hints.
20.10#
Release Date: October 13th, 2020
Fixed name encoding of
aiodynamo.expressions.HashKey
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
Fix comparison conditions (
equals
,not_equals
,gt
,gte
,lt
,lte
onaiodynamo.expressions.F
andaiodynamo.expressions.Size
viaaiodynamo.expressions.F.size()
to support referencing other fields (usingaiodynamo.expressions.F
)Fix timeout handling in aiohttp based client.
20.4.1#
Release Date: April 13th, 2020
Fixed
put_item
anddelete_item
with acondition
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 aprojection
but nofilter_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
andaiohttp
.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
toaiodynamo.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