Skip to content

bpo-45382: test.pythoninfo: set wmic.exe encoding to OEM #30890

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

Merged
merged 1 commit into from
Jan 25, 2022
Merged

bpo-45382: test.pythoninfo: set wmic.exe encoding to OEM #30890

merged 1 commit into from
Jan 25, 2022

Conversation

vstinner
Copy link
Member

@vstinner vstinner commented Jan 25, 2022

Comment on lines +734 to +739
# When wmic.exe output is redirected to a pipe,
# it uses the OEM code page
proc = subprocess.Popen(["wmic", "os", "get", "Caption,Version", "/value"],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
encoding="oem",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some of Microsoft's tools support formatting output as XML or JSON, which can generally be parsed more reliably. For example:

import subprocess
import xml.etree.ElementTree as ET

p = subprocess.run('wmic.exe os get Caption,Version /format:rawxml', 
        capture_output=True, encoding='oem')
root = ET.fromstring(p.stdout)
caption = root.find('.//PROPERTY[@NAME="Caption"]/VALUE').text
version = root.find('.//PROPERTY[@NAME="Version"]/VALUE').text

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please propose a PR if you prefer to parse XML than plain text. I don't want to invest too much time in this code, since I'm not using Windows :-)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, maybe a more "correct" implementation is required if the function enters the stdlib platform module, but this PR is only about test.pythoninfo which is only used ... for tests ;-)

vstinner added a commit that referenced this pull request Jan 25, 2022
Add the following info to test.pythoninfo:

* windows.ver: output of the shell "ver" command
* windows.version and windows.version_caption: output of the
  "wmic os get Caption,Version /value" command.

(cherry picked from commit b0898f4)

* bpo-45382: test.pythoninfo: set wmic.exe encoding to OEM (GH-30890)

(cherry picked from commit cef0a54)
miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Jan 25, 2022
…H-30891)

Add the following info to test.pythoninfo:

* windows.ver: output of the shell "ver" command
* windows.version and windows.version_caption: output of the
  "wmic os get Caption,Version /value" command.

(cherry picked from commit b0898f4)

* bpo-45382: test.pythoninfo: set wmic.exe encoding to OEM (pythonGH-30890)

(cherry picked from commit cef0a54)
(cherry picked from commit 4a57fa2)

Co-authored-by: Victor Stinner <[email protected]>
ambv pushed a commit that referenced this pull request Mar 16, 2022
… (GH-30894)

Add the following info to test.pythoninfo:

* windows.ver: output of the shell "ver" command
* windows.version and windows.version_caption: output of the
  "wmic os get Caption,Version /value" command.

(cherry picked from commit b0898f4)

* bpo-45382: test.pythoninfo: set wmic.exe encoding to OEM (GH-30890)

(cherry picked from commit cef0a54)
(cherry picked from commit 4a57fa2)

Co-authored-by: Victor Stinner <[email protected]>
hello-adam pushed a commit to hello-adam/cpython that referenced this pull request Jun 2, 2022
…H-30891) (pythonGH-30894)

Add the following info to test.pythoninfo:

* windows.ver: output of the shell "ver" command
* windows.version and windows.version_caption: output of the
  "wmic os get Caption,Version /value" command.

(cherry picked from commit b0898f4)

* bpo-45382: test.pythoninfo: set wmic.exe encoding to OEM (pythonGH-30890)

(cherry picked from commit cef0a54)
(cherry picked from commit 4a57fa2)

Co-authored-by: Victor Stinner <[email protected]>
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.

4 participants