Module pyquaca.parser

Parser for parsing query responses before storing in cache.

Classes

class Parser
Expand source code
class Parser:
    """
    Parser for parsing query responses before storing in cache.

    - chain(parser) method is used to chain parsers together.
    - parse(raw) method is used to parse the raw data and return the parsed data.
      This method should be overridden by subclasses to implement parsing logic.
    """

    def __init__(self) -> None:
        self.logger = logging.getLogger("Parser")
        self.next_parser: SupportsParseChain | None = None

    def chain(self, parser: SupportsParseChain) -> None:
        """
        Chain a parser to this parser.

        Args:
            parser: The parser to chain.

        Returns:
            The chained parser.
        """
        self.next_parser = parser

    def parse(self, raw: Any) -> Any:
        """
        Parse the raw data and return the parsed data.

        Args:
            raw: The raw data to parse.

        Returns:
            The parsed data.
        """
        if self.next_parser:
            return self.next_parser.parse(raw)
        return raw

Parser for parsing query responses before storing in cache.

  • chain(parser) method is used to chain parsers together.
  • parse(raw) method is used to parse the raw data and return the parsed data. This method should be overridden by subclasses to implement parsing logic.

Methods

def chain(self,
parser: SupportsParseChain) ‑> None
Expand source code
def chain(self, parser: SupportsParseChain) -> None:
    """
    Chain a parser to this parser.

    Args:
        parser: The parser to chain.

    Returns:
        The chained parser.
    """
    self.next_parser = parser

Chain a parser to this parser.

Args

parser
The parser to chain.

Returns

The chained parser.

def parse(self, raw: Any) ‑> Any
Expand source code
def parse(self, raw: Any) -> Any:
    """
    Parse the raw data and return the parsed data.

    Args:
        raw: The raw data to parse.

    Returns:
        The parsed data.
    """
    if self.next_parser:
        return self.next_parser.parse(raw)
    return raw

Parse the raw data and return the parsed data.

Args

raw
The raw data to parse.

Returns

The parsed data.

class SupportsChain (*args, **kwargs)
Expand source code
class SupportsChain(Protocol):  # pylint: disable=too-few-public-methods
    """Protocol for chaining parsers."""

    def chain(self, parser: "SupportsParse") -> Any:
        """Chain a parser to this parser."""

Protocol for chaining parsers.

Ancestors

  • typing.Protocol
  • typing.Generic

Subclasses

Methods

def chain(self,
parser: SupportsParse) ‑> Any
Expand source code
def chain(self, parser: "SupportsParse") -> Any:
    """Chain a parser to this parser."""

Chain a parser to this parser.

class SupportsParse (*args, **kwargs)
Expand source code
class SupportsParse(Protocol):  # pylint: disable=too-few-public-methods
    """Protocol for parsing data."""

    def parse(self, raw: Any) -> Any:
        """Parse the raw data and return the parsed data."""

Protocol for parsing data.

Ancestors

  • typing.Protocol
  • typing.Generic

Subclasses

Methods

def parse(self, raw: Any) ‑> Any
Expand source code
def parse(self, raw: Any) -> Any:
    """Parse the raw data and return the parsed data."""

Parse the raw data and return the parsed data.

class SupportsParseChain (*args, **kwargs)
Expand source code
class SupportsParseChain(SupportsParse, SupportsChain, Protocol):
    """Protocol for parsers that support chaining."""

Protocol for parsers that support chaining.

Ancestors

Inherited members