Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.0.1] - 2026-05-13¶
Fixed¶
- Critical:
handle()now returns both successful and failedFileDataresults. Previously, successful uploads were silently dropped. FileData.to_dict()now handlesbytes(renders as<N bytes>) for JSON serialization.
Changed¶
- Removed
lru_cachefrom S3 client factory — clients are now created per-upload to respect credential changes. - Removed duplicate
_detect_sizefromS3Engine— uses inheriteddetect_stream_size(). - Removed unused
FileField.fileattribute. - Made Pydantic import lazy in
FileModel()— no longer a hidden hard dependency. - Renamed
join_s3_key→join_cloud_key(alias preserved for backward compatibility). - Renamed cloud engine factory methods to
_create_clientfor consistency.
Added¶
Store.total_sizeproperty — sum of sizes for successful uploads.__repr__methods onFileData,Store, andFileField.pydanticoptional extra inpyproject.toml.S3Enginelazy export in top-level__init__.py.- Comprehensive docstrings across all public APIs.
- Full test suite (175 tests) covering data structures, utilities, engines, orchestration, and integration.
- MkDocs Material documentation site with GitHub Pages deployment.
- Ruff formatting and linting configuration.
- Coverage configuration with branch coverage reporting.
- PyPI Trusted Publishing workflow for GitHub Releases.
- PyPI package metadata, badges, and release validation checks.
[0.2.0] — 2026-05-01¶
Added¶
- Initial release with LocalStorage, MemoryStorage, S3Storage, GCSStorage, and AzureStorage.
- File validation for size, extension, and content type.
- Sync/async callbacks for filenames, destinations, filters, and metadata.
- Multi-field upload support with per-field configuration.
- Atomic local writes with collision handling.
FileModel()helper for generating Pydantic upload models.