from __future__ import annotations def split_index_msg(entry_type: str, value: str) -> list[str]: # new entry types must be listed in util/nodes.py! if entry_type == 'single': try: return _split_into(2, 'single', value) except ValueError: return _split_into(1, 'single', value) if entry_type == 'pair': return _split_into(2, 'pair', value) if entry_type == 'triple': return _split_into(3, 'triple', value) if entry_type in {'see', 'seealso'}: return _split_into(2, 'see', value) msg = f'invalid {entry_type} index entry {value!r}' raise ValueError(msg) def _split_into(n: int, type: str, value: str) -> list[str]: """Split an index entry into a given number of parts at semicolons.""" parts = [x.strip() for x in value.split(';', n - 1)] if len(list(filter(None, parts))) < n: msg = f'invalid {type} index entry {value!r}' raise ValueError(msg) return parts