gh-84538: add strict argument to pathlib.PurePath.relative_to#19813
gh-84538: add strict argument to pathlib.PurePath.relative_to#19813miss-islington merged 17 commits into
Conversation
|
Thanks! I expected to be able to use Python 3.9 included an |
Sorry, something went wrong.
|
I don't know, a is_relative_to with that option would return always true because when you're allowed to traverse the tree structure every path is relative to the other (only exception being when one path is absolute and the other is not or if they are on different discs on windows) anyway if there are useful use cases that I'm missing let me know, I have no problem adding that functionality.
|
Sorry, something went wrong.
|
A what's new entry should go in What's New 3.11. |
Sorry, something went wrong.
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
|
Hi, I'm sorry but I'm not sure about the what's new entry, should I put it under Improved Modules > pathlib? Something like: |
Sorry, something went wrong.
barneygale
left a comment
There was a problem hiding this comment.
Looks good - a couple of comments on the docs.
Sorry, something went wrong.
This is indeed tricky to phrase! How about: |
Sorry, something went wrong.
domragusa
left a comment
There was a problem hiding this comment.
@barneygale I've added the what's new entry with the clearer language and fixed the documentation as you suggested. Thanks.
Sorry, something went wrong.
|
I'm trying to think if there's a better word than 'strict'. In other places, 'strict' usually refers to our behaviour when we get an error from the OS. In this case it's more to do with whether we tolerate the possibility of the path's meaning changing in our pure operation that can't ever raise Perhaps something like |
Sorry, something went wrong.
|
Yeah, strict doesn't give any clue about the actual function. I like walk_up, I'll change it to that tomorrow. |
Sorry, something went wrong.
|
Sorry for the long delay, I just updated the code to follow the suggestion you made about the name of the option. |
Sorry, something went wrong.
|
Aside from a small docs issue, this looks great to me. Really useful feature, nice implementation :) Others may want to chip in on the naming of |
Sorry, something went wrong.
|
Hey @domragusa , there has been further interest in this over on the Python discourse; any chance you could tweak the docs, fix the merge conflicts and retrigger the builds? |
Sorry, something went wrong.
|
I have made the requested changes; please review again |
Sorry, something went wrong.
|
Thanks for making the requested changes! @brettcannon: please review the changes made to this pull request. |
Sorry, something went wrong.
|
@domragusa: Status check is done, and it's a failure or timed out ❌. |
Sorry, something went wrong.
|
I'm not sure I understand the last comment, what status check has failed? Should I do anything else? |
Sorry, something went wrong.
|
Status check is done, and it's a success ✅. |
Sorry, something went wrong.
|
I'm very happy to see this being merged, thanks to @brettcannon and everyone else who helped along the way :) |
Sorry, something went wrong.
|
Maybe I‘m misunderstanding, but this was an incompatibility to path.relpath which is now fixed. Should it not be considered a bug, and the fix be back-ported to a few versions? |
Sorry, something went wrong.
|
I don't think anybody is currently relying on pathlib for this behaviour, in fact when I looked around for anwsers they were generally saying to use os.path.relpath and also the original developer told me it was the intended behaviour (see #84538), so I'm not convinced we should consider it as a bug. Anyway, if there are specific arguments for backporting it's fine by me. |
Sorry, something went wrong.
|
Ok, the table at the end of the pathlib doc was augmented, and relpath was listed with a comment. |
Sorry, something went wrong.
|
Hi With respect to the backporting, I took this pull request and created a small package out of it, following the backports package guidelines. I included some of the tests. https://pypi.org/project/backports-pathlib-relative-to/0.1.0/ https://github.com/zeehio/backports-pathlib-relative-to Issues and pull requests are welcome |
Sorry, something went wrong.
By default, :meth:
pathlib.PurePath.relative_todoesn't deal with paths that are not a direct prefix of the other, raising an exception in that instance. This change adds a walk_up parameter that can be set to allow for using..to calculate the relative path.example:
https://bugs.python.org/issue40358
Automerge-Triggered-By: GH:brettcannon