Module textual.actions

Expand source code
from __future__ import annotations

import ast
import re


class ActionError(Exception):
    pass


re_action_params = re.compile(r"([\w\.]+)(\(.*?\))")


def parse(action: str) -> tuple[str, tuple[object, ...]]:
    """Parses an action string.

    Args:
        action (str): String containing action.

    Raises:
        ActionError: If the action has invalid syntax.

    Returns:
        tuple[str, tuple[object, ...]]: Action name and parameters
    """
    params_match = re_action_params.match(action)
    if params_match is not None:
        action_name, action_params_str = params_match.groups()
        try:
            action_params = ast.literal_eval(action_params_str)
        except Exception:
            raise ActionError(
                f"unable to parse {action_params_str!r} in action {action!r}"
            )
    else:
        action_name = action
        action_params = ()

    return (
        action_name,
        action_params if isinstance(action_params, tuple) else (action_params,),
    )

Functions

def parse(action: str) ‑> tuple[str, tuple[object, ...]]

Parses an action string.

Args

action : str
String containing action.

Raises

ActionError
If the action has invalid syntax.

Returns

tuple[str, tuple[object, …]]
Action name and parameters
Expand source code
def parse(action: str) -> tuple[str, tuple[object, ...]]:
    """Parses an action string.

    Args:
        action (str): String containing action.

    Raises:
        ActionError: If the action has invalid syntax.

    Returns:
        tuple[str, tuple[object, ...]]: Action name and parameters
    """
    params_match = re_action_params.match(action)
    if params_match is not None:
        action_name, action_params_str = params_match.groups()
        try:
            action_params = ast.literal_eval(action_params_str)
        except Exception:
            raise ActionError(
                f"unable to parse {action_params_str!r} in action {action!r}"
            )
    else:
        action_name = action
        action_params = ()

    return (
        action_name,
        action_params if isinstance(action_params, tuple) else (action_params,),
    )

Classes

class ActionError (*args, **kwargs)

Common base class for all non-exit exceptions.

Expand source code
class ActionError(Exception):
    pass

Ancestors

  • builtins.Exception
  • builtins.BaseException