Skip to content

Commit b5940ed

Browse files
authored
fix: proper printout ordering and more details (#365)
- fix: smarter printout of changes - fix: flush printer - fix: more details from color printout --------- Signed-off-by: Henry Schreiner <[email protected]>
1 parent fb24652 commit b5940ed

File tree

3 files changed

+30
-9
lines changed

3 files changed

+30
-9
lines changed

src/scikit_build_core/_logging.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,4 +128,4 @@ def rich_print(*args: object, **kwargs: object) -> None:
128128
args_2 = tuple(_process_rich(arg) for arg in args)
129129
if args != args_2:
130130
args_2 = (*args_2[:-1], args_2[-1] + colors()["reset"])
131-
print(*args_2, **kwargs) # type: ignore[call-overload] # noqa: T201
131+
print(*args_2, **kwargs, flush=True) # type: ignore[call-overload] # noqa: T201

src/scikit_build_core/_shutil.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class Run:
2121
cwd: os.PathLike[str] | None = None
2222

2323
# Stores last printout, for cleaner debug logging
24-
_prev_env: ClassVar[str] = ""
24+
_prev_env: ClassVar[dict[str, str]] = {}
2525

2626
def live(self, *args: str | os.PathLike[str]) -> None:
2727
"""
@@ -47,12 +47,19 @@ def _run(
4747
]
4848

4949
if self.env:
50-
msg = "\n ".join(f"{k}={v}" for k, v in sorted(self.env.items()))
51-
if msg != self._prev_env:
50+
if not self._prev_env:
51+
type(self)._prev_env = self.env.copy()
52+
msg = "\n ".join(f"{k}={v}" for k, v in sorted(self.env.items()))
5253
logger.debug("RUNENV:\n {}", msg)
5354
else:
54-
logger.debug("RUNENV: same as last run")
55-
type(self)._prev_env = msg
55+
msg = "\n ".join(
56+
f"{self._key_diff(k)} {k}={self.env.get(k, '<unset>')}"
57+
for k in sorted(self.env.keys() | self._prev_env.keys())
58+
if self._prev_env.get(k, None) != self.env.get(k, None)
59+
)
60+
logger.debug("RUNENV - changes since last run only:\n {}", msg)
61+
type(self)._prev_env = self.env.copy()
62+
5663
logger.debug("RUN: {}", " ".join(options))
5764

5865
return subprocess.run(
@@ -63,3 +70,11 @@ def _run(
6370
env=self.env,
6471
cwd=self.cwd,
6572
)
73+
74+
def _key_diff(self, k: str) -> str:
75+
assert self.env
76+
if k in self.env and k not in self._prev_env:
77+
return "+"
78+
if k in self._prev_env and k not in self.env:
79+
return "-"
80+
return " "

src/scikit_build_core/build/wheel.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,13 @@ def _build_wheel_impl(
9393
cmake = CMake.default_search(
9494
minimum_version=Version(settings.cmake.minimum_version)
9595
)
96+
action = (
97+
"metadata" if wheel_directory is None else "editable" if editable else "wheel"
98+
)
9699
rich_print(
97-
f"[green]***[/green] [bold][green]scikit-build-core {__version__}[/green] using [blue]CMake {cmake.version}[/blue]"
100+
f"[green]***[/green] [bold][green]scikit-build-core {__version__}[/green]",
101+
f"using [blue]CMake {cmake.version}[/blue]",
102+
f"[red]({action})[/red]",
98103
)
99104

100105
with tempfile.TemporaryDirectory() as tmpdir:
@@ -187,7 +192,7 @@ def _build_wheel_impl(
187192
path.write_bytes(data)
188193
return WheelImplReturn(wheel_filename=dist_info.name)
189194

190-
rich_print("[green]***[/green] [bold]Configurating CMake...")
195+
rich_print("[green]***[/green] [bold]Configuring CMake...")
191196
defines: dict[str, str] = {}
192197
cache_entries = {f"SKBUILD_{k.upper()}_DIR": v for k, v in wheel_dirs.items()}
193198
builder.configure(
@@ -212,7 +217,7 @@ def _build_wheel_impl(
212217
rich_print("[green]***[/green] [bold]Installing project into wheel...")
213218
builder.install(install_dir)
214219

215-
rich_print("[green]***[/green] [bold]Making wheel...")
220+
rich_print(f"[green]***[/green] [bold]Making {action}...")
216221
packages = _get_packages(
217222
packages=settings.wheel.packages,
218223
name=normalized_name,
@@ -295,4 +300,5 @@ def _build_wheel_impl(
295300
raise AssertionError(msg)
296301

297302
wheel_filename: str = wheel.wheelpath.name
303+
rich_print(f"[green]***[/green] [bold]Created[/bold] {wheel_filename}...")
298304
return WheelImplReturn(wheel_filename=wheel_filename, mapping=mapping)

0 commit comments

Comments
 (0)