@@ -33,30 +33,38 @@ def __init__(self, message: str, hint: str):
3333
3434
3535METAMODEL_VERSION_SUPPORT = {
36- 1 : (2 , 5 , 0 ),
37- 2 : (2 , 6 , 0 ),
38- 3 : (2 , 12 , 0 ),
39- 4 : (3 , 2 , 0 ),
40- 5 : (3 , 5 , 0 ),
41- 6 : (3 , 6 , 0 ),
42- 7 : (3 , 7 , 0 ),
43- 8 : (3 , 8 , 0 ),
44- 9 : (3 , 10 , 0 ),
45- 10 : (3 , 12 , 0 ),
46- 11 : (3 , 20 , 0 ),
47- 12 : (4 , 1 , 0 ),
48- 13 : (4 , 3 , 0 ),
49- 14 : (4 , 10 , 0 ),
50- 15 : (4 , 12 , 0 ),
51- 16 : (4 , 13 , 0 ),
36+ '1.0' : (2 , 5 , 0 ),
37+ '2.0' : (2 , 6 , 0 ),
38+ '3.0' : (2 , 12 , 0 ),
39+ '4.0' : (3 , 2 , 0 ),
40+ '5.0' : (3 , 5 , 0 ),
41+ '6.0' : (3 , 6 , 0 ),
42+ '7.0' : (3 , 7 , 0 ),
43+ '8.0' : (3 , 8 , 0 ),
44+ '9.0' : (3 , 10 , 0 ),
45+ '10.0' : (3 , 12 , 0 ),
46+ '11.0' : (3 , 20 , 0 ),
47+ '12.0' : (4 , 1 , 0 ),
48+ '13.0' : (4 , 3 , 0 ),
49+ '14.0' : (4 , 10 , 0 ),
50+ '15.0' : (4 , 12 , 0 ),
51+ '16.0' : (4 , 13 , 0 ),
52+ '17.0' : (4 , 22 , 0 ),
5253}
5354
5455
5556# pylint: disable=too-many-public-methods
5657class TDKCore :
5758
5859 def _check_metamodel_version (self ):
59- mm_ver = self .safe_template .metamodel_version
60+ hint = 'Fix your metamodelVersion in template.json and/or visit docs'
61+ mm_ver = str (self .safe_template .metamodel_version )
62+ try :
63+ if '.' not in mm_ver :
64+ mm_ver = f'{ mm_ver } .0'
65+ mm_major , mm_minor = map (int , mm_ver .split ('.' ))
66+ except ValueError as e :
67+ raise TDKProcessingError (f'Invalid metamodel version format: { mm_ver } ' , hint ) from e
6068 api_version = self .remote_version .split ('~' , maxsplit = 1 )[0 ]
6169 if '-' in api_version :
6270 api_version = api_version .split ('-' , maxsplit = 1 )[0 ]
@@ -68,16 +76,17 @@ def _check_metamodel_version(self):
6876 parts = api_version .split ('.' )
6977 ver = (int (parts [0 ]), int (parts [1 ]), int (parts [2 ]))
7078 vtag = f'v{ ver [0 ]} .{ ver [1 ]} .{ ver [2 ]} '
71- hint = 'Fix your metamodelVersion in template.json and/or visit docs'
7279 if mm_ver not in METAMODEL_VERSION_SUPPORT :
7380 raise TDKProcessingError (f'Unknown metamodel version: { mm_ver } ' , hint )
74- min_version = METAMODEL_VERSION_SUPPORT [mm_ver ]
75- if min_version > ver :
76- raise TDKProcessingError (f'Unsupported metamodel version for API { vtag } ' , hint )
77- if mm_ver + 1 in METAMODEL_VERSION_SUPPORT :
78- max_version = METAMODEL_VERSION_SUPPORT [mm_ver + 1 ]
79- if ver >= max_version :
80- raise TDKProcessingError (f'Unsupported metamodel version for API { vtag } ' , hint )
81+ map_reverse = {f'v{ v [0 ]} .{ v [1 ]} .{ v [2 ]} ' : k for k , v in METAMODEL_VERSION_SUPPORT .items ()}
82+ if vtag not in map_reverse :
83+ raise TDKProcessingError (f'Unsupported API version: { vtag } ' , hint )
84+ api_mm_major , api_mm_minor = map_reverse [vtag ].split ('.' )
85+ if mm_major != api_mm_major or mm_minor < api_mm_minor :
86+ raise TDKProcessingError (
87+ f'Unsupported metamodel version { mm_ver } for API version { api_version } ' ,
88+ hint ,
89+ )
8190
8291 def __init__ (self , template : Template | None = None , project : TemplateProject | None = None ,
8392 client : DSWAPIClient | None = None , logger : logging .Logger | None = None ):
0 commit comments