gh-129294: use winapi to determine win version before invoking cmd.exe#129295
gh-129294: use winapi to determine win version before invoking cmd.exe#129295tomergert wants to merge 1 commit intopython:mainfrom
Conversation
…before trying to create a process using cmd.exe ver"
|
Most changes to Python require a NEWS entry. Add one using the blurb_it web app or the blurb command-line tool. If this change has little impact on Python users, wait for a maintainer to apply the |
| """ | ||
|
|
||
| __version__ = '1.0.9' | ||
| __version__ = '1.0.10' |
There was a problem hiding this comment.
I don't think this should be updated?
| __version__ = '1.0.10' | |
| __version__ = '1.0.9' |
It was updated a couple of months ago in #122547, but the previous change was 10 years ago (b9f4fea), and there have been lots of updates in the past decade that didn't change it:
https://github.com/python/cpython/commits/main/Lib/platform.py
There was a problem hiding this comment.
Is the module __version__ attribute really still needed? I thought that these were obsolete. If kept, is the use defined anywhere in a manner that would say when to bump it?
There was a problem hiding this comment.
As I understand it just wasn't kept properly. Each change should increase the version (path, minor, major as needed).
|
The issue quoted existing code |
I think we should remove this code completely, but if not it will be better to stay just with |
zooba
left a comment
There was a problem hiding this comment.
We should avoid using ctypes here, and use a native function. sys.getwindowsversion already exists and is already used in this code, and WMI gets the most accurate result and is tried first.
There is no need for this change, but at the very least, it should not use ctypes and should not use kernel mode APIs when user mode ones exist.
|
A Python core developer has requested some changes be made to your pull request before we can consider merging it. If you could please address their requests along with any other requests in other reviews from core developers that would be appreciated. Once you have made the requested changes, please leave a comment on this pull request containing the phrase |
|
That said, the actual executable that is run could be improved. Explicitly launching |
Hmm, lemme address.
After all I think that:
Thank you ! |
|
You should propose a PR that removes the subprocess functionality then. It's already fallback code, so it doesn't need a replacement - we can simply say that if WMI fails, you won't get the version number (or you may get one that reflects the configured compatibility mode, rather than reality). As a policy, we don't use |
Not really true. We have platforms that require it. Including Regardless, when possible it is polite to make use of ctypes conditional with some form of lesser fallback code. |
Which is an acknowledged hack to get it released, and the authors have "promised" to port it as soon as they can (and I suspect a lot of their perf issues will disappear once they do).
This PR is the fallback code ;) We already have multiple native functions for this functionality, each with their own quirks. We really don't need another one, certainly not if it's breaking multiple of our stdlib policies like this. |
Improve platform module: use rtlGetVersion to determine win version before trying to use cmd.exe