diff options
author | Éric Araujo <merwok@netwok.org> | 2011-09-01 04:29:11 (GMT) |
---|---|---|
committer | Éric Araujo <merwok@netwok.org> | 2011-09-01 04:29:11 (GMT) |
commit | 336b4e4ff3edea750eb79bc59dab0f63141a1caa (patch) | |
tree | a11e7805f34c0ec9f1a14d1c67fff9dbf553af30 /Lib/packaging | |
parent | b8edbdf4b986048e48b689baf339023c38384ae7 (diff) | |
download | cpython-336b4e4ff3edea750eb79bc59dab0f63141a1caa.zip cpython-336b4e4ff3edea750eb79bc59dab0f63141a1caa.tar.gz cpython-336b4e4ff3edea750eb79bc59dab0f63141a1caa.tar.bz2 |
Minor improvement to extensions section in setup.cfg.
The right-hand part in [extension: foo] is now used as the name of the
extension module. (I changed the separator from = to : and allowed
whitespace to make the sections look nicer.)
Diffstat (limited to 'Lib/packaging')
-rw-r--r-- | Lib/packaging/config.py | 11 | ||||
-rw-r--r-- | Lib/packaging/tests/test_config.py | 16 |
2 files changed, 18 insertions, 9 deletions
diff --git a/Lib/packaging/config.py b/Lib/packaging/config.py index 83e97a9..b138d08 100644 --- a/Lib/packaging/config.py +++ b/Lib/packaging/config.py @@ -251,13 +251,16 @@ class Config: ext_modules = self.dist.ext_modules for section_key in content: - labels = section_key.split('=') + # no str.partition in 2.4 :( + labels = section_key.split(':') if len(labels) == 2 and labels[0] == 'extension': - # labels[1] not used from now but should be implemented - # for extension build dependency values_dct = content[section_key] + if 'name' in values_dct: + raise PackagingOptionError( + 'extension name should be given as [extension: name], ' + 'not as key') ext_modules.append(Extension( - values_dct.pop('name'), + labels[1].strip(), _pop_values(values_dct, 'sources'), _pop_values(values_dct, 'include_dirs'), _pop_values(values_dct, 'define_macros'), diff --git a/Lib/packaging/tests/test_config.py b/Lib/packaging/tests/test_config.py index 43ab2c8..ce01629 100644 --- a/Lib/packaging/tests/test_config.py +++ b/Lib/packaging/tests/test_config.py @@ -6,7 +6,7 @@ from io import StringIO from packaging import command from packaging.dist import Distribution -from packaging.errors import PackagingFileError +from packaging.errors import PackagingFileError, PackagingOptionError from packaging.compiler import new_compiler, _COMPILERS from packaging.command.sdist import sdist @@ -100,21 +100,20 @@ sub_commands = foo # Can not be merged with SETUP_CFG else install_dist # command will fail when trying to compile C sources +# TODO use a DummyCommand to mock build_ext EXT_SETUP_CFG = """ [files] packages = one two -[extension=speed_coconuts] -name = one.speed_coconuts +[extension:one.speed_coconuts] sources = c_src/speed_coconuts.c extra_link_args = "`gcc -print-file-name=libgcc.a`" -shared define_macros = HAVE_CAIRO HAVE_GTK2 libraries = gecodeint gecodekernel -- sys.platform != 'win32' GecodeInt GecodeKernel -- sys.platform == 'win32' -[extension=fast_taunt] -name = two.fast_taunt +[extension: two.fast_taunt] sources = cxx_src/utils_taunt.cxx cxx_src/python_module.cxx include_dirs = /usr/include/gecode @@ -123,7 +122,11 @@ extra_compile_args = -fPIC -O2 -DGECODE_VERSION=$(./gecode_version) -- sys.platform != 'win32' /DGECODE_VERSION='win32' -- sys.platform == 'win32' language = cxx +""" +EXT_SETUP_CFG_BUGGY_1 = """ +[extension: realname] +name = crash_here """ HOOKS_MODULE = """ @@ -335,6 +338,9 @@ class ConfigTestCase(support.TempdirManager, self.assertEqual(ext.extra_compile_args, cargs) self.assertEqual(ext.language, 'cxx') + self.write_file('setup.cfg', EXT_SETUP_CFG_BUGGY_1) + self.assertRaises(PackagingOptionError, self.get_dist) + def test_project_setup_hook_works(self): # Bug #11637: ensure the project directory is on sys.path to allow # project-specific hooks |