diff options
author | Benoit Pierre <benoit.pierre@gmail.com> | 2019-11-13 10:20:31 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-13 10:20:31 +0000 |
commit | 705d41e4903bc2d12a805172c0f446e2eb32eb9c (patch) | |
tree | 914b2d31d194efae9e47551dbc11b8f9b68e21be | |
parent | 5af71d2c5c8015d5520b9aae4a6117d31cefeeac (diff) | |
parent | 16a3ef93fc66373f6c5f4da12303dd111403fcb1 (diff) | |
download | external_python_setuptools-705d41e4903bc2d12a805172c0f446e2eb32eb9c.tar.gz external_python_setuptools-705d41e4903bc2d12a805172c0f446e2eb32eb9c.tar.bz2 external_python_setuptools-705d41e4903bc2d12a805172c0f446e2eb32eb9c.zip |
Merge pull request #1861 from benoit-pierre/fix_empty_namespace_package_wheel_install
Fix empty namespace package wheel install
-rw-r--r-- | changelog.d/1861.change.rst | 1 | ||||
-rw-r--r-- | setuptools/tests/test_wheel.py | 28 | ||||
-rw-r--r-- | setuptools/wheel.py | 21 |
3 files changed, 44 insertions, 6 deletions
diff --git a/changelog.d/1861.change.rst b/changelog.d/1861.change.rst new file mode 100644 index 00000000..5a4e0a56 --- /dev/null +++ b/changelog.d/1861.change.rst @@ -0,0 +1 @@ +Fix empty namespace package installation from wheel. diff --git a/setuptools/tests/test_wheel.py b/setuptools/tests/test_wheel.py index e85a4a7e..d50816c2 100644 --- a/setuptools/tests/test_wheel.py +++ b/setuptools/tests/test_wheel.py @@ -451,6 +451,34 @@ WHEEL_INSTALL_TESTS = ( ), dict( + id='empty_namespace_package', + file_defs={ + 'foobar': { + '__init__.py': "__import__('pkg_resources').declare_namespace(__name__)", + }, + }, + setup_kwargs=dict( + namespace_packages=['foobar'], + packages=['foobar'], + ), + install_tree=flatten_tree({ + 'foo-1.0-py{py_version}.egg': [ + 'foo-1.0-py{py_version}-nspkg.pth', + {'EGG-INFO': [ + 'PKG-INFO', + 'RECORD', + 'WHEEL', + 'namespace_packages.txt', + 'top_level.txt', + ]}, + {'foobar': [ + '__init__.py', + ]}, + ] + }), + ), + + dict( id='data_in_package', file_defs={ 'foo': { diff --git a/setuptools/wheel.py b/setuptools/wheel.py index e11f0a1d..22eec05e 100644 --- a/setuptools/wheel.py +++ b/setuptools/wheel.py @@ -1,6 +1,7 @@ """Wheels support.""" from distutils.util import get_platform +from distutils import log import email import itertools import os @@ -162,11 +163,17 @@ class Wheel: extras_require=extras_require, ), ) - write_requirements( - setup_dist.get_command_obj('egg_info'), - None, - os.path.join(egg_info, 'requires.txt'), - ) + # Temporarily disable info traces. + log_threshold = log._global_log.threshold + log.set_threshold(log.WARN) + try: + write_requirements( + setup_dist.get_command_obj('egg_info'), + None, + os.path.join(egg_info, 'requires.txt'), + ) + finally: + log.set_threshold(log_threshold) @staticmethod def _move_data_entries(destination_eggdir, dist_data): @@ -206,6 +213,8 @@ class Wheel: for mod in namespace_packages: mod_dir = os.path.join(destination_eggdir, *mod.split('.')) mod_init = os.path.join(mod_dir, '__init__.py') - if os.path.exists(mod_dir) and not os.path.exists(mod_init): + if not os.path.exists(mod_dir): + os.mkdir(mod_dir) + if not os.path.exists(mod_init): with open(mod_init, 'w') as fp: fp.write(NAMESPACE_PACKAGE_INIT) |