Release and Version History

x.y.z (Backlog)

Features and Improvements

Minor Improvements

Bugfixes

Miscellaneous

1.0.1 (2025-06-27)

Features and Improvements

  • Drop support for Python 3.8, now only support Python 3.9+.

  • API Stabilization Release: This release marks the stable API milestone with comprehensive documentation improvements and enhanced session management capabilities.

  • Enhanced Session Management: Added comprehensive support for explicit boto session management via optional bsm parameter across all Repository methods.

  • Improved Public API Safety: Enhanced documentation to clearly distinguish between safe public API classes (Artifact, Alias) and internal ORM objects, preventing accidental data corruption.

Minor Improvements

  • Comprehensive Documentation Overhaul: All class and method docstrings have been significantly enhanced with detailed usage examples, parameter documentation, and best practices.

  • Bootstrap Integration: Enhanced bootstrap() method documentation explaining how it binds s3pathlib and pynamodb libraries to boto sessions.

  • Cross-Reference Documentation: Added proper Sphinx cross-references between public API and internal ORM classes for better developer experience.

  • Traffic Splitting Examples: Added comprehensive examples for canary deployments and blue/green deployment patterns in alias documentation.

  • Session Management Patterns: Documented both global session (via bootstrap) and explicit session (via bsm parameter) usage patterns.

Miscellaneous

  • README Modernization: Completely rewritten README.rst to be more concise and high-level, directing users to comprehensive documentation website.

  • No Breaking Changes: Full backward compatibility maintained - all existing code will continue to work without modifications.

  • Type Safety: Enhanced type hints and parameter validation documentation for better IDE support and developer experience.

Public APIs

  • versioned.api.exc

  • versioned.api.DYNAMODB_TABLE_NAME

  • versioned.api.S3_PREFIX

  • versioned.api.LATEST_VERSION

  • versioned.api.VERSION_ZFILL

  • versioned.api.METADATA_KEY_ARTIFACT_SHA256

  • versioned.api.s3_only_backend

  • versioned.api.s3_only_backend.Artifact

  • versioned.api.s3_only_backend.Artifact.update_datetime

  • versioned.api.s3_only_backend.Artifact.s3path

  • versioned.api.s3_only_backend.Artifact.get_content

  • versioned.api.s3_only_backend.Alias.update_datetime

  • versioned.api.s3_only_backend.Alias.s3path_version

  • versioned.api.s3_only_backend.Alias.get_version_content

  • versioned.api.s3_only_backend.Alias.s3path_secondary_version

  • versioned.api.s3_only_backend.Alias.random_artifact

  • versioned.api.s3_only_backend.Alias.get_secondary_version_content

  • versioned.api.s3_only_backend.Repository

  • versioned.api.s3_only_backend.Repository.s3dir_artifact_store

  • versioned.api.s3_only_backend.Repository.bootstrap

  • versioned.api.s3_only_backend.Repository.get_latest_published_artifact_version_number

  • versioned.api.s3_only_backend.Repository.put_artifact

  • versioned.api.s3_only_backend.Repository.get_artifact_version

  • versioned.api.s3_only_backend.Repository.list_artifact_versions

  • versioned.api.s3_only_backend.Repository.publish_artifact_version

  • versioned.api.s3_only_backend.Repository.delete_artifact_version

  • versioned.api.s3_only_backend.Repository.list_artifact_names

  • versioned.api.s3_only_backend.Repository.put_alias

  • versioned.api.s3_only_backend.Repository.get_alias

  • versioned.api.s3_only_backend.Repository.list_aliases

  • versioned.api.s3_only_backend.Repository.delete_alias

  • versioned.api.s3_only_backend.Repository.purge_artifact_versions

  • versioned.api.s3_only_backend.Repository.purge_artifact

  • versioned.api.s3_only_backend.Repository.purge_all

  • versioned.api.s3_and_dynamodb_backend

  • versioned.api.s3_and_dynamodb_backend.Artifact

  • versioned.api.s3_and_dynamodb_backend.Artifact.s3path

  • versioned.api.s3_and_dynamodb_backend.Artifact.get_content

  • versioned.api.s3_and_dynamodb_backend.Alias

  • versioned.api.s3_and_dynamodb_backend.Alias.s3path_version

  • versioned.api.s3_and_dynamodb_backend.Alias.get_version_content

  • versioned.api.s3_and_dynamodb_backend.Alias.s3path_secondary_version

  • versioned.api.s3_and_dynamodb_backend.Alias.get_secondary_version_content

  • versioned.api.s3_and_dynamodb_backend.Alias.random_artifact

  • versioned.api.s3_and_dynamodb_backend.Repository

  • versioned.api.s3_and_dynamodb_backend.Repository.s3dir_artifact_store

  • versioned.api.s3_and_dynamodb_backend.Repository.get_artifact_s3path

  • versioned.api.s3_and_dynamodb_backend.Repository.bootstrap

  • versioned.api.s3_and_dynamodb_backend.Repository.put_artifact

  • versioned.api.s3_and_dynamodb_backend.Repository.get_artifact_version

  • versioned.api.s3_and_dynamodb_backend.Repository.list_artifact_versions

  • versioned.api.s3_and_dynamodb_backend.Repository.publish_artifact_version

  • versioned.api.s3_and_dynamodb_backend.Repository.delete_artifact_version

  • versioned.api.s3_and_dynamodb_backend.Repository.list_artifact_names

  • versioned.api.s3_and_dynamodb_backend.Repository.put_alias

  • versioned.api.s3_and_dynamodb_backend.Repository.get_alias

  • versioned.api.s3_and_dynamodb_backend.Repository.list_aliases

  • versioned.api.s3_and_dynamodb_backend.Repository.delete_alias

  • versioned.api.s3_and_dynamodb_backend.Repository.purge_artifact_versions

  • versioned.api.s3_and_dynamodb_backend.Repository.purge_artifact

  • versioned.api.s3_and_dynamodb_backend.Repository.purge_all

