Changelog¶
[0.5.0] - 2025-03-17¶
New Features
¶
- Class methods wrapper. Instead of calling
obstore.get(store), you can now callstore.get()directly. by @kylebarron in developmentseed/obstore!331 - User-supplied credential callback by @kylebarron in developmentseed/obstore!234
- Add Azure credential providers by @daviewales in developmentseed/obstore!343
- Fsspec updates:
- [FEAT] Create obstore store in fsspec on demand by @machichima in developmentseed/obstore!198
- [FEAT] support df.to_parquet and df.read_parquet() by @machichima in developmentseed/obstore!165
- Document fsspec integration in user guide by @kylebarron in developmentseed/obstore!299
- fsspec: Allow calling
registerwith no arguments by @kylebarron in developmentseed/obstore!298 - Enable pickling Bytes by @kylebarron in developmentseed/obstore!295
- Add AWS literal type hints by @kylebarron in developmentseed/obstore!301
- pyo3-bytes slicing by @jessekrubin in developmentseed/obstore!249
Breaking changes
¶
Object store methods¶
No breaking changes.
Store constructors¶
- Removed
S3Store.from_sessionandS3Store._from_native. Use credential providers instead. - Reduce the config variations supported for input. I.e. we previously allowed
region,aws_region,REGIONorAWS_REGIONas a config parameter toS3Store, which could make it confusing. We now only support a single config input value for each underlying concept. developmentseed/obstore!323
Fsspec¶
- Rename
AsyncFsspecStoretoFsspecStoreby @kylebarron in developmentseed/obstore!297
Bug fixes
¶
- Validate input for range request by @kylebarron in developmentseed/obstore!255
Documentation
¶
- Update performance numbers by @kylebarron in developmentseed/obstore!307
- Document type-only constructs by @kylebarron in developmentseed/obstore!309, developmentseed/obstore!311
- Add import warning admonition on ObjectStore type by @kylebarron in
- Update etag conditional put docs by @kylebarron in developmentseed/obstore!310
New Contributors¶
- @weiji14 made their first contribution in developmentseed/obstore!272
- @machichima made their first contribution in developmentseed/obstore!198
Full Changelog: 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 developmentseed/obstore!185, developmentseed/obstore!239, developmentseed/obstore!223
- Add top-level
obstore.store.from_urlfunction, which delegates to each store'sfrom_urlconstructor by @kylebarron in developmentseed/obstore!179, developmentseed/obstore!201 - Add option to return Arrow from
list_with_delimiterby @kylebarron in developmentseed/obstore!238, developmentseed/obstore!244 - (Provisional) Enhanced loading of s3 credentials using
aws-configcrate by @kylebarron in developmentseed/obstore!203 - Access config values out from stores by @kylebarron in developmentseed/obstore!210
- LocalStore updates:
- Enable automatic cleanup for local store, when deleting directories by @kylebarron in developmentseed/obstore!175
- Optionally create root dir in LocalStore by @kylebarron in developmentseed/obstore!177
-
File-like object updates:
-
Add support for writable file-like objects by @kylebarron in developmentseed/obstore!167
-
Updates to readable file API:
- Support user-specified capacity in readable file-like objects by @kylebarron in developmentseed/obstore!174
- Expose
ObjectMetafrom readable file API by @kylebarron in developmentseed/obstore!176
-
Merge
configandkwargsand validate that no configuration parameters have been passed multiple times. (developmentseed/obstore!180, developmentseed/obstore!182, developmentseed/obstore!218) - Add
__repr__toBytesclass by @jessekrubin in developmentseed/obstore!173
Breaking changes
¶
get_range,get_range_async,get_ranges, andget_ranges_asyncnow require named parameters forstart,end, andlengthto make the semantics of the range request fully explicit. by @kylebarron in developmentseed/obstore!156- Previously, individual stores did not manage a prefix path within the remote resource and
PrefixStorewas used to enable this. As of 0.4.0,PrefixStorewas removed and all stores manage an optional mount prefix natively. obstore.openhas been renamed toobstore.open_reader.- The
from_envconstructor has been removed fromS3Store,GCSStore, andAzureStore. Now all constructors will read from environment variables. Use__init__orfrom_urlinstead. developmentseed/obstore!189 obstore.exceptions.ObstoreErrorrenamed toobstore.exceptions.BaseErrordevelopmentseed/obstore!200
Bug fixes
¶
- Fix pylance finding exceptions module by @kylebarron in developmentseed/obstore!183
- Allow passing in partial retry/backoff config by @kylebarron in developmentseed/obstore!205
- Fix returning None from async functions by @kylebarron in developmentseed/obstore!245
- Fix LocalStore range request past end of file, by @kylebarron in developmentseed/obstore!230
Documentation
¶
- Update wording for fsspec docstring by @kylebarron in developmentseed/obstore!195
- Add documentation about AWS region by @kylebarron in developmentseed/obstore!213
- Add developer documentation for functional API choice by @kylebarron in developmentseed/obstore!215
- Add
tqdmprogress bar example by @kylebarron in developmentseed/obstore!237 - Add contributor, performance, integrations docs by @kylebarron in developmentseed/obstore!227
- Add minio example by @kylebarron in developmentseed/obstore!241
Other¶
- Use manylinux 2_24 for aarch64 linux wheels by @kylebarron in developmentseed/obstore!225
New Contributors¶
- @vincentsarago made their first contribution in developmentseed/obstore!168
- @jessekrubin made their first contribution in developmentseed/obstore!173
Full Changelog: github.com/developmentseed/obstore/compare/py-v0.3.0...py-v0.4.0
[0.3.0] - 2025-01-16¶
New Features
¶
- Streaming uploads.
obstore.putnow supports iterable input, andobstore.put_asyncnow supports async iterable input. This means you can pass the output ofobstore.get_asyncdirectly intoobstore.put_async. by @kylebarron in developmentseed/obstore!54 - Allow passing config options directly as keyword arguments. Previously, you had to pass all options as a
dictinto theconfigparameter. Now you can pass the elements directly to the store constructor. by @kylebarron in developmentseed/obstore!144 - Readable file-like objects. Open a readable file-like object with
obstore.openandobstore.open_async. by @kylebarron in developmentseed/obstore!33 - Fsspec integration by @martindurant in developmentseed/obstore!63
- Prefix store by @kylebarron in developmentseed/obstore!117
- Python 3.13 wheels by @kylebarron in developmentseed/obstore!95
- Support python timedelta objects as duration config values by @kylebarron in developmentseed/obstore!146
- Add class constructors for store builders. Each store now has an
__init__method, for easier construction. by @kylebarron in developmentseed/obstore!141
Breaking changes
¶
-
get_range,get_range_async,get_ranges, andget_ranges_asyncnow use start/end instead of offset/length. This is for consistency with therangeoption ofobstore.get. by @kylebarron in developmentseed/obstore!71 -
Return
BytesfromGetResult.bytes()by @kylebarron in developmentseed/obstore!134
Bug fixes
¶
- boto3 region name can be None by @kylebarron in developmentseed/obstore!59
- add missing py.typed file by @gruebel in developmentseed/obstore!115
Documentation
¶
- FastAPI/Starlette example by @kylebarron in developmentseed/obstore!145
- Add conda installation doc to README by @kylebarron in developmentseed/obstore!78
- Document suggested lifecycle rules for aborted multipart uploads by @kylebarron in developmentseed/obstore!139
- Add type hint and documentation for requester pays by @kylebarron in developmentseed/obstore!131
- Add note that S3Store can be constructed without boto3 by @kylebarron in developmentseed/obstore!108
- HTTP Store usage example by @kylebarron in developmentseed/obstore!142
What's Changed¶
- Improved docs for from_url by @kylebarron in developmentseed/obstore!138
- Implement read_all for async iterable by @kylebarron in developmentseed/obstore!140
New Contributors¶
- @willemarcel made their first contribution in developmentseed/obstore!64
- @martindurant made their first contribution in developmentseed/obstore!63
- @norlandrhagen made their first contribution in developmentseed/obstore!107
- @gruebel made their first contribution in developmentseed/obstore!115
Full Changelog: 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.
listnow returns an async or sync generator. by @kylebarron in developmentseed/obstore!35 - Optionally return list result as arrow. The
return_arrowkeyword argument returns chunks fromlistas Arrow RecordBatches, which is faster than materializing Python dicts/lists. by @kylebarron in developmentseed/obstore!38 - Return buffer protocol object from
get_rangeandget_ranges. Enables zero-copy data exchange from Rust into Python. by @kylebarron in developmentseed/obstore!39 - Add put options. Enables custom tags and attributes, as well as "put if not exists". by @kylebarron in developmentseed/obstore!50
- Rename to obstore by @kylebarron in developmentseed/obstore!45
- Add custom exceptions. by @kylebarron in developmentseed/obstore!48
Full Changelog: github.com/developmentseed/obstore/compare/py-v0.1.0...py-v0.2.0
[0.1.0] - 2024-10-21¶
- Initial release.