Skip to content

Latest commit

 

History

History
402 lines (258 loc) · 24.1 KB

File metadata and controls

402 lines (258 loc) · 24.1 KB

Changelog

Unreleased

[0.9.3] - 2026-04-15

What's Changed

  • docs: Add devseed favicon by @kylebarron in #641
  • ci: Use trusted publishing by @kylebarron in #642
  • docs: Fix rendering of PutMode docstring by @kylebarron in #645
  • ci: add Dependabot for GitHub Actions version updates by @lhoupert in #647
  • feat: Fsspec: Convert async methods that open sync file handles to use LocalStore by @matteomorlack in #656
  • ci: pin gha to sha commit by @lhoupert in #659
  • ci: Use github app token for conventional commit labeling by @kylebarron in #662
  • fix(fsspec): _info() should honor self.dircache by @fvaleye in #663
  • feat(buffered): deprecate ReadableFile.meta and AsyncReadableFile.meta by @fvaleye in #667

New Contributors

  • @lhoupert made their first contribution in #647
  • @dependabot[bot] made their first contribution in #652
  • @matteomorlack made their first contribution in #656
  • @fvaleye made their first contribution in #663

Full Changelog: https://github.com/developmentseed/obstore/compare/py-v0.9.2...py-v0.9.3

[0.9.2] - 2026-03-11

What's Changed

Full Changelog: https://github.com/developmentseed/obstore/compare/py-v0.9.1...py-v0.9.2

[0.9.1] - 2026-02-26

  • fix: Include prefix in delete_stream #629

[0.9.0] - 2026-02-22

Breaking Changes

  • chore!: Deprecate support for python 3.9 by @kylebarron in #609

What's Changed

  • fix: Remove TypeVar constraints on arro3-core to fix list typing when arro3-core not installed by @kylebarron in #578
  • docs: Update cookbook.md - unmatched quotes by @mdsumner in #587
  • fix: Prevent early EOF error in reader.read by @nvictus in #593
  • feat: Allow S3 HTTP URLs without region by @kylebarron in #590
  • feat: upgrade object store 0.13.x by @alukach in #600
  • ci: Make abi3 wheels for mainline Python 3.11+ by @kylebarron in #623
  • feat: Update docs, examples, tests to use method-based API by @kylebarron in #625

New Contributors

  • @nvictus made their first contribution in #593
  • @alukach made their first contribution in #600
  • @DisturbedOcean made their first contribution in #620

Full Changelog: https://github.com/developmentseed/obstore/compare/py-v0.8.2...py-v0.9.0

[0.8.2] - 2025-09-16

What's Changed

  • Added sdist and wheels for Python 3.14 (except Windows) @kylebarron in #561 and #563
  • test: Set up minio-based testing, replace moto by @kylebarron in #553
  • chore: Bump ruff to 0.13 by @kylebarron in #562
  • docs: Use dictionary syntax for list properties by @mdsumner in #558

New Contributors

  • @mdsumner made their first contribution in #558

Full Changelog: https://github.com/developmentseed/obstore/compare/py-v0.8.1...py-v0.8.2

[0.8.1] - 2025-08-22

What's Changed

  • fix: Fix passing down application_credentials to GCSStore by @kylebarron in #541
  • fix: earthdata token refresh when not redirected by @chuckwondo in #539

Full Changelog: https://github.com/developmentseed/obstore/compare/py-v0.8.0...py-v0.8.1

[0.8.0] - 2025-08-07

What's Changed

  • Breaking: Don't double percent-encode paths by @kylebarron in #524
    • This changes the internals from using Path "encoding" to Path "parsing". This avoids issues where paths could be unintentionally double-encoded. But this means that the user must ensure that paths are valid.
  • fix: Only SHA256 is supported for S3 checksum algorithm by @kylebarron in #527

[0.7.3] - 2025-08-01

What's Changed

  • fix: Fix conversion from python string to Rust Attribute #520
  • chore: Bump arrow to 56

