Skip to content

Commit 16a3ef9

Browse files
committed
wheel: fix installation of empty namespace package
1 parent d7810a9 commit 16a3ef9

File tree

3 files changed

+32
-1
lines changed

3 files changed

+32
-1
lines changed

changelog.d/1861.change.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix empty namespace package installation from wheel.

setuptools/tests/test_wheel.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,34 @@ def __repr__(self):
450450
}),
451451
),
452452

453+
dict(
454+
id='empty_namespace_package',
455+
file_defs={
456+
'foobar': {
457+
'__init__.py': "__import__('pkg_resources').declare_namespace(__name__)",
458+
},
459+
},
460+
setup_kwargs=dict(
461+
namespace_packages=['foobar'],
462+
packages=['foobar'],
463+
),
464+
install_tree=flatten_tree({
465+
'foo-1.0-py{py_version}.egg': [
466+
'foo-1.0-py{py_version}-nspkg.pth',
467+
{'EGG-INFO': [
468+
'PKG-INFO',
469+
'RECORD',
470+
'WHEEL',
471+
'namespace_packages.txt',
472+
'top_level.txt',
473+
]},
474+
{'foobar': [
475+
'__init__.py',
476+
]},
477+
]
478+
}),
479+
),
480+
453481
dict(
454482
id='data_in_package',
455483
file_defs={

setuptools/wheel.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,8 @@ def _fix_namespace_packages(egg_info, destination_eggdir):
213213
for mod in namespace_packages:
214214
mod_dir = os.path.join(destination_eggdir, *mod.split('.'))
215215
mod_init = os.path.join(mod_dir, '__init__.py')
216-
if os.path.exists(mod_dir) and not os.path.exists(mod_init):
216+
if not os.path.exists(mod_dir):
217+
os.mkdir(mod_dir)
218+
if not os.path.exists(mod_init):
217219
with open(mod_init, 'w') as fp:
218220
fp.write(NAMESPACE_PACKAGE_INIT)

0 commit comments

Comments
 (0)