# What changed in cloudpathlib

> 11 changes in cloudpathlib 0.25 to 0.26 from its official release notes, upgrade guides and advisories: 2 breaking, 2 new APIs and options. Each one cited. Sources checked 2026-10-30. HTML: https://unstale.sh/pypi/cloudpathlib/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## cloudpathlib 0.26

### Breaking changes

- The minimum supported Python version is now 3.10; Python 3.9 is no longer supported. (0.26.0) — [release notes](https://github.com/drivendataorg/cloudpathlib/releases/tag/v0.26.0)

### Fixes and other changes

- Cloud paths can be pickled repeatedly without a ParseResult error. (0.26.0) — [release notes](https://github.com/drivendataorg/cloudpathlib/releases/tag/v0.26.0)
- CloudPath.mkdir(parent_mode=...) works across providers with Python 3.15. (0.26.0) — [release notes](https://github.com/drivendataorg/cloudpathlib/releases/tag/v0.26.0)
- Writes now upload when the local cache file and cloud file have the same modified time, avoiding a spurious error on the second close. (0.26.0) — [release notes](https://github.com/drivendataorg/cloudpathlib/releases/tag/v0.26.0)

## cloudpathlib 0.25

### Breaking changes

- Local targets that escape their base directory now raise CloudPathLocalPathTraversalError, preventing cloud object keys from writing outside the intended directory. (0.25.0) — [release notes](https://github.com/drivendataorg/cloudpathlib/releases/tag/v0.25.0)

### New APIs and options

- The new lazy keyword lists directories on demand, allowing callers using top_down=True to prune subtrees and avoid fetching their contents. (0.25.0) — [release notes](https://github.com/drivendataorg/cloudpathlib/releases/tag/v0.25.0)
- S3Client now supports addressing_style="virtual". (0.25.0) — [release notes](https://github.com/drivendataorg/cloudpathlib/releases/tag/v0.25.0)

### Performance

- Metadata retrieval now uses HeadObject instead of GetObject, so stat, etag, and size no longer open the object body. (0.25.0) — [release notes](https://github.com/drivendataorg/cloudpathlib/releases/tag/v0.25.0)

### Fixes and other changes

- Local mock paths now support presigned URLs, returning deterministic URLs with expires and signature query parameters instead of raising NotImplementedError. (0.25.0) — [release notes](https://github.com/drivendataorg/cloudpathlib/releases/tag/v0.25.0)
- S3 copy and move now forward copy-specific extra arguments such as CopySourceSSECustomerKey. (0.25.0) — [release notes](https://github.com/drivendataorg/cloudpathlib/releases/tag/v0.25.0)
- Metadata retrieval no longer raises KeyError when S3-compatible gateways omit ETag from HeadObject responses. (0.25.0) — [release notes](https://github.com/drivendataorg/cloudpathlib/releases/tag/v0.25.0)
