bsrn.archive.records_models#

Explicit Pydantic logical-record models aligned with specs.LR_SPECS.

Each scalar/header field uses lr_spec() once: it attaches both BSRN json_schema_extra (Fortran layout) and post-parse validation (Annotated + AfterValidator). LR0100 / LR4000 minute columns use lr_spec_field plus a shared field_validator that reads yearMonth.

Functions

lr_spec(lr, fname, value_type, **field_kwargs)

One logical-record field: Annotated + AfterValidator + Field from LR_SPECS.

lr_spec_field(lr, fname, **kwargs)

Pydantic Field with LR_SPECS archive metadata (minute columns, Fortran layout).

Classes

LR0001(*, stationNumber, month, year, version)

LR0002(*[, scientistChange, ...])

LR0003(*[, message])

LR0004(*[, stationDescChange, ...])

LR0005(*[, change, changeDay, changeHour, ...])

LR0006(*[, change, changeDay, changeHour, ...])

LR0007(*[, change, changeDay, changeHour, ...])

LR0008(*[, change, changeDay, changeHour, ...])

LR0100(*, yearMonth[, ghi_avg, ghi_std, ...])

Minute-resolution archive block; series columns accept pandas.Series or numpy.ndarray.

LR0300(*, yearMonth[, swu_avg, swu_std, ...])

LR0300 reflected / upward radiation minute block (SWU, LWU, Net).

LR4000(*, yearMonth[, domeT1_down, ...])

LR4000 pyrgeometer minute block; series columns accept pandas.Series or numpy.ndarray.

LR4000CONST(*, serialNumber_Manufacturer[, ...])