• v0.59.0 0bdd66a990

    0.59.0 Stable

    joeyr released this 2026-09-22 17:43:44 -05:00 | 35 commits to main since this release

    Steps 1 and 2 of the weather enhancement plan: two models side by side with
    precipitation and instability, and a grid that says what it publishes.
    Every
    behaviour below was measured against the live upstreams before it was written, and three
    of the measurements changed the design.

    Added

    • get_model_run returns both configured models in models, the high-resolution
      one and the global one, each with its own run block and run_age. The envelope
      describes the first that answered and envelope_describes names it. Outside the
      high-resolution domain that entry says available: false, outside_domain: true.
    • Sixteen more hourly fields: precipitation, rain, showers, CAPE, lifted index,
      CIN, boundary layer height, UV (both forms), cloud cover total and low/mid/high,
      visibility, weather code and freezing level. A field a model never fills is named in
      variables_not_supplied and dropped from its rows.
    • Sunrise and sunset per UTC day in sun.
    • get_forecast_grid lists what the gridpoint publishes: parameters_available
      and parameters_published_empty, read from the document. probabilityOfThunder is
      in the default set.

    Changed

    • get_model_run's response shape. model_run, run and model_cell moved into
      each entry of models. The description changed too, so the connector needs a
      reconnect, not just a deploy.
    • One request per model, not a comma list in &models=. Measured: over London a
      comma list answers 200 with HRRR silently dropped and its keys unsuffixed.
    • Precipitation probability is not requested. HRRR's ran to hour 48 when its run
      stopped at 45, and matched the GFS ensemble hour for hour, so it was never a value
      from that run. not_requested says so in the response. is_day is left out too.

    Fixed

    • Asking the grid for weather or hazards raised a TypeError. Their values are
      objects. The reader refuses a non-numeric value by type, and the tool names it in
      parameters_not_numeric with a sentence pointing at the tools that carry it.
    • A grid parameter with "uom": null was labelled "None". The key is present, so
      a .get default never applied. probabilityOfThunder is null-uom at every office
      sampled, and its percent is now named in grid.UNDECLARED_UNITS.
    Downloads