swatplus-builder 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. swatplus_builder-0.5.0/.gitignore +150 -0
  2. swatplus_builder-0.5.0/CHANGELOG.md +70 -0
  3. swatplus_builder-0.5.0/CITATION.cff +59 -0
  4. swatplus_builder-0.5.0/LICENSE +21 -0
  5. swatplus_builder-0.5.0/PKG-INFO +480 -0
  6. swatplus_builder-0.5.0/README.md +376 -0
  7. swatplus_builder-0.5.0/pyproject.toml +158 -0
  8. swatplus_builder-0.5.0/src/swatplus_builder/__init__.py +26 -0
  9. swatplus_builder-0.5.0/src/swatplus_builder/artifacts/__init__.py +34 -0
  10. swatplus_builder-0.5.0/src/swatplus_builder/artifacts/hashing.py +49 -0
  11. swatplus_builder-0.5.0/src/swatplus_builder/artifacts/models.py +128 -0
  12. swatplus_builder-0.5.0/src/swatplus_builder/artifacts/store.py +198 -0
  13. swatplus_builder-0.5.0/src/swatplus_builder/autoresearch/__init__.py +47 -0
  14. swatplus_builder-0.5.0/src/swatplus_builder/autoresearch/loop.py +411 -0
  15. swatplus_builder-0.5.0/src/swatplus_builder/autoresearch/surrogate.py +557 -0
  16. swatplus_builder-0.5.0/src/swatplus_builder/calibration/__init__.py +52 -0
  17. swatplus_builder-0.5.0/src/swatplus_builder/calibration/bridge_diagnostics.py +339 -0
  18. swatplus_builder-0.5.0/src/swatplus_builder/calibration/calibrator.py +1172 -0
  19. swatplus_builder-0.5.0/src/swatplus_builder/calibration/diagnostic_calibrator.py +1025 -0
  20. swatplus_builder-0.5.0/src/swatplus_builder/calibration/forward.py +472 -0
  21. swatplus_builder-0.5.0/src/swatplus_builder/calibration/locked_benchmark.py +1433 -0
  22. swatplus_builder-0.5.0/src/swatplus_builder/calibration/nwis.py +61 -0
  23. swatplus_builder-0.5.0/src/swatplus_builder/calibration/pyswatplus_runtime.py +93 -0
  24. swatplus_builder-0.5.0/src/swatplus_builder/calibration/real_engine.py +467 -0
  25. swatplus_builder-0.5.0/src/swatplus_builder/calibration/report.py +476 -0
  26. swatplus_builder-0.5.0/src/swatplus_builder/calibration/sensitivity_screen.py +126 -0
  27. swatplus_builder-0.5.0/src/swatplus_builder/calibration/spotpy_adapter.py +144 -0
  28. swatplus_builder-0.5.0/src/swatplus_builder/cli.py +1831 -0
  29. swatplus_builder-0.5.0/src/swatplus_builder/config.py +72 -0
  30. swatplus_builder-0.5.0/src/swatplus_builder/db/__init__.py +1 -0
  31. swatplus_builder-0.5.0/src/swatplus_builder/db/mock_datasets.py +470 -0
  32. swatplus_builder-0.5.0/src/swatplus_builder/db/project.py +275 -0
  33. swatplus_builder-0.5.0/src/swatplus_builder/db/schema.py +367 -0
  34. swatplus_builder-0.5.0/src/swatplus_builder/db/seed.py +132 -0
  35. swatplus_builder-0.5.0/src/swatplus_builder/db/writer.py +415 -0
  36. swatplus_builder-0.5.0/src/swatplus_builder/diagnostics.py +822 -0
  37. swatplus_builder-0.5.0/src/swatplus_builder/editor/__init__.py +5 -0
  38. swatplus_builder-0.5.0/src/swatplus_builder/editor/api.py +726 -0
  39. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/Pipfile +13 -0
  40. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/actions/__init__.py +0 -0
  41. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/actions/create_databases.py +119 -0
  42. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/actions/get_swatplus_check.py +902 -0
  43. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/actions/import_export_data.py +249 -0
  44. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/actions/import_gis.py +1644 -0
  45. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/actions/import_gis_legacy.py +2007 -0
  46. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/actions/import_weather.py +1466 -0
  47. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/actions/load_scenarios.py +97 -0
  48. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/actions/read_output.py +432 -0
  49. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/actions/read_output_legacy.py +350 -0
  50. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/actions/reimport_gis.py +100 -0
  51. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/actions/run_all.py +105 -0
  52. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/actions/setup_project.py +154 -0
  53. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/actions/update_datasets.py +485 -0
  54. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/actions/update_project.py +1132 -0
  55. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/actions/write_files.py +1098 -0
  56. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/__init__.py +0 -0
  57. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/datasets/__init__.py +0 -0
  58. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/datasets/base.py +8 -0
  59. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/datasets/basin.py +77 -0
  60. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/datasets/change.py +10 -0
  61. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/datasets/climate.py +29 -0
  62. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/datasets/decision_table.py +41 -0
  63. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/datasets/definitions.py +88 -0
  64. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/datasets/hru_parm_db.py +165 -0
  65. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/datasets/init.py +21 -0
  66. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/datasets/lum.py +70 -0
  67. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/datasets/ops.py +61 -0
  68. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/datasets/setup.py +732 -0
  69. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/datasets/soils.py +41 -0
  70. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/datasets/structural.py +78 -0
  71. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/lib.py +95 -0
  72. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/__init__.py +0 -0
  73. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/aquifer.py +80 -0
  74. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/base.py +8 -0
  75. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/basin.py +78 -0
  76. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/change.py +147 -0
  77. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/channel.py +146 -0
  78. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/climate.py +110 -0
  79. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/config.py +79 -0
  80. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/connect.py +148 -0
  81. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/decision_table.py +41 -0
  82. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/dr.py +93 -0
  83. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/exco.py +93 -0
  84. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/gis.py +125 -0
  85. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/gwflow.py +160 -0
  86. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/hru.py +52 -0
  87. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/hru_parm_db.py +172 -0
  88. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/hydrology.py +62 -0
  89. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/init.py +240 -0
  90. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/link.py +21 -0
  91. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/lum.py +74 -0
  92. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/ops.py +61 -0
  93. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/recall.py +35 -0
  94. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/regions.py +134 -0
  95. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/reservoir.py +105 -0
  96. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/routing_unit.py +57 -0
  97. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/salts.py +467 -0
  98. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/setup.py +307 -0
  99. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/simulation.py +114 -0
  100. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/soils.py +53 -0
  101. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/structural.py +78 -0
  102. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/project/water_rights.py +49 -0
  103. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/soils.py +207 -0
  104. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/vardefs.py +50 -0
  105. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/database/wgn.py +139 -0
  106. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/__init__.py +0 -0
  107. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/aquifer.py +124 -0
  108. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/base.py +497 -0
  109. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/basin.py +55 -0
  110. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/change.py +405 -0
  111. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/channel.py +178 -0
  112. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/climate.py +261 -0
  113. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/config.py +350 -0
  114. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/connect.py +329 -0
  115. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/decision_table.py +241 -0
  116. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/dr.py +51 -0
  117. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/exco.py +195 -0
  118. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/gwflow.py +717 -0
  119. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/hru.py +109 -0
  120. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/hru_parm_db.py +177 -0
  121. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/hydrology.py +100 -0
  122. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/init.py +272 -0
  123. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/lum.py +373 -0
  124. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/ops.py +259 -0
  125. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/recall.py +199 -0
  126. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/regions.py +132 -0
  127. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/reservoir.py +223 -0
  128. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/routing_unit.py +136 -0
  129. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/salts.py +1152 -0
  130. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/simulation.py +284 -0
  131. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/soils.py +114 -0
  132. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/structural.py +243 -0
  133. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/fileio/water_rights.py +170 -0
  134. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/get-pip.py +32992 -0
  135. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/helpers/executable_api.py +19 -0
  136. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/helpers/table_mapper.py +186 -0
  137. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/helpers/utils.py +193 -0
  138. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/python-build-linux.sh +3 -0
  139. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/python-build-mac.sh +3 -0
  140. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/python-build-windows.bat +2 -0
  141. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/aquifer.py +340 -0
  142. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/auto_complete.py +261 -0
  143. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/basin.py +23 -0
  144. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/change.py +362 -0
  145. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/channel.py +461 -0
  146. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/climate.py +457 -0
  147. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/config.py +17 -0
  148. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/decision_table.py +296 -0
  149. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/defaults.py +608 -0
  150. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/definitions.py +60 -0
  151. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/gwflow.py +565 -0
  152. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/hru.py +306 -0
  153. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/hru_lte.py +212 -0
  154. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/hru_parm_db.py +336 -0
  155. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/hydrology.py +110 -0
  156. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/init.py +478 -0
  157. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/lum.py +504 -0
  158. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/ops.py +252 -0
  159. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/recall.py +331 -0
  160. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/regions.py +132 -0
  161. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/reservoir.py +723 -0
  162. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/routing_unit.py +248 -0
  163. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/salts.py +871 -0
  164. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/setup.py +458 -0
  165. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/soils.py +119 -0
  166. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/structural.py +212 -0
  167. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/rest/water_rights.py +106 -0
  168. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/swatplus_api.py +206 -0
  169. swatplus_builder-0.5.0/src/swatplus_builder/editor/vendored/swatplus_rest_api.py +73 -0
  170. swatplus_builder-0.5.0/src/swatplus_builder/errors.py +43 -0
  171. swatplus_builder-0.5.0/src/swatplus_builder/full_mode/__init__.py +0 -0
  172. swatplus_builder-0.5.0/src/swatplus_builder/full_mode/parameter_bridge.py +476 -0
  173. swatplus_builder-0.5.0/src/swatplus_builder/full_mode/routing_fixes.py +303 -0
  174. swatplus_builder-0.5.0/src/swatplus_builder/full_mode/topology_converter.py +367 -0
  175. swatplus_builder-0.5.0/src/swatplus_builder/full_mode/verify_conversion.py +246 -0
  176. swatplus_builder-0.5.0/src/swatplus_builder/full_mode/warmup.py +182 -0
  177. swatplus_builder-0.5.0/src/swatplus_builder/full_mode/water_balance_gate.py +354 -0
  178. swatplus_builder-0.5.0/src/swatplus_builder/gis/__init__.py +17 -0
  179. swatplus_builder-0.5.0/src/swatplus_builder/gis/complexity.py +130 -0
  180. swatplus_builder-0.5.0/src/swatplus_builder/gis/delineation.py +1172 -0
  181. swatplus_builder-0.5.0/src/swatplus_builder/gis/hru.py +910 -0
  182. swatplus_builder-0.5.0/src/swatplus_builder/gis/landuse.py +178 -0
  183. swatplus_builder-0.5.0/src/swatplus_builder/gis/nldi_fallback.py +72 -0
  184. swatplus_builder-0.5.0/src/swatplus_builder/gis/overlay_repair.py +286 -0
  185. swatplus_builder-0.5.0/src/swatplus_builder/gis/soil.py +574 -0
  186. swatplus_builder-0.5.0/src/swatplus_builder/gis/tables.py +653 -0
  187. swatplus_builder-0.5.0/src/swatplus_builder/gis/terrain.py +61 -0
  188. swatplus_builder-0.5.0/src/swatplus_builder/gis/topology.py +84 -0
  189. swatplus_builder-0.5.0/src/swatplus_builder/gis/validate.py +286 -0
  190. swatplus_builder-0.5.0/src/swatplus_builder/mcp/__init__.py +5 -0
  191. swatplus_builder-0.5.0/src/swatplus_builder/mcp/server.py +754 -0
  192. swatplus_builder-0.5.0/src/swatplus_builder/orchestrate.py +280 -0
  193. swatplus_builder-0.5.0/src/swatplus_builder/output/__init__.py +35 -0
  194. swatplus_builder-0.5.0/src/swatplus_builder/output/et_diagnostics.py +344 -0
  195. swatplus_builder-0.5.0/src/swatplus_builder/output/eval.py +682 -0
  196. swatplus_builder-0.5.0/src/swatplus_builder/output/mass_diagnostics.py +279 -0
  197. swatplus_builder-0.5.0/src/swatplus_builder/output/mass_trace.py +2496 -0
  198. swatplus_builder-0.5.0/src/swatplus_builder/output/metadata.py +85 -0
  199. swatplus_builder-0.5.0/src/swatplus_builder/output/metrics.py +279 -0
  200. swatplus_builder-0.5.0/src/swatplus_builder/output/plots/__init__.py +35 -0
  201. swatplus_builder-0.5.0/src/swatplus_builder/output/plots/fdc.py +50 -0
  202. swatplus_builder-0.5.0/src/swatplus_builder/output/plots/hydrograph.py +62 -0
  203. swatplus_builder-0.5.0/src/swatplus_builder/output/plots/residuals.py +51 -0
  204. swatplus_builder-0.5.0/src/swatplus_builder/output/plots/scatter.py +55 -0
  205. swatplus_builder-0.5.0/src/swatplus_builder/output/plots/seasonal.py +55 -0
  206. swatplus_builder-0.5.0/src/swatplus_builder/output/plots/soil.py +78 -0
  207. swatplus_builder-0.5.0/src/swatplus_builder/output/plots/spatial.py +107 -0
  208. swatplus_builder-0.5.0/src/swatplus_builder/output/plots/style.py +32 -0
  209. swatplus_builder-0.5.0/src/swatplus_builder/output/plots/utils.py +117 -0
  210. swatplus_builder-0.5.0/src/swatplus_builder/output/plots/wrapper.py +175 -0
  211. swatplus_builder-0.5.0/src/swatplus_builder/output/reader.py +305 -0
  212. swatplus_builder-0.5.0/src/swatplus_builder/output/realism.py +423 -0
  213. swatplus_builder-0.5.0/src/swatplus_builder/output/summary.py +202 -0
  214. swatplus_builder-0.5.0/src/swatplus_builder/output/volume_diagnostics.py +3109 -0
  215. swatplus_builder-0.5.0/src/swatplus_builder/output/weather_forcing.py +352 -0
  216. swatplus_builder-0.5.0/src/swatplus_builder/params/__init__.py +37 -0
  217. swatplus_builder-0.5.0/src/swatplus_builder/params/governance.py +219 -0
  218. swatplus_builder-0.5.0/src/swatplus_builder/params/registry.py +452 -0
  219. swatplus_builder-0.5.0/src/swatplus_builder/ref/__init__.py +38 -0
  220. swatplus_builder-0.5.0/src/swatplus_builder/ref/bootstrap.py +308 -0
  221. swatplus_builder-0.5.0/src/swatplus_builder/ref/catalog.py +99 -0
  222. swatplus_builder-0.5.0/src/swatplus_builder/run/__init__.py +18 -0
  223. swatplus_builder-0.5.0/src/swatplus_builder/run/swatplus.py +851 -0
  224. swatplus_builder-0.5.0/src/swatplus_builder/sensitivity.py +217 -0
  225. swatplus_builder-0.5.0/src/swatplus_builder/skills/__init__.py +17 -0
  226. swatplus_builder-0.5.0/src/swatplus_builder/skills/swatplus_playbook/README.md +21 -0
  227. swatplus_builder-0.5.0/src/swatplus_builder/skills/swatplus_playbook/__init__.py +13 -0
  228. swatplus_builder-0.5.0/src/swatplus_builder/skills/swatplus_playbook/rules.py +64 -0
  229. swatplus_builder-0.5.0/src/swatplus_builder/skills/swatplus_playbook/schemas.py +54 -0
  230. swatplus_builder-0.5.0/src/swatplus_builder/skills/swatplus_playbook/update.py +41 -0
  231. swatplus_builder-0.5.0/src/swatplus_builder/soil/__init__.py +53 -0
  232. swatplus_builder-0.5.0/src/swatplus_builder/soil/builder.py +157 -0
  233. swatplus_builder-0.5.0/src/swatplus_builder/soil/gnatsgo.py +763 -0
  234. swatplus_builder-0.5.0/src/swatplus_builder/soil/models.py +36 -0
  235. swatplus_builder-0.5.0/src/swatplus_builder/soil/params.py +330 -0
  236. swatplus_builder-0.5.0/src/swatplus_builder/soil/pc.py +242 -0
  237. swatplus_builder-0.5.0/src/swatplus_builder/soil/plot.py +167 -0
  238. swatplus_builder-0.5.0/src/swatplus_builder/soil/sda.py +277 -0
  239. swatplus_builder-0.5.0/src/swatplus_builder/soil/soilgrids.py +114 -0
  240. swatplus_builder-0.5.0/src/swatplus_builder/soil/writer.py +260 -0
  241. swatplus_builder-0.5.0/src/swatplus_builder/tools/__init__.py +18 -0
  242. swatplus_builder-0.5.0/src/swatplus_builder/tools/agent.py +159 -0
  243. swatplus_builder-0.5.0/src/swatplus_builder/types.py +525 -0
  244. swatplus_builder-0.5.0/src/swatplus_builder/validation/__init__.py +6 -0
  245. swatplus_builder-0.5.0/src/swatplus_builder/validation/runner.py +403 -0
  246. swatplus_builder-0.5.0/src/swatplus_builder/weather/__init__.py +29 -0
  247. swatplus_builder-0.5.0/src/swatplus_builder/weather/daymet.py +459 -0
  248. swatplus_builder-0.5.0/src/swatplus_builder/weather/gridmet.py +510 -0
  249. swatplus_builder-0.5.0/src/swatplus_builder/weather/synthetic.py +253 -0
  250. swatplus_builder-0.5.0/src/swatplus_builder/weather/wgn.py +33 -0
  251. swatplus_builder-0.5.0/src/swatplus_builder/weather/writer.py +369 -0
  252. swatplus_builder-0.5.0/src/swatplus_builder/workflows/__init__.py +5 -0
  253. swatplus_builder-0.5.0/src/swatplus_builder/workflows/contracts.py +108 -0
  254. swatplus_builder-0.5.0/src/swatplus_builder/workflows/full_build.py +347 -0
  255. swatplus_builder-0.5.0/src/swatplus_builder/workflows/usgs_e2e.py +2251 -0
  256. swatplus_builder-0.5.0/tests/__init__.py +0 -0
  257. swatplus_builder-0.5.0/tests/fixtures/README.md +12 -0
  258. swatplus_builder-0.5.0/tests/test_artifact_hashing.py +70 -0
  259. swatplus_builder-0.5.0/tests/test_artifact_models.py +77 -0
  260. swatplus_builder-0.5.0/tests/test_artifact_store.py +82 -0
  261. swatplus_builder-0.5.0/tests/test_autoresearch_loop.py +200 -0
  262. swatplus_builder-0.5.0/tests/test_autoresearch_surrogate.py +199 -0
  263. swatplus_builder-0.5.0/tests/test_bridge_diagnostics.py +366 -0
  264. swatplus_builder-0.5.0/tests/test_calibration_calibrator.py +421 -0
  265. swatplus_builder-0.5.0/tests/test_calibration_forward.py +127 -0
  266. swatplus_builder-0.5.0/tests/test_calibration_nwis.py +30 -0
  267. swatplus_builder-0.5.0/tests/test_calibration_pyswatplus_integration.py +66 -0
  268. swatplus_builder-0.5.0/tests/test_calibration_pyswatplus_runtime.py +39 -0
  269. swatplus_builder-0.5.0/tests/test_calibration_real_engine.py +849 -0
  270. swatplus_builder-0.5.0/tests/test_calibration_report.py +151 -0
  271. swatplus_builder-0.5.0/tests/test_calibration_spotpy_adapter.py +87 -0
  272. swatplus_builder-0.5.0/tests/test_ci_routing_regression.py +126 -0
  273. swatplus_builder-0.5.0/tests/test_cli_calibrate.py +354 -0
  274. swatplus_builder-0.5.0/tests/test_cli_diagnose.py +32 -0
  275. swatplus_builder-0.5.0/tests/test_cli_inspect.py +50 -0
  276. swatplus_builder-0.5.0/tests/test_cli_sensitivity.py +71 -0
  277. swatplus_builder-0.5.0/tests/test_cli_validate.py +48 -0
  278. swatplus_builder-0.5.0/tests/test_cli_version_health.py +226 -0
  279. swatplus_builder-0.5.0/tests/test_cli_workflow.py +319 -0
  280. swatplus_builder-0.5.0/tests/test_container_baseline.py +119 -0
  281. swatplus_builder-0.5.0/tests/test_curated_basins.py +19 -0
  282. swatplus_builder-0.5.0/tests/test_diagnostics.py +222 -0
  283. swatplus_builder-0.5.0/tests/test_editor_api.py +507 -0
  284. swatplus_builder-0.5.0/tests/test_et_diagnostics.py +112 -0
  285. swatplus_builder-0.5.0/tests/test_full_build.py +413 -0
  286. swatplus_builder-0.5.0/tests/test_full_mode_warmup.py +39 -0
  287. swatplus_builder-0.5.0/tests/test_gis_delineation_preflight.py +276 -0
  288. swatplus_builder-0.5.0/tests/test_gis_hru.py +629 -0
  289. swatplus_builder-0.5.0/tests/test_gis_landuse.py +124 -0
  290. swatplus_builder-0.5.0/tests/test_gis_snap_max_acc.py +208 -0
  291. swatplus_builder-0.5.0/tests/test_gis_soil.py +600 -0
  292. swatplus_builder-0.5.0/tests/test_gis_tables.py +422 -0
  293. swatplus_builder-0.5.0/tests/test_locked_benchmark.py +1119 -0
  294. swatplus_builder-0.5.0/tests/test_mass_diagnostics.py +68 -0
  295. swatplus_builder-0.5.0/tests/test_mcp_server.py +377 -0
  296. swatplus_builder-0.5.0/tests/test_nldi_fallback.py +98 -0
  297. swatplus_builder-0.5.0/tests/test_orchestrate.py +246 -0
  298. swatplus_builder-0.5.0/tests/test_output_eval.py +512 -0
  299. swatplus_builder-0.5.0/tests/test_output_metadata.py +47 -0
  300. swatplus_builder-0.5.0/tests/test_output_plots_utils.py +49 -0
  301. swatplus_builder-0.5.0/tests/test_output_reader.py +376 -0
  302. swatplus_builder-0.5.0/tests/test_output_realism.py +216 -0
  303. swatplus_builder-0.5.0/tests/test_overlay_repair.py +142 -0
  304. swatplus_builder-0.5.0/tests/test_parameter_bridge.py +342 -0
  305. swatplus_builder-0.5.0/tests/test_parameter_registry.py +128 -0
  306. swatplus_builder-0.5.0/tests/test_phase2_step7.py +316 -0
  307. swatplus_builder-0.5.0/tests/test_real_basin_e2e.py +153 -0
  308. swatplus_builder-0.5.0/tests/test_routing_fixes.py +94 -0
  309. swatplus_builder-0.5.0/tests/test_run_multibasin_e2e.py +168 -0
  310. swatplus_builder-0.5.0/tests/test_run_swatplus.py +629 -0
  311. swatplus_builder-0.5.0/tests/test_script_policy.py +2689 -0
  312. swatplus_builder-0.5.0/tests/test_sensitivity_bridge.py +52 -0
  313. swatplus_builder-0.5.0/tests/test_sensitivity_screen.py +75 -0
  314. swatplus_builder-0.5.0/tests/test_skill_md.py +63 -0
  315. swatplus_builder-0.5.0/tests/test_smoke.py +594 -0
  316. swatplus_builder-0.5.0/tests/test_soil_builder.py +159 -0
  317. swatplus_builder-0.5.0/tests/test_soil_gnatsgo.py +405 -0
  318. swatplus_builder-0.5.0/tests/test_soil_params.py +254 -0
  319. swatplus_builder-0.5.0/tests/test_soil_sda.py +71 -0
  320. swatplus_builder-0.5.0/tests/test_soil_writer.py +245 -0
  321. swatplus_builder-0.5.0/tests/test_soilgrids.py +62 -0
  322. swatplus_builder-0.5.0/tests/test_solver_wrapper.py +87 -0
  323. swatplus_builder-0.5.0/tests/test_swatplus_playbook.py +63 -0
  324. swatplus_builder-0.5.0/tests/test_topology_converter.py +192 -0
  325. swatplus_builder-0.5.0/tests/test_validation_runner.py +75 -0
  326. swatplus_builder-0.5.0/tests/test_volume_diagnostics.py +1037 -0
  327. swatplus_builder-0.5.0/tests/test_water_balance_gate.py +107 -0
  328. swatplus_builder-0.5.0/tests/test_weather_daymet.py +302 -0
  329. swatplus_builder-0.5.0/tests/test_weather_forcing.py +96 -0
  330. swatplus_builder-0.5.0/tests/test_weather_gridmet.py +693 -0
  331. swatplus_builder-0.5.0/tests/test_weather_writer.py +310 -0
  332. swatplus_builder-0.5.0/tests/test_workflow_usgs_e2e.py +3578 -0
  333. swatplus_builder-0.5.0/tests/test_writer.py +412 -0
