33from abc import ABC , abstractmethod
44from typing import TYPE_CHECKING , Optional , TypeVar , Union
55
6- from app .translator .core .exceptions .core import StrictPlatformException
6+ from app .translator .core .exceptions .core import StrictPlatformException , UnsupportedMappingsException
77from app .translator .core .models .platform_details import PlatformDetails
88from app .translator .mappings .utils .load_from_files import LoaderFileMappings
99
@@ -116,7 +116,7 @@ def prepare_mapping(self) -> dict[str, SourceMapping]:
116116 default_mapping = SourceMapping (source_id = DEFAULT_MAPPING_NAME )
117117 for mapping_dict in self ._loader .load_platform_mappings (self ._platform_dir ):
118118 log_source_signature = self .prepare_log_source_signature (mapping = mapping_dict )
119- if (source_id := mapping_dict . get ( "source" ) ) == DEFAULT_MAPPING_NAME :
119+ if (source_id := mapping_dict [ "source" ] ) == DEFAULT_MAPPING_NAME :
120120 default_mapping .log_source_signature = log_source_signature
121121 if self .skip_load_default_mappings :
122122 continue
@@ -152,7 +152,7 @@ def prepare_fields_mapping(field_mapping: dict) -> FieldsMapping:
152152 def prepare_log_source_signature (self , mapping : dict ) -> LogSourceSignature :
153153 raise NotImplementedError ("Abstract method" )
154154
155- def get_suitable_source_mappings (
155+ def get_source_mappings_by_fields_and_log_sources (
156156 self , field_names : list [str ], log_sources : dict [str , list [Union [int , str ]]]
157157 ) -> list [SourceMapping ]:
158158 by_log_sources_and_fields = []
@@ -170,6 +170,17 @@ def get_suitable_source_mappings(
170170
171171 return by_log_sources_and_fields or by_fields or [self ._source_mappings [DEFAULT_MAPPING_NAME ]]
172172
173+ def get_source_mappings_by_ids (self , source_mapping_ids : list [str ]) -> list [SourceMapping ]:
174+ source_mappings = []
175+ for source_mapping_id in source_mapping_ids :
176+ if source_mapping := self .get_source_mapping (source_mapping_id ):
177+ source_mappings .append (source_mapping )
178+
179+ if not source_mappings :
180+ source_mappings = [self .get_source_mapping (DEFAULT_MAPPING_NAME )]
181+
182+ return source_mappings
183+
173184 def get_source_mapping (self , source_id : str ) -> Optional [SourceMapping ]:
174185 return self ._source_mappings .get (source_id )
175186
@@ -218,3 +229,18 @@ def prepare_mapping(self) -> dict[str, SourceMapping]:
218229 )
219230
220231 return source_mappings
232+
233+
234+ class BaseStrictLogSourcesPlatformMappings (ABC , BasePlatformMappings ):
235+ def get_source_mappings_by_ids (self , source_mapping_ids : list [str ]) -> list [SourceMapping ]:
236+ source_mappings = []
237+ for source_mapping_id in source_mapping_ids :
238+ if source_mapping_id == DEFAULT_MAPPING_NAME :
239+ continue
240+ if source_mapping := self .get_source_mapping (source_mapping_id ):
241+ source_mappings .append (source_mapping )
242+
243+ if not source_mappings :
244+ raise UnsupportedMappingsException (platform_name = self .details .name , mappings = source_mapping_ids )
245+
246+ return source_mappings
0 commit comments