NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #982 most downloaded on PyPI
Backport of pathlib ABCs
Last release 12 months ago
10 Oct 2025
Release timing varies
gaps range from 3 weeks to 10 months
Nearly every release is documented
notes for 12 of 12 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
12 releases · first in 2023
Add JoinablePath.relative_to() and JoinablePath.is_relative_to().
Add JoinablePath.relative_to() and JoinablePath.is_relative_to().
Make vfsopen() try to call open(), like it did before 0.5.0.
Make vfsopen() try to call open(), like it did before 0.5.0.
One column per month.
Add vfspath(), which returns the virtual filesystem path as a string.
Add vfspath(), which returns the virtual filesystem path as a string.
Replace JoinablePath.__str__() abstract method with __vfspath__().
Replace magic_open() with vfsopen(). The new function takes the same arguments.
Replace ReadablePath.__open_rb__() abstract method with __open_reader__(), and remove buffering argument.
Replace WritablePath.__open_wb__() abstract method with __open_writer__(), and remove buffering and add mode arguments.
Set correct __name__ for ABCs and PathParser.
Set correct __name__ for ABCs and PathParser.
Emit encoding warnings from magic_open(), ReadablePath.read_text(), and WritablePath.write_text() at the correct stack level.
Emit encoding warnings from magic_open(), ReadablePath.read_text(), and WritablePath.write_text() at the correct stack level.
When magic_open() is called to open a path in binary mode, raise ValueError if any of the *encoding*, *errors* or *newline* arguments are given.
When magic_open() is called to open a path in binary mode, raise ValueError if any of the encoding, errors or newline arguments are given.
In ReadablePath.glob(), raise ValueError when given an empty pattern.
In ReadablePath.glob() and JoinablePath.full_match(), stop accepting JoinablePath objects as patterns. Only strings are allowed.
In ReadablePath.copy() and copy_into(), stop accepting strings as target paths. Only WritablePath objects are allowed.
Several months worth of upstream refactoring:
Several months worth of upstream refactoring:
Rename PurePathBase to JoinablePath.
Split PathBase into ReadablePath and WritablePath.
Replace stat() with info attribute and PathInfo protocol.
Remove many nonessential methods.
Add support for copying between path instances.
Drop support for Python 3.7 and 3.8.
- Add support for Python 3.7.
Add support for Python 3.7.
Rename PathModuleBase to ParserBase, and PurePathBase.pathmod to PurePathBase.parser.
Rename PathModuleBase to ParserBase, and PurePathBase.pathmod to PurePathBase.parser.
Add ParserBase.splitext().
Add PurePathBase.full_match().
Treat a single dot (".") as a valid file extension.
Revert match() back to 3.12 behaviour (no recursive wildcards).
Replace PathBase.glob(follow_symlinks=...) with recurse_symlinks=....
Suppress all OSError exceptions from PathBase.exists() and is_*() methods.
Disallow passing bytes to initialisers.
Improve walking and globbing performance.
Expand test coverage.
Clarify that we're using the PSF license.
Remove deprecation warnings and audit events.
Add PathModuleBase ABC to support path syntax customization.
Add CI. Thank you Edgar Ramírez Mondragón!
Return paths with trailing slashes if a glob pattern ends with a slash.
Return both files and directory paths if a glob pattern ends with **, rather than directories only.
Improve PathBase.resolve() performance by avoiding some path object allocations.
Remove PurePathBase.is_reserved().
Remove automatic path normalization. Specifically, the ABCs no longer convert alternate separators nor remove either dot or empty segments.
Remove caching of the path drive, root, tail, and string.
Remove deprecation warnings and audit events.
Improve globbing performance by avoiding re-initialising path objects.
Improve globbing performance by avoiding re-initialising path objects.
Add docs.
- Initial release.
Initial release.
Your coding agent can read these notes before it upgrades. Set up the MCP server →