1+ import dataclasses
12import json
23from pathlib import Path
3- from typing import Any , ClassVar , Optional
4+ from typing import Any , Optional
45
56from cmake_file_api .kinds .common import CMakeSourceBuildPaths , VersionMajorMinor
67from cmake_file_api .kinds .kind import ObjectKind
@@ -43,7 +44,7 @@ def __repr__(self) -> str:
4344class CMakeDirectory :
4445 __slots__ = ("source" , "build" , "parentDirectory" , "childDirectories" , "project" , "targets" , "minimumCMakeVersion" , "hasInstallRule" )
4546
46- def __init__ (self , source : Path , build : Path , minimumCMakeVersion : Optional [str ], hasInstallRule : bool ):
47+ def __init__ (self , source : Path , build : Path , minimumCMakeVersion : Optional [str ], hasInstallRule : bool ) -> None :
4748 self .source = source
4849 self .build = build
4950 self .parentDirectory : Optional [CMakeDirectory ] = None
@@ -153,19 +154,19 @@ def __repr__(self) -> str:
153154 )
154155
155156
157+ @dataclasses .dataclass (frozen = True , slots = True )
156158class CodemodelV2 :
157- KIND : ClassVar = ObjectKind .CODEMODEL
159+ version : VersionMajorMinor
160+ paths : CMakeSourceBuildPaths
161+ configurations : list [CMakeConfiguration ]
158162
159- __slots__ = ("version" , "paths" , "configurations" )
160-
161- def __init__ (self , version : VersionMajorMinor , paths : CMakeSourceBuildPaths , configurations : list [CMakeConfiguration ]):
162- self .version = version
163- self .paths = paths
164- self .configurations = configurations
163+ @staticmethod
164+ def kind () -> ObjectKind :
165+ return ObjectKind .CODEMODEL
165166
166167 @classmethod
167168 def from_dict (cls , dikt : dict [str , Any ], reply_path : Path ) -> "CodemodelV2" :
168- if dikt ["kind" ] != cls .KIND . value :
169+ if dikt ["kind" ] != cls .kind () :
169170 raise ValueError
170171 paths = CMakeSourceBuildPaths .from_dict (dikt ["paths" ])
171172 version = VersionMajorMinor .from_dict (dikt ["version" ])
@@ -183,11 +184,3 @@ def get_configuration(self, name: str) -> CMakeConfiguration:
183184 return next (c for c in self .configurations if c .name == name )
184185 except StopIteration :
185186 raise KeyError ("Unknown configuration" )
186-
187- def __repr__ (self ) -> str :
188- return "{}(version={}, paths={}, configurations={})" .format (
189- type (self ).__name__ ,
190- self .version ,
191- self .paths ,
192- self .configurations ,
193- )
0 commit comments