Quellcode für text_lint.operations.lookups.bases.lookup_base

"""LookupBase class."""

import abc
from typing import TYPE_CHECKING, List, Union

from text_lint.exceptions.lookups import LookupFailure
from text_lint.operations.bases.operation_base import OperationBase
from text_lint.operations.mixins.parameter_validation import (
    ParameterValidationMixin,
    validator_factories,
)
from text_lint.utilities.translations import _, f

if TYPE_CHECKING:  # pragma: no cover
  from text_lint.linter import states
  from text_lint.operations.validators.args.lookup_expression import (
      LookupExpression,
  )

AliasLookupParams = List[Union[int, str]]


[Doku] class LookupBase( OperationBase["states.LookupState"], ParameterValidationMixin, abc.ABC, ): """Lookup operation base class.""" is_positional = False msg_fmt_invalid_parameters = _("Received invalid parameters: '{0}' !")
[Doku] def __init__( self, lookup_name: str, lookup_expression: "LookupExpression", lookup_params: "AliasLookupParams", requesting_operation_name: str, ) -> None: """Initialize LookupBase instances. :param lookup_name: The name of this lookup operation. :param lookup_expression: The lookup expression this lookup is a part of. :param lookup_params: The parameters being used with this lookup operation. :param requesting_operation_name: The name of the validation operation. :raises: LookupFailure """ self.lookup_name = lookup_name self.lookup_expression = lookup_expression self.lookup_params = lookup_params self.requesting_operation_name = requesting_operation_name self.validate_parameters()
[Doku] class Parameters: """Parameter validation for this operation.""" lookup_name = {"type": str} lookup_params = { "type": list, "validators": [validator_factories.create_is_equal( 0, conversion_function=len, ),], }
[Doku] @abc.abstractmethod def apply( self, state: "states.LookupState", ) -> None: """Apply this operation to the given state object. :param state: The state object to apply this operation to. :raises: LookupFailure """
[Doku] def validate_parameters(self) -> None: """Validate the operation's parameters. :raises: LookupFailure """ try: super().validate_parameters() except TypeError as exc: raise LookupFailure( translated_description=f( self.msg_fmt_invalid_parameters, self.lookup_params, nl=1, ), lookup=self, ) from exc