(raw_value: Any)
| 96 | |
| 97 | |
| 98 | def parse_string_list(raw_value: Any) -> List[str]: |
| 99 | if raw_value in (None, "", []): |
| 100 | return [] |
| 101 | if isinstance(raw_value, list): |
| 102 | values: List[str] = [] |
| 103 | for item in raw_value: |
| 104 | if isinstance(item, dict): |
| 105 | values.extend(parse_string_list(item)) |
| 106 | else: |
| 107 | values.append(str(item)) |
| 108 | return [item.strip() for item in values if item.strip()] |
| 109 | if isinstance(raw_value, dict): |
| 110 | values: List[str] = [] |
| 111 | for key, value in raw_value.items(): |
| 112 | values.append(str(key)) |
| 113 | values.extend(parse_string_list(value)) |
| 114 | return [item.strip() for item in values if item.strip()] |
| 115 | if isinstance(raw_value, str): |
| 116 | try: |
| 117 | parsed = json.loads(raw_value) |
| 118 | except json.JSONDecodeError: |
| 119 | parsed = None |
| 120 | if isinstance(parsed, (list, dict)): |
| 121 | return parse_string_list(parsed) |
| 122 | return [item.strip() for item in re.split(r"[,;|\n]+", raw_value) if item.strip()] |
| 123 | return [str(raw_value).strip()] if str(raw_value).strip() else [] |
| 124 | |
| 125 | |
| 126 | def normalize_phrase_text(value: Any) -> str: |
no outgoing calls
no test coverage detected