Overrides utilities
Lower-level pieces of propamm.overrides, for custom sources or manual eth_call overrides.
parse_overrides_message
python
def parse_overrides_message(raw: Any) -> OverridesSnapshotParse a raw payload (a WS frame or the JSON-RPC result) into an OverridesSnapshot: metadata keys split out, addresses lowercased, empty stateDiffs dropped.
python
import json
from propamm.overrides import parse_overrides_message
snapshot = parse_overrides_message(json.loads(frame))
# OverridesSnapshot(block_number=24285034, timestamp_ns=..., per_pamm={"0x...": {...}})Parameters: raw: Any — the decoded JSON. Raises if it isn't an object. Returns OverridesSnapshot.
to_state_override
python
def to_state_override(snapshot: OverridesSnapshot, *, pamms: list[str] | None = None, bebop_default: bool = True) -> dictFlatten a snapshot into the eth_call state-override map ({address: {"stateDiff": {slot: value}}}), merging diffs at slot level and padding words to 32 bytes.
python
from propamm.overrides import to_state_override
state_override = to_state_override(snapshot)
raw = await client.call_with_overrides(function, state_override=state_override)Parameters:
snapshot: OverridesSnapshotpamms: list[str] | None— restrict to these pAMM entries (default all).bebop_default: bool— inject the Bebop default slot when no Bebop entry is present (defaultTrue), so a stale on-chain Bebop price can't win venue selection.
Returns dict — the eth_call state-override map.
Constants
BEBOP_DEFAULT_SLOT— the registry slot zeroed by the Bebop default.DEFAULT_OVERRIDES_RPC_URL/DEFAULT_OVERRIDES_WS_URL.
OverridesSource
The abstract base both sources implement — subclass it to plug in a custom source:
python
class OverridesSource(abc.ABC):
async def get_overrides(self) -> OverridesSnapshot | None: ...
async def close(self) -> None: ... # optional teardown; default no-op