Source code for exp.registries.base
# Copyright (c) 2026 "Sheaf Neural Networks as Message Passing"
# Authors: Alessio Borgi, Gabriele Onorato, Luke Braithwaite,
# Mario Severino, Emanuele Mule, Dario Loi,
# Francesco Restuccia, Fabrizio Silvestri, Pietro Liò
"""Generic registry base class."""
[docs]
class Registry[Key, Value]:
"""A typed key-value store that raises on duplicate keys and missing lookups."""
[docs]
def __init__(self) -> None:
self._store: dict[Key, Value] = {}
[docs]
def register(self, key: Key, value: Value) -> None:
if key in self._store:
raise ValueError(f"Key {key!r} is already registered.")
self._store[key] = value
[docs]
def get(self, key: Key) -> Value:
if key not in self._store:
raise KeyError(f"Key {key!r} not found in registry.")
return self._store[key]
def __contains__(self, key: object) -> bool: # noqa: D105
return key in self._store
[docs]
def list_keys(self) -> list[Key]:
return list(self._store.keys())