Skip to content

Commit d66f799

Browse files
fix: exclude subpackage from setup.py if __init__.py is excluded
Fixes: python-poetry#1009
1 parent c77b442 commit d66f799

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

Diff for: poetry/masonry/builders/sdist.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,9 @@ def find_nearest_pkg(rel_path):
237237
if from_top_level == ".":
238238
continue
239239

240-
is_subpkg = "__init__.py" in filenames
240+
is_subpkg = "__init__.py" in filenames and not self.is_excluded(
241+
Path(path, "__init__.py").relative_to(self._path)
242+
)
241243
if is_subpkg:
242244
subpkg_paths.add(from_top_level)
243245
parts = from_top_level.split(os.sep)

Diff for: tests/masonry/builders/test_sdist.py

+15
Original file line numberDiff line numberDiff line change
@@ -465,3 +465,18 @@ def test_proper_python_requires_if_three_digits_precision_version_specified():
465465
parsed = p.parsestr(to_str(pkg_info))
466466

467467
assert parsed["Requires-Python"] == "==2.7.15"
468+
469+
470+
def test_excluded_subpackage():
471+
poetry = Factory().create_poetry(project("excluded_subpackage"))
472+
473+
builder = SdistBuilder(poetry, NullEnv(), NullIO())
474+
setup = builder.build_setup()
475+
476+
setup_ast = ast.parse(setup)
477+
478+
setup_ast.body = [n for n in setup_ast.body if isinstance(n, ast.Assign)]
479+
ns = {}
480+
exec(compile(setup_ast, filename="setup.py", mode="exec"), ns)
481+
482+
assert ns["packages"] == ["example"]

0 commit comments

Comments
 (0)