diff options
| author | idle sign <idlesign@yandex.ru> | 2016-12-04 17:11:37 +0700 |
|---|---|---|
| committer | idle sign <idlesign@yandex.ru> | 2016-12-04 17:11:37 +0700 |
| commit | 21333fe86db1888dbee134043ea8a2f85b69d439 (patch) | |
| tree | 92d03d00444d467ccb9bd0e52da867f7967612dc | |
| parent | 68c03bee07c55a9c337f1cb98fc102a3710add4b (diff) | |
| download | external_python_setuptools-21333fe86db1888dbee134043ea8a2f85b69d439.tar.gz external_python_setuptools-21333fe86db1888dbee134043ea8a2f85b69d439.tar.bz2 external_python_setuptools-21333fe86db1888dbee134043ea8a2f85b69d439.zip | |
Added `metadata` section aliases.
| -rw-r--r-- | setuptools/config.py | 22 | ||||
| -rw-r--r-- | setuptools/tests/test_config.py | 25 |
2 files changed, 45 insertions, 2 deletions
diff --git a/setuptools/config.py b/setuptools/config.py index a04c3ce8..0c88df79 100644 --- a/setuptools/config.py +++ b/setuptools/config.py @@ -18,6 +18,12 @@ class ConfigHandler(object): """ + aliases = {} + """Options aliases. + For compatibility with various packages. E.g.: d2to1 and pbr. + + """ + strict_mode = True """Flag. Whether unknown options in config should raise DistutilsOptionError exception, or pass silently. @@ -48,6 +54,9 @@ class ConfigHandler(object): unknown = tuple() target_obj = self.target_obj + # Translate alias into real name. + option_name = self.aliases.get(option_name, option_name) + current_value = getattr(target_obj, option_name, unknown) if current_value is unknown: @@ -216,9 +225,18 @@ class ConfigHandler(object): class ConfigMetadataHandler(ConfigHandler): section_prefix = 'metadata' + + aliases = { + 'author-email': 'author_email', + 'home_page': 'url', + 'summary': 'description', + 'classifier': 'classifiers', + 'platform': 'platforms', + } + strict_mode = False - """We need to keep it loose, to be compatible with `pbr` package - which also uses `metadata` section. + """We need to keep it loose, to be partially compatible with + `pbr` and `d2to1` packages which also uses `metadata` section. """ diff --git a/setuptools/tests/test_config.py b/setuptools/tests/test_config.py index e53b5ffd..3fabfb94 100644 --- a/setuptools/tests/test_config.py +++ b/setuptools/tests/test_config.py @@ -86,6 +86,31 @@ class TestMetadata: assert metadata.name == 'fake_name' assert metadata.keywords == ['one', 'two'] + def test_aliases(self, tmpdir): + + fake_env( + tmpdir, + '[metadata]\n' + 'author-email = test@test.com\n' + 'home_page = http://test.test.com/test/\n' + 'summary = Short summary\n' + 'platform = a, b\n' + 'classifier =\n' + ' Framework :: Django\n' + ' Programming Language :: Python :: 3.5\n' + ) + + with get_dist(tmpdir) as dist: + metadata = dist.metadata + assert metadata.author_email == 'test@test.com' + assert metadata.url == 'http://test.test.com/test/' + assert metadata.description == 'Short summary' + assert metadata.platforms == ['a', 'b'] + assert metadata.classifiers == [ + 'Framework :: Django', + 'Programming Language :: Python :: 3.5', + ] + def test_multiline(self, tmpdir): fake_env( |
