---
title: "fsspec Breaking Changes on PyPI | Since.dev"
description: "What each fsspec release removed, renamed or changed: 38 breaking changes in 11 versions on PyPI, each with its source."
canonical_url: https://since.dev/packages/pypi/fsspec
last_updated: 2026-06-16
---

# fsspec breaking changes

Every breaking API change we have recorded in fsspec on PyPI: 38 breaking changes in 11 versions. Below are its newest 6 versions, removals and renames first, each with its source.

Newest change June 16, 2026

## 2026.6.0

1 breaking change, first published June 16, 2026.

- **Signature changed** `fsspec.AbstractFileSystem.expand_path`  

Was def expand_path(self, path, recursive=False, maxdepth=None, \*\*kwargs); now def expand_path(self, path, recursive=False, maxdepth=None, assume_literal=False, \*\*kwargs). [pypi.org](https://pypi.org/project/fsspec/2026.6.0/)

## 2026.3.0

2 breaking changes, first published March 27, 2026.

- **Signature changed** `fsspec.implementations.sftp.SFTPFileSystem.put`  

Was def put(self, lpath, rpath, callback=None, \*\*kwargs); now def put(self, lpath, rpath, recursive=False, callback=DEFAULT_CALLBACK, maxdepth=None, \*\*kwargs). [pypi.org](https://pypi.org/project/fsspec/2026.3.0/)
- **Signature changed** `fsspec.implementations.sftp.SFTPFileSystem.put_file`  

Was def put_file(self, lpath, rpath, callback=DEFAULT_CALLBACK, mode='overwrite', \*\*kwargs); now def put_file(self, lpath, rpath, callback=None, \*\*kwargs). [pypi.org](https://pypi.org/project/fsspec/2026.3.0/)

## 2026.2.0

1 breaking change, first published February 5, 2026.

- **Signature changed** `fsspec.parquet.open_parquet_files`  

Was def open_parquet_files(path: list\[str\], mode: Literal\['rb'\] = 'rb', fs: None | fsspec.AbstractFileSystem = None, metadata=None, columns: None | list\[str\] = None, row_groups: None | list\[int\] = None, storage_options: None | dict = None... [pypi.org](https://pypi.org/project/fsspec/2026.2.0/)

## 2026.1.0

1 breaking change, first published January 9, 2026.

- **Removed** `fsspec.compression.zstandard_file`  

fsspec.compression.zstandard_file was removed in fsspec 2026.1.0 [pypi.org](https://pypi.org/project/fsspec/2026.1.0/)

## 2025.12.0

8 breaking changes, first published December 3, 2025.

- **Signature changed** `fsspec.caching.KnownPartsOfAFile.__init__`  

Was def \_\_init\_\_(self, blocksize: int, fetcher: Fetcher, size: int, data: dict\[tuple\[int, int\], bytes\] | None = None, strict: bool = True, \*\*\_: Any); now def \_\_init\_\_(self, blocksize: int, fetcher: Fetcher, size: int, data: dict\[tuple\[int... [pypi.org](https://pypi.org/project/fsspec/2025.12.0/)
- **Signature changed** `fsspec.implementations.asyn_wrapper.AsyncFileSystemWrapper`  

Was class AsyncFileSystemWrapper(AsyncFileSystem); now class AsyncFileSystemWrapper(AsyncFileSystem, ChainedFileSystem). [pypi.org](https://pypi.org/project/fsspec/2025.12.0/)
- **Signature changed** `fsspec.implementations.data.DataFileSystem.encode`  

Was @staticmethod def encode(data: bytes, mime: Optional\[str\] = None); now @staticmethod def encode(data: bytes, mime: str | None = None). [pypi.org](https://pypi.org/project/fsspec/2025.12.0/)
- **Signature changed** `fsspec.implementations.dirfs.DirFileSystem`  

Was class DirFileSystem(AsyncFileSystem); now class DirFileSystem(AsyncFileSystem, ChainedFileSystem). [pypi.org](https://pypi.org/project/fsspec/2025.12.0/)
- **Signature changed** `fsspec.implementations.http_sync.HTTPFileSystem.exists`  

Was def exists(self, path, \*\*kwargs); now def exists(self, path, strict=False, \*\*kwargs). [pypi.org](https://pypi.org/project/fsspec/2025.12.0/)
- **Signature changed** `fsspec.implementations.reference.AsyncFileSystemWrapper`  

Was class AsyncFileSystemWrapper(AsyncFileSystem); now class AsyncFileSystemWrapper(AsyncFileSystem, ChainedFileSystem). [pypi.org](https://pypi.org/project/fsspec/2025.12.0/)
- **Signature changed** `fsspec.json.FilesystemJSONDecoder.__init__`  

Was def \_\_init\_\_(self, \*, object_hook: Optional\[Callable\[\[dict\[str, Any\]\], Any\]\] = None, parse_float: Optional\[Callable\[\[str\], Any\]\] = None, parse_int: Optional\[Callable\[\[str\], Any\]\] = None, parse_constant: Optional\[Callable\[\[str\], Any\]\] =... [pypi.org](https://pypi.org/project/fsspec/2025.12.0/)
- **Signature changed** `fsspec.parquet.open_parquet_file`  

Was def open_parquet_file(path, mode='rb', fs=None, metadata=None, columns=None, row_groups=None, storage_options=None, strict=False, engine='auto', max_gap=64000, max_block=256000000, footer_sample_size=1000000, \*\*kwargs); now def... [pypi.org](https://pypi.org/project/fsspec/2025.12.0/)

## 2025.10.0

6 breaking changes, first published October 30, 2025.

- **Removed** `fsspec.conftest.CachingFileSystem`  

fsspec.conftest.CachingFileSystem was removed in fsspec 2025.10.0 [pypi.org](https://pypi.org/project/fsspec/2025.10.0/)
- **Removed** `fsspec.implementations.cached.AbstractFileSystem`  

fsspec.implementations.cached.AbstractFileSystem was removed in fsspec 2025.10.0 [pypi.org](https://pypi.org/project/fsspec/2025.10.0/)
- **Signature changed** `fsspec.implementations.cache_metadata.CachingFileSystem`  

Was class CachingFileSystem(AbstractFileSystem); now class CachingFileSystem(ChainedFileSystem). [pypi.org](https://pypi.org/project/fsspec/2025.10.0/)
- **Signature changed** `fsspec.implementations.cached.CachingFileSystem`  

Was class CachingFileSystem(AbstractFileSystem); now class CachingFileSystem(ChainedFileSystem). [pypi.org](https://pypi.org/project/fsspec/2025.10.0/)
- **Signature changed** `fsspec.implementations.http.HTTPFileSystem.protocol`  

Was protocol: str | tuple\[str, ...\]; now protocol. [pypi.org](https://pypi.org/project/fsspec/2025.10.0/)
- **Signature changed** `fsspec.implementations.webhdfs.WebHDFS.ls`  

Was def ls(self, path, detail=False); now def ls(self, path, detail=False, \*\*kwargs). [pypi.org](https://pypi.org/project/fsspec/2025.10.0/)

## Check your code

These are the changes. To see which of them reach your code, [scan a public repository](https://since.dev/scan.md), or have your coding agent call `check_code` with your manifest or lockfile over [MCP](https://since.dev/docs.md#mcp). [The API](https://since.dev/docs.md#api) reads every change in every version, not only the newest. On Team and up, a fix pull request opens for the changes that reach a connected repository. Nothing merges or deploys.

## Put your code on continuous management.

Scan a public repository now, or give your agent one line.

### See how out of date your code is.

[Scan a repository](https://since.dev/scan.md). Any public GitHub repository. No sign-in.

### Tell your agent what changed since it was trained.

`claude mcp add --transport http since https://api.since.dev/mcp`

---

Every page on this site as Markdown: https://since.dev/sitemap.md. For agents: https://since.dev/llms.txt.
