]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-150208: Avoid double-quoting string values in sysconfigdata (#150209)
authorStefano Rivera <stefano@rivera.za.net>
Mon, 25 May 2026 12:30:07 +0000 (05:30 -0700)
committerGitHub <noreply@github.com>
Mon, 25 May 2026 12:30:07 +0000 (13:30 +0100)
String values from ``pyconfig.h`` were rendered into ``sysconfigdata``
variables, retaining the quotes.

Lib/sysconfig/__init__.py
Lib/test/test_sysconfig.py
Misc/NEWS.d/next/Core_and_Builtins/2026-05-21-21-04-43.gh-issue-150208.VOkxRG.rst [new file with mode: 0644]

index 298256a5b23a9c79d53868bde311c73fae9eafb1..719b306b02b6e385f3a707cd3f8fb1e165fe0944 100644 (file)
@@ -437,6 +437,7 @@ def parse_config_h(fp, vars=None):
     import re
     define_rx = re.compile("#define ([A-Z][A-Za-z0-9_]+) (.*)\n")
     undef_rx = re.compile("/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n")
+    quoted_re = re.compile('^"(.*)"$')
 
     while True:
         line = fp.readline()
@@ -445,6 +446,8 @@ def parse_config_h(fp, vars=None):
         m = define_rx.match(line)
         if m:
             n, v = m.group(1, 2)
+            if mq := quoted_re.match(v):
+                v = mq.group(1)
             try:
                 if n in _ALWAYS_STR:
                     raise ValueError
index e6433f76a977b3b16581b5e71a2caa39361d22fe..e6f99581f0b7a6608fe2d7a48b89d933b1224481 100644 (file)
@@ -576,6 +576,12 @@ class TestSysConfig(unittest.TestCase, VirtualEnvironmentMixin):
                 expected_suffixes = 'x86_64-linux-gnu.so', 'x86_64-linux-musl.so'
             self.assertEndsWith(suffix, expected_suffixes)
 
+    @unittest.skipIf(sysconfig.get_config_var('PY_BUILTIN_HASHLIB_HASHES') is None,
+                     'PY_BUILTIN_HASHLIB_HASHES required for this test')
+    def test_PY_BUILTIN_HASHLIB_HASHES_in_vars(self):
+        vars = sysconfig.get_config_vars()
+        self.assertFalse(vars['PY_BUILTIN_HASHLIB_HASHES'].startswith('"'))
+
     @unittest.skipUnless(sys.platform == 'android', 'Android-specific test')
     def test_android_ext_suffix(self):
         machine = platform.machine()
diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-05-21-21-04-43.gh-issue-150208.VOkxRG.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-05-21-21-04-43.gh-issue-150208.VOkxRG.rst
new file mode 100644 (file)
index 0000000..e9bc1d9
--- /dev/null
@@ -0,0 +1,2 @@
+Avoid double-quoting string values from ``pyconfig.h`` in ``sysconfigdata``
+variables.