Source code for nnsight.schema.request
from __future__ import annotations
import io
import zlib
from typing import TYPE_CHECKING, Any, Callable, Dict, List, Union
from pydantic import BaseModel, ConfigDict
from ..intervention.serialization import save, load
if TYPE_CHECKING:
from .. import NNsight
from ..intervention.tracing.tracer import Tracer
else:
Tracer = Any
[docs]
class RequestModel(BaseModel):
model_config = ConfigDict(arbitrary_types_allowed=True, protected_namespaces=())
interventions: Callable
tracer: Tracer
def serialize(self, _zlib:bool) -> bytes:
data = save(self)
if _zlib:
data = zlib.compress(data)
return data
@staticmethod
def deserialize(model: "NNsight", request:bytes, _zlib:bool) -> RequestModel:
if _zlib:
request = zlib.decompress(request)
with io.BytesIO(request) as data:
data.seek(0)
request:RequestModel = load(data.read(), model)
return request
RequestModel.model_rebuild()