Skip to content

Commit 095d9bd

Browse files
committed
refactor: simplify metadata logic a bit
Signed-off-by: Henry Schreiner <[email protected]>
1 parent d47fd3f commit 095d9bd

File tree

1 file changed

+8
-14
lines changed

1 file changed

+8
-14
lines changed

src/scikit_build_core/settings/metadata.py

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,31 +18,25 @@ def _load(mod_name: str, pyproject_dict: dict[str, Any]) -> dict[str, Any]:
1818
return importlib.import_module(mod_name).dynamic_metadata(pyproject_dict) # type: ignore[no-any-return]
1919

2020

21+
# If pyproject-metadata eventually supports updates, this can be simplified
2122
def get_standard_metadata(
2223
pyproject_dict: dict[str, Any], settings: ScikitBuildSettings
2324
) -> StandardMetadata:
24-
metadata = StandardMetadata.from_pyproject(pyproject_dict)
25-
26-
# handle any dynamic metadata
25+
# Handle any dynamic metadata
2726
for field in settings.metadata:
28-
if field not in metadata.dynamic:
27+
if field not in pyproject_dict.get("project", {}).get("dynamic", []):
2928
msg = f"{field} is not in project.dynamic"
3029
raise KeyError(msg)
3130

3231
plugins = set(settings.metadata.values())
3332
cached_plugins = {key: _load(key, pyproject_dict) for key in plugins}
3433

3534
for field, mod_name in settings.metadata.items():
36-
# would be better to update the metadata directly but this is
37-
# currently not supported by pyproject_metadata
38-
# metadata.__setattr__(field, ep.load()(pyproject_path)
39-
if field in cached_plugins[mod_name]:
40-
pyproject_dict["project"][field] = cached_plugins[mod_name][field]
41-
pyproject_dict["project"]["dynamic"].remove(field)
42-
else:
35+
if field not in cached_plugins[mod_name]:
4336
msg = f"{field} is not provided by plugin {mod_name}"
4437
raise KeyError(msg)
4538

46-
# if pyproject-metadata supports updates, we won't need this line anymore
47-
metadata = StandardMetadata.from_pyproject(pyproject_dict)
48-
return metadata
39+
pyproject_dict["project"][field] = cached_plugins[mod_name][field]
40+
pyproject_dict["project"]["dynamic"].remove(field)
41+
42+
return StandardMetadata.from_pyproject(pyproject_dict)

0 commit comments

Comments
 (0)