@@ -0,0 +1,150 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.egg-info/
6
+ *.egg
7
+ .eggs/
8
+ build/
9
+ dist/
10
+ .venv/
11
+ venv/
12
+ env/
13
+ .python-version
14
+ .ipynb_checkpoints/
15
+ .claude/
16
+ demo_runs/
17
+ docs/
18
+
19
+
20
+
21
+ # Editors / OS
22
+ .vscode/
23
+ .idea/
24
+ .DS_Store
25
+ Thumbs.db
26
+
27
+ # Test / coverage
28
+ .pytest_cache/
29
+ .coverage
30
+ .coverage.*
31
+ htmlcov/
32
+ .mypy_cache/
33
+ .ruff_cache/
34
+
35
+ # Docs build
36
+ site/
37
+ _site/
38
+
39
+ # Data / caches (no large blobs in git)
40
+ data/
41
+ bin/
42
+ *.sqlite
43
+ *.sqlite-journal
44
+ *.tif
45
+ *.tiff
46
+ *.gpkg
47
+ *.shp
48
+ *.shx
49
+ *.dbf
50
+ *.prj
51
+ *.cpg
52
+ *.qpj
53
+ *.nc
54
+ *.nc4
55
+ *.zip
56
+ reference_dbs/
57
+ TxtInOut/
58
+ watershed_data/
59
+ /output/
60
+ scratch/
61
+ cache/
62
+ marsh_creek_output/
63
+ soil_benchmark/
64
+ _e2e_runs/
65
+ diagnostics.out
66
+ simulation.out
67
+ area_calc.out
68
+ files_out.out
69
+ erosion.txt
70
+ docs/
71
+
72
+ # Local working docs (authoritative docs live elsewhere)
73
+ docs/DECISIONS.md
74
+ docs/PROGRESS.md
75
+ docs/TROUBLESHOOTING_AND_WORKFLOW.md
76
+
77
+ # Planning / phase docs — local only, never commit
78
+ PROGRESS.md
79
+ DECISIONS.md
80
+ ROADMAP.md
81
+ !PROJECT.md
82
+ !PROGRESS.md
83
+ !DECISIONS.md
84
+ !ROADMAP.md
85
+ !SKILL.md
86
+ BACKLOG.md
87
+ PHASE_*.md
88
+ *_PLAN.md
89
+ *_CLOSEOUT.md
90
+ *_READINESS.md
91
+ CALIBRATION_PLAN*.md
92
+ handover_docs.md
93
+
94
+ # Local-only notes (never commit)
95
+ local-docs/
96
+ Research_article/
97
+
98
+ # Allow small test fixtures explicitly
99
+ !tests/fixtures/**/*.sqlite
100
+ !tests/fixtures/**/*.tif
101
+ !tests/fixtures/**/*.gpkg
102
+ !tests/fixtures/**/*.shp
103
+ !tests/fixtures/**/*.dbf
104
+ !tests/fixtures/**/*.prj
105
+ !tests/fixtures/**/*.shx
106
+ !tests/fixtures/**/*.cpg
107
+
108
+ # Vendored code is tracked (this IS the package), but caches inside are not
109
+ src/swatplus_builder/editor/vendored/**/__pycache__/
110
+ src/swatplus_builder/editor/vendored/**/*.pyc
111
+ # Keep editor vendored runtime-output DB stubs ignored (not used by builder API)
112
+ src/swatplus_builder/editor/vendored/database/output/
113
+
114
+ # Local test artifacts
115
+ tests/_artifacts/
116
+
117
+ # Build artifacts and test data
118
+ multibasin_test/
119
+ demo_runs/
120
+ docs/*
121
+ !docs/
122
+ !docs/AGENT_WORKFLOW.md
123
+ !docs/CALIBRATION_PARAMETER_REGISTRY.md
124
+ !docs/PIPELINE_LEARNING_LOG.md
125
+ !docs/PIPELINE_RESEARCH_GRADE_AUDIT.md
126
+ !docs/REPRODUCIBILITY.md
127
+ Research_article/
128
+ SWATplus_original_docs/
129
+ .codebuddy/
130
+ .claude/
131
+ **/__pycache__/
132
+
133
+ # SWAT+ temp files
134
+ codes.bsn
135
+ .commandcode/
136
+
137
+ tests/_artifacts/
138
+
139
+
140
+
141
+
142
+ # Build/test artifact directories
143
+ basins/
144
+ examples/build_real_basin.py
145
+ examples/real_basin_marsh_creek.py
146
+ PROGRESS.md
147
+ PLAYBOOK.md
148
+
149
+ # stray reproduction virtualenv (session artifact)
150
+ .venv-repro/
@@ -0,0 +1,70 @@
1
+ # Changelog
2
+
3
+ All notable changes to swatplus-builder are documented here.
4
+
5
+ ## [0.5.0] — 2026-06-12
6
+
7
+ ### Added
8
+ - **`run_workflow` + `workflow_status` MCP tools** (13-tool server): launch the
9
+ governed end-to-end pipeline as a detached background process — immune to MCP
10
+ client timeouts and conda/venv drift — and poll it for evidence-bundle
11
+ pointers. The `build_project` placeholder no longer fake-succeeds silently.
12
+ - **Engine version provenance**: every run now reads the SWAT+ revision directly
13
+ from the engine — both the startup banner and the persisted output-file header
14
+ (`MODULAR Rev …`) — and records the verified value in the evidence bundle. If
15
+ an asserted version disagrees with the binary, the workflow records the
16
+ engine's value and flags the mismatch. Version is verified, never operator-asserted.
17
+ - **A2 positive-control fixture test**: the claim-governance gate stack
18
+ (`_claim_lists` / `_effective_claim_tier`) is now tested in the *passing*
19
+ direction (synthetic research-grade single-channel basin), not only failing.
20
+ - **Overclaiming pilot harness** (`scripts/overclaiming_pilot/`): runner, LLM
21
+ judge, and H1–H4 analysis scaffold for the pre-registered overclaiming experiment.
22
+ - **`docs/REPRODUCIBILITY.md`**: documents the external reference-DB dependency
23
+ (esp. `swatplus_wgn.sqlite`) that is required but not bundled — a reproducibility
24
+ caveat for downstream results.
25
+
26
+ ### Fixed
27
+ - **Daymet date-range defect**: pydaymet ≥ 0.19 could ignore `dates=()` and
28
+ return the full 1980-present archive. The adapter now clips every response to
29
+ the requested window and fills the Dec-31 rows Daymet omits in leap years;
30
+ validation reports "range ignored" vs "server clamped" as distinct failures.
31
+ - **Reference-DB bootstrap honesty**: `scripts/bootstrap_reference_dbs.sh` no
32
+ longer claims to download from a non-existent mirror. It now checks which DBs
33
+ are present and exits non-zero with manual-install instructions if any are missing.
34
+ - **MCP health check** improvements; added `mcp-check` command.
35
+
36
+ ### Changed
37
+ - Engine version documentation corrected to the **validated range
38
+ 60.5.7 – 61.0.2.61** (shipped builds use rev 61.0.2.61), replacing the
39
+ inaccurate single-version claim.
40
+
41
+ ## [0.4.0] — 2026-06-11
42
+
43
+ ### Added
44
+ - **Locked calibration protocol**: `lock-benchmark` → `locked-calibrate` → independent verification chain. Reported metrics always come from a clean rerun, never from the optimizer loop.
45
+ - **Claim governance**: runtime gates assign each result a tier (`exploratory → diagnostic → research_grade → publication_grade`). A strong metric never self-promotes past a failed gate.
46
+ - **Machine-readable evidence bundle**: every run writes `evidence_summary.json`, `run_manifest.json`, `events.jsonl`, `calibration_provenance.json`, `physical_gates.json` — including typed, evidence-backed refusals.
47
+ - **11-tool MCP server** (`swat mcp`): full agent interface for building, running, calibrating, and querying results via the Model Context Protocol.
48
+ - **Full-mode engine compatibility** (Phase 3L): parameter bridge, routing fixes, topology converter, water-balance gate.
49
+ - **New modules**: `nldi_fallback`, ET/mass/volume diagnostics, weather forcing, SoilGrids adapter, Daymet weather, full-build workflow, params governance.
50
+ - **`swat workflow run`**: canonical one-command end-to-end path from USGS gauge ID to evidence bundle.
51
+ - **Container baseline**: Dockerfile + docker-compose with MCP stdio service.
52
+ - **Publication-ready figures**: 7+ figure types including hydro comparison, soil depth, gate matrix.
53
+ - **`swat readiness-table`**: multi-basin calibration readiness summary.
54
+
55
+ ### Changed
56
+ - `swat watershed`, `swat hrus`, `swat project`, `swat build`: now print a clear redirect to `swat workflow run` instead of crashing with an opaque error.
57
+ - `pyproject.toml` description and keywords updated to reflect the package's actual identity.
58
+ - Version aligned to `0.4.0` across `pyproject.toml` and `__init__.py`.
59
+
60
+ ### Infrastructure
61
+ - MkDocs Material documentation site at <https://ai-hydro.github.io/swatplus-builder/>.
62
+ - GitHub Actions: CI (lint + smoke + routing regression), docs deploy, and this publish workflow.
63
+
64
+ ## [0.3.x] — internal development
65
+
66
+ Phase 3 calibration and engine compatibility work. Not released to PyPI.
67
+
68
+ ## [0.1.0 – 0.2.x] — internal development
69
+
70
+ Initial pipeline scaffold. Not released to PyPI.
@@ -0,0 +1,59 @@
1
+ cff-version: 1.2.0
2
+ message: >-
3
+ If you use swatplus-builder in your research, please cite it using
4
+ the metadata below. When reporting a specific result, also include
5
+ the run's provenance hash from evidence_summary.json so the claim
6
+ is traceable to the exact run.
7
+ title: "swatplus-builder: Claim-governed SWAT+ hydrologic modeling from a USGS gauge ID"
8
+ version: 0.5.0
9
+ date-released: "2026-06-12"
10
+ doi: 10.5281/zenodo.20650908
11
+ license: MIT
12
+ repository-code: "https://github.com/AI-Hydro/swatplus-builder"
13
+ url: "https://ai-hydro.github.io/swatplus-builder/"
14
+ authors:
15
+ - family-names: Galib
16
+ given-names: Mohammad
17
+ affiliation: "Purdue University West Lafayette"
18
+ - family-names: Merwade
19
+ given-names: Venkatesh
20
+ affiliation: "Purdue University West Lafayette"
21
+ orcid: "https://orcid.org/0000-0002-4572-8531"
22
+ abstract: >-
23
+ swatplus-builder builds and calibrates SWAT+ hydrologic models in Python,
24
+ starting from a single USGS streamgage ID. A locked benchmark calibration
25
+ protocol (lock → calibrate → independently verified rerun) ensures that
26
+ reported metrics come from a clean rerun, not the optimizer. Runtime gates
27
+ assign each result a claim tier and write a machine-readable evidence bundle
28
+ — including typed, evidence-backed refusals — so both successes and
29
+ limitations are fully inspectable. The pipeline runs with no desktop GIS and
30
+ exposes an 11-tool MCP surface for AI agent operation.
31
+ keywords:
32
+ - SWAT+
33
+ - hydrology
34
+ - watershed modeling
35
+ - streamflow calibration
36
+ - claim governance
37
+ - scientific reproducibility
38
+ - GIS
39
+ - Python
40
+ - MCP
41
+ - AI agents
42
+ - USGS
43
+ - evidence bundle
44
+ - locked calibration
45
+ preferred-citation:
46
+ type: software
47
+ title: "swatplus-builder: Claim-governed SWAT+ hydrologic modeling from a USGS gauge ID"
48
+ authors:
49
+ - family-names: Galib
50
+ given-names: Mohammad
51
+ affiliation: "Purdue University West Lafayette"
52
+ - family-names: Merwade
53
+ given-names: Venkatesh
54
+ affiliation: "Purdue University West Lafayette"
55
+ orcid: "https://orcid.org/0000-0002-4572-8531"
56
+ doi: 10.5281/zenodo.20650908
57
+ url: "https://github.com/AI-Hydro/swatplus-builder"
58
+ year: 2026
59
+ version: 0.5.0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Mohammad Galib
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.