Skip to content

Commit 1e0dcb9

Browse files
henryiiiBen Rowland
and
Ben Rowland
authored
refactor: use from_pyproject (#224)
Pulling out a change from #197, will reduce the diff there. This could go into 0.2.2, though it changes the signature of SettingsReader, that's not really public. Signed-off-by: Henry Schreiner <[email protected]> Co-authored-by: Ben Rowland <[email protected]>
1 parent 2aa4d6b commit 1e0dcb9

File tree

8 files changed

+30
-17
lines changed

8 files changed

+30
-17
lines changed

.github/CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ usable as:
189189
```python
190190
from scikit_build_core.settings.skbuild_settings import SettingsReader
191191

192-
settings_reader = SettingsReader(Path("pyproject.toml"), config_settings or {})
192+
settings_reader = SettingsReader.from_file("pyproject.toml", config_settings)
193193
setting = settings_reader.settings
194194
assert settings.cmake.minimum_version == "3.15"
195195
assert settings.ninja.minimum_version == "1.5"

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ report.exclude_lines = [
164164
'if typing.TYPE_CHECKING:',
165165
]
166166

167+
167168
[tool.check-wheel-contents]
168169
ignore = ["W002"] # Triggers on __init__.py's
169170

src/scikit_build_core/build/sdist.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def build_sdist(
6969
sdist_directory: str,
7070
config_settings: dict[str, list[str] | str] | None = None,
7171
) -> str:
72-
settings_reader = SettingsReader(Path("pyproject.toml"), config_settings or {})
72+
settings_reader = SettingsReader.from_file("pyproject.toml", config_settings)
7373
settings = settings_reader.settings
7474
setup_logging(settings.logging.level)
7575

src/scikit_build_core/build/wheel.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ def _build_wheel_impl(
6464
Build a wheel or just prepare metadata (if wheel dir is None).
6565
"""
6666

67-
settings_reader = SettingsReader(Path("pyproject.toml"), config_settings or {})
67+
settings_reader = SettingsReader.from_file("pyproject.toml", config_settings)
6868
settings = settings_reader.settings
6969
setup_logging(settings.logging.level)
7070

src/scikit_build_core/builder/get_requires.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import os
55
import sys
66
from collections.abc import Mapping
7-
from pathlib import Path
87

98
from packaging.tags import sys_tags
109
from packaging.version import Version
@@ -42,7 +41,7 @@ def is_known_platform(platforms: frozenset[str]) -> bool:
4241
def cmake_ninja_for_build_wheel(
4342
config_settings: Mapping[str, str | list[str]] | None = None
4443
) -> list[str]:
45-
settings = SettingsReader(Path("pyproject.toml"), config_settings or {}).settings
44+
settings = SettingsReader.from_file("pyproject.toml", config_settings).settings
4645

4746
packages = []
4847
cmake_min = Version(settings.cmake.minimum_version)

src/scikit_build_core/settings/skbuild_read_settings.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
from __future__ import annotations
22

33
import difflib
4+
import os
45
import sys
56
from collections.abc import Generator, Mapping
67
from pathlib import Path
8+
from typing import Any
79

810
from packaging.version import Version
911

@@ -24,13 +26,11 @@ def __dir__() -> list[str]:
2426
class SettingsReader:
2527
def __init__(
2628
self,
27-
pyproject_toml: Path,
29+
pyproject: dict[str, Any],
2830
config_settings: Mapping[str, str | list[str]],
31+
*,
2932
verify_conf: bool = True,
3033
) -> None:
31-
with pyproject_toml.open("rb") as f:
32-
pyproject = tomllib.load(f)
33-
3434
self.sources = SourceChain(
3535
EnvSource("SKBUILD"),
3636
ConfSource(settings=config_settings, verify=verify_conf),
@@ -85,3 +85,16 @@ def validate_may_exit(self) -> None:
8585
self.print_suggestions()
8686
raise SystemExit(7)
8787
logger.warning("Unrecognized options: {}", ", ".join(unrecognized))
88+
89+
@classmethod
90+
def from_file(
91+
cls,
92+
pyproject_path: os.PathLike[str] | str,
93+
config_settings: Mapping[str, str | list[str]] | None,
94+
*,
95+
verify_conf: bool = True,
96+
) -> SettingsReader:
97+
with Path(pyproject_path).open("rb") as f:
98+
pyproject = tomllib.load(f)
99+
100+
return cls(pyproject, config_settings or {}, verify_conf=verify_conf)

src/scikit_build_core/setuptools/extension.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def build_extension(self, ext: setuptools.Extension) -> None:
5757
if build_temp.exists():
5858
shutil.rmtree(build_temp)
5959

60-
settings = SettingsReader(Path("pyproject.toml"), {}).settings
60+
settings = SettingsReader.from_file("pyproject.toml", {}).settings
6161

6262
cmake = CMake.default_search(
6363
minimum_version=Version(settings.cmake.minimum_version)
@@ -118,7 +118,7 @@ def build_extension(self, ext: setuptools.Extension) -> None:
118118
def cmake_extensions(
119119
dist: Distribution, attr: Literal["cmake_extensions"], value: list[CMakeExtension]
120120
) -> None:
121-
settings = SettingsReader(Path("pyproject.toml"), {}).settings
121+
settings = SettingsReader.from_file("pyproject.toml", {}).settings
122122

123123
assert attr == "cmake_extensions"
124124
assert value

tests/test_skbuild_settings.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def test_skbuild_settings_default(tmp_path):
1818

1919
config_settings: dict[str, list[str] | str] = {}
2020

21-
settings_reader = SettingsReader(pyproject_toml, config_settings)
21+
settings_reader = SettingsReader.from_file(pyproject_toml, config_settings)
2222
settings = settings_reader.settings
2323
assert list(settings_reader.unrecognized_options()) == []
2424

@@ -73,7 +73,7 @@ def test_skbuild_settings_envvar(tmp_path, monkeypatch):
7373

7474
config_settings: dict[str, list[str] | str] = {}
7575

76-
settings_reader = SettingsReader(pyproject_toml, config_settings)
76+
settings_reader = SettingsReader.from_file(pyproject_toml, config_settings)
7777
settings = settings_reader.settings
7878
assert list(settings_reader.unrecognized_options()) == []
7979

@@ -129,7 +129,7 @@ def test_skbuild_settings_config_settings(tmp_path, monkeypatch):
129129
"build-dir": "a/b/c",
130130
}
131131

132-
settings_reader = SettingsReader(pyproject_toml, config_settings)
132+
settings_reader = SettingsReader.from_file(pyproject_toml, config_settings)
133133
settings = settings_reader.settings
134134
assert list(settings_reader.unrecognized_options()) == []
135135

@@ -189,7 +189,7 @@ def test_skbuild_settings_pyproject_toml(tmp_path, monkeypatch):
189189

190190
config_settings: dict[str, list[str] | str] = {}
191191

192-
settings_reader = SettingsReader(pyproject_toml, config_settings)
192+
settings_reader = SettingsReader.from_file(pyproject_toml, config_settings)
193193
settings = settings_reader.settings
194194
assert list(settings_reader.unrecognized_options()) == []
195195

@@ -231,7 +231,7 @@ def test_skbuild_settings_pyproject_toml_broken(tmp_path, capsys):
231231

232232
config_settings: dict[str, list[str] | str] = {}
233233

234-
settings_reader = SettingsReader(pyproject_toml, config_settings)
234+
settings_reader = SettingsReader.from_file(pyproject_toml, config_settings)
235235
assert list(settings_reader.unrecognized_options()) == [
236236
"tool.scikit-build.cmake.minimum-verison",
237237
"tool.scikit-build.logger",
@@ -263,7 +263,7 @@ def test_skbuild_settings_pyproject_conf_broken(tmp_path, capsys):
263263
"logger.level": "INFO",
264264
}
265265

266-
settings_reader = SettingsReader(pyproject_toml, config_settings)
266+
settings_reader = SettingsReader.from_file(pyproject_toml, config_settings)
267267
assert list(settings_reader.unrecognized_options()) == [
268268
"cmake.minimum-verison",
269269
"logger",

0 commit comments

Comments
 (0)