Repository navigation
0.4.0
An archive now says what produced it, and a directory of archives reads as one
table per file. This release breaks archives, spills and saved results from
0.3.0, a model file that uses a reserved name, one import and one keyword.
Breaks:
- An archive, a sweep spill or a saved result written by 0.3.0 is refused by
name. Itsformat.jsonnames the specsolve that wrote it: read it with that
release. - A spec that declares a name starting with
specsolve_, in any letter case,
is refused. Rename the name. The prefix is reserved for the columns
specsolve adds. - The readers of a sweep return the answer. An
EachWindowsweep comes back
over the model's own coordinates, and the lookahead rows are dropped.
original_index=is removed. To get the frames of each window, pass
per_window=True. - A sweep archive holds the answer. To archive the frames of each window too,
passkeep_windows=Truetosolve_over. SliceMetricsis removed. A row ofsweep.metricsis aMetricsrow, and
loadedis nowloads, which is0or1.- The
runcolumn ofrecordandmetricsis nowspecsolve_run.
New:
- Every table in an archive carries
specsolve_run, the archive's own name.
record.parquetandmetrics.parquethave the same columns for a solve and
for every kind of sweep. A sweep names each slice inslice_axisand
slice. catalog.parquetlists each file an archive holds, with its kind,
description and dimensions.- An archive holds each source as the tidy table that the solve read.
sps.tidy(spec, sources)returns those tables. - The record names the solver, its version, its options, and the specsolve
and mathspec versions. The options are a JSON string. To record more
options than the solver's list, passrecord_options=. - specsolve requires
mathspec>=0.2.1,<0.3, so a release installed later
gets the mathspec it was released with.
Fixes:
- A sweep key named like a metrics column, such as
loads, is refused before a
slice is solved. - A sweep over an index given as an iterator reads it once, and every slice
and the archive see the same labels.
The pull requests since 0.3.0:
- fix(deps): an installed specsolve release keeps the mathspec minor version it was released against (#1816)
- feat(archive): every archived table carries the run it came from as specsolve_run, and names starting with specsolve_ are reserved (#1809)
- feat(archive): an archive's record and metrics have the same columns for a solve and for every kind of sweep (#1810)
- feat(archive): an archive lists every name it holds, its kind, description and dimensions in catalog.parquet (#1812)
- feat(sweep): a sweep reads and archives its answer over the model's own coordinates by default, and keeps the per-window frames only on request (#1811)
- feat(data): an archive holds each source as the tidy table the solve read, and tidy() returns those tables (#1813)
- fix(sweep): a sweep key named like a metrics column is refused before a slice is solved (#1820)
- feat(archive): an archived answer names the solver, its options and the specsolve and mathspec versions that produced it (#1817)
- feat(api): a caller can name more solver options whose value the record keeps (#1818)