1- from typing import Annotated , Any , Literal
1+ from typing import Annotated , Any , Literal , Self
22
33from models_library .api_schemas_catalog .services import LatestServiceGet , ServiceGetV2
44from models_library .basic_regex import PUBLIC_VARIABLE_NAME_RE
3939class Solver (BaseService ):
4040 """A released solver with a specific version"""
4141
42- maintainer : str = Field (..., description = "Maintainer of the solver" )
42+ maintainer : Annotated [str , Field (description = "Maintainer of the solver" )]
43+
44+ version_display : Annotated [
45+ str | None ,
46+ Field (description = "A user-friendly or marketing name for the release." ),
47+ ] = None
4348
4449 model_config = ConfigDict (
4550 extra = "ignore" ,
4651 json_schema_extra = {
4752 "example" : {
4853 "id" : "simcore/services/comp/isolve" ,
4954 "version" : "2.1.1" ,
55+ "version_display" : "2.1.1-2023-10-01" ,
5056 "title" : "iSolve" ,
5157 "description" : "EM solver" ,
5258 "maintainer" :
"[email protected] " ,
@@ -56,31 +62,27 @@ class Solver(BaseService):
5662 )
5763
5864 @classmethod
59- def create_from_image (cls , image_meta : ServiceMetaDataPublished ) -> "Solver" :
60- data = image_meta .model_dump (
61- include = {"name" , "key" , "version" , "description" , "contact" },
62- )
65+ def create_from_image (cls , image_meta : ServiceMetaDataPublished ) -> Self :
6366 return cls (
64- id = data .pop ("key" ),
65- version = data .pop ("version" ),
66- title = data .pop ("name" ),
67- maintainer = data .pop ("contact" ),
67+ id = image_meta .key ,
68+ version = image_meta .version ,
69+ title = image_meta .name ,
70+ description = image_meta .description ,
71+ maintainer = image_meta .contact ,
72+ version_display = image_meta .version_display ,
6873 url = None ,
69- ** data ,
7074 )
7175
7276 @classmethod
73- def create_from_service (cls , service : ServiceGetV2 | LatestServiceGet ) -> "Solver" :
74- data = service .model_dump (
75- include = {"name" , "key" , "version" , "description" , "contact" },
76- )
77+ def create_from_service (cls , service : ServiceGetV2 | LatestServiceGet ) -> Self :
7778 return cls (
78- id = data .pop ("key" ),
79- version = data .pop ("version" ),
80- title = data .pop ("name" ),
79+ id = service .key ,
80+ version = service .version ,
81+ title = service .name ,
82+ description = service .description ,
83+ maintainer = service .contact or "UNDEFINED" ,
84+ version_display = service .version_display ,
8185 url = None ,
82- maintainer = data .pop ("contact" ),
83- ** data ,
8486 )
8587
8688 @classmethod
0 commit comments