Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

GH-128520: Makepathlib._abc.WritablePath a sibling ofReadablePath#129014

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
barneygale merged 3 commits intopython:mainfrombarneygale:gh-128520-fix-inheritance
Jan 21, 2025

Conversation

barneygale
Copy link
Contributor

@barneygalebarneygale commentedJan 19, 2025
edited
Loading

In the private pathlib ABCs, support write-only virtual filesystems by makingWritablePath inherit directly fromJoinablePath, rather than subclassingReadablePath. There are two complications:

Problem 1:ReadablePath.open() applies to both reading and writing

Solution: a newpathlib._abc.magic_open() function replaces theopen() method, which is dropped from the ABCs but remains inpathlib.Path. The function works likeio.open(), but additionally accepts objects with__open_rb__() or__open_wb__() methods as appropriate for the mode. These new dunders are made abstract methods ofReadablePath andWritablePath respectively. If the pathlib ABCs are made public, we could consider blessing an "openable" protocol and supporting it inio.open(), removing the need forpathlib._abc.magic_open().

Problem 2:ReadablePath.copy is secretly an object that supports theread side of copying, whereasWritablePath.copy is a subclass additionally supporting thewrite side

Solution:ReadablePath.copy becomes a true method, whereasWritablePath.copy is deleted. A newReadablePath._copy_reader property provides aCopyReader object, and similarlyWritablePath._copy_writer is aCopyWriter object. OnceGH-125413 is resolved, we'll be able to move theCopyReader functionality intoReadablePath.info and eliminateReadablePath._copy_reader.

…blePath`In the private pathlib ABCs, support write-only virtual filesystems bymaking `WritablePath` inherit directly from `JoinablePath`, rather thansubclassing `ReadablePath`.There are two complications:- `ReadablePath.open()` applies to both reading and writing- `ReadablePath.copy` is secretly an object that supports the *read* side  of copying, whereas `WritablePath.copy` is a different kind of object  supporting the *write* sideWe untangle these as follow:- A new `pathlib._abc.magic_open()` function replaces the `open()` method,  which is dropped from the ABCs but remains in `pathlib.Path`. The  function works like `io.open()`, but additionally accepts objects with  `__open_rb__()` or `__open_wb__()` methods as appropriate for the mode.  These new dunders are made abstract methods of `ReadablePath` and  `WritablePath` respectively.  If the pathlib ABCs are made public, we  could consider blessing an "openable" protocol and supporting it in  `io.open()`, removing the need for `pathlib._abc.magic_open()`.- `ReadablePath.copy` becomes a true method, whereas `WritablePath.copy` is  deleted. A new `ReadablePath._copy_reader` property provides a  `CopyReader` object, and similarly `WritablePath._copy_writer` is a  `CopyWriter` object. OncepythonGH-125413 is resolved, we'll be able to move  the `CopyReader` functionality into `ReadablePath.info` and eliminate  `ReadablePath._copy_reader`.
@barneygalebarneygale merged commit01d9150 intopython:mainJan 21, 2025
37 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Reviewers
No reviews
Assignees
No one assigned
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

1 participant
@barneygale

[8]ページ先頭

©2009-2025 Movatter.jp