| 877 | |
| 878 | |
| 879 | def parse_csv_list(value: str, allowed: Iterable[str], default: List[str]) -> List[str]: |
| 880 | if value == "all": |
| 881 | return list(default) |
| 882 | selected = [item.strip().lower() for item in value.split(",") if item.strip()] |
| 883 | invalid = [item for item in selected if item not in allowed] |
| 884 | if invalid: |
| 885 | raise ValueError( |
| 886 | f"Invalid values: {', '.join(invalid)}. Allowed: {', '.join(sorted(allowed))}" |
| 887 | ) |
| 888 | ordered = [item for item in default if item in selected] |
| 889 | return ordered |
| 890 | |
| 891 | |
| 892 | def benchmark_number(base_number: int, datatype: str) -> int: |