diff --git a/docs/changelog.md b/docs/changelog.md index 2aec75e..a133c06 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,5 +1,34 @@ # Changelog +## v0.9.0 (2025-01-28) + +This release includes the addition of globbing functionality, a rename of ParallelStoreReader to BlockStoreReader, improvements to file-like properties, and expanded user guide documentation covering xarray integration, globbing, caching, and debugging. + +### Breaking Changes + +- Rename ParallelStoreReader to BlockStoreReader by @maxrjones in https://github.com/virtual-zarr/obspec-utils/pull/44 + +### Features + +- Implement globbing in obspec_utils by @maxrjones in https://github.com/virtual-zarr/obspec-utils/pull/42 +- Start user guide with xarray section by @maxrjones in https://github.com/virtual-zarr/obspec-utils/pull/46 +- Add user guide section on globbing by @maxrjones in https://github.com/virtual-zarr/obspec-utils/pull/51 +- Add user guide section on debugging slow access by @maxrjones in https://github.com/virtual-zarr/obspec-utils/pull/53 +- Add user guide section on caching by @maxrjones in https://github.com/virtual-zarr/obspec-utils/pull/54 + +### Bug Fixes + +- Add closed, readable, seekable, writable properties by @maxrjones in https://github.com/virtual-zarr/obspec-utils/pull/52 +- fix: allow Head redirects by @maxrjones in https://github.com/virtual-zarr/obspec-utils/pull/49 + +### Chores + +- Add changelog by @maxrjones in https://github.com/virtual-zarr/obspec-utils/pull/45 +- Minor typing improvements by @maxrjones in https://github.com/virtual-zarr/obspec-utils/pull/47 +- Add functions used in docs to exported API by @maxrjones in https://github.com/virtual-zarr/obspec-utils/pull/48 + +**Full Changelog**: https://github.com/virtual-zarr/obspec-utils/compare/v0.8.0...v0.9.0 + ## v0.8.0 (2025-01-25) This release includes a redesign of sub-module structure, a significant bug fix in ParallelStoreReader, pickling support for CachingReadableStore, and the addition of the Head protocol to ReadableStore for more efficient file size determination. diff --git a/docs/user-guide/finding-files.md b/docs/user-guide/finding-files.md index 38f2713..48cf7e9 100644 --- a/docs/user-guide/finding-files.md +++ b/docs/user-guide/finding-files.md @@ -29,13 +29,13 @@ for f in files[:5]: ``` !!! warning "Use the class methods rather than `obstore` top-level functions" - When using `obspec_utils` wrappers like `CachingReadableStore`, call methods + When using `obspec_utils` wrappers like [`CachingReadableStore`][obspec_utils.wrappers.CachingReadableStore], call methods directly on the store (e.g., `store.list()`) rather than using `obstore` functions (e.g., `obstore.list(store)`). The wrappers implement the `obspec` protocol, which decouples them from specific store instances. `Obstore` top-level functions are tied to the specific stores implemented by `obstore`, so they will not work with the `obspec`-based wrappers provided by `obspec-utils`. ## Finding Files Matching a Pattern -When you need files matching specific criteria (e.g., all files from year 2100), use `glob`: +When you need files matching specific criteria (e.g., all files from year 2100), use [`glob`][obspec_utils.glob.glob]: ```python exec="on" source="above" session="find" result="code" from obspec_utils import glob @@ -76,7 +76,7 @@ for p in paths: ## Getting File Sizes and Dates -To get metadata (size, last modified time) along with paths, use `glob_objects`: +To get metadata (size, last modified time) along with paths, use [`glob_objects`][obspec_utils.glob.glob_objects]: ```python exec="on" source="above" session="find" result="code" from obspec_utils import glob_objects @@ -102,7 +102,7 @@ Listing files in cloud storage requires network requests. The more files the ser ### Use Specific Prefixes -The `glob` function automatically extracts the longest literal prefix from your pattern to minimize the files the server must enumerate: +The [`glob`][obspec_utils.glob.glob] function automatically extracts the longest literal prefix from your pattern to minimize the files the server must enumerate: | Pattern | Server lists from | Files enumerated | |---------|-------------------|------------------| @@ -123,7 +123,7 @@ glob(store, "NEX-GDDP/BCSD/rcp85/day/atmos/tasmax/r1i1p1/v1.0/*_2100.nc") ### Process Results Lazily -Both `glob` and `glob_objects` return iterators, so you can process results as they arrive without loading all paths into memory: +Both [`glob`][obspec_utils.glob.glob] and [`glob_objects`][obspec_utils.glob.glob_objects] return iterators, so you can process results as they arrive without loading all paths into memory: ```python exec="on" source="above" session="find" result="code" # Stop after finding 3 files (doesn't load all results) @@ -137,7 +137,7 @@ for path in glob(store, "NEX-GDDP/BCSD/rcp85/day/atmos/tasmax/r1i1p1/v1.0/*_2100 ## Async Usage -For async contexts, use `glob_async` and `glob_objects_async`: +For async contexts, use [`glob_async`][obspec_utils.glob.glob_async] and [`glob_objects_async`][obspec_utils.glob.glob_objects_async]: ```python exec="on" source="above" session="find" result="code" import asyncio