from abc import ABC, abstractmethod
from typing import Callable, List, Tuple, Dict, Any
[docs]
class IChainTracer(ABC):
"""
Interface for a tracer supporting method chaining through a list of tuples.
Each tuple in the list contains: trace context, function, args, and kwargs.
"""
[docs]
@abstractmethod
def process_chain(self, chain: List[Tuple[Any, Callable[..., Any], List[Any], Dict[str, Any]]]) -> "IChainTracer":
"""
Processes a sequence of operations defined in a chain.
Args:
chain (List[Tuple[Any, Callable[..., Any], List[Any], Dict[str, Any]]]): A list where each tuple contains:
- The trace context or reference required by the function.
- The function (method of IChainTracer) to execute.
- A list of positional arguments for the function.
- A dictionary of keyword arguments for the function.
Returns:
IChainTracer: Returns self to allow further method chaining.
"""
pass