Home / Class/ Visitor Class — langchain Architecture

Visitor Class — langchain Architecture

Architecture documentation for the Visitor class in structured_query.py from the langchain codebase.

Entity Profile

Dependency Diagram

graph TD
  18e3bab6_a53a_ad0f_2cea_5bfc37a5d878["Visitor"]
  3255809f_c60a_7efd_1576_4239e9059ea0["Operator"]
  18e3bab6_a53a_ad0f_2cea_5bfc37a5d878 -->|extends| 3255809f_c60a_7efd_1576_4239e9059ea0
  c1377b5d_a079_68f1_77b9_1103b2e76982["Comparator"]
  18e3bab6_a53a_ad0f_2cea_5bfc37a5d878 -->|extends| c1377b5d_a079_68f1_77b9_1103b2e76982
  2910db70_4057_4517_fbc4_a618465c787c["structured_query.py"]
  18e3bab6_a53a_ad0f_2cea_5bfc37a5d878 -->|defined in| 2910db70_4057_4517_fbc4_a618465c787c
  c613e8c3_4678_966f_08bb_558583123227["_validate_func()"]
  18e3bab6_a53a_ad0f_2cea_5bfc37a5d878 -->|method| c613e8c3_4678_966f_08bb_558583123227
  e60fdb48_09a5_cf10_4a8e_b6c2ad50e479["visit_operation()"]
  18e3bab6_a53a_ad0f_2cea_5bfc37a5d878 -->|method| e60fdb48_09a5_cf10_4a8e_b6c2ad50e479
  86621f70_1be4_21db_f786_d01ed732acc0["visit_comparison()"]
  18e3bab6_a53a_ad0f_2cea_5bfc37a5d878 -->|method| 86621f70_1be4_21db_f786_d01ed732acc0
  71e6cfdd_ff3b_fa0b_6c5e_62319d1afa02["visit_structured_query()"]
  18e3bab6_a53a_ad0f_2cea_5bfc37a5d878 -->|method| 71e6cfdd_ff3b_fa0b_6c5e_62319d1afa02

Relationship Graph

Source Code

libs/core/langchain_core/structured_query.py lines 15–68

class Visitor(ABC):
    """Defines interface for IR translation using a visitor pattern."""

    allowed_comparators: Sequence[Comparator] | None = None
    """Allowed comparators for the visitor."""

    allowed_operators: Sequence[Operator] | None = None
    """Allowed operators for the visitor."""

    def _validate_func(self, func: Operator | Comparator) -> None:
        if (
            isinstance(func, Operator)
            and self.allowed_operators is not None
            and func not in self.allowed_operators
        ):
            msg = (
                f"Received disallowed operator {func}. Allowed "
                f"comparators are {self.allowed_operators}"
            )
            raise ValueError(msg)
        if (
            isinstance(func, Comparator)
            and self.allowed_comparators is not None
            and func not in self.allowed_comparators
        ):
            msg = (
                f"Received disallowed comparator {func}. Allowed "
                f"comparators are {self.allowed_comparators}"
            )
            raise ValueError(msg)

    @abstractmethod
    def visit_operation(self, operation: Operation) -> Any:
        """Translate an Operation.

        Args:
            operation: Operation to translate.
        """

    @abstractmethod
    def visit_comparison(self, comparison: Comparison) -> Any:
        """Translate a Comparison.

        Args:
            comparison: Comparison to translate.
        """

    @abstractmethod
    def visit_structured_query(self, structured_query: StructuredQuery) -> Any:
        """Translate a StructuredQuery.

        Args:
            structured_query: StructuredQuery to translate.
        """

Frequently Asked Questions

What is the Visitor class?
Visitor is a class in the langchain codebase, defined in libs/core/langchain_core/structured_query.py.
Where is Visitor defined?
Visitor is defined in libs/core/langchain_core/structured_query.py at line 15.
What does Visitor extend?
Visitor extends Operator, Comparator.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free