Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions docs/changelog.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
12 changes: 6 additions & 6 deletions docs/user-guide/finding-files.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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 |
|---------|-------------------|------------------|
Expand All @@ -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)
Expand All @@ -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
Expand Down
Loading