Skip to content

Records API

Structured result records and SQLite persistence. For the narrative guide, see Records system.

Core

RecordField

RecordField(type_hint: Optional[Type] = None, default: Any = None, required: bool = False, doc: str = '')

Lightweight field descriptor for Record classes.

Simpler than ConfigField — no constraints system, just type info and docs.

Record

Record(**kwargs)

Base class for structured records with SQLite compatibility.

Core fields are defined via RecordField descriptors (type-safe). Dynamic fields can be added at init time for extensibility. Record does NOT manage DB connections — that's RecordStore's job.

get_table_schema classmethod

get_table_schema() -> Dict[str, str]

Return {field_name: sqlite_type} for CREATE TABLE.

to_dict

to_dict() -> Dict[str, Any]

Serialize to flat dict. Skips None-valued core fields.

validate_sqlite_compatible

validate_sqlite_compatible() -> bool

Check all field values are SQLite-compatible types.

Result

Result(**kwargs)

Bases: Record

Base for experiment outcome records.

Recording

Recording(**kwargs)

Bases: Record

Base for runtime diagnostic records.

generate_run_id

generate_run_id() -> str

Generate a UUID4 run_id.

Training recordings

BERTTrainRecording

BERTTrainRecording(**kwargs)

Bases: Recording

BERT per-run training summary.

W2VTrainRecording

W2VTrainRecording(**kwargs)

Bases: Recording

Word2Vec (gensim) per-run training summary.

RSTrainRecording

RSTrainRecording(**kwargs)

Bases: Recording

PCA/ICA (AssetRS) single-pass fit summary.

Persistence

RecordStore

RecordStore(db_path: str, logger: Optional[Logger] = None)

SQLite persistence layer for Record objects.

connection

connection() -> Generator[Connection, None, None]

Context manager for DB connection.

For :memory: databases, reuses a single persistent connection. For file databases, opens and closes per-call.

save

save(record: Record, table_name: str) -> bool

Save a single record. Auto-creates/migrates table.

save_or_replace

save_or_replace(record: Record, table_name: str, key: str = 'run_id') -> bool

Delete existing row with matching key, then insert new row.

save_many

save_many(records: List[Record], table_name: str) -> bool

Save multiple records in a single transaction.