@@ -366,23 +366,23 @@ def __post_init__(self) -> None:
366
366
self .features .setdefault ('default' , [])
367
367
self .system_dependencies = {k : SystemDependency .from_raw (k , v ) for k , v in self .package .metadata .get ('system-deps' , {}).items ()}
368
368
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
+ )
386
386
387
387
388
388
def _version_to_api (version : str ) -> str :
@@ -508,7 +508,7 @@ def _load_manifest(self, subdir: str) -> Manifest:
508
508
toml = load_toml (filename )
509
509
if 'package' in toml :
510
510
raw_manifest = T .cast ('raw.Manifest' , toml )
511
- manifest_ = _convert_manifest (raw_manifest , subdir )
511
+ manifest_ = Manifest . from_raw (raw_manifest )
512
512
self .manifests [subdir ] = manifest_
513
513
else :
514
514
raise MesonException (f'{ subdir } /Cargo.toml does not have [package] section' )
0 commit comments