Installation
pip install --upgrade supyWhat's New
Version 2026.6.5 (released on 5 June 2026)
This release finalises the YAML configuration schema to 2026.5, collapsing the entire 2026.5.dev1..2026.5.dev14 development cycle into a single released label. The headline change is a comprehensive naming overhaul of the YAML surface: de-fused snake_case field names, readable physics selectors, a fully snake_case STEBBS surface, and a restructured model.control. Existing configurations upgrade automatically in one step. The release also takes the first steps towards driving SUEWS from AI coding agents. There is no change to model output: the schema changes are confined to the YAML surface and the Python data model.
SUEWS Agent (experimental)
The new SUEWS agent plugin bundles the SUEWS MCP server so an AI coding agent (for example Claude) can scaffold, inspect, validate, and run configurations through structured tools, with a self-bootstrapping uvx install so the plugin is the only onboarding step (#1496, #1384). suews inspect --format json exposes a structured physics block, and the sample configuration uses readable, nested physics groupings (with legacy flat input still accepted) so both agents and users see semantic axes rather than opaque method codes (#1484, #1483). This capability is deliberately experimental and under active development -- interfaces will change and it is not yet production-ready -- but we are excited about this direction.
Bug Fixes
- Legacy table-to-YAML conversion no longer aborts on a missing
stebbsmethoddf_statecolumn (defaults to0, STEBBS disabled) (#1500) - Hardened legacy STEBBS
df_statedefaults so older state DataFrames load without the newer nested STEBBS columns (#1510) - Folded legacy flat STEBBS physics switches into the nested
model.physics.stebbsobject during validation (#1499) - Validator report no longer collapses to a lone
schema_versionline when that field is absent (#1466, #1458) - Made standalone Phase B/C validation rename-aware so legacy field spellings are normalised before rule checks (#1457)
SUEWSOutput.save()follows the configured output format instead of always forcing parquet (#1451)
Build System and CI
- Narrowed the PyPI publish tag trigger to CalVer-only, so non-supy tags do not build a SuPy wheel (#1384)
- Resolved the Python interpreter in the
validate-tutorialhook (#1503) - Pinned the agent push-token checkout to silence the zizmor
artipackedfinding (#1504)
Maintenance
- Removed leftover derived-type (
dts) field-name suffixes and redundant Fortran declarations (#1511)
Documentation
- Synced the schema-versioning and transition-guide docs to the finalised
2026.5schema
Breaking Changes
The YAML schema is finalised to 2026.5 (the 2026.5.dev1..2026.5.dev14 cycle collapsed into one released label). The union of breaking, user-facing changes since 2026.4.3:
- Fused field names rewritten to
snake_case(#1256): for examplenetradiationmethod->net_radiation_method,soildepth->soil_depth,baset->base_temperature,crwmax->water_holding_capacity_max - ModelPhysics selector renames (#1321):
_method/_modelsuffixes dropped and abbreviations expanded (net_radiation,storage_heat,emissions,stability,water_use,roughness_sublayer,frontal_area_index,surface_conductance) - STEBBS YAML surface fully
snake_case(#1334, #1337, #1327): the PascalCase exception is retired (124 renames); the hot-water subsystem is unified underhot_water_*(dhw_*dropped) - Naming-convention reorder (#1392, #1394, #1452): quantity-first (
wall_external_thickness->thickness_wall_outer), thearchetype_*namespace prefix, andbuilding_typedropped - Config keys relocated (#1372):
model.control.forcing_file->forcing.fileandoutput_file->output(innerpath->dir; the legacy stringoutput_fileform removed) - Forcing file format (#1372, #1420): forcing-file header columns are now read and matched to the canonical column names (previously discarded). The baseline-10 columns (
iy,id,it,imin,Tair,RH,U,pres,kdown,rain) are required; missing optional canonical columns are filled with-999; whitelisted per-land-cover columns are accepted (lai_{evetr,dectr,grass},wuh_<surface>). Forlaimethod=0, observed LAI is no longer clipped toLAImin/LAImax. Check your forcing files' headers against the canonical names - STEBBS physics switches nested (#1456): the flat
model.physicsSTEBBS switches fold undermodel.physics.stebbs(stebbs.enabled+stebbs.parameters;capacitance,setpoint,same_albedo_*,same_emissivity_*move at their leaf names) frontal_area_indexselector reduced (#1495): onlyobserved/modelledare accepted;provided/use_provided/simple_schemeare retired
Upgrade existing YAMLs in one step with suews-schema migrate your_config.yml (the (2026.4 -> 2026.5) handler applies the full union and logs every rename and drop). See the transition guide. There is no model-output change: the schema changes are confined to the YAML surface and the Python data model.
Full Changelog
For complete details, see the CHANGELOG.
Citation
This release is archived on Zenodo with a DOI for academic citation. The DOI appears automatically once Zenodo processing completes (usually within minutes).