aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenoit Pierre <benoit.pierre@gmail.com>2019-11-13 10:20:31 +0000
committerGitHub <noreply@github.com>2019-11-13 10:20:31 +0000
commit705d41e4903bc2d12a805172c0f446e2eb32eb9c (patch)
tree914b2d31d194efae9e47551dbc11b8f9b68e21be
parent5af71d2c5c8015d5520b9aae4a6117d31cefeeac (diff)
parent16a3ef93fc66373f6c5f4da12303dd111403fcb1 (diff)
downloadexternal_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.rst1
-rw-r--r--setuptools/tests/test_wheel.py28
-rw-r--r--setuptools/wheel.py21
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)