Skip to content

Custom exceptions

InputError

Bases: Exception

Exception raised for missing required inputs.

Source code in src/pheval/prepare/custom_exceptions.py
 4
 5
 6
 7
 8
 9
10
11
12
13
class InputError(Exception):
    """Exception raised for missing required inputs."""

    def __init__(self, file, message="Missing required input"):
        self.file: str = file
        self.message: str = message
        super().__init__(self.message)

    def __str__(self):
        return f"{self.message} -> {self.file} "

MutuallyExclusiveOptionError

Bases: Option

Exception raised for when

Source code in src/pheval/prepare/custom_exceptions.py
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class MutuallyExclusiveOptionError(Option):
    """Exception raised for when"""

    def __init__(self, *args, **kwargs):
        self.mutually_exclusive = set(kwargs.pop("mutually_exclusive", []))
        help_ = kwargs.get("help", "")
        if self.mutually_exclusive:
            ex_str = ", ".join(self.mutually_exclusive)
            kwargs["help"] = help_ + (
                " NOTE: This argument is mutually exclusive with " " arguments: [" + ex_str + "]."
            )
        super(MutuallyExclusiveOptionError, self).__init__(*args, **kwargs)

    def handle_parse_result(self, ctx, opts, args):
        if self.mutually_exclusive.intersection(opts) and self.name in opts:
            raise UsageError(
                "Illegal usage: `{}` is mutually exclusive with "
                "arguments `{}`.".format(self.name, ", ".join(self.mutually_exclusive))
            )

        return super(MutuallyExclusiveOptionError, self).handle_parse_result(ctx, opts, args)