Changelog¶
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
aiodynamo.client.Client.scan_count()
- 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.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
- Added
aiodynamo.client.Client.query_single_page()
- Added
aiodynamo.client.Client.scan_single_page()
- Added
aiodynamo.client.Table.query_single_page()
- Added
aiodynamo.client.Table.scan_single_page()
- More documented APIs
20.11¶
Release Date: November 30th, 2020
- Added
aiodynamo.credentials.FileCredentials
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
aiodynamo.credentials.StaticCredentials
- Added full PEP-484 type hints.
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.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.