From 24e116882dc67ba36c18003d6dd2c08f6059f123 Mon Sep 17 00:00:00 2001 From: Siarhei Siniak Date: Tue, 6 May 2025 18:43:53 +0300 Subject: [PATCH] [+] improve modules support --- .../pr34/commands_typed/cli_bootstrap.py | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/python/online/fxreader/pr34/commands_typed/cli_bootstrap.py b/python/online/fxreader/pr34/commands_typed/cli_bootstrap.py index aa32a40..ccbe0cb 100644 --- a/python/online/fxreader/pr34/commands_typed/cli_bootstrap.py +++ b/python/online/fxreader/pr34/commands_typed/cli_bootstrap.py @@ -34,6 +34,12 @@ def toml_load(f: BinaryIO) -> Any: @dataclasses.dataclass class PyProject: + @dataclasses.dataclass + class Module: + name: str + meson: Optional[pathlib.Path] = None + + path: pathlib.Path dependencies: dict[str, list[str]] early_features: Optional[list[str]] = None @@ -42,6 +48,10 @@ class PyProject: runtime_preload: Optional[list[pathlib.Path]] = None requirements: dict[str, pathlib.Path] = dataclasses.field(default_factory=lambda : dict()) + modules: list[Module] = dataclasses.field( + default_factory=lambda : [], + ) + def pyproject_load( d: pathlib.Path, ) -> PyProject: @@ -119,6 +129,30 @@ def pyproject_load( for k, v in content['tool'][tool_name]['requirements'].items() } + if 'modules' in content['tool'][tool_name]: + modules = content['tool'][tool_name] + assert isinstance(modules, list) + + # res.modules = [] + + for o in modules: + assert isinstance(o, dict) + assert 'name' in o and isinstance(o['name'], str) + + module = PyProject.Module( + name=o['name'], + ) + + if 'meson' in o: + assert 'meson' in o and isinstance(o['meson'], str) + + module.meson = pathlib.Path(o['meson']) + + res.modules.append(module) + + res.early_features = content['tool'][tool_name]['early_features'] + + return res @dataclasses.dataclass