"""Exceptions for linter results."""
from typing import TYPE_CHECKING
from text_lint.utilities.translations import _, f
from text_lint.utilities.whitespace import make_visible
if TYPE_CHECKING: # pragma: no cover
from text_lint.operations.validators.args.lookup_expression import (
LookupExpression,
)
[Doku]
class ResultExceptionBase(ValueError):
"""Base class for results exceptions."""
[Doku]
class ResultDoesNotExist(ResultExceptionBase):
"""Raised when a request is made for a non-existent result."""
msg_fmt_does_not_exist = _(
"The save id you've requested does not exist."
)
msg_fmt_result_source = _(" SAVE ID: '{0}'")
msg_fmt_schema_operation_name = _(" SCHEMA OPERATION NAME: {0}")
msg_fmt_lookup_definition = _(" LOOKUP DEFINITION:")
msg_fmt_lookup_result_source = _(" SAVE ID: '{0}'")
msg_fmt_lookups = _(" LOOKUPS: {0}")
msg_fmt_hint = _(" HINT: '{0}'")
msg_fmt_does_not_exist_hint = _(
'save ids are created when applying the "assertions" '
'section of the schema'
)
[Doku]
def __init__(
self,
lookup_expression: "LookupExpression",
requesting_operation_name: str,
) -> None:
"""Initialize ResultDoesNotExist exceptions.
:param lookup_expression: The instance referencing this result.
:param requesting_operation_name: The operation performing this lookup.
"""
message = f(
self.msg_fmt_does_not_exist,
nl=1,
)
message += f(
self.msg_fmt_result_source,
make_visible(lookup_expression.source),
nl=1,
)
message += f(
self.msg_fmt_schema_operation_name,
make_visible(requesting_operation_name),
nl=1,
)
message += f(
self.msg_fmt_lookup_definition,
nl=1,
)
message += f(
self.msg_fmt_lookup_result_source,
make_visible(lookup_expression.source),
nl=1,
)
message += f(
self.msg_fmt_lookups,
make_visible(
[parsed_lookup.name for parsed_lookup in lookup_expression.lookups]
),
nl=1,
)
message += f(
self.msg_fmt_hint,
self.msg_fmt_does_not_exist_hint,
nl=1,
)
super().__init__(message)
[Doku]
class SplitGroupNotFound(ResultExceptionBase):
"""Raised when a non-existent split group is referenced."""
[Doku]
def __init__(self, group: int) -> None:
"""Initialize SplitGroupNotFound exceptions.
:param group: The split group index number.
"""
super().__init__()
self.group = group