Features and Improvements
- add
clear_expired()
method to DynamoDB cache backend.
Minor Improvements
Bugfixes
Miscellaneous
Features and Improvements
- add :mod:`pynamodb_mate.patterns.relationship_v2`, a new version of the relationship pattern. It is more powerful and flexible than the old version. The API is more clean, easy to use, and you can write way less code to achieve the same goal.
Minor Improvements
- Now most of :meth:`pynamodb_mate.patterns.large_attribute.impl.LargeAttributeMixin` methods allow to customize the
s3_key_getter
function. So that developer can customize how to convert a DynamoDB item into an S3 key for large attribute
Bugfixes
- Fix a bug that the :meth:`pynamodb_mate.patterns.status_tracker.impl.BaseStatusTracker.start` will faile when
more_pending_status
argument is an integer.
Minor Improvements
- Add
s3_put_object_kwargs
parameter to :meth:`pynamodb_mate.patterns.large_attribute.impl.LargeAttributeMixin.create_large_attribute_item` and :meth:`pynamodb_mate.patterns.large_attribute.impl.LargeAttributeMixin.update_large_attribute_item`. So that user can pass additional arguments to the S3 put object requests. - Allow
allowed_status
parameter to :meth:`pynamodb_mate.patterns.status_tracker.impl.BaseStatusTracker.start`. Allow user to specify the allowed status other than "pending" / "failed".
Bugfixes
- Fix a bug that
pynamodb_mate.patterns.large_attribute.impl.PutS3Response.clean_up_old_s3_object_when_update_dynamodb_item_succeeded()
may fail when the old data model large attribute was None. - Fix a bug that
pynamodb_mate.patterns.large_attribute.impl.LargeAttributeMixin.create_large_attribute_item()
use the hard code partition key attribute by mistake.
💥Breaking change
- fully support pynamodb 6.X, drop compatible to pynamodb 5.X.
- rework the
status_tracker
pattern to ensure strong consistency in high concurrent workload. Due to the change that theIndex.query
is instance method from pynamodb 6.X, the oldstatus_tracker
implementation won't work in pynamodb 6.X. We have to completely remove the old implementation and re-implement thestatus_tracker
pattern.
Features and Improvements
- fully support pynamodb 6.X, drop compatible to pynamodb 5.X.
- rework the
status_tracker
pattern to ensure strong consistency in high concurrent workload.
Minor Improvements
- update the
status_tracker
document. - improve code coverage test.
Background
- The
pynamodb
implementation relies on somebotocore
private API. And one of the private API is changed frombotocore
1.33.2 that breaks thepynamodb
implementation.pynamodb
5.5.1 fixed the compatibility issue, so thatpynamodb_mate
also got upgraded to5.5.1.X
.
Features and Improvements
- add :mod:`pynamodb_mate.patterns.relationship` Pattern, allow you to manage mass amount entity and one-to-many, many-to-many relationship in DynamoDB using the ultimate data modeling strategy.
- add :mod:`pynamodb_mate.patterns.large_attribute` Pattern, it re-implements the
pynamodb_mate.attributes.s3backed
to provide better consistency model across DynamoDB and S3, and it also support updating multiple large attributes in one API. The oldpynamodb_mate.attibutes.s3backed
module is marked as deprecated, and it will be removed in 6.X version. - rework the import structure of the library, now we recommend using
import pynamodb_mate.api as pm
instead ofimport pynamodb_mate as pm
. Old public API is still available inimport pynamodb_mate as pm
name space. And these API is scheduled to be deleted in 6.X version.
Minor Improvements
- Rework the unit test, now it uses both mock and real AWS DynamoDB table for testing.
- Rework the documentation site.
Miscellaneous
- add Python3.12 support.
Bugfixes
- fix a but that some usages of :meth:`~pynamodb_mate.patterns.status_tracker.impl.BaseStatusTracker.make_value` are missing the parameter job_id.
Miscellaneous
- add Python3.11 support.
Features and Improvements
- :class:`~pynamodb_mate.patterns.status_tracker.impl.BaseStatusTracker` added
create_time
attribute. - :class:`~pynamodb_mate.patterns.status_tracker.impl.StatusAndCreateTimeIndex` is renamed to :class:`~pynamodb_mate.patterns.status_tracker.impl.StatusAndUpdateTimeIndex`, and the index now uses
update_time
as the range key, and it now uses IncludeProjection. - :meth:`pynamodb_mate.patterns.status_tracker.impl.BaseStatusTracker.query_by_status` add
auto_refresh
parameter.
Minor Improvements
- :meth:`pynamodb_mate.patterns.status_tracker.impl.BaseStatusTracker.query_by_status` now take both status enum or status enum value.
Features and Improvements
- :class:`~pynamodb_mate.patterns.status_tracker.impl.BaseStatusTracker` added
create_time
attribute. - :class:`~pynamodb_mate.patterns.status_tracker.impl.StatusAndTaskIdIndex` is renamed to :class:`~pynamodb_mate.patterns.status_tracker.impl.StatusAndCreateTimeIndex`, and the index now uses
create_time
as the range key, and it now uses AllProjection. - :meth:`pynamodb_mate.patterns.status_tracker.impl.BaseStatusTracker.query_by_status` add
older_task_first
parameter.
Minor Improvements
- improve logging in :meth:`pynamodb_mate.patterns.status_tracker.impl.BaseStatusTracker.start`.
Features and Improvements
- Use iterproxy for Model query and scan, enable type hint in result iterator.
- Use iterproxy for Model query and scan, enable type hint in result iterator.
Miscellaneous
- use
moto
for unit test
Features and Improvements
- add :mod:`pynamodb_mate.patterns.cache` Pattern. Commonly used when you want to use DynamoDB as a cache.
Miscellaneous
- improve the document for S3BackedAttribute, EncryptedAttribute and CompressedAttribute.
- refactor the S3BackedAttribute, EncryptedAttribute and CompressedAttribute to make it easier to customize.
Features and Improvements
- allow user to define a custom
__post_init__
method in the DynamoDB ORM model. - allow user to define a
pre_start_hook
andpost_start_hook
in thestatus_tracker
pattern.
Miscellaneous
- update the requirements file to ensure the compatible version of the
pynamodb
library.
Minor Improvements
- :mod:`pynamodb_mate.patterns.status_tracker` Pattern:
- the status_tracker pattern doesn't require the status index name to be
status_and_task_id_index
anymore. it will automatically discover that. - add debug information when you start a job.
- add example jupyter notebook.
- the status_tracker pattern doesn't require the status index name to be
Features and Improvements
- add :mod:`pynamodb_mate.patterns.status_tracker` Pattern. Commonly used when you want to track status of your task in DynamoDB.
Minor Improvements
- move unit test to GitHub Action.
Features and Improvements
- add more pynamodb API to top module level
- add :meth:`pynamodb_mate.models.Model.get_one_of_none` method
- add :meth:`pynamodb_mate.models.Model.delete_if_exists` method
Breaking change
EncryptUnicodeAttribute
->EncryptedUnicodeAttribute
EncryptBinaryAttribute
->EncryptedBinaryAttribute
Miscellaneous
pycryptodome
is only required when you are trying to use encrypted attribute. You can install viapip install pynamodb_mate[encrypt]
Features and Improvements
- add Console URL api
Features and Improvements
- Made decision of the API design. Make it stable and consistent to all attributes
- Add
pynamodb_mate.EncryptedNumberAttribute
,pynamodb_mate.EncryptUnicodeAttribute
,pynamodb_mate.EncryptBinaryAttribute
,pynamodb_mate.EncryptedJsonAttribute
,pynamodb_mate.S3BackedBigBinaryAttribute
,pynamodb_mate.S3BackedBigTextAttribute
,pynamodb_mate.CompressedJSONAttribute
,pynamodb_mate.CompressedUnicodeAttribute
,pynamodb_mate.CompressedBinaryAttribute
to public API
Minor Improvements
- Improve documentations.
Miscellaneous
- It maintain the compatibility to major version of
pynamodb
library. For examplepynamodb_mate>=5.0.0,<6.0.0
is compatible topynamodb>=5.0.0,<6.0.0
. - Drop support for Python2.7 because
pynamodb
drops 2.7 support.
Features and Improvements
- add
EncryptUnicodeAttribute
,EncryptBinaryAttribute
,EncryptedNumberAttribute
,``EncryptedJsonAttribute
. It can do client side encryption.
- First release