aboutsummaryrefslogtreecommitdiff
path: root/src/mlia/utils/types.py
blob: 9b63928a5d17a2b70b5b350dbe1c334e2e2462fc (plain)
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
# SPDX-FileCopyrightText: Copyright 2022, Arm Limited and/or its affiliates.
# SPDX-License-Identifier: Apache-2.0
"""Types related utility functions."""
from typing import Any
from typing import Optional


def is_list_of(data: Any, cls: type, elem_num: Optional[int] = None) -> bool:
    """Check if data is a list of object of the same class."""
    return (
        isinstance(data, (tuple, list))
        and all(isinstance(item, cls) for item in data)
        and (elem_num is None or len(data) == elem_num)
    )


def is_number(value: str) -> bool:
    """Return true if string contains a number."""
    try:
        float(value)
    except ValueError:
        return False

    return True


def parse_int(value: Any, default: Optional[int] = None) -> Optional[int]:
    """Parse integer value."""
    try:
        return int(value)
    except (TypeError, ValueError):
        return default


def only_one_selected(*options: bool) -> bool:
    """Return true if only one True value found."""
    return sum(options) == 1