[0.7.2] - 2025-07-31

What's Changed

  • feat(fsspec): FsspecStore.modified() by @keen85 in #517

New Contributors

  • @keen85 made their first contribution in #517

Full Changelog: https://github.com/developmentseed/obstore/compare/py-v0.7.1...py-v0.7.2

[0.7.1] - 2025-07-24

What's Changed

Documentation 📖

  • docs: Add Cloudflare R2 example by @kylebarron in #504
  • docs: Improve documentation about URL path handling in from_url class methods by @kylebarron in #512
  • docs: Clarify that return_arrow is only a performance optimization by @kylebarron in #513

Other

  • fix: fix pyright config by @pjonsson in #505
  • ci: reinstate pyright check by @pjonsson in #510

New Contributors

  • @pjonsson made their first contribution in #505

Full Changelog: https://github.com/developmentseed/obstore/compare/py-v0.7.0...py-v0.7.1

[0.7.0] - 2025-06-25

New Features 🪄

  • Support anonymous GCS connections by @kylebarron in #404
  • Support default headers in client options by @kylebarron in #427
  • Validate that obstore implements the obspec API by @kylebarron in #461
  • Allow passing credential providers in to fsspec wrapper by @kylebarron in #396
  • feat: Improve NASA Earthdata credential providers by @chuckwondo in #472
  • feat: Deprecate custom NotFoundError in favor of built-in FileNotFoundError by @kylebarron in #487

Breaking changes 🔧

  • obstore.auth.AzureCredentialProvider (and obstore.auth.AzureAsyncCredentialProvider) removed some attributes that were previously accidentally public. Also, scopes and tenant_id parameters in the __init__ of those two classes are now keyword-only parameters. by @kylebarron in #442

Bug fixes 🐛

  • Remove @staticmethod from credential provider type annotations by @kylebarron in #446
  • Enable accessing meta, range, and attributes after reading GetResult payload by @kylebarron in #440
  • Ensure we always release the GIL before calling tokio::Runtime::block_on by @kylebarron in #451
  • fix: AzureStore creation by HTTPS url by @kylebarron in #481

Documentation 📖

  • docs: Add Zarr example to docs by @kylebarron in #468
  • docs: stream-zip example by @kylebarron in #470
  • fix: docs for json.loads(bytes) by @gadomski in #432

Other

  • Include object_store version and source in Python dist by @kylebarron in #408

New Contributors

  • @emmanuel-ferdman made their first contribution in #410
  • @gadomski made their first contribution in #432
  • @chuckwondo made their first contribution in #454

Full Changelog: https://github.com/developmentseed/obstore/compare/py-v0.6.0...py-v0.7.0

[0.6.0] - 2025-03-24

New Features 🪄

  • Planetary computer credential provider by @kylebarron in #379

Breaking changes 🔧

Object store methods

No breaking changes.

Store constructors

  • In the AzureStore constructor, the container positional argument was renamed to container_name to match the container_name key in AzureConfig. by @kylebarron in #380

    This is a breaking change if you had been calling AzureStore(container="my container name").

    This is not breaking if you had been using it as a positional argument AzureStore("my container name") or if you had already been using AzureStore(container_name="my container name").

    The idea here is that we want one and only one argument name for each underlying config parameter. Most of these breaking changes took place in 0.5.0, but this was overlooked.

Bug fixes 🐛

  • Fix import errors on Python 3.9:
    • Fix azure auth import on Python 3.9 by @kylebarron in #378
    • Fix _buffered.pyi for python 3.9 by @kylebarron in #381
  • Define __all__ to fix type checking import paths #389

Documentation 📖

  • Fix chunk_size typo by @kylebarron in #377
  • Docs: Make integrations dropdown by @kylebarron in #382
  • Docs: Use source order in credential provider docs by @kylebarron in #383

Other

  • Add typing extensions as runtime dependency by @kylebarron in #384

Full Changelog: https://github.com/developmentseed/obstore/compare/py-v0.5.1...py-v0.6.0

