Skip to content

mostlyright.core.schemas.observation_qc

schema.observation_qc.v1 — QC sidecar schema (forward-compat).

Phase 2.1 declares this schema; Phase 3.4 lands the QC engine + writer hooks. One row per QC rule firing per (station_code, observed_at, source) ledger key.

ObservationQCSchema()schema.observation_qc.v1 — QC sidecar (forward-compat).

class mostlyright.core.schemas.observation_qc.ObservationQCSchema

Section titled “class mostlyright.core.schemas.observation_qc.ObservationQCSchema”

Bases: Schema

schema.observation_qc.v1 — QC sidecar (forward-compat).

COLUMNS : ClassVar[list[ColumnSpec]] = [ColumnSpec(name=‘station_code’, dtype=‘string’, units=None, nullable=False, enum_values=None, notes=”), ColumnSpec(name=‘observed_at’, dtype=‘timestamp_utc’, units=None, nullable=False, enum_values=None, notes=”), ColumnSpec(name=‘observation_kind’, dtype=‘enum’, units=None, nullable=True, enum_values=(‘METAR’, ‘SPECI’), notes=”), ColumnSpec(name=‘source’, dtype=‘enum’, units=None, nullable=False, enum_values=(‘awc’, ‘iem’, ‘ghcnh’, ‘ncei’), notes=”), ColumnSpec(name=‘parser_name’, dtype=‘string’, units=None, nullable=True, enum_values=None, notes=”), ColumnSpec(name=‘as_of_time’, dtype=‘timestamp_utc’, units=None, nullable=True, enum_values=None, notes=”), ColumnSpec(name=‘ingestion_id’, dtype=‘string’, units=None, nullable=True, enum_values=None, notes=”), ColumnSpec(name=‘qc_system’, dtype=‘string’, units=None, nullable=False, enum_values=None, notes=”), ColumnSpec(name=‘qc_version’, dtype=‘string’, units=None, nullable=False, enum_values=None, notes=”), ColumnSpec(name=‘rule_id’, dtype=‘string’, units=None, nullable=False, enum_values=None, notes=”), ColumnSpec(name=‘field’, dtype=‘string’, units=None, nullable=False, enum_values=None, notes=‘Observation column the rule evaluated (e.g. temp_c).’), ColumnSpec(name=‘flag’, dtype=‘enum’, units=None, nullable=False, enum_values=(‘clean’, ‘flagged’, ‘suspect’), notes=”), ColumnSpec(name=‘detector_metadata’, dtype=‘string’, units=None, nullable=True, enum_values=None, notes=‘JSON-serialized detector payload; shape per qc_system.’)]

Section titled “COLUMNS : ClassVar[list[ColumnSpec]] = [ColumnSpec(name=‘station_code’, dtype=‘string’, units=None, nullable=False, enum_values=None, notes=”), ColumnSpec(name=‘observed_at’, dtype=‘timestamp_utc’, units=None, nullable=False, enum_values=None, notes=”), ColumnSpec(name=‘observation_kind’, dtype=‘enum’, units=None, nullable=True, enum_values=(‘METAR’, ‘SPECI’), notes=”), ColumnSpec(name=‘source’, dtype=‘enum’, units=None, nullable=False, enum_values=(‘awc’, ‘iem’, ‘ghcnh’, ‘ncei’), notes=”), ColumnSpec(name=‘parser_name’, dtype=‘string’, units=None, nullable=True, enum_values=None, notes=”), ColumnSpec(name=‘as_of_time’, dtype=‘timestamp_utc’, units=None, nullable=True, enum_values=None, notes=”), ColumnSpec(name=‘ingestion_id’, dtype=‘string’, units=None, nullable=True, enum_values=None, notes=”), ColumnSpec(name=‘qc_system’, dtype=‘string’, units=None, nullable=False, enum_values=None, notes=”), ColumnSpec(name=‘qc_version’, dtype=‘string’, units=None, nullable=False, enum_values=None, notes=”), ColumnSpec(name=‘rule_id’, dtype=‘string’, units=None, nullable=False, enum_values=None, notes=”), ColumnSpec(name=‘field’, dtype=‘string’, units=None, nullable=False, enum_values=None, notes=‘Observation column the rule evaluated (e.g. temp_c).’), ColumnSpec(name=‘flag’, dtype=‘enum’, units=None, nullable=False, enum_values=(‘clean’, ‘flagged’, ‘suspect’), notes=”), ColumnSpec(name=‘detector_metadata’, dtype=‘string’, units=None, nullable=True, enum_values=None, notes=‘JSON-serialized detector payload; shape per qc_system.’)]”