gh-102511: Add C implementation of os.path.splitroot()#118089
Conversation
zooba
left a comment
There was a problem hiding this comment.
Great looking change! As Erlend pointed out, a couple of robustness things to check, and there's a potential behaviour change that's worth validating and describing in Doc\whatsnew\3.13.rst and possibly in other parts of the documentation.
Sorry, something went wrong.
…e-102511.qDEB66.rst Co-authored-by: Steve Dower <steve.dower@microsoft.com>
Co-authored-by: Steve Dower <steve.dower@microsoft.com>
|
Oh, come on, why must argclinic raise an error here? That isn't useful: |
Sorry, something went wrong.
Oh right, I forgot about this behaviour of argument clinic 😞 Might be a good reason to go to Alternatively, you could handle the |
Sorry, something went wrong.
My implementation returned a pointer to the |
Sorry, something went wrong.
|
It might just be my laptop or because I'm comparing with 3.12. (there doesn't seem to be a way to have 2 builds at the same time) |
Sorry, something went wrong.
|
OK, how's the build going? |
Sorry, something went wrong.
You can use worktrees. Anyway, I still have my implementation, but there's no need to delve further into the comparison because the reason is obvious. I was testing the builtin function directly, not a wrapper function that called It's 1.76 times faster without the wrapper. |
Sorry, something went wrong.
Could you explain how I can use them?
Yeah, that matches the performance when I used I tried to work around the first issue by modifying |
Sorry, something went wrong.
|
Here's a brief overview of worktrees in the developer's guide: https://devguide.python.org/getting-started/git-boot-camp/#git-worktree
In another issue, the implementation of |
Sorry, something went wrong.
Co-authored-by: Eryk Sun <eryksun@gmail.com>
|
Let's leave |
Sorry, something went wrong.
eryksun
left a comment
There was a problem hiding this comment.
LGTM. Thanks, nineteendo.
Sorry, something went wrong.
|
That's quorum, thanks @nineteendo for bearing with us, and congrats on landing the patch! |
Sorry, something went wrong.
⚠️⚠️⚠️ Buildbot failure ⚠️⚠️⚠️Hi! The buildbot iOS ARM64 Simulator 3.x has failed when building commit 10bb90e. What do you need to do:
You can take a look at the buildbot page here: https://buildbot.python.org/all/#builders/1380/builds/87 Failed tests:
Failed subtests:
Summary of the results of the build (if available): == Click to see traceback logsTraceback (most recent call last):
File "/Users/buildbot/Library/Developer/XCTestDevices/46780DAB-3371-45CA-A1E6-5178548A2DAA/data/Containers/Bundle/Application/2E63ACC7-4F0C-40C2-B867-2CAE5EAFD03D/iOSTestbed.app/python/lib/python3.13/test/test_os.py", line 2369, in test_fpathconf
self.check(os.pathconf, "PC_NAME_MAX")
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/buildbot/Library/Developer/XCTestDevices/46780DAB-3371-45CA-A1E6-5178548A2DAA/data/Containers/Bundle/Application/2E63ACC7-4F0C-40C2-B867-2CAE5EAFD03D/iOSTestbed.app/python/lib/python3.13/test/test_os.py", line 2293, in check
f(os_helper.make_bad_fd(), *args, **kwargs)
~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: unrecognized configuration name
|
Sorry, something went wrong.
|
Hmm, it didn't fail in the previous commit: https://buildbot.python.org/all/#/builders/1380/builds/86 |
Sorry, something went wrong.
|
This seems unrelated, and if it's only iOS, then we can ignore it. That buildbot has only just started running, and will be flushing out random issues for a little while. |
Sorry, something went wrong.
|
Eryk, can we backport this to 3.12 to fix the bug with |
Sorry, something went wrong.
|
Please add a unittest coverage of both the Python and C versions so that we ensure their behavior is the same. |
Sorry, something went wrong.
|
@gpshead, they both get tested as long as tests run on at least one POSIX system and one Windows system. The Python fallback implementation is only defined if the C version can't be imported. Thus the fallback for |
Sorry, something went wrong.
sobolevn
left a comment
There was a problem hiding this comment.
This PR also changes first parameter name. It is now:
pfor python versionpathfor C version
Sorry, something went wrong.
|
Is this intentional? Does it need addressing before 3.13.0 in two weeks? |
Sorry, something went wrong.
|
I would prefer to address this, because:
|
Sorry, something went wrong.
|
I will open a PR in a moment. |
Sorry, something went wrong.
Benchmark
ntpath.py