EureCA / dsp /templates /utils.py
tonneli's picture
Delete history
f5776d3
from typing import Union, Optional
def passages2text(passages: Union[str, list, tuple]) -> str:
"""Formats the given one or more passages into a single structured string."""
if isinstance(passages, str):
return passages
assert type(passages) in [list, tuple]
if len(passages) == 0:
return "N/A"
if len(passages) == 1:
return f"«{passages[0]}»"
return "\n".join([f"[{idx+1}] «{txt}»" for idx, txt in enumerate(passages)])
def passages2textV2(passages: Union[str, list, tuple]) -> str:
"""Formats the given one or more passages into a single structured string."""
if isinstance(passages, str):
return passages
assert type(passages) in [list, tuple]
def psg2text(psg):
try:
title, snippet = psg.split("|", 1)
return f"Titre: {title.strip()} | Snippet: «{snippet.strip()}»"
except Exception:
pass
return f"«{psg}»"
if len(passages) == 0:
return "N/A"
if len(passages) == 1:
return psg2text(passages[0])
return "\n".join([f"[{idx+1}] {psg2text(txt)}" for idx, txt in enumerate(passages)])
def format_answers(answers: Union[str, list]) -> Optional[str]:
"""Parses the given answers and returns the appropriate answer string.
Args:
answers (Union[str, list]): The answers to parse.
Raises:
ValueError: when instance is of type list and has no answers
ValueError: when is not of type list or str
Returns:
_type_: Optiona[str]
"""
if isinstance(answers, list):
if len(answers) >= 1:
return str(answers[0]).strip()
if len(answers) == 0:
raise ValueError("No answers found")
elif isinstance(answers, str):
return answers
else:
raise ValueError(f"Unable to parse answers of type {type(answers)}")