Source code for nnsight.intervention.contexts.editing
from typing import TYPE_CHECKING
from ..backends import EditingBackend
from . import InterleavingTracer
if TYPE_CHECKING:
from .. import NNsight
[docs]
class EditingTracer(InterleavingTracer):
"""The `EditingTracer` exists because we want to return the edited model from __enter__ not the Tracer itself
While were here we might as well force the backend to be `EditingBackend`
"""
def __init__(self, model:"NNsight", *args, inplace: bool = False, **kwargs) -> None:
# If its not inplace we create a shallow copy of the model
# With the same references to the underlying model.
if not inplace:
model = model._shallow_copy()
super().__init__(model, *args, backend=EditingBackend(model), **kwargs)
def __enter__(self):
super().__enter__()
return self._model