Source code for nnsight.intervention.protocols.entrypoint
from typing import Any
from ...tracing.protocols import Protocol
[docs]
class EntryPoint(Protocol):
"""An EntryPoint Protocol should have its value set manually outside of normal graph execution.
This makes these type of Nodes special and are handled differently in a variety of cases.
Subclasses EntryPoint informs those cases to handle it differently.
Examples are InterventionProtocol and GradProtocol.
"""
@staticmethod
def is_entrypoint(thing:Any):
return isinstance(thing, type) and issubclass(thing, EntryPoint)
@classmethod
def add(cls,*args, **kwargs):
return super().add(*args, redirect=False, **kwargs)