-
-
Notifications
You must be signed in to change notification settings - Fork 30.7k
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
zipfile.Path is not Path-like #99818
Comments
As explained in pandas-dev/pandas#49906 (comment), I don't think implementing |
It might help to hedge the documentation slightly. Maybe something like:
|
The question is, from your viewpoint as Python core developers, how could the situation be improved. As an example Maybe Or do you see a way that 3rd-party-libs like |
There's some subtlety (probably a little too much subtlety) in the docstring you link to there. The docstring says that Cc. @barneygale, for interest :) |
FWIW, I'm working towards making def read_excel(path):
if not isinstance(path, pathlib.AbstractPath):
path = pathlib.Path(path)
with path.open('rb') as f:
... Discussion here: https://discuss.python.org/t/make-pathlib-extensible/3428. |
The "pathlib-compatible" bit of the docstring should be changed to "similar to pathlib.Path" IMHO. Saying it's "compatible" is overselling it, particularly as zip paths aren't path-like! |
Apologies for triple-posting, I've been thinking about this :)
Why not the string representation of the archive member path? The IMHO this points to an overloading of what "path-like" means, that can be remedied by making it more granular. We could introduce "pure" analogues of |
My point is just that built-in |
It is probably more accurate to remove the phrase “pathlib-compatible” from the docs or replace it with something like “pathlib.Path-style” or “pathlib.Path-like”. |
I really appreciate that you folks invest so much energy in that topic. Please let me throw another question into the pit. What was the intention about I describe me use-case here; reading data-files (csv, xlsx) from a path object no matter if it is a regular file ( |
When designing Since from importlib.resources import as_file
def read_excel(traversable):
with as_file(traversable) as path:
with path.open('rb') as f:
... Improvements I'd like to see:
|
Wait - if you're using |
Bad example on my part. If you're only interested in the interface def read_excel(path):
if not isinstance(path, Traversable):
path = pathlib.Path(path)
with path.open('rb') as f:
... If you're looking for an interface more like pathlib's (so including stuff like |
I opened GH-101589 to fix the documentation. If the And again, please note that path-like objects are a completely different thing 😅 |
…H-101589) Automerge-Triggered-By: GH:FFY00
* main: (60 commits) pythongh-102056: Fix a few bugs in error handling of exception printing code (python#102078) pythongh-102011: use sys.exception() instead of sys.exc_info() in docs where possible (python#102012) pythongh-101566: Sync with zipp 3.14. (pythonGH-102018) pythonGH-99818: improve the documentation for zipfile.Path and Traversable (pythonGH-101589) pythongh-88233: zipfile: handle extras after a zip64 extra (pythonGH-96161) pythongh-101981: Apply HOMEBREW related environment variables (pythongh-102074) pythongh-101907: Stop using `_Py_OPCODE` and `_Py_OPARG` macros (pythonGH-101912) pythongh-101819: Adapt _io types to heap types, batch 1 (pythonGH-101949) pythongh-101981: Build macOS as recommended by the devguide (pythonGH-102070) pythongh-97786: Fix compiler warnings in pytime.c (python#101826) pythongh-101578: Amend PyErr_{Set,Get}RaisedException docs (python#101962) Misc improvements to the float tutorial (pythonGH-102052) pythongh-85417: Clarify behaviour on branch cuts in cmath module (python#102046) pythongh-100425: Update tutorial docs related to sum() accuracy (FH-101854) Add missing 'is' to `cmath.log()` docstring (python#102049) pythongh-100210: Correct the comment link for unescaping HTML (python#100212) pythongh-97930: Also include subdirectory in makefile. (python#102030) pythongh-99735: Use required=True in argparse subparsers example (python#100927) Fix incorrectly documented attribute in csv docs (python#101250) pythonGH-84783: Make the slice object hashable (pythonGH-101264) ...
* main: (225 commits) pythongh-102056: Fix a few bugs in error handling of exception printing code (python#102078) pythongh-102011: use sys.exception() instead of sys.exc_info() in docs where possible (python#102012) pythongh-101566: Sync with zipp 3.14. (pythonGH-102018) pythonGH-99818: improve the documentation for zipfile.Path and Traversable (pythonGH-101589) pythongh-88233: zipfile: handle extras after a zip64 extra (pythonGH-96161) pythongh-101981: Apply HOMEBREW related environment variables (pythongh-102074) pythongh-101907: Stop using `_Py_OPCODE` and `_Py_OPARG` macros (pythonGH-101912) pythongh-101819: Adapt _io types to heap types, batch 1 (pythonGH-101949) pythongh-101981: Build macOS as recommended by the devguide (pythonGH-102070) pythongh-97786: Fix compiler warnings in pytime.c (python#101826) pythongh-101578: Amend PyErr_{Set,Get}RaisedException docs (python#101962) Misc improvements to the float tutorial (pythonGH-102052) pythongh-85417: Clarify behaviour on branch cuts in cmath module (python#102046) pythongh-100425: Update tutorial docs related to sum() accuracy (FH-101854) Add missing 'is' to `cmath.log()` docstring (python#102049) pythongh-100210: Correct the comment link for unescaping HTML (python#100212) pythongh-97930: Also include subdirectory in makefile. (python#102030) pythongh-99735: Use required=True in argparse subparsers example (python#100927) Fix incorrectly documented attribute in csv docs (python#101250) pythonGH-84783: Make the slice object hashable (pythonGH-101264) ...
* main: (76 commits) Fix syntax error in struct doc example (python#102160) pythongh-99108: Import MD5 and SHA1 from HACL* (python#102089) pythonGH-101777: `queue.rst`: use 2 spaces after a period to be consistent. (python#102143) Few coverage nitpicks for the cmath module (python#102067) pythonGH-100982: Restrict `FOR_ITER_RANGE` to a single instruction to allow instrumentation. (pythonGH-101985) pythongh-102135: Update turtle docs to rename wikipedia demo to rosette (python#102137) pythongh-99942: python.pc on android/cygwin should link to libpython per configure.ac (pythonGH-100356) pythongh-95672 fix typo SkitTest to SkipTest (pythongh-102119) pythongh-101936: Update the default value of fp from io.StringIO to io.BytesIO (pythongh-102100) pythongh-102008: simplify test_except_star by using sys.exception() instead of sys.exc_info() (python#102009) pythongh-101903: Remove obsolete undefs for previously removed macros Py_EnterRecursiveCall and Py_LeaveRecursiveCall (python#101923) pythongh-100556: Improve clarity of `or` docs (python#100589) pythongh-101777: Make `PriorityQueue` docs slightly clearer (python#102026) pythongh-101965: Fix usage of Py_EnterRecursiveCall return value in _bisectmodule.c (pythonGH-101966) pythongh-101578: Amend exception docs (python#102057) pythongh-101961 fileinput.hookcompressed should not set the encoding value for the binary mode (pythongh-102068) pythongh-102056: Fix a few bugs in error handling of exception printing code (python#102078) pythongh-102011: use sys.exception() instead of sys.exc_info() in docs where possible (python#102012) pythongh-101566: Sync with zipp 3.14. (pythonGH-102018) pythonGH-99818: improve the documentation for zipfile.Path and Traversable (pythonGH-101589) ...
… Traversable (pythonGH-101589) Automerge-Triggered-By: GH:FFY00 (cherry picked from commit 84181c1) Co-authored-by: Filipe Laíns <lains@riseup.net>
Stumbled upon this discussion while dealing with a similar issue. So, maybe I can contribute a different angle on this.
Depending on the way the package is distributed, |
…sable (pythonGH-101589) Automerge-Triggered-By: GH:FFY00
…sable (pythonGH-101589) Automerge-Triggered-By: GH:FFY00
This is about
zipfile.Path
. The doc says it is compatible topathlib.Path
. But it seems that is not for 100% because it doesn't derive frompathlib.PurePath
and can treated as Path-like in all situations.I was redirected from
pandas
where I opened an issue about the fact thatpandas.read_excel()
does accept path-like objects but notzipfile.Path
. It was explained to me thatzipfile.Path
doesn't implement__fspath__
and that is the problem.Linked PRs
The text was updated successfully, but these errors were encountered: