File size: 1,900 Bytes
f5776d3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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)}")