You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
[0.3.0]
Breaking
StorageProvider now requires serve, stat, copy, and delete_prefix. This is another intentional pre-1.0 protocol expansion: existing calls remain source-compatible, but third-party storage backends must implement the new members before they satisfy the runtime-checkable protocol.
Added
Framework-neutral serving plans. Local storage returns ServeFile for zero-copy file responses and reverse-proxy handoff, S3 returns a presigned ServeRedirect, and custom backends may return ServeStream. Both built-in backends verify object existence before creating a plan.
ObjectStat metadata with size and modification time on both backends, plus content type and ETag where the backend exposes them. Portable local filesystems return None for the latter two fields.
Backend-native object copying. Local copies remain atomic, while S3 uses boto3's managed copy so large objects switch to multipart copy without passing bytes through the application process.
Boundary-safe subtree deletion with delete_prefix, returning the number of objects removed and batching S3 deletions at 1,000 keys per request.
Changed
Local delete and delete_prefix now prune empty directories while retaining the configured storage root.
Local object operations reject filesystem paths that traverse symbolic links, and listings omit symlink aliases, preserving area and subtree boundaries if the storage tree is modified outside JASIL.