Skip to content

Commit

Permalink
Merge pull request #1861 from benoit-pierre/fix_empty_namespace_packa…
Browse files Browse the repository at this point in the history
…ge_wheel_install

Fix empty namespace package wheel install
  • Loading branch information
benoit-pierre authored Nov 13, 2019
2 parents 5af71d2 + 16a3ef9 commit 705d41e
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 6 deletions.
1 change: 1 addition & 0 deletions changelog.d/1861.change.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix empty namespace package installation from wheel.
28 changes: 28 additions & 0 deletions setuptools/tests/test_wheel.py
Original file line number Diff line number Diff line change
Expand Up @@ -450,6 +450,34 @@ def __repr__(self):
}),
),

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={
Expand Down
21 changes: 15 additions & 6 deletions setuptools/wheel.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""Wheels support."""

from distutils.util import get_platform
from distutils import log
import email
import itertools
import os
Expand Down Expand Up @@ -162,11 +163,17 @@ def raw_req(req):
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):
Expand Down Expand Up @@ -206,6 +213,8 @@ def _fix_namespace_packages(egg_info, destination_eggdir):
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)

0 comments on commit 705d41e

Please sign in to comment.