Skip to content

Commit 07ae6f1

Browse files
authored
gh-150208: Avoid double-quoting string values in sysconfigdata (#150209)
String values from ``pyconfig.h`` were rendered into ``sysconfigdata`` variables, retaining the quotes.
1 parent 71cf313 commit 07ae6f1

3 files changed

Lines changed: 11 additions & 0 deletions

File tree

Lib/sysconfig/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -437,6 +437,7 @@ def parse_config_h(fp, vars=None):
437437
import re
438438
define_rx = re.compile("#define ([A-Z][A-Za-z0-9_]+) (.*)\n")
439439
undef_rx = re.compile("/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n")
440+
quoted_re = re.compile('^"(.*)"$')
440441

441442
while True:
442443
line = fp.readline()
@@ -445,6 +446,8 @@ def parse_config_h(fp, vars=None):
445446
m = define_rx.match(line)
446447
if m:
447448
n, v = m.group(1, 2)
449+
if mq := quoted_re.match(v):
450+
v = mq.group(1)
448451
try:
449452
if n in _ALWAYS_STR:
450453
raise ValueError

Lib/test/test_sysconfig.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,12 @@ def test_linux_ext_suffix(self):
576576
expected_suffixes = 'x86_64-linux-gnu.so', 'x86_64-linux-musl.so'
577577
self.assertEndsWith(suffix, expected_suffixes)
578578

579+
@unittest.skipIf(sysconfig.get_config_var('PY_BUILTIN_HASHLIB_HASHES') is None,
580+
'PY_BUILTIN_HASHLIB_HASHES required for this test')
581+
def test_PY_BUILTIN_HASHLIB_HASHES_in_vars(self):
582+
vars = sysconfig.get_config_vars()
583+
self.assertFalse(vars['PY_BUILTIN_HASHLIB_HASHES'].startswith('"'))
584+
579585
@unittest.skipUnless(sys.platform == 'android', 'Android-specific test')
580586
def test_android_ext_suffix(self):
581587
machine = platform.machine()
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Avoid double-quoting string values from ``pyconfig.h`` in ``sysconfigdata``
2+
variables.

0 commit comments

Comments
 (0)