[0.5.1] - 2025-03-17

Bug fixes 🐛

  • Fix import errors for Python 3.9 and 3.10. Update CI. by @kylebarron in #372

Full Changelog: https://github.com/developmentseed/obstore/compare/py-v0.5.0...py-v0.5.1

[0.5.0] - 2025-03-17

New Features 🪄

  • Class methods wrapper. Instead of calling obstore.get(store), you can now call store.get() directly. by @kylebarron in #331
  • User-supplied credential callback by @kylebarron in #234
    • Add Azure credential providers by @daviewales in #343
  • Fsspec updates:
    • [FEAT] Create obstore store in fsspec on demand by @machichima in #198
    • [FEAT] support df.to_parquet and df.read_parquet() by @machichima in #165
    • Document fsspec integration in user guide by @kylebarron in #299
    • fsspec: Allow calling register with no arguments by @kylebarron in #298
  • Enable pickling Bytes by @kylebarron in #295
  • Add AWS literal type hints by @kylebarron in #301
  • pyo3-bytes slicing by @jessekrubin in #249

Breaking changes 🔧

Object store methods

No breaking changes.

Store constructors

  • Removed S3Store.from_session and S3Store._from_native. Use credential providers instead.
  • Reduce the config variations supported for input. I.e. we previously allowed region, aws_region, REGION or AWS_REGION as a config parameter to S3Store, which could make it confusing. We now only support a single config input value for each underlying concept. #323

Fsspec

  • Rename AsyncFsspecStore to FsspecStore by @kylebarron in #297

Bug fixes 🐛

  • Validate input for range request by @kylebarron in #255

Documentation 📖

  • Update performance numbers by @kylebarron in #307
  • Document type-only constructs by @kylebarron in #309, #311
  • Add import warning admonition on ObjectStore type by @kylebarron in
  • Update etag conditional put docs by @kylebarron in #310

New Contributors

  • @weiji14 made their first contribution in #272
  • @machichima made their first contribution in #198

Full Changelog: https://github.com/developmentseed/obstore/compare/py-v0.4.0...py-v0.5.0

[0.4.0] - 2025-02-10

