Skip to content

v0.3.0

Choose a tag to compare

@joaovitoriasilva joaovitoriasilva released this 28 Aug 09:43
· 3 commits to main since this release
be925f2

[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.