diff options
| author | Xavier Claessens <xclaessens@netflix.com> | 2025-10-16 18:24:13 -0400 |
|---|---|---|
| committer | Xavier Claessens <xclaesse@gmail.com> | 2025-10-22 15:43:06 -0400 |
| commit | 0b8d33033b961d2094ec2e69e8201cd532e42934 (patch) | |
| tree | 6497b00a006ceb90491c8b69621c3b5d1adb80d6 | |
| parent | b011f69bfe5943afdfdf4e381653204445614d9f (diff) | |
| download | meson-0b8d33033b961d2094ec2e69e8201cd532e42934.tar.gz | |
cargo: reorder some code to keep from_raw() last
| -rw-r--r-- | mesonbuild/cargo/manifest.py | 53 |
1 files changed, 25 insertions, 28 deletions
diff --git a/mesonbuild/cargo/manifest.py b/mesonbuild/cargo/manifest.py index ca3c3b11c..7ee4b333c 100644 --- a/mesonbuild/cargo/manifest.py +++ b/mesonbuild/cargo/manifest.py @@ -198,6 +198,7 @@ class Package: raw_ws_pkg = workspace.package if workspace else None return _raw_to_dataclass(raw_pkg, cls, f'Package entry {raw_pkg["name"]}', raw_ws_pkg) + @dataclasses.dataclass class SystemDependency: @@ -212,18 +213,6 @@ class SystemDependency: # TODO: convert values to dataclass feature_overrides: T.Dict[str, T.Dict[str, str]] = dataclasses.field(default_factory=dict) - @classmethod - def from_raw(cls, name: str, raw: T.Union[T.Dict[str, T.Any], str]) -> Self: - if isinstance(raw, str): - raw = {'version': raw} - name = raw.get('name', name) - version = raw.get('version', '') - optional = raw.get('optional', False) - feature = raw.get('feature') - # Everything else are overrides when certain features are enabled. - feature_overrides = {k: v for k, v in raw.items() if k not in {'name', 'version', 'optional', 'feature'}} - return cls(name, version, optional, feature, feature_overrides) - @lazy_property def meson_version(self) -> T.List[str]: vers = self.version.split(',') if self.version else [] @@ -238,6 +227,19 @@ class SystemDependency: def enabled(self, features: T.Set[str]) -> bool: return self.feature is None or self.feature in features + @classmethod + def from_raw(cls, name: str, raw: T.Union[T.Dict[str, T.Any], str]) -> Self: + if isinstance(raw, str): + raw = {'version': raw} + name = raw.get('name', name) + version = raw.get('version', '') + optional = raw.get('optional', False) + feature = raw.get('feature') + # Everything else are overrides when certain features are enabled. + feature_overrides = {k: v for k, v in raw.items() if k not in {'name', 'version', 'optional', 'feature'}} + return cls(name, version, optional, feature, feature_overrides) + + @dataclasses.dataclass class Dependency: @@ -274,6 +276,17 @@ class Dependency: else: raise MesonException(f'Cannot determine minimum API version from {self.version}.') + def update_version(self, v: str) -> None: + self.version = v + try: + delattr(self, 'api') + except AttributeError: + pass + try: + delattr(self, 'meson_version') + except AttributeError: + pass + @T.overload @staticmethod def _depv_to_dep(depv: raw.FromWorkspace) -> raw.FromWorkspace: ... @@ -305,17 +318,6 @@ class Dependency: path=MergeValue(path_convertor), features=MergeValue(lambda features, ws_features: (features or []) + (ws_features or []))) - def update_version(self, v: str) -> None: - self.version = v - try: - delattr(self, 'api') - except AttributeError: - pass - try: - delattr(self, 'meson_version') - except AttributeError: - pass - @dataclasses.dataclass class BuildTarget: @@ -532,11 +534,6 @@ class CargoLock: metadata: T.Dict[str, str] = dataclasses.field(default_factory=dict) wraps: T.Dict[str, PackageDefinition] = dataclasses.field(default_factory=dict) - @classmethod - def from_raw(cls, raw: raw.CargoLock) -> Self: - return _raw_to_dataclass(raw, cls, 'Cargo.lock', - package=RawValueConvertor(lambda x: [CargoLockPackage.from_raw(p) for p in x])) - def named(self, name: str) -> T.Sequence[CargoLockPackage]: return self._versions[name] |
