GH-106037: Disarm os.PathLike
foot-shotgun in pathlib.PurePath
user subclasses
#106043
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
We made it possible to subclass
pathlib.PurePath
in a68e585, which landed in 3.12. However, user subclasses automatically inherit an__fspath__()
method, which may not be appropriate. For example, a user subclass may implement a "virtual" filesystem to provide access to a.zip
file or FTP server. But it would be highly surprising ifopen(FTPPath(...))
attempted to open a local file.This patch makes the
os.PathLike
interface opt-in forpathlib.PurePath
subclasses. In pathlib itself, we opt into theos.PathLike
interface forPurePosixPath
,PureWindowsPath
andPath
. AsPurePath
is not instantiable (you always get aPurePosixPath
orPureWindowsPath
object back), this is backwards compatible with 3.11.pathlib.PurePath
areos.PathLike
#106037