New Features 🪄

  • Support for pickling & always manage store prefix by @kylebarron in #185, #239, #223

  • Add top-level obstore.store.from_url function, which delegates to each store's from_url constructor by @kylebarron in #179, #201

  • Add option to return Arrow from list_with_delimiter by @kylebarron in #238, #244

  • (Provisional) Enhanced loading of s3 credentials using aws-config crate by @kylebarron in #203

  • Access config values out from stores by @kylebarron in #210

  • LocalStore updates:

    • Enable automatic cleanup for local store, when deleting directories by @kylebarron in #175
    • Optionally create root dir in LocalStore by @kylebarron in #177
  • File-like object updates:

    • Add support for writable file-like objects by @kylebarron in #167

    • Updates to readable file API:

      • Support user-specified capacity in readable file-like objects by @kylebarron in #174
      • Expose ObjectMeta from readable file API by @kylebarron in #176
  • Merge config and kwargs and validate that no configuration parameters have been passed multiple times. (#180, #182, #218)

  • Add __repr__ to Bytes class by @jessekrubin in #173

Breaking changes 🔧

  • get_range, get_range_async, get_ranges, and get_ranges_async now require named parameters for start, end, and length to make the semantics of the range request fully explicit. by @kylebarron in #156
  • Previously, individual stores did not manage a prefix path within the remote resource and PrefixStore was used to enable this. As of 0.4.0, PrefixStore was removed and all stores manage an optional mount prefix natively.
  • obstore.open has been renamed to obstore.open_reader.
  • The from_env constructor has been removed from S3Store, GCSStore, and AzureStore. Now all constructors will read from environment variables. Use __init__ or from_url instead. #189
  • obstore.exceptions.ObstoreError renamed to obstore.exceptions.BaseError #200

Bug fixes 🐛

  • Fix pylance finding exceptions module by @kylebarron in #183
  • Allow passing in partial retry/backoff config by @kylebarron in #205
  • Fix returning None from async functions by @kylebarron in #245
  • Fix LocalStore range request past end of file, by @kylebarron in #230

Documentation 📖

  • Update wording for fsspec docstring by @kylebarron in #195
  • Add documentation about AWS region by @kylebarron in #213
  • Add developer documentation for functional API choice by @kylebarron in #215
  • Add tqdm progress bar example by @kylebarron in #237
  • Add contributor, performance, integrations docs by @kylebarron in #227
  • Add minio example by @kylebarron in #241

Other

  • Use manylinux 2_24 for aarch64 linux wheels by @kylebarron in #225

New Contributors

  • @vincentsarago made their first contribution in #168
  • @jessekrubin made their first contribution in #173

Full Changelog: https://github.com/developmentseed/obstore/compare/py-v0.3.0...py-v0.4.0

[0.3.0] - 2025-01-16

New Features 🪄

  • Streaming uploads. obstore.put now supports iterable input, and obstore.put_async now supports async iterable input. This means you can pass the output of obstore.get_async directly into obstore.put_async. by @kylebarron in #54
  • Allow passing config options directly as keyword arguments. Previously, you had to pass all options as a dict into the config parameter. Now you can pass the elements directly to the store constructor. by @kylebarron in #144
  • Readable file-like objects. Open a readable file-like object with obstore.open and obstore.open_async. by @kylebarron in #33
  • Fsspec integration by @martindurant in #63
  • Prefix store by @kylebarron in #117
  • Python 3.13 wheels by @kylebarron in #95
  • Support python timedelta objects as duration config values by @kylebarron in #146
  • Add class constructors for store builders. Each store now has an __init__ method, for easier construction. by @kylebarron in #141

Breaking changes 🔧

  • get_range, get_range_async, get_ranges, and get_ranges_async now use start/end instead of offset/length. This is for consistency with the range option of obstore.get. by @kylebarron in #71
  • Return Bytes from GetResult.bytes() by @kylebarron in #134

Bug fixes 🐛

  • boto3 region name can be None by @kylebarron in #59
  • add missing py.typed file by @gruebel in #115

Documentation 📖

  • FastAPI/Starlette example by @kylebarron in #145
  • Add conda installation doc to README by @kylebarron in #78
  • Document suggested lifecycle rules for aborted multipart uploads by @kylebarron in #139
  • Add type hint and documentation for requester pays by @kylebarron in #131
  • Add note that S3Store can be constructed without boto3 by @kylebarron in #108
  • HTTP Store usage example by @kylebarron in #142

What's Changed

  • Improved docs for from_url by @kylebarron in #138
  • Implement read_all for async iterable by @kylebarron in #140

New Contributors

  • @willemarcel made their first contribution in #64
  • @martindurant made their first contribution in #63
  • @norlandrhagen made their first contribution in #107
  • @gruebel made their first contribution in #115

Full Changelog: https://github.com/developmentseed/obstore/compare/py-v0.2.0...py-v0.3.0

[0.2.0] - 2024-10-25

What's Changed

  • Streaming list results. list now returns an async or sync generator. by @kylebarron in #35
  • Optionally return list result as arrow. The return_arrow keyword argument returns chunks from list as Arrow RecordBatches, which is faster than materializing Python dicts/lists. by @kylebarron in #38
  • Return buffer protocol object from get_range and get_ranges. Enables zero-copy data exchange from Rust into Python. by @kylebarron in #39
  • Add put options. Enables custom tags and attributes, as well as "put if not exists". by @kylebarron in #50
  • Rename to obstore by @kylebarron in #45
  • Add custom exceptions. by @kylebarron in #48

Full Changelog: https://github.com/developmentseed/obstore/compare/py-v0.1.0...py-v0.2.0

[0.1.0] - 2024-10-21

  • Initial release.