0.6.1 (2023-10-22)

Features and Improvements

  • Add Repository.list_artifact_names() and Repository.purge_artifact_versions() methods to both s3_and_dynamodb_backend and s3_only_backend

0.5.4 (2023-10-20)

Features and Improvements

  • Fix a bug that the s3_only_backend is not able to handle suffix like .tar.gz, .json.gz.

0.5.3 (2023-07-14)

Minor Improvements

  • add validation to detect if human manually contaminate the artifact S3 dir.

  • add the missing Alias.random_artifact() method.

Bugfixes

  • fix bug that sometimes it uses the wrong boto session to get the S3 metadata and S3 last modified time.

Miscellaneous

  • Update the s3 and dynamodb backend example jupyter notebook.

  • Add s3 only backend example jupyter notebook.

0.5.2 (2023-07-14)

Bugfixes

  • fix a bug that accidentally deleted the get_artifact_s3path API.

0.5.1 (2023-07-14)

Features and Improvements

  • add S3 only backend in s3_only_backend.py module. It doesn’t require DynamoDB table.

  • the old core.py module is renamed to s3_and_dynamodb_backend.py module. The old API is kept intentionally for backward compatibility. However, it is scheduled to be removed in 1.X.Y release.

  • suggest to use from versioned import api as versioned, then use versioned.s3_and_dynamodb_backend or versioned.s3_only_backend to access the backend.

Minor Improvements

  • improve test for s3_and_dynamodb_backend.

0.4.2 (2023-07-07)

Bugfixes

  • fix a bug that the purge_all method cannot delete DynamoDB items correctly when S3 doesn’t have the artifacts.

0.4.1 (2023-07-07)

Minor Improvements

  • add versioned.api.Repository.connect_boto_session to public API. it can explicitly connect the S3 and DynamoDB API to the given boto session.

  • removed useless argument bsm in many APIs.

  • add versioned.api.Repository.purge_all to public API.

0.3.3 (2023-07-06)

Minor Improvements

  • allow user to set a file name extension for the artifact repository via versioned.api.Repository(..., suffix=".tar.gz").

0.3.2 (2023-07-06)

Minor Improvements

  • now the versioned.api.Repository takes explicit aws_region, s3_bucket arguments in constructor.

  • add versioned.api.Repository.get_artifact_s3path to public API.

0.3.1 (2023-07-06)

Features and Improvements

  • Created a new public API class versioned.api.Repository, allow developer to customize the S3 bucket and DynamoDB table name backend. So old API are renamed to:
    • versioned.api.Repository.bootstrap

    • versioned.api.Repository.put_artifact

    • versioned.api.Repository.get_artifact_version

    • versioned.api.Repository.list_artifact_versions

    • versioned.api.Repository.publish_artifact_version

    • versioned.api.Repository.delete_artifact_version

    • versioned.api.Repository.put_alias

    • versioned.api.Repository.get_alias

    • versioned.api.Repository.list_aliases

    • versioned.api.Repository.delete_alias

    • versioned.api.Repository.purge_artifact

0.2.1 (2023-07-05)

Features and Improvements

  • add content_type, metadata, tags arguments to versioned.put_artifact.

  • versioned.put_artifact now will skip uploading to s3 if content is not changed.

0.1.2 (2023-07-01)

Miscellaneous

  • rename versioned.api.get_artifact to versioned.api.get_artifact_version.

  • rename versioned.api.list_artifacts to versioned.api.list_artifact_versions.

  • rename versioned.api.delete_artifact to versioned.api.delete_artifact_version.

  • rename versioned.api.purge to versioned.api.purge_artifact.

  • rename additional_version to secondary_version.

0.1.1 (2023-07-01)

Features and Improvements

  • First release.

  • Add the following public api:
    • versioned.api.exc

    • versioned.api.DYNAMODB_TABLE_NAME

    • versioned.api.BUCKET_NAME

    • versioned.api.S3_PREFIX

    • versioned.api.LATEST_VERSION

    • versioned.api.VERSION_ZFILL

    • versioned.api.bootstrap

    • versioned.api.Artifact

    • versioned.api.Alias

    • versioned.api.put_artifact

    • versioned.api.get_artifact

    • versioned.api.list_artifacts

    • versioned.api.publish_version

    • versioned.api.delete_artifact

    • versioned.api.put_alias

    • versioned.api.get_alias

    • versioned.api.list_aliases

    • versioned.api.delete_alias

    • versioned.api.purge