(raw_text: str, choices: list[str], default: str)
| 147 | |
| 148 | |
| 149 | def split_known_choice(raw_text: str, choices: list[str], default: str) -> str: |
| 150 | parts = [ |
| 151 | cleanup_markdown_text(part) |
| 152 | for part in re.split(r'[,|\n]+', raw_text or '') |
| 153 | ] |
| 154 | parts = [part for part in parts if part] |
| 155 | if not parts: |
| 156 | return default |
| 157 | for part in parts: |
| 158 | for choice in choices: |
| 159 | if part.casefold() == choice.casefold(): |
| 160 | return choice |
| 161 | for part in parts: |
| 162 | lowered = part.casefold() |
| 163 | for choice in choices: |
| 164 | if choice.casefold() in lowered: |
| 165 | return choice |
| 166 | return default |
| 167 | |
| 168 | |
| 169 | def label_value(labels: Iterable[str], prefix: str) -> str | None: |
no test coverage detected