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.PurePathin 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.zipfile or FTP server. But it would be highly surprising ifopen(FTPPath(...))attempted to open a local file.This patch makes the
os.PathLikeinterface opt-in forpathlib.PurePathsubclasses. In pathlib itself, we opt into theos.PathLikeinterface forPurePosixPath,PureWindowsPathandPath. AsPurePathis not instantiable (you always get aPurePosixPathorPureWindowsPathobject back), this is backwards compatible with 3.11.pathlib.PurePathareos.PathLike#106037