Source code for text_lint.operations.validators.args.lookup_expression

"""Lookup expression YAML argument definitions."""

from typing import Dict, Iterator, List, Optional

from text_lint.operations.lookups.parsers.lookup_expressions import (
    ParsedLookup,
    parse_lookup_expression,
)
from text_lint.operations.mixins.parameter_validation import (
    ParameterValidationMixin,
)
from text_lint.utilities.translations import _

AliasYamlLookupExpressionSet = List[str]
AliasResultOptions = Dict[str, Optional["AliasResultOptions"]]


[docs] class LookupExpressionSetArg: """A set of YAML argument definitions for lookup expressions.""" msg_fmt_invalid_lookup_expression_set = _( "The value '{0}' is not a valid set of lookup expressions" )
[docs] def __init__(self, lookup_expression_set: List["LookupExpression"]) -> None: """Instantiate LookupExpressionSetArg instances. :param lookup_expression_set: A list of LookupExpression instances. """ self._lookup_expression_set = lookup_expression_set
[docs] def __iter__(self) -> Iterator["LookupExpression"]: """Implement the iter operator for LookupExpressionSetArg instances. :returns: An iterable traversing each contained lookup expression. """ return iter(self._lookup_expression_set)
[docs] def __len__(self) -> int: """Implement the len operator for LookupExpressionSetArg instances. :returns: The number of lookup expressions in this set. """ return len(self._lookup_expression_set)
[docs] @classmethod def create( cls, yaml_input: AliasYamlLookupExpressionSet, ) -> "LookupExpressionSetArg": """Create an instance from YAML input. :param yaml_input: A list of lookup expressions from YAML. :returns: The created instance. """ created_set = [] for yaml_set in yaml_input: created_set.append(LookupExpression(yaml_set)) if not isinstance(yaml_input, (list, tuple)): raise TypeError( cls.msg_fmt_invalid_lookup_expression_set.format(yaml_input) ) return cls(lookup_expression_set=created_set)
[docs] class LookupExpression(ParameterValidationMixin): """A lookup expression definition.""" lookups: List[ParsedLookup] name: str source: str
[docs] def __init__( self, lookup_expression: str, ) -> None: """Instantiate LookupExpression instances. :param lookup_expression: A string representation of a lookup expression. """ self.name = lookup_expression self.validate_parameters() self.source, self.lookups = parse_lookup_expression(lookup_expression)
[docs] class Parameters: """Validation configuration for this lookup expression's parameters.""" name = {"type": str}