[+] improve modules support
This commit is contained in:
parent
9f895d52ee
commit
24e116882d
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user