Skip to content

Commit ba0de49

Browse files
committed
Correct source file paths for projects with src/ layout and those using namespace packages,
1 parent dcef350 commit ba0de49

File tree

2 files changed

+24
-15
lines changed

2 files changed

+24
-15
lines changed

repo_helper/build.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -140,17 +140,26 @@ def copy_source(self) -> None:
140140
Copy source files into the build directory.
141141
"""
142142

143-
pkgdir = self.repo_dir / self.import_name
144-
145-
for py_pattern in {"**/*.py", "**/*.pyi", "**/*.pyx", "**/py.typed"}:
146-
for py_file in pkgdir.rglob(py_pattern):
147-
if "__pycache__" in py_file.parts:
148-
continue
149-
150-
target = self.build_dir / py_file.relative_to(self.repo_dir)
151-
target.parent.maybe_make(parents=True)
152-
target.write_clean(py_file.read_text())
153-
self.report_copied(py_file, target)
143+
source_files = []
144+
145+
if self.config["py_modules"]:
146+
source_files.extend(self.config["py_modules"])
147+
else:
148+
if self.config["stubs_package"]:
149+
pkgdir = self.repo_dir / self.config["source_dir"] / f"{self.config['import_name'].replace('.', '/')}-stubs"
150+
else:
151+
pkgdir = self.repo_dir / self.config["source_dir"] / self.config["import_name"].replace(".", "/")
152+
153+
for py_pattern in {"**/*.py", "**/*.pyi", "**/*.pyx", "**/py.typed"}:
154+
for py_file in pkgdir.rglob(py_pattern):
155+
if "__pycache__" not in py_file.parts:
156+
source_files.append(py_file)
157+
158+
for py_file in source_files:
159+
target = self.build_dir / py_file.relative_to(self.repo_dir)
160+
target.parent.maybe_make(parents=True)
161+
target.write_clean(py_file.read_text())
162+
self.report_copied(py_file, target)
154163

155164
def report_copied(self, source: pathlib.Path, target: pathlib.Path):
156165
"""

repo_helper/files/testing.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
# stdlib
2727
import os.path
2828
import pathlib
29+
import posixpath
2930
import re
3031
from typing import Any, List
3132

@@ -103,17 +104,16 @@ def get_source_files(self) -> List[str]:
103104
source_files = []
104105

105106
if self._globals["py_modules"]:
106-
source_files += self._globals["source_dir"]
107107

108108
for file in self._globals["py_modules"]:
109-
source_files.append(f"{file}.py")
109+
source_files.append(posixpath.join(self._globals["source_dir"], f"{file}.py"))
110110

111111
elif self._globals["stubs_package"]:
112-
directory = f"{self._globals['source_dir']}{self._globals['import_name'].replace('.', '/')}-stubs"
112+
directory = posixpath.join(self._globals["source_dir"], f"{self._globals['import_name'].replace('.', '/')}-stubs")
113113
source_files.append(directory)
114114

115115
else:
116-
directory = f"{self._globals['source_dir']}{self._globals['import_name'].replace('.', '/')}"
116+
directory = posixpath.join(self._globals["source_dir"], self._globals["import_name"].replace(".", "/"))
117117
source_files.append(directory)
118118

119119
if self._globals["enable_tests"]:

0 commit comments

Comments
 (0)