diff options
-rw-r--r-- | Lib/distutils/sysconfig.py | 2 | ||||
-rw-r--r-- | Lib/sysconfig.py | 84 | ||||
-rw-r--r-- | Lib/test/test_sysconfig.py | 8 |
3 files changed, 54 insertions, 40 deletions
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py index 2561f57..4a8629e 100644 --- a/Lib/distutils/sysconfig.py +++ b/Lib/distutils/sysconfig.py @@ -9,7 +9,7 @@ Written by: Fred L. Drake, Jr. Email: <fdrake@acm.org> **This module has been moved out of Distutils and will be removed from -Python in the next version (3.2)** +Python in the next version (3.3)** """ __revision__ = "$Id$" diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py index df65d8c..4554003 100644 --- a/Lib/sysconfig.py +++ b/Lib/sysconfig.py @@ -239,49 +239,12 @@ def _parse_makefile(filename, vars=None): vars.update(done) return vars -def parse_config_h(fp, vars=None): - """Parse a config.h-style file. - - A dictionary containing name/value pairs is returned. If an - optional dictionary is passed in as the second argument, it is - used instead of a new dictionary. - """ - import re - if vars is None: - vars = {} - define_rx = re.compile("#define ([A-Z][A-Za-z0-9_]+) (.*)\n") - undef_rx = re.compile("/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n") - - while True: - line = fp.readline() - if not line: - break - m = define_rx.match(line) - if m: - n, v = m.group(1, 2) - try: v = int(v) - except ValueError: pass - vars[n] = v - else: - m = undef_rx.match(line) - if m: - vars[m.group(1)] = 0 - return vars def _get_makefile_filename(): if _PYTHON_BUILD: return os.path.join(_PROJECT_BASE, "Makefile") return os.path.join(get_path('stdlib'), "config", "Makefile") -def get_config_h_filename(): - if _PYTHON_BUILD: - if os.name == "nt": - inc_dir = os.path.join(_PROJECT_BASE, "PC") - else: - inc_dir = _PROJECT_BASE - else: - inc_dir = get_path('platinclude') - return os.path.join(inc_dir, 'pyconfig.h') def _init_posix(vars): """Initialize the module as appropriate for POSIX systems.""" @@ -339,10 +302,55 @@ def _init_non_posix(vars): # public APIs # + +def parse_config_h(fp, vars=None): + """Parse a config.h-style file. + + A dictionary containing name/value pairs is returned. If an + optional dictionary is passed in as the second argument, it is + used instead of a new dictionary. + """ + import re + if vars is None: + vars = {} + define_rx = re.compile("#define ([A-Z][A-Za-z0-9_]+) (.*)\n") + undef_rx = re.compile("/[*] #undef ([A-Z][A-Za-z0-9_]+) [*]/\n") + + while True: + line = fp.readline() + if not line: + break + m = define_rx.match(line) + if m: + n, v = m.group(1, 2) + try: v = int(v) + except ValueError: pass + vars[n] = v + else: + m = undef_rx.match(line) + if m: + vars[m.group(1)] = 0 + return vars + +def get_config_h_filename(): + """Returns the path of pyconfig.h.""" + if _PYTHON_BUILD: + if os.name == "nt": + inc_dir = os.path.join(_PROJECT_BASE, "PC") + else: + inc_dir = _PROJECT_BASE + else: + inc_dir = get_path('platinclude') + return os.path.join(inc_dir, 'pyconfig.h') + def get_scheme_names(): - return _INSTALL_SCHEMES.keys() + """Returns a tuple containing the schemes names.""" + schemes = list(_INSTALL_SCHEMES.keys()) + schemes.sort() + return tuple(schemes) def get_path_names(): + """Returns a tuple containing the paths names.""" return _SCHEME_KEYS def get_paths(scheme=_get_default_scheme(), vars=None, expand=True): diff --git a/Lib/test/test_sysconfig.py b/Lib/test/test_sysconfig.py index 8222aaf..0f8f89a 100644 --- a/Lib/test/test_sysconfig.py +++ b/Lib/test/test_sysconfig.py @@ -15,7 +15,8 @@ from test.support import run_unittest, TESTFN import sysconfig from sysconfig import (get_paths, get_platform, get_config_vars, get_path, get_path_names, _INSTALL_SCHEMES, - _get_default_scheme, _expand_vars) + _get_default_scheme, _expand_vars, + get_scheme_names) class TestSysConfig(unittest.TestCase): @@ -232,6 +233,11 @@ class TestSysConfig(unittest.TestCase): config_h = sysconfig.get_config_h_filename() self.assertTrue(os.path.isfile(config_h), config_h) + def test_get_scheme_names(self): + wanted = ('nt', 'nt_user', 'os2', 'os2_home', 'posix_home', + 'posix_prefix', 'posix_user') + self.assertEquals(get_scheme_names(), wanted) + def test_main(): run_unittest(TestSysConfig) |