import logging from typing import Tuple, Optional, List, Dict, Any from . import element_mapper logger = logging.getLogger(__name__) class PrefixResolver: """Resolve prefixes for element mapping""" @staticmethod def get_element_prefix(element_label: str) -> str: """Extract prefix from element label""" if element_label and "_" in element_label: return element_label.split("_")[0] return "" @staticmethod def determine_prefix_to_use(element_candidate_prefix: str, group_prefix: str, element_mappings: List[Dict[str, Any]], svg_type: str) -> Tuple[Optional[str], str]: """Determine which prefix to use for mapping lookup Group prefixes always take precedence over element prefixes. """ # First check group prefix since it should take precedence if group_prefix: _, group_match_type = element_mapper.find_mapping_for_element( svg_type, group_prefix, element_mappings, debug=False ) if group_match_type == 'exact': return group_prefix, "group" # Only check element prefix if no valid group prefix exists if element_candidate_prefix: _, element_match_type = element_mapper.find_mapping_for_element( svg_type, element_candidate_prefix, element_mappings, debug=False ) if element_match_type == 'exact': return element_candidate_prefix, "element" return None, "none"