Skip to content

Conversation

barneygale
Copy link
Contributor

@barneygale barneygale commented May 16, 2025

Rename pathlib._os.magic_open() to vfsopen(). The new name is a bit less abstract, and it aligns with the vfspath() method added in 5dbd27d.

Per discussion on discourse1, adjust vfsopen() so that the following methods may be called:

  • __open_reader__()
  • __open_writer__(mode)
  • __open_updater__(mode)

These three methods return readable, writable, and full duplex file objects respectively. In the 'writer' method, mode is either 'a', 'w' or 'x'. In the 'updater' method, mode is either 'r' or 'w'.

In the pathlib ABCs, replace ReadablePath.__open_rb__() with __open_reader__(), and replace WritablePath.__open_wb__() with __open_writer__().

Footnotes

  1. https://discuss.python.org/t/open-able-objects/90238

Rename `pathlib._os.magic_open()` to `vfsopen()`. The new name is a bit
less abstract, and it aligns with the `vfspath()` method added in 5dbd27d.

Per discussion on discourse[^1], adjust `vfsopen()` so that the following
methods may be called:

- `__open_reader__()`
- `__open_writer__(mode)`
- `__open_updater__(mode)`

These three methods return readable, writable, and full duplex file objects
respectively. In the 'writer' method, *mode* is either 'a', 'w' or 'x'. In
the 'updater' method, *mode* is either 'r' or 'w'.

Also stop trying built-in `open()` first. I don't know whether this is a
good idea or not, so it's best to leave it out for now.

In the pathlib ABCs, replace `ReadablePath.__open_rb__()` with
`__open_reader__()`, and replace `WritablePath.__open_wb__()` with
`__open_writer__()`.

[^1]: https://discuss.python.org/t/open-able-objects/90238
@barneygale barneygale marked this pull request as ready for review May 16, 2025 18:11
@barneygale
Copy link
Contributor Author

Thanks for the review @encukou, sorry it took me ages to address your feedback.

@barneygale barneygale requested a review from encukou July 20, 2025 16:39
barneygale added a commit to barneygale/cpython that referenced this pull request Jul 20, 2025
@barneygale
Copy link
Contributor Author

Thanks for the review @efimov-mikhail, much appreciated

@barneygale barneygale merged commit 805e336 into python:main Sep 12, 2025
43 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants