Skip to content

Commit e88ab40

Browse files
bonzinidcbaker
authored andcommitted
cargo: move _convert_manifest to Manifest class, use keyword args
There are really many arguments, so use keyword arguments to be safe. While at it, move the function inside the dataclass. Signed-off-by: Paolo Bonzini <[email protected]>
1 parent 824f6fc commit e88ab40

File tree

1 file changed

+18
-18
lines changed

1 file changed

+18
-18
lines changed

mesonbuild/cargo/interpreter.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -366,23 +366,23 @@ def __post_init__(self) -> None:
366366
self.features.setdefault('default', [])
367367
self.system_dependencies = {k: SystemDependency.from_raw(k, v) for k, v in self.package.metadata.get('system-deps', {}).items()}
368368

369-
370-
def _convert_manifest(raw_manifest: raw.Manifest, subdir: str, path: str = '') -> Manifest:
371-
return Manifest(
372-
Package.from_raw(raw_manifest['package']),
373-
{k: Dependency.from_raw(k, v) for k, v in raw_manifest.get('dependencies', {}).items()},
374-
{k: Dependency.from_raw(k, v) for k, v in raw_manifest.get('dev-dependencies', {}).items()},
375-
{k: Dependency.from_raw(k, v) for k, v in raw_manifest.get('build-dependencies', {}).items()},
376-
Library.from_raw(raw_manifest.get('lib', {}), raw_manifest['package']['name']),
377-
[Binary.from_raw(b) for b in raw_manifest.get('bin', {})],
378-
[Test.from_raw(b) for b in raw_manifest.get('test', {})],
379-
[Benchmark.from_raw(b) for b in raw_manifest.get('bench', {})],
380-
[Example.from_raw(b) for b in raw_manifest.get('example', {})],
381-
raw_manifest.get('features', {}),
382-
{k: {k2: Dependency.from_raw(k2, v2) for k2, v2 in v.get('dependencies', {}).items()}
383-
for k, v in raw_manifest.get('target', {}).items()},
384-
path,
385-
)
369+
@classmethod
370+
def from_raw(cls, raw: raw.Manifest, path: str = '') -> Self:
371+
return cls(
372+
package=Package.from_raw(raw['package']),
373+
dependencies={k: Dependency.from_raw(k, v) for k, v in raw.get('dependencies', {}).items()},
374+
dev_dependencies={k: Dependency.from_raw(k, v) for k, v in raw.get('dev-dependencies', {}).items()},
375+
build_dependencies={k: Dependency.from_raw(k, v) for k, v in raw.get('build-dependencies', {}).items()},
376+
lib=Library.from_raw(raw.get('lib', {}), raw['package']['name']),
377+
bin=[Binary.from_raw(b) for b in raw.get('bin', {})],
378+
test=[Test.from_raw(b) for b in raw.get('test', {})],
379+
bench=[Benchmark.from_raw(b) for b in raw.get('bench', {})],
380+
example=[Example.from_raw(b) for b in raw.get('example', {})],
381+
features=raw.get('features', {}),
382+
target={k: {k2: Dependency.from_raw(k2, v2) for k2, v2 in v.get('dependencies', {}).items()}
383+
for k, v in raw.get('target', {}).items()},
384+
path=path,
385+
)
386386

387387

388388
def _version_to_api(version: str) -> str:
@@ -508,7 +508,7 @@ def _load_manifest(self, subdir: str) -> Manifest:
508508
toml = load_toml(filename)
509509
if 'package' in toml:
510510
raw_manifest = T.cast('raw.Manifest', toml)
511-
manifest_ = _convert_manifest(raw_manifest, subdir)
511+
manifest_ = Manifest.from_raw(raw_manifest)
512512
self.manifests[subdir] = manifest_
513513
else:
514514
raise MesonException(f'{subdir}/Cargo.toml does not have [package] section')

0 commit comments

Comments
 (0)