Skip to content

Releases: kmsk99/fs-next

FS Next 0.1.1

Choose a tag to compare

@kmsk99 kmsk99 released this 03 Oct 15:58

Published upstream compatibility verification

The reference is the latest actual PyPI fs==2.4.16 wheel and sdist. Both hashes were checked, and all 57 Python modules in the two artifacts match byte for byte. FS Next retains all original modules and 730 publicly named definitions/constructors/context-manager methods, with no incompatible argument signatures.

Changes

  • Run the complete published original test suite, including its original fs.test contract helper, against the installed FS Next candidate. No assertions are removed: four discovery mocks are retargeted, and the legacy multiprocessing fixture is run last and joined to avoid interference from the old FTP fixture.
  • Restore the original scandir installation extra; supported Python versions already provide os.scandir.
  • Resolve the Python 3.15 FTPS/hash failure: create hash objects in a short-lived worker thread so failed OpenSSL algorithm lookup cannot contaminate the caller's TLS error state. Preserve supported algorithm aliases and exception types.
  • Make the original upstream suite on all three operating systems and the full Python 3.15 preview matrix mandatory for publishing.

Verification

  • Original PyPI suite on the installed candidate: 2,400 passed, 29 capability/platform skips on macOS Python 3.10.
  • Modern full suite: 2,760 passed, 30 skips on each local CPython 3.10–3.15rc1; the installed 3.15 wheel passes the same suite.
  • Original/candidate installed behavior comparison, no-setuptools wheel smoke, S3 migration and pyfatfs probes pass.
  • Required remote checks cover Linux/macOS/Windows on Python 3.10–3.14, original PyPI tests on all three OSes, plugin probes, API/behavior parity, and Python 3.15 preview. Publishing also validates docs, artifacts and the installed-wheel suite.
python -m pip install fs-next==0.1.1

Use a fresh environment; fs and fs-next must not coexist. Python 3.10 remains the minimum. The 3.15 checks use release candidates. External S3/SSH plugins are not built-in features of the original distribution, and live services/arbitrary plugins remain outside this test evidence.

Full audit and feature-to-test mapping · Migration guide

FS Next 0.1.0

Choose a tag to compare

@kmsk99 kmsk99 released this 03 Oct 15:29

First stable FS Next release

FS Next is an independent maintenance fork of PyFilesystem2. Version 0.1.0 keeps the fs import and fs.opener entry-point group, preserves the original MIT license and Git history, and supports CPython 3.10 onward.

Compatibility audit

  • All 57 Python module paths and 730 publicly named definitions/constructors/context-manager methods from published fs==2.4.16 are retained, with no incompatible argument signatures. The count includes reusable test helpers and internal modules.
  • Installed upstream and candidate packages produced identical results for the deterministic filesystem behavior probe, including all 14 built-in opener registrations.
  • Memory, local, temporary, application, ZIP/TAR, mount, multi-filesystem, subfilesystem, wrappers, walking/globbing and utility APIs remain available and covered by inherited tests.
  • Local source and installed-wheel suites: 2,757 passed, 30 skipped. Coverage: 92.77% statements, 86.07% branches.
  • Required release checks cover Linux/macOS/Windows on Python 3.10–3.14, upstream API/behavior parity, S3 dependency migration and pyfatfs. Python 3.15 preview is checked separately.

Fixes and maintenance

  • Remove runtime setuptools/pkg_resources dependency while retaining namespace extensions and opener discovery.
  • Correct modern Python URL quoting, FTP cleanup and date parsing, and deprecated UTC timestamp construction.
  • Fix streamed FTPS worker uploads by completing TLS shutdown before awaiting transfer completion. Seeking after a write also waits for completion, fixing stale reads on Windows. An encrypted loopback contract suite and failure-cleanup regressions cover these fixes.
  • Adapt the documentation and migration instructions; build docs with warnings treated as errors.

Installation and scope

python -m pip install fs-next==0.1.0

Use a fresh environment. Do not install fs and fs-next together; they own overlapping files. External packages declaring a dependency on fs need a metadata migration. Python versions below 3.10 are outside the support range.

FTPS verification uses a loopback server. S3 uses a locally adapted plugin and an emulator; pyfatfs is an API probe. This release does not claim universal hosted-server, live AWS, SSH or third-party plugin compatibility.

Detailed release audit · Migration guide · Support policy

Thanks to Will McGugan and all PyFilesystem2 contributors whose implementation, tests and documentation this fork preserves.

Known preview limitation

Python 3.15rc2 has an FTPS/hash error-path failure on all three operating systems, also reproduced with the standard-library FTP_TLS client on 3.15rc1. Full 3.15 compatibility is not yet verified. Python 3.10–3.14 pass all required checks. See support policy.

FS Next 0.1.0a1

FS Next 0.1.0a1 Pre-release
Pre-release

Choose a tag to compare

@kmsk99 kmsk99 released this 03 Oct 14:40

First independent FS Next alpha, based on PyFilesystem2 commit 77a8562785fc37cb2e30bdcd39c133097ba62dce. Original MIT license and contributor history are retained.

Changes

  • Keep the fs API and fs.opener plugin group while removing the runtime setuptools/pkg_resources dependency.
  • Use standard-library namespace handling and entry-point discovery.
  • Fix absolute filesystem URL quoting on Python 3.14.
  • Fix FTP finalization blocking a server thread, close failed opener connections and avoid opening connections during cleanup.
  • Modernize FTP integration tests and fix stream ownership in inherited I/O tests.
  • Add installed-wheel checks and a real pyfatfs FAT12 image round-trip probe.

Installation

Use a fresh Python 3.10+ virtual environment:

python -m pip install fs-next==0.1.0a1

Do not install fs and fs-next together: both provide the fs package. A dependency declared on fs is not satisfied by fs-next. The pyfatfs probe checks API behavior with --no-deps; downstream dependency metadata still needs migration.

Validation and limits

The release workflow gates publication on the full suite on Linux, macOS and Windows with Python 3.10, 3.12 and 3.14, plugin probes, distribution validation and a clean-wheel installation test. GitHub CI macOS/Python 3.14 results: 2,661 passed, 29 skipped, with unraisable and thread exceptions treated as errors.

This is an alpha for evaluation. Hosted FTP services, arbitrary third-party plugins and production workloads are not certified. Historical upstream docs may retain old installation instructions. TestPyPI was not used; see docs/fs-next-status.md for scope and remaining warnings.

Pre-release compatibility gate: https://github.com/kmsk99/fs-next/actions/runs/37130264395