Skip to content
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

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

Merged
merged 1 commit into from Jan 25, 2022

Conversation

vstinner
Copy link
Member

@vstinner vstinner commented Jan 25, 2022

@vstinner vstinner merged commit cef0a54 into python:main Jan 25, 2022
11 checks passed
@vstinner vstinner deleted the wmic_oem branch Jan 25, 2022
# 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

@eryksun eryksun Jan 25, 2022

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

@vstinner vstinner Jan 25, 2022

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

@vstinner vstinner Jan 25, 2022

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 <vstinner@python.org>
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 <vstinner@python.org>
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 <vstinner@python.org>
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.

None yet

4 participants