Source code for cosapp.patterns.visitor

import abc
from typing import List


[docs]class Component(metaclass=abc.ABCMeta): """Abstract Base Class for visited components""" __slots__ = ()
[docs] @abc.abstractmethod def accept(self, visitor) -> None: """Determines class-dependent course of action when visited by `visitor`""" pass
[docs]class Visitor: """Base class for visitors"""
[docs] def visit_system(self, system) -> None: pass
[docs] def visit_port(self, port) -> None: pass
[docs] def visit_driver(self, driver) -> None: pass
[docs]def send(visitor: Visitor, components: List[Component]): """Send a visitor to a list of generic components""" for component in components: component.accept(visitor)