diff options
| author | Paolo Bonzini <pbonzini@redhat.com> | 2025-06-03 12:54:21 +0200 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2025-08-01 07:55:49 -0700 |
| commit | e88ab40b1cb9b77aa2f0d89fee860f2e7ba402fc (patch) | |
| tree | 0ea0821d0006a1c1ff609cfeb8e5496783eb967c /mesonbuild/cargo | |
| parent | 824f6fccf35dc46f17cff9da0639d23614ccba64 (diff) | |
| download | meson-e88ab40b1cb9b77aa2f0d89fee860f2e7ba402fc.tar.gz | |
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 <pbonzini@redhat.com>
Diffstat (limited to 'mesonbuild/cargo')
| -rw-r--r-- | mesonbuild/cargo/interpreter.py | 36 |
1 files changed, 18 insertions, 18 deletions
diff --git a/mesonbuild/cargo/interpreter.py b/mesonbuild/cargo/interpreter.py index e3918ba7f..8805980a0 100644 --- a/mesonbuild/cargo/interpreter.py +++ b/mesonbuild/cargo/interpreter.py @@ -366,23 +366,23 @@ class Manifest: self.features.setdefault('default', []) self.system_dependencies = {k: SystemDependency.from_raw(k, v) for k, v in self.package.metadata.get('system-deps', {}).items()} - -def _convert_manifest(raw_manifest: raw.Manifest, subdir: str, path: str = '') -> Manifest: - return Manifest( - Package.from_raw(raw_manifest['package']), - {k: Dependency.from_raw(k, v) for k, v in raw_manifest.get('dependencies', {}).items()}, - {k: Dependency.from_raw(k, v) for k, v in raw_manifest.get('dev-dependencies', {}).items()}, - {k: Dependency.from_raw(k, v) for k, v in raw_manifest.get('build-dependencies', {}).items()}, - Library.from_raw(raw_manifest.get('lib', {}), raw_manifest['package']['name']), - [Binary.from_raw(b) for b in raw_manifest.get('bin', {})], - [Test.from_raw(b) for b in raw_manifest.get('test', {})], - [Benchmark.from_raw(b) for b in raw_manifest.get('bench', {})], - [Example.from_raw(b) for b in raw_manifest.get('example', {})], - raw_manifest.get('features', {}), - {k: {k2: Dependency.from_raw(k2, v2) for k2, v2 in v.get('dependencies', {}).items()} - for k, v in raw_manifest.get('target', {}).items()}, - path, - ) + @classmethod + def from_raw(cls, raw: raw.Manifest, path: str = '') -> Self: + return cls( + package=Package.from_raw(raw['package']), + dependencies={k: Dependency.from_raw(k, v) for k, v in raw.get('dependencies', {}).items()}, + dev_dependencies={k: Dependency.from_raw(k, v) for k, v in raw.get('dev-dependencies', {}).items()}, + build_dependencies={k: Dependency.from_raw(k, v) for k, v in raw.get('build-dependencies', {}).items()}, + lib=Library.from_raw(raw.get('lib', {}), raw['package']['name']), + bin=[Binary.from_raw(b) for b in raw.get('bin', {})], + test=[Test.from_raw(b) for b in raw.get('test', {})], + bench=[Benchmark.from_raw(b) for b in raw.get('bench', {})], + example=[Example.from_raw(b) for b in raw.get('example', {})], + features=raw.get('features', {}), + target={k: {k2: Dependency.from_raw(k2, v2) for k2, v2 in v.get('dependencies', {}).items()} + for k, v in raw.get('target', {}).items()}, + path=path, + ) def _version_to_api(version: str) -> str: @@ -508,7 +508,7 @@ class Interpreter: toml = load_toml(filename) if 'package' in toml: raw_manifest = T.cast('raw.Manifest', toml) - manifest_ = _convert_manifest(raw_manifest, subdir) + manifest_ = Manifest.from_raw(raw_manifest) self.manifests[subdir] = manifest_ else: raise MesonException(f'{subdir}/Cargo.toml does not have [package] section') |
