HydPy 6.2.dev1__cp313-cp313-win_amd64.whl

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 (890) hide show
  1. hydpy/__init__.py +275 -0
  2. hydpy/aliases.py +2554 -0
  3. hydpy/auxs/__init__.py +0 -0
  4. hydpy/auxs/anntools.py +1305 -0
  5. hydpy/auxs/armatools.py +883 -0
  6. hydpy/auxs/calibtools.py +3337 -0
  7. hydpy/auxs/interptools.py +1094 -0
  8. hydpy/auxs/iuhtools.py +543 -0
  9. hydpy/auxs/networktools.py +597 -0
  10. hydpy/auxs/ppolytools.py +809 -0
  11. hydpy/auxs/quadtools.py +61 -0
  12. hydpy/auxs/roottools.py +228 -0
  13. hydpy/auxs/smoothtools.py +273 -0
  14. hydpy/auxs/statstools.py +2125 -0
  15. hydpy/auxs/validtools.py +81 -0
  16. hydpy/conf/HydPyConfigBase.xsd +68637 -0
  17. hydpy/conf/HydPyConfigBase.xsdt +358 -0
  18. hydpy/conf/HydPyConfigMultipleRuns.xsd +25 -0
  19. hydpy/conf/HydPyConfigSingleRun.xsd +24 -0
  20. hydpy/conf/__init__.py +0 -0
  21. hydpy/conf/a_coefficients_explicit_lobatto_sequence.npy +0 -0
  22. hydpy/conf/support_points_for_smoothpar_logistic2.npy +0 -0
  23. hydpy/config.py +42 -0
  24. hydpy/core/__init__.py +0 -0
  25. hydpy/core/aliastools.py +214 -0
  26. hydpy/core/autodoctools.py +1947 -0
  27. hydpy/core/auxfiletools.py +1169 -0
  28. hydpy/core/devicetools.py +3810 -0
  29. hydpy/core/exceptiontools.py +269 -0
  30. hydpy/core/filetools.py +1985 -0
  31. hydpy/core/hydpytools.py +3089 -0
  32. hydpy/core/importtools.py +1398 -0
  33. hydpy/core/indextools.py +345 -0
  34. hydpy/core/itemtools.py +1849 -0
  35. hydpy/core/masktools.py +460 -0
  36. hydpy/core/modeltools.py +4868 -0
  37. hydpy/core/netcdftools.py +2683 -0
  38. hydpy/core/objecttools.py +2023 -0
  39. hydpy/core/optiontools.py +1045 -0
  40. hydpy/core/parametertools.py +4674 -0
  41. hydpy/core/printtools.py +222 -0
  42. hydpy/core/propertytools.py +643 -0
  43. hydpy/core/pubtools.py +254 -0
  44. hydpy/core/selectiontools.py +1571 -0
  45. hydpy/core/sequencetools.py +4476 -0
  46. hydpy/core/seriestools.py +339 -0
  47. hydpy/core/testtools.py +2483 -0
  48. hydpy/core/timetools.py +3567 -0
  49. hydpy/core/typingtools.py +333 -0
  50. hydpy/core/variabletools.py +2615 -0
  51. hydpy/cythons/__init__.py +24 -0
  52. hydpy/cythons/annutils.pxd +33 -0
  53. hydpy/cythons/annutils.pyi +25 -0
  54. hydpy/cythons/annutils.pyx +120 -0
  55. hydpy/cythons/autogen/__init__.py +0 -0
  56. hydpy/cythons/autogen/annutils.cp313-win_amd64.pyd +0 -0
  57. hydpy/cythons/autogen/annutils.pxd +42 -0
  58. hydpy/cythons/autogen/annutils.pyx +129 -0
  59. hydpy/cythons/autogen/c_arma.cp313-win_amd64.pyd +0 -0
  60. hydpy/cythons/autogen/c_arma.pxd +179 -0
  61. hydpy/cythons/autogen/c_arma.pyx +356 -0
  62. hydpy/cythons/autogen/c_arma_rimorido.cp313-win_amd64.pyd +0 -0
  63. hydpy/cythons/autogen/c_arma_rimorido.pxd +179 -0
  64. hydpy/cythons/autogen/c_arma_rimorido.pyx +356 -0
  65. hydpy/cythons/autogen/c_conv.cp313-win_amd64.pyd +0 -0
  66. hydpy/cythons/autogen/c_conv.pxd +198 -0
  67. hydpy/cythons/autogen/c_conv.pyx +491 -0
  68. hydpy/cythons/autogen/c_conv_idw.cp313-win_amd64.pyd +0 -0
  69. hydpy/cythons/autogen/c_conv_idw.pxd +124 -0
  70. hydpy/cythons/autogen/c_conv_idw.pyx +264 -0
  71. hydpy/cythons/autogen/c_conv_idw_ed.cp313-win_amd64.pyd +0 -0
  72. hydpy/cythons/autogen/c_conv_idw_ed.pxd +197 -0
  73. hydpy/cythons/autogen/c_conv_idw_ed.pyx +481 -0
  74. hydpy/cythons/autogen/c_conv_nn.cp313-win_amd64.pyd +0 -0
  75. hydpy/cythons/autogen/c_conv_nn.pxd +120 -0
  76. hydpy/cythons/autogen/c_conv_nn.pyx +224 -0
  77. hydpy/cythons/autogen/c_dam.cp313-win_amd64.pyd +0 -0
  78. hydpy/cythons/autogen/c_dam.pxd +805 -0
  79. hydpy/cythons/autogen/c_dam.pyx +1477 -0
  80. hydpy/cythons/autogen/c_dam_llake.cp313-win_amd64.pyd +0 -0
  81. hydpy/cythons/autogen/c_dam_llake.pxd +364 -0
  82. hydpy/cythons/autogen/c_dam_llake.pyx +705 -0
  83. hydpy/cythons/autogen/c_dam_lreservoir.cp313-win_amd64.pyd +0 -0
  84. hydpy/cythons/autogen/c_dam_lreservoir.pxd +365 -0
  85. hydpy/cythons/autogen/c_dam_lreservoir.pyx +708 -0
  86. hydpy/cythons/autogen/c_dam_lretention.cp313-win_amd64.pyd +0 -0
  87. hydpy/cythons/autogen/c_dam_lretention.pxd +340 -0
  88. hydpy/cythons/autogen/c_dam_lretention.pyx +625 -0
  89. hydpy/cythons/autogen/c_dam_pump.cp313-win_amd64.pyd +0 -0
  90. hydpy/cythons/autogen/c_dam_pump.pxd +402 -0
  91. hydpy/cythons/autogen/c_dam_pump.pyx +724 -0
  92. hydpy/cythons/autogen/c_dam_pump_sluice.cp313-win_amd64.pyd +0 -0
  93. hydpy/cythons/autogen/c_dam_pump_sluice.pxd +452 -0
  94. hydpy/cythons/autogen/c_dam_pump_sluice.pyx +829 -0
  95. hydpy/cythons/autogen/c_dam_sluice.cp313-win_amd64.pyd +0 -0
  96. hydpy/cythons/autogen/c_dam_sluice.pxd +404 -0
  97. hydpy/cythons/autogen/c_dam_sluice.pyx +726 -0
  98. hydpy/cythons/autogen/c_dam_v001.cp313-win_amd64.pyd +0 -0
  99. hydpy/cythons/autogen/c_dam_v001.pxd +452 -0
  100. hydpy/cythons/autogen/c_dam_v001.pyx +816 -0
  101. hydpy/cythons/autogen/c_dam_v002.cp313-win_amd64.pyd +0 -0
  102. hydpy/cythons/autogen/c_dam_v002.pxd +394 -0
  103. hydpy/cythons/autogen/c_dam_v002.pyx +703 -0
  104. hydpy/cythons/autogen/c_dam_v003.cp313-win_amd64.pyd +0 -0
  105. hydpy/cythons/autogen/c_dam_v003.pxd +417 -0
  106. hydpy/cythons/autogen/c_dam_v003.pyx +744 -0
  107. hydpy/cythons/autogen/c_dam_v004.cp313-win_amd64.pyd +0 -0
  108. hydpy/cythons/autogen/c_dam_v004.pxd +486 -0
  109. hydpy/cythons/autogen/c_dam_v004.pyx +891 -0
  110. hydpy/cythons/autogen/c_dam_v005.cp313-win_amd64.pyd +0 -0
  111. hydpy/cythons/autogen/c_dam_v005.pxd +524 -0
  112. hydpy/cythons/autogen/c_dam_v005.pyx +928 -0
  113. hydpy/cythons/autogen/c_dummy.cp313-win_amd64.pyd +0 -0
  114. hydpy/cythons/autogen/c_dummy.pxd +151 -0
  115. hydpy/cythons/autogen/c_dummy.pyx +263 -0
  116. hydpy/cythons/autogen/c_dummy_interceptedwater.cp313-win_amd64.pyd +0 -0
  117. hydpy/cythons/autogen/c_dummy_interceptedwater.pxd +69 -0
  118. hydpy/cythons/autogen/c_dummy_interceptedwater.pyx +104 -0
  119. hydpy/cythons/autogen/c_dummy_node2node.cp313-win_amd64.pyd +0 -0
  120. hydpy/cythons/autogen/c_dummy_node2node.pxd +89 -0
  121. hydpy/cythons/autogen/c_dummy_node2node.pyx +148 -0
  122. hydpy/cythons/autogen/c_dummy_snowalbedo.cp313-win_amd64.pyd +0 -0
  123. hydpy/cythons/autogen/c_dummy_snowalbedo.pxd +69 -0
  124. hydpy/cythons/autogen/c_dummy_snowalbedo.pyx +104 -0
  125. hydpy/cythons/autogen/c_dummy_snowcover.cp313-win_amd64.pyd +0 -0
  126. hydpy/cythons/autogen/c_dummy_snowcover.pxd +69 -0
  127. hydpy/cythons/autogen/c_dummy_snowcover.pyx +104 -0
  128. hydpy/cythons/autogen/c_dummy_snowycanopy.cp313-win_amd64.pyd +0 -0
  129. hydpy/cythons/autogen/c_dummy_snowycanopy.pxd +69 -0
  130. hydpy/cythons/autogen/c_dummy_snowycanopy.pyx +104 -0
  131. hydpy/cythons/autogen/c_dummy_soilwater.cp313-win_amd64.pyd +0 -0
  132. hydpy/cythons/autogen/c_dummy_soilwater.pxd +69 -0
  133. hydpy/cythons/autogen/c_dummy_soilwater.pyx +104 -0
  134. hydpy/cythons/autogen/c_evap.cp313-win_amd64.pyd +0 -0
  135. hydpy/cythons/autogen/c_evap.pxd +1029 -0
  136. hydpy/cythons/autogen/c_evap.pyx +2601 -0
  137. hydpy/cythons/autogen/c_evap_aet_hbv96.cp313-win_amd64.pyd +0 -0
  138. hydpy/cythons/autogen/c_evap_aet_hbv96.pxd +227 -0
  139. hydpy/cythons/autogen/c_evap_aet_hbv96.pyx +584 -0
  140. hydpy/cythons/autogen/c_evap_aet_minhas.cp313-win_amd64.pyd +0 -0
  141. hydpy/cythons/autogen/c_evap_aet_minhas.pxd +193 -0
  142. hydpy/cythons/autogen/c_evap_aet_minhas.pyx +478 -0
  143. hydpy/cythons/autogen/c_evap_aet_morsim.cp313-win_amd64.pyd +0 -0
  144. hydpy/cythons/autogen/c_evap_aet_morsim.pxd +681 -0
  145. hydpy/cythons/autogen/c_evap_aet_morsim.pyx +1642 -0
  146. hydpy/cythons/autogen/c_evap_pet_ambav1.cp313-win_amd64.pyd +0 -0
  147. hydpy/cythons/autogen/c_evap_pet_ambav1.pxd +532 -0
  148. hydpy/cythons/autogen/c_evap_pet_ambav1.pyx +1296 -0
  149. hydpy/cythons/autogen/c_evap_pet_hbv96.cp313-win_amd64.pyd +0 -0
  150. hydpy/cythons/autogen/c_evap_pet_hbv96.pxd +179 -0
  151. hydpy/cythons/autogen/c_evap_pet_hbv96.pyx +328 -0
  152. hydpy/cythons/autogen/c_evap_pet_m.cp313-win_amd64.pyd +0 -0
  153. hydpy/cythons/autogen/c_evap_pet_m.pxd +124 -0
  154. hydpy/cythons/autogen/c_evap_pet_m.pyx +214 -0
  155. hydpy/cythons/autogen/c_evap_pet_mlc.cp313-win_amd64.pyd +0 -0
  156. hydpy/cythons/autogen/c_evap_pet_mlc.pxd +126 -0
  157. hydpy/cythons/autogen/c_evap_pet_mlc.pyx +214 -0
  158. hydpy/cythons/autogen/c_evap_ret_fao56.cp313-win_amd64.pyd +0 -0
  159. hydpy/cythons/autogen/c_evap_ret_fao56.pxd +305 -0
  160. hydpy/cythons/autogen/c_evap_ret_fao56.pyx +624 -0
  161. hydpy/cythons/autogen/c_evap_ret_io.cp313-win_amd64.pyd +0 -0
  162. hydpy/cythons/autogen/c_evap_ret_io.pxd +112 -0
  163. hydpy/cythons/autogen/c_evap_ret_io.pyx +176 -0
  164. hydpy/cythons/autogen/c_evap_ret_tw2002.cp313-win_amd64.pyd +0 -0
  165. hydpy/cythons/autogen/c_evap_ret_tw2002.pxd +139 -0
  166. hydpy/cythons/autogen/c_evap_ret_tw2002.pyx +273 -0
  167. hydpy/cythons/autogen/c_exch.cp313-win_amd64.pyd +0 -0
  168. hydpy/cythons/autogen/c_exch.pxd +230 -0
  169. hydpy/cythons/autogen/c_exch.pyx +462 -0
  170. hydpy/cythons/autogen/c_exch_branch_hbv96.cp313-win_amd64.pyd +0 -0
  171. hydpy/cythons/autogen/c_exch_branch_hbv96.pxd +134 -0
  172. hydpy/cythons/autogen/c_exch_branch_hbv96.pyx +255 -0
  173. hydpy/cythons/autogen/c_exch_waterlevel.cp313-win_amd64.pyd +0 -0
  174. hydpy/cythons/autogen/c_exch_waterlevel.pxd +54 -0
  175. hydpy/cythons/autogen/c_exch_waterlevel.pyx +78 -0
  176. hydpy/cythons/autogen/c_exch_weir_hbv96.cp313-win_amd64.pyd +0 -0
  177. hydpy/cythons/autogen/c_exch_weir_hbv96.pxd +156 -0
  178. hydpy/cythons/autogen/c_exch_weir_hbv96.pyx +282 -0
  179. hydpy/cythons/autogen/c_ga.cp313-win_amd64.pyd +0 -0
  180. hydpy/cythons/autogen/c_ga.pxd +353 -0
  181. hydpy/cythons/autogen/c_ga.pyx +1204 -0
  182. hydpy/cythons/autogen/c_ga_garto.cp313-win_amd64.pyd +0 -0
  183. hydpy/cythons/autogen/c_ga_garto.pxd +330 -0
  184. hydpy/cythons/autogen/c_ga_garto.pyx +1105 -0
  185. hydpy/cythons/autogen/c_ga_garto_submodel1.cp313-win_amd64.pyd +0 -0
  186. hydpy/cythons/autogen/c_ga_garto_submodel1.pxd +236 -0
  187. hydpy/cythons/autogen/c_ga_garto_submodel1.pyx +944 -0
  188. hydpy/cythons/autogen/c_gland.cp313-win_amd64.pyd +0 -0
  189. hydpy/cythons/autogen/c_gland.pxd +437 -0
  190. hydpy/cythons/autogen/c_gland.pyx +726 -0
  191. hydpy/cythons/autogen/c_gland_gr4.cp313-win_amd64.pyd +0 -0
  192. hydpy/cythons/autogen/c_gland_gr4.pxd +382 -0
  193. hydpy/cythons/autogen/c_gland_gr4.pyx +605 -0
  194. hydpy/cythons/autogen/c_gland_gr5.cp313-win_amd64.pyd +0 -0
  195. hydpy/cythons/autogen/c_gland_gr5.pxd +368 -0
  196. hydpy/cythons/autogen/c_gland_gr5.pyx +568 -0
  197. hydpy/cythons/autogen/c_gland_gr6.cp313-win_amd64.pyd +0 -0
  198. hydpy/cythons/autogen/c_gland_gr6.pxd +420 -0
  199. hydpy/cythons/autogen/c_gland_gr6.pyx +673 -0
  200. hydpy/cythons/autogen/c_hland.cp313-win_amd64.pyd +0 -0
  201. hydpy/cythons/autogen/c_hland.pxd +855 -0
  202. hydpy/cythons/autogen/c_hland.pyx +2486 -0
  203. hydpy/cythons/autogen/c_hland_96.cp313-win_amd64.pyd +0 -0
  204. hydpy/cythons/autogen/c_hland_96.pxd +631 -0
  205. hydpy/cythons/autogen/c_hland_96.pyx +1724 -0
  206. hydpy/cythons/autogen/c_hland_96c.cp313-win_amd64.pyd +0 -0
  207. hydpy/cythons/autogen/c_hland_96c.pxd +621 -0
  208. hydpy/cythons/autogen/c_hland_96c.pyx +1822 -0
  209. hydpy/cythons/autogen/c_hland_96p.cp313-win_amd64.pyd +0 -0
  210. hydpy/cythons/autogen/c_hland_96p.pxd +683 -0
  211. hydpy/cythons/autogen/c_hland_96p.pyx +1911 -0
  212. hydpy/cythons/autogen/c_kinw.cp313-win_amd64.pyd +0 -0
  213. hydpy/cythons/autogen/c_kinw.pxd +509 -0
  214. hydpy/cythons/autogen/c_kinw.pyx +965 -0
  215. hydpy/cythons/autogen/c_kinw_williams.cp313-win_amd64.pyd +0 -0
  216. hydpy/cythons/autogen/c_kinw_williams.pxd +409 -0
  217. hydpy/cythons/autogen/c_kinw_williams.pyx +763 -0
  218. hydpy/cythons/autogen/c_kinw_williams_ext.cp313-win_amd64.pyd +0 -0
  219. hydpy/cythons/autogen/c_kinw_williams_ext.pxd +220 -0
  220. hydpy/cythons/autogen/c_kinw_williams_ext.pyx +440 -0
  221. hydpy/cythons/autogen/c_lland.cp313-win_amd64.pyd +0 -0
  222. hydpy/cythons/autogen/c_lland.pxd +1386 -0
  223. hydpy/cythons/autogen/c_lland.pyx +3679 -0
  224. hydpy/cythons/autogen/c_lland_dd.cp313-win_amd64.pyd +0 -0
  225. hydpy/cythons/autogen/c_lland_dd.pxd +679 -0
  226. hydpy/cythons/autogen/c_lland_dd.pyx +1719 -0
  227. hydpy/cythons/autogen/c_lland_knauf.cp313-win_amd64.pyd +0 -0
  228. hydpy/cythons/autogen/c_lland_knauf.pxd +1096 -0
  229. hydpy/cythons/autogen/c_lland_knauf.pyx +2784 -0
  230. hydpy/cythons/autogen/c_lland_knauf_ic.cp313-win_amd64.pyd +0 -0
  231. hydpy/cythons/autogen/c_lland_knauf_ic.pxd +1369 -0
  232. hydpy/cythons/autogen/c_lland_knauf_ic.pyx +3625 -0
  233. hydpy/cythons/autogen/c_meteo.cp313-win_amd64.pyd +0 -0
  234. hydpy/cythons/autogen/c_meteo.pxd +469 -0
  235. hydpy/cythons/autogen/c_meteo.pyx +879 -0
  236. hydpy/cythons/autogen/c_meteo_clear_glob_io.cp313-win_amd64.pyd +0 -0
  237. hydpy/cythons/autogen/c_meteo_clear_glob_io.pxd +75 -0
  238. hydpy/cythons/autogen/c_meteo_clear_glob_io.pyx +107 -0
  239. hydpy/cythons/autogen/c_meteo_glob_fao56.cp313-win_amd64.pyd +0 -0
  240. hydpy/cythons/autogen/c_meteo_glob_fao56.pxd +209 -0
  241. hydpy/cythons/autogen/c_meteo_glob_fao56.pyx +339 -0
  242. hydpy/cythons/autogen/c_meteo_glob_io.cp313-win_amd64.pyd +0 -0
  243. hydpy/cythons/autogen/c_meteo_glob_io.pxd +63 -0
  244. hydpy/cythons/autogen/c_meteo_glob_io.pyx +91 -0
  245. hydpy/cythons/autogen/c_meteo_glob_morsim.cp313-win_amd64.pyd +0 -0
  246. hydpy/cythons/autogen/c_meteo_glob_morsim.pxd +289 -0
  247. hydpy/cythons/autogen/c_meteo_glob_morsim.pyx +527 -0
  248. hydpy/cythons/autogen/c_meteo_precip_io.cp313-win_amd64.pyd +0 -0
  249. hydpy/cythons/autogen/c_meteo_precip_io.pxd +112 -0
  250. hydpy/cythons/autogen/c_meteo_precip_io.pyx +176 -0
  251. hydpy/cythons/autogen/c_meteo_psun_sun_glob_io.cp313-win_amd64.pyd +0 -0
  252. hydpy/cythons/autogen/c_meteo_psun_sun_glob_io.pxd +87 -0
  253. hydpy/cythons/autogen/c_meteo_psun_sun_glob_io.pyx +123 -0
  254. hydpy/cythons/autogen/c_meteo_sun_fao56.cp313-win_amd64.pyd +0 -0
  255. hydpy/cythons/autogen/c_meteo_sun_fao56.pxd +209 -0
  256. hydpy/cythons/autogen/c_meteo_sun_fao56.pyx +343 -0
  257. hydpy/cythons/autogen/c_meteo_sun_morsim.cp313-win_amd64.pyd +0 -0
  258. hydpy/cythons/autogen/c_meteo_sun_morsim.pxd +286 -0
  259. hydpy/cythons/autogen/c_meteo_sun_morsim.pyx +519 -0
  260. hydpy/cythons/autogen/c_meteo_temp_io.cp313-win_amd64.pyd +0 -0
  261. hydpy/cythons/autogen/c_meteo_temp_io.pxd +112 -0
  262. hydpy/cythons/autogen/c_meteo_temp_io.pyx +176 -0
  263. hydpy/cythons/autogen/c_musk.cp313-win_amd64.pyd +0 -0
  264. hydpy/cythons/autogen/c_musk.pxd +282 -0
  265. hydpy/cythons/autogen/c_musk.pyx +605 -0
  266. hydpy/cythons/autogen/c_musk_classic.cp313-win_amd64.pyd +0 -0
  267. hydpy/cythons/autogen/c_musk_classic.pxd +138 -0
  268. hydpy/cythons/autogen/c_musk_classic.pyx +226 -0
  269. hydpy/cythons/autogen/c_musk_mct.cp313-win_amd64.pyd +0 -0
  270. hydpy/cythons/autogen/c_musk_mct.pxd +282 -0
  271. hydpy/cythons/autogen/c_musk_mct.pyx +609 -0
  272. hydpy/cythons/autogen/c_rconc.cp313-win_amd64.pyd +0 -0
  273. hydpy/cythons/autogen/c_rconc.pxd +119 -0
  274. hydpy/cythons/autogen/c_rconc.pyx +174 -0
  275. hydpy/cythons/autogen/c_rconc_nash.cp313-win_amd64.pyd +0 -0
  276. hydpy/cythons/autogen/c_rconc_nash.pxd +111 -0
  277. hydpy/cythons/autogen/c_rconc_nash.pyx +185 -0
  278. hydpy/cythons/autogen/c_rconc_uh.cp313-win_amd64.pyd +0 -0
  279. hydpy/cythons/autogen/c_rconc_uh.pxd +92 -0
  280. hydpy/cythons/autogen/c_rconc_uh.pyx +125 -0
  281. hydpy/cythons/autogen/c_sw1d.cp313-win_amd64.pyd +0 -0
  282. hydpy/cythons/autogen/c_sw1d.pxd +511 -0
  283. hydpy/cythons/autogen/c_sw1d.pyx +1263 -0
  284. hydpy/cythons/autogen/c_sw1d_channel.cp313-win_amd64.pyd +0 -0
  285. hydpy/cythons/autogen/c_sw1d_channel.pxd +119 -0
  286. hydpy/cythons/autogen/c_sw1d_channel.pyx +300 -0
  287. hydpy/cythons/autogen/c_sw1d_gate_out.cp313-win_amd64.pyd +0 -0
  288. hydpy/cythons/autogen/c_sw1d_gate_out.pxd +240 -0
  289. hydpy/cythons/autogen/c_sw1d_gate_out.pyx +476 -0
  290. hydpy/cythons/autogen/c_sw1d_lias.cp313-win_amd64.pyd +0 -0
  291. hydpy/cythons/autogen/c_sw1d_lias.pxd +320 -0
  292. hydpy/cythons/autogen/c_sw1d_lias.pyx +619 -0
  293. hydpy/cythons/autogen/c_sw1d_lias_sluice.cp313-win_amd64.pyd +0 -0
  294. hydpy/cythons/autogen/c_sw1d_lias_sluice.pxd +325 -0
  295. hydpy/cythons/autogen/c_sw1d_lias_sluice.pyx +644 -0
  296. hydpy/cythons/autogen/c_sw1d_network.cp313-win_amd64.pyd +0 -0
  297. hydpy/cythons/autogen/c_sw1d_network.pxd +90 -0
  298. hydpy/cythons/autogen/c_sw1d_network.pyx +246 -0
  299. hydpy/cythons/autogen/c_sw1d_pump.cp313-win_amd64.pyd +0 -0
  300. hydpy/cythons/autogen/c_sw1d_pump.pxd +256 -0
  301. hydpy/cythons/autogen/c_sw1d_pump.pyx +502 -0
  302. hydpy/cythons/autogen/c_sw1d_q_in.cp313-win_amd64.pyd +0 -0
  303. hydpy/cythons/autogen/c_sw1d_q_in.pxd +224 -0
  304. hydpy/cythons/autogen/c_sw1d_q_in.pyx +383 -0
  305. hydpy/cythons/autogen/c_sw1d_q_out.cp313-win_amd64.pyd +0 -0
  306. hydpy/cythons/autogen/c_sw1d_q_out.pxd +224 -0
  307. hydpy/cythons/autogen/c_sw1d_q_out.pyx +383 -0
  308. hydpy/cythons/autogen/c_sw1d_storage.cp313-win_amd64.pyd +0 -0
  309. hydpy/cythons/autogen/c_sw1d_storage.pxd +193 -0
  310. hydpy/cythons/autogen/c_sw1d_storage.pyx +349 -0
  311. hydpy/cythons/autogen/c_sw1d_weir_out.cp313-win_amd64.pyd +0 -0
  312. hydpy/cythons/autogen/c_sw1d_weir_out.pxd +212 -0
  313. hydpy/cythons/autogen/c_sw1d_weir_out.pyx +404 -0
  314. hydpy/cythons/autogen/c_test.cp313-win_amd64.pyd +0 -0
  315. hydpy/cythons/autogen/c_test.pxd +175 -0
  316. hydpy/cythons/autogen/c_test.pyx +348 -0
  317. hydpy/cythons/autogen/c_test_discontinous.cp313-win_amd64.pyd +0 -0
  318. hydpy/cythons/autogen/c_test_discontinous.pxd +146 -0
  319. hydpy/cythons/autogen/c_test_discontinous.pyx +256 -0
  320. hydpy/cythons/autogen/c_test_stiff0d.cp313-win_amd64.pyd +0 -0
  321. hydpy/cythons/autogen/c_test_stiff0d.pxd +146 -0
  322. hydpy/cythons/autogen/c_test_stiff0d.pyx +250 -0
  323. hydpy/cythons/autogen/c_test_stiff1d.cp313-win_amd64.pyd +0 -0
  324. hydpy/cythons/autogen/c_test_stiff1d.pxd +145 -0
  325. hydpy/cythons/autogen/c_test_stiff1d.pyx +294 -0
  326. hydpy/cythons/autogen/c_whmod.cp313-win_amd64.pyd +0 -0
  327. hydpy/cythons/autogen/c_whmod.pxd +482 -0
  328. hydpy/cythons/autogen/c_whmod.pyx +1156 -0
  329. hydpy/cythons/autogen/c_whmod_rural.cp313-win_amd64.pyd +0 -0
  330. hydpy/cythons/autogen/c_whmod_rural.pxd +411 -0
  331. hydpy/cythons/autogen/c_whmod_rural.pyx +982 -0
  332. hydpy/cythons/autogen/c_whmod_urban.cp313-win_amd64.pyd +0 -0
  333. hydpy/cythons/autogen/c_whmod_urban.pxd +482 -0
  334. hydpy/cythons/autogen/c_whmod_urban.pyx +1155 -0
  335. hydpy/cythons/autogen/c_wland.cp313-win_amd64.pyd +0 -0
  336. hydpy/cythons/autogen/c_wland.pxd +842 -0
  337. hydpy/cythons/autogen/c_wland.pyx +1890 -0
  338. hydpy/cythons/autogen/c_wland_gd.cp313-win_amd64.pyd +0 -0
  339. hydpy/cythons/autogen/c_wland_gd.pxd +829 -0
  340. hydpy/cythons/autogen/c_wland_gd.pyx +1847 -0
  341. hydpy/cythons/autogen/c_wland_wag.cp313-win_amd64.pyd +0 -0
  342. hydpy/cythons/autogen/c_wland_wag.pxd +810 -0
  343. hydpy/cythons/autogen/c_wland_wag.pyx +1780 -0
  344. hydpy/cythons/autogen/c_wq.cp313-win_amd64.pyd +0 -0
  345. hydpy/cythons/autogen/c_wq.pxd +275 -0
  346. hydpy/cythons/autogen/c_wq.pyx +652 -0
  347. hydpy/cythons/autogen/c_wq_trapeze.cp313-win_amd64.pyd +0 -0
  348. hydpy/cythons/autogen/c_wq_trapeze.pxd +170 -0
  349. hydpy/cythons/autogen/c_wq_trapeze.pyx +400 -0
  350. hydpy/cythons/autogen/c_wq_trapeze_strickler.cp313-win_amd64.pyd +0 -0
  351. hydpy/cythons/autogen/c_wq_trapeze_strickler.pxd +243 -0
  352. hydpy/cythons/autogen/c_wq_trapeze_strickler.pyx +578 -0
  353. hydpy/cythons/autogen/c_wq_walrus.cp313-win_amd64.pyd +0 -0
  354. hydpy/cythons/autogen/c_wq_walrus.pxd +61 -0
  355. hydpy/cythons/autogen/c_wq_walrus.pyx +82 -0
  356. hydpy/cythons/autogen/configutils.cp313-win_amd64.pyd +0 -0
  357. hydpy/cythons/autogen/configutils.pxd +17 -0
  358. hydpy/cythons/autogen/configutils.pyx +119 -0
  359. hydpy/cythons/autogen/interfaceutils.cp313-win_amd64.pyd +0 -0
  360. hydpy/cythons/autogen/interfaceutils.pxd +31 -0
  361. hydpy/cythons/autogen/interfaceutils.pyx +82 -0
  362. hydpy/cythons/autogen/interputils.cp313-win_amd64.pyd +0 -0
  363. hydpy/cythons/autogen/interputils.pxd +42 -0
  364. hydpy/cythons/autogen/interputils.pyx +118 -0
  365. hydpy/cythons/autogen/masterinterface.cp313-win_amd64.pyd +0 -0
  366. hydpy/cythons/autogen/masterinterface.pxd +153 -0
  367. hydpy/cythons/autogen/masterinterface.pyx +222 -0
  368. hydpy/cythons/autogen/pointerutils.cp313-win_amd64.pyd +0 -0
  369. hydpy/cythons/autogen/pointerutils.pxd +31 -0
  370. hydpy/cythons/autogen/pointerutils.pyx +650 -0
  371. hydpy/cythons/autogen/ppolyutils.cp313-win_amd64.pyd +0 -0
  372. hydpy/cythons/autogen/ppolyutils.pxd +35 -0
  373. hydpy/cythons/autogen/ppolyutils.pyx +59 -0
  374. hydpy/cythons/autogen/quadutils.cp313-win_amd64.pyd +0 -0
  375. hydpy/cythons/autogen/quadutils.pxd +26 -0
  376. hydpy/cythons/autogen/quadutils.pyx +973 -0
  377. hydpy/cythons/autogen/rootutils.cp313-win_amd64.pyd +0 -0
  378. hydpy/cythons/autogen/rootutils.pxd +28 -0
  379. hydpy/cythons/autogen/rootutils.pyx +109 -0
  380. hydpy/cythons/autogen/sequenceutils.cp313-win_amd64.pyd +0 -0
  381. hydpy/cythons/autogen/sequenceutils.pxd +45 -0
  382. hydpy/cythons/autogen/sequenceutils.pyx +101 -0
  383. hydpy/cythons/autogen/smoothutils.cp313-win_amd64.pyd +0 -0
  384. hydpy/cythons/autogen/smoothutils.pxd +29 -0
  385. hydpy/cythons/autogen/smoothutils.pyx +833 -0
  386. hydpy/cythons/configutils.pxd +8 -0
  387. hydpy/cythons/configutils.pyi +5 -0
  388. hydpy/cythons/configutils.pyx +110 -0
  389. hydpy/cythons/interfaceutils.pxd +22 -0
  390. hydpy/cythons/interfaceutils.pyi +15 -0
  391. hydpy/cythons/interfaceutils.pyx +73 -0
  392. hydpy/cythons/interputils.pxd +33 -0
  393. hydpy/cythons/interputils.pyi +32 -0
  394. hydpy/cythons/interputils.pyx +109 -0
  395. hydpy/cythons/modelutils.py +2990 -0
  396. hydpy/cythons/pointerutils.pxd +22 -0
  397. hydpy/cythons/pointerutils.pyi +89 -0
  398. hydpy/cythons/pointerutils.pyx +641 -0
  399. hydpy/cythons/ppolyutils.pxd +26 -0
  400. hydpy/cythons/ppolyutils.pyi +21 -0
  401. hydpy/cythons/ppolyutils.pyx +50 -0
  402. hydpy/cythons/quadutils.pxd +17 -0
  403. hydpy/cythons/quadutils.pyi +13 -0
  404. hydpy/cythons/quadutils.pyx +964 -0
  405. hydpy/cythons/rootutils.pxd +19 -0
  406. hydpy/cythons/rootutils.pyi +21 -0
  407. hydpy/cythons/rootutils.pyx +100 -0
  408. hydpy/cythons/sequenceutils.pxd +36 -0
  409. hydpy/cythons/sequenceutils.pyi +7 -0
  410. hydpy/cythons/sequenceutils.pyx +92 -0
  411. hydpy/cythons/smoothutils.pxd +20 -0
  412. hydpy/cythons/smoothutils.pyi +15 -0
  413. hydpy/cythons/smoothutils.pyx +824 -0
  414. hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/land_dill_assl.py +13 -0
  415. hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/land_lahn_kalk.py +13 -0
  416. hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/land_lahn_leun.py +14 -0
  417. hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/land_lahn_marb.py +13 -0
  418. hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/stream_dill_assl_lahn_leun.py +5 -0
  419. hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/stream_lahn_leun_lahn_kalk.py +5 -0
  420. hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/stream_lahn_marb_lahn_leun.py +5 -0
  421. hydpy/data/HydPy-H-Lahn/control/default/land.py +9 -0
  422. hydpy/data/HydPy-H-Lahn/control/default/land_dill_assl.py +57 -0
  423. hydpy/data/HydPy-H-Lahn/control/default/land_lahn_kalk.py +57 -0
  424. hydpy/data/HydPy-H-Lahn/control/default/land_lahn_leun.py +56 -0
  425. hydpy/data/HydPy-H-Lahn/control/default/land_lahn_marb.py +57 -0
  426. hydpy/data/HydPy-H-Lahn/control/default/stream_dill_assl_lahn_leun.py +7 -0
  427. hydpy/data/HydPy-H-Lahn/control/default/stream_lahn_leun_lahn_kalk.py +7 -0
  428. hydpy/data/HydPy-H-Lahn/control/default/stream_lahn_marb_lahn_leun.py +7 -0
  429. hydpy/data/HydPy-H-Lahn/multiple_runs.xml +309 -0
  430. hydpy/data/HydPy-H-Lahn/multiple_runs_alpha.xml +71 -0
  431. hydpy/data/HydPy-H-Lahn/network/default/headwaters.py +11 -0
  432. hydpy/data/HydPy-H-Lahn/network/default/nonheadwaters.py +11 -0
  433. hydpy/data/HydPy-H-Lahn/network/default/streams.py +8 -0
  434. hydpy/data/HydPy-H-Lahn/series/default/dill_assl_obs_q.asc +11387 -0
  435. hydpy/data/HydPy-H-Lahn/series/default/evap_pet_hbv96_input_normalairtemperature.nc +0 -0
  436. hydpy/data/HydPy-H-Lahn/series/default/evap_pet_hbv96_input_normalevapotranspiration.nc +0 -0
  437. hydpy/data/HydPy-H-Lahn/series/default/hland_96_input_p.nc +0 -0
  438. hydpy/data/HydPy-H-Lahn/series/default/hland_96_input_t.nc +0 -0
  439. hydpy/data/HydPy-H-Lahn/series/default/lahn_kalk_obs_q.asc +11387 -0
  440. hydpy/data/HydPy-H-Lahn/series/default/lahn_leun_obs_q.asc +11387 -0
  441. hydpy/data/HydPy-H-Lahn/series/default/lahn_marb_obs_q.asc +11387 -0
  442. hydpy/data/HydPy-H-Lahn/series/default/land_dill_assl_evap_pet_hbv96_input_normalairtemperature.asc +11387 -0
  443. hydpy/data/HydPy-H-Lahn/series/default/land_dill_assl_evap_pet_hbv96_input_normalevapotranspiration.asc +11387 -0
  444. hydpy/data/HydPy-H-Lahn/series/default/land_dill_assl_hland_96_input_p.asc +11387 -0
  445. hydpy/data/HydPy-H-Lahn/series/default/land_dill_assl_hland_96_input_t.asc +11387 -0
  446. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_kalk_evap_pet_hbv96_input_normalairtemperature.asc +11387 -0
  447. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_kalk_evap_pet_hbv96_input_normalevapotranspiration.asc +11387 -0
  448. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_kalk_hland_96_input_p.asc +11387 -0
  449. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_kalk_hland_96_input_t.asc +11387 -0
  450. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_leun_evap_pet_hbv96_input_normalairtemperature.asc +11387 -0
  451. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_leun_evap_pet_hbv96_input_normalevapotranspiration.asc +11387 -0
  452. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_leun_hland_96_input_p.asc +11387 -0
  453. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_leun_hland_96_input_t.asc +11387 -0
  454. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_marb_evap_pet_hbv96_input_normalairtemperature.asc +11387 -0
  455. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_marb_evap_pet_hbv96_input_normalevapotranspiration.asc +11387 -0
  456. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_marb_hland_96_input_p.asc +11387 -0
  457. hydpy/data/HydPy-H-Lahn/series/default/land_lahn_marb_hland_96_input_t.asc +11387 -0
  458. hydpy/data/HydPy-H-Lahn/series/default/obs_q.nc +0 -0
  459. hydpy/data/HydPy-H-Lahn/single_run.xml +152 -0
  460. hydpy/data/HydPy-H-Lahn/single_run.xmlt +143 -0
  461. hydpy/data/__init__.py +17 -0
  462. hydpy/docs/__init__.py +0 -0
  463. hydpy/docs/autofigs/__init__.py +0 -0
  464. hydpy/docs/bib/__init__.py +0 -0
  465. hydpy/docs/bib/refs.bib +566 -0
  466. hydpy/docs/combine_docversions.py +133 -0
  467. hydpy/docs/draw_model_sketches.py +1301 -0
  468. hydpy/docs/enable_autodoc.py +7 -0
  469. hydpy/docs/figs/HydPy-G-GR4.png +0 -0
  470. hydpy/docs/figs/HydPy-G-GR5.png +0 -0
  471. hydpy/docs/figs/HydPy-G-GR6.png +0 -0
  472. hydpy/docs/figs/HydPy-H-HBV96-COSERO.png +0 -0
  473. hydpy/docs/figs/HydPy-H-HBV96-PREVAH.png +0 -0
  474. hydpy/docs/figs/HydPy-H-HBV96.png +0 -0
  475. hydpy/docs/figs/HydPy-H-Lahn.png +0 -0
  476. hydpy/docs/figs/HydPy-KinW-Williams.png +0 -0
  477. hydpy/docs/figs/HydPy-L-DD.png +0 -0
  478. hydpy/docs/figs/HydPy-W-Wag.png +0 -0
  479. hydpy/docs/figs/HydPy_Logo.png +0 -0
  480. hydpy/docs/figs/HydPy_Logo_Text.png +0 -0
  481. hydpy/docs/figs/IDLE-editor.png +0 -0
  482. hydpy/docs/figs/IDLE-shell.png +0 -0
  483. hydpy/docs/figs/LAWA_river-basin-bumbers.png +0 -0
  484. hydpy/docs/figs/__init__.py +0 -0
  485. hydpy/docs/html_/__init__.py +0 -0
  486. hydpy/docs/polish_html.py +57 -0
  487. hydpy/docs/prepare.py +224 -0
  488. hydpy/docs/publish_docs.py +53 -0
  489. hydpy/docs/rst/HydPy-ARMA.rst +27 -0
  490. hydpy/docs/rst/HydPy-Conv.rst +22 -0
  491. hydpy/docs/rst/HydPy-Dam.rst +79 -0
  492. hydpy/docs/rst/HydPy-Dummy.rst +21 -0
  493. hydpy/docs/rst/HydPy-Evap.rst +26 -0
  494. hydpy/docs/rst/HydPy-Exch.rst +36 -0
  495. hydpy/docs/rst/HydPy-G.rst +40 -0
  496. hydpy/docs/rst/HydPy-GA.rst +34 -0
  497. hydpy/docs/rst/HydPy-H.rst +24 -0
  498. hydpy/docs/rst/HydPy-KinW.rst +32 -0
  499. hydpy/docs/rst/HydPy-L.rst +42 -0
  500. hydpy/docs/rst/HydPy-Meteo.rst +28 -0
  501. hydpy/docs/rst/HydPy-Musk.rst +21 -0
  502. hydpy/docs/rst/HydPy-Rconc.rst +17 -0
  503. hydpy/docs/rst/HydPy-SW1D.rst +49 -0
  504. hydpy/docs/rst/HydPy-Test.rst +19 -0
  505. hydpy/docs/rst/HydPy-W.rst +20 -0
  506. hydpy/docs/rst/HydPy-WHMod.rst +19 -0
  507. hydpy/docs/rst/HydPy-WQ.rst +20 -0
  508. hydpy/docs/rst/__init__.py +0 -0
  509. hydpy/docs/rst/additional_repositories.rst +40 -0
  510. hydpy/docs/rst/auxiliaries.rst +31 -0
  511. hydpy/docs/rst/continuous_integration.rst +75 -0
  512. hydpy/docs/rst/core.rst +75 -0
  513. hydpy/docs/rst/cythons.rst +47 -0
  514. hydpy/docs/rst/definitions.rst +506 -0
  515. hydpy/docs/rst/developer_guide.rst +54 -0
  516. hydpy/docs/rst/example_projects.rst +40 -0
  517. hydpy/docs/rst/execution.rst +22 -0
  518. hydpy/docs/rst/framework_tools.rst +56 -0
  519. hydpy/docs/rst/how_to_read_the_reference_manual.rst +156 -0
  520. hydpy/docs/rst/hydpydependencies.rst +55 -0
  521. hydpy/docs/rst/index.rst +125 -0
  522. hydpy/docs/rst/installation.rst +155 -0
  523. hydpy/docs/rst/model_families.rst +79 -0
  524. hydpy/docs/rst/model_overview.rst +291 -0
  525. hydpy/docs/rst/modelimports.rst +10 -0
  526. hydpy/docs/rst/options.rst +119 -0
  527. hydpy/docs/rst/programming_style.rst +572 -0
  528. hydpy/docs/rst/project_structure.rst +520 -0
  529. hydpy/docs/rst/quickstart.rst +304 -0
  530. hydpy/docs/rst/reference_manual.rst +29 -0
  531. hydpy/docs/rst/required_tools.rst +50 -0
  532. hydpy/docs/rst/simulation.rst +514 -0
  533. hydpy/docs/rst/submodel_interfaces.rst +32 -0
  534. hydpy/docs/rst/tests_and_documentation.rst +85 -0
  535. hydpy/docs/rst/user_guide.rst +38 -0
  536. hydpy/docs/rst/version_control.rst +116 -0
  537. hydpy/docs/rst/zbibliography.rst +8 -0
  538. hydpy/docs/sphinx/__init__.py +0 -0
  539. hydpy/docs/sphinx/_themes/basic_hydpy/changes/frameset.html +11 -0
  540. hydpy/docs/sphinx/_themes/basic_hydpy/changes/rstsource.html +15 -0
  541. hydpy/docs/sphinx/_themes/basic_hydpy/changes/versionchanges.html +33 -0
  542. hydpy/docs/sphinx/_themes/basic_hydpy/defindex.html +35 -0
  543. hydpy/docs/sphinx/_themes/basic_hydpy/domainindex.html +56 -0
  544. hydpy/docs/sphinx/_themes/basic_hydpy/genindex-single.html +63 -0
  545. hydpy/docs/sphinx/_themes/basic_hydpy/genindex-split.html +41 -0
  546. hydpy/docs/sphinx/_themes/basic_hydpy/genindex.html +76 -0
  547. hydpy/docs/sphinx/_themes/basic_hydpy/globaltoc.html +11 -0
  548. hydpy/docs/sphinx/_themes/basic_hydpy/layout.html +221 -0
  549. hydpy/docs/sphinx/_themes/basic_hydpy/localtoc.html +15 -0
  550. hydpy/docs/sphinx/_themes/basic_hydpy/opensearch.xml +13 -0
  551. hydpy/docs/sphinx/_themes/basic_hydpy/page.html +13 -0
  552. hydpy/docs/sphinx/_themes/basic_hydpy/relations.html +23 -0
  553. hydpy/docs/sphinx/_themes/basic_hydpy/search.html +65 -0
  554. hydpy/docs/sphinx/_themes/basic_hydpy/searchbox.html +21 -0
  555. hydpy/docs/sphinx/_themes/basic_hydpy/searchfield.html +23 -0
  556. hydpy/docs/sphinx/_themes/basic_hydpy/sourcelink.html +18 -0
  557. hydpy/docs/sphinx/_themes/basic_hydpy/static/basic.css_t +925 -0
  558. hydpy/docs/sphinx/_themes/basic_hydpy/static/doctools.js +156 -0
  559. hydpy/docs/sphinx/_themes/basic_hydpy/static/documentation_options.js_t +13 -0
  560. hydpy/docs/sphinx/_themes/basic_hydpy/static/file.png +0 -0
  561. hydpy/docs/sphinx/_themes/basic_hydpy/static/language_data.js_t +26 -0
  562. hydpy/docs/sphinx/_themes/basic_hydpy/static/minus.png +0 -0
  563. hydpy/docs/sphinx/_themes/basic_hydpy/static/plus.png +0 -0
  564. hydpy/docs/sphinx/_themes/basic_hydpy/static/searchtools.js +574 -0
  565. hydpy/docs/sphinx/_themes/basic_hydpy/static/sphinx_highlight.js +154 -0
  566. hydpy/docs/sphinx/_themes/basic_hydpy/theme.conf +16 -0
  567. hydpy/docs/sphinx/_themes/classic_hydpy/layout.html +23 -0
  568. hydpy/docs/sphinx/_themes/classic_hydpy/static/classic.css_t +358 -0
  569. hydpy/docs/sphinx/_themes/classic_hydpy/static/sidebar.js_t +72 -0
  570. hydpy/docs/sphinx/_themes/classic_hydpy/theme.conf +32 -0
  571. hydpy/docs/sphinx/conf.py +398 -0
  572. hydpy/docs/sphinx/defaultlinks_extension.py +36 -0
  573. hydpy/docs/sphinx/integrationtest_extension.py +104 -0
  574. hydpy/docs/sphinx/projectstructure_extension.py +58 -0
  575. hydpy/docs/sphinx/submodelgraph_extension.py +53 -0
  576. hydpy/exe/__init__.py +0 -0
  577. hydpy/exe/commandtools.py +651 -0
  578. hydpy/exe/hyd.py +277 -0
  579. hydpy/exe/modelimports.py +41 -0
  580. hydpy/exe/replacetools.py +216 -0
  581. hydpy/exe/servertools.py +2348 -0
  582. hydpy/exe/xmltools.py +3280 -0
  583. hydpy/interfaces/__init__.py +0 -0
  584. hydpy/interfaces/aetinterfaces.py +94 -0
  585. hydpy/interfaces/dischargeinterfaces.py +45 -0
  586. hydpy/interfaces/petinterfaces.py +117 -0
  587. hydpy/interfaces/precipinterfaces.py +42 -0
  588. hydpy/interfaces/radiationinterfaces.py +79 -0
  589. hydpy/interfaces/rconcinterfaces.py +30 -0
  590. hydpy/interfaces/routinginterfaces.py +324 -0
  591. hydpy/interfaces/soilinterfaces.py +96 -0
  592. hydpy/interfaces/stateinterfaces.py +98 -0
  593. hydpy/interfaces/tempinterfaces.py +46 -0
  594. hydpy/models/__init__.py +0 -0
  595. hydpy/models/arma/__init__.py +14 -0
  596. hydpy/models/arma/arma_control.py +383 -0
  597. hydpy/models/arma/arma_derived.py +204 -0
  598. hydpy/models/arma/arma_fluxes.py +41 -0
  599. hydpy/models/arma/arma_inlets.py +11 -0
  600. hydpy/models/arma/arma_logs.py +19 -0
  601. hydpy/models/arma/arma_model.py +461 -0
  602. hydpy/models/arma/arma_outlets.py +11 -0
  603. hydpy/models/arma_rimorido.py +381 -0
  604. hydpy/models/conv/__init__.py +12 -0
  605. hydpy/models/conv/conv_control.py +303 -0
  606. hydpy/models/conv/conv_derived.py +271 -0
  607. hydpy/models/conv/conv_fluxes.py +54 -0
  608. hydpy/models/conv/conv_inlets.py +11 -0
  609. hydpy/models/conv/conv_model.py +687 -0
  610. hydpy/models/conv/conv_outlets.py +11 -0
  611. hydpy/models/conv_idw.py +120 -0
  612. hydpy/models/conv_idw_ed.py +184 -0
  613. hydpy/models/conv_nn.py +112 -0
  614. hydpy/models/dam/__init__.py +16 -0
  615. hydpy/models/dam/dam_aides.py +17 -0
  616. hydpy/models/dam/dam_control.py +346 -0
  617. hydpy/models/dam/dam_derived.py +559 -0
  618. hydpy/models/dam/dam_factors.py +46 -0
  619. hydpy/models/dam/dam_fluxes.py +179 -0
  620. hydpy/models/dam/dam_inlets.py +29 -0
  621. hydpy/models/dam/dam_logs.py +52 -0
  622. hydpy/models/dam/dam_model.py +5011 -0
  623. hydpy/models/dam/dam_outlets.py +23 -0
  624. hydpy/models/dam/dam_receivers.py +41 -0
  625. hydpy/models/dam/dam_senders.py +23 -0
  626. hydpy/models/dam/dam_solver.py +75 -0
  627. hydpy/models/dam/dam_states.py +11 -0
  628. hydpy/models/dam_llake.py +499 -0
  629. hydpy/models/dam_lreservoir.py +548 -0
  630. hydpy/models/dam_lretention.py +343 -0
  631. hydpy/models/dam_pump.py +278 -0
  632. hydpy/models/dam_pump_sluice.py +339 -0
  633. hydpy/models/dam_sluice.py +319 -0
  634. hydpy/models/dam_v001.py +1127 -0
  635. hydpy/models/dam_v002.py +381 -0
  636. hydpy/models/dam_v003.py +422 -0
  637. hydpy/models/dam_v004.py +665 -0
  638. hydpy/models/dam_v005.py +479 -0
  639. hydpy/models/dummy/__init__.py +15 -0
  640. hydpy/models/dummy/dummy_control.py +22 -0
  641. hydpy/models/dummy/dummy_fluxes.py +11 -0
  642. hydpy/models/dummy/dummy_inlets.py +11 -0
  643. hydpy/models/dummy/dummy_inputs.py +41 -0
  644. hydpy/models/dummy/dummy_model.py +196 -0
  645. hydpy/models/dummy/dummy_outlets.py +11 -0
  646. hydpy/models/dummy_interceptedwater.py +85 -0
  647. hydpy/models/dummy_node2node.py +83 -0
  648. hydpy/models/dummy_snowalbedo.py +84 -0
  649. hydpy/models/dummy_snowcover.py +84 -0
  650. hydpy/models/dummy_snowycanopy.py +86 -0
  651. hydpy/models/dummy_soilwater.py +85 -0
  652. hydpy/models/evap/__init__.py +13 -0
  653. hydpy/models/evap/evap_control.py +354 -0
  654. hydpy/models/evap/evap_derived.py +236 -0
  655. hydpy/models/evap/evap_factors.py +188 -0
  656. hydpy/models/evap/evap_fixed.py +68 -0
  657. hydpy/models/evap/evap_fluxes.py +150 -0
  658. hydpy/models/evap/evap_inputs.py +54 -0
  659. hydpy/models/evap/evap_logs.py +91 -0
  660. hydpy/models/evap/evap_masks.py +48 -0
  661. hydpy/models/evap/evap_model.py +9170 -0
  662. hydpy/models/evap/evap_parameters.py +149 -0
  663. hydpy/models/evap/evap_sequences.py +32 -0
  664. hydpy/models/evap/evap_states.py +18 -0
  665. hydpy/models/evap_aet_hbv96.py +372 -0
  666. hydpy/models/evap_aet_minhas.py +331 -0
  667. hydpy/models/evap_aet_morsim.py +627 -0
  668. hydpy/models/evap_pet_ambav1.py +483 -0
  669. hydpy/models/evap_pet_hbv96.py +147 -0
  670. hydpy/models/evap_pet_m.py +94 -0
  671. hydpy/models/evap_pet_mlc.py +107 -0
  672. hydpy/models/evap_ret_fao56.py +265 -0
  673. hydpy/models/evap_ret_io.py +74 -0
  674. hydpy/models/evap_ret_tw2002.py +165 -0
  675. hydpy/models/exch/__init__.py +14 -0
  676. hydpy/models/exch/exch_control.py +262 -0
  677. hydpy/models/exch/exch_derived.py +36 -0
  678. hydpy/models/exch/exch_factors.py +26 -0
  679. hydpy/models/exch/exch_fluxes.py +48 -0
  680. hydpy/models/exch/exch_inlets.py +11 -0
  681. hydpy/models/exch/exch_logs.py +12 -0
  682. hydpy/models/exch/exch_model.py +451 -0
  683. hydpy/models/exch/exch_outlets.py +17 -0
  684. hydpy/models/exch/exch_receivers.py +17 -0
  685. hydpy/models/exch_branch_hbv96.py +186 -0
  686. hydpy/models/exch_waterlevel.py +73 -0
  687. hydpy/models/exch_weir_hbv96.py +609 -0
  688. hydpy/models/ga/__init__.py +14 -0
  689. hydpy/models/ga/ga_aides.py +17 -0
  690. hydpy/models/ga/ga_control.py +208 -0
  691. hydpy/models/ga/ga_derived.py +77 -0
  692. hydpy/models/ga/ga_fluxes.py +83 -0
  693. hydpy/models/ga/ga_inputs.py +26 -0
  694. hydpy/models/ga/ga_logs.py +17 -0
  695. hydpy/models/ga/ga_model.py +2952 -0
  696. hydpy/models/ga/ga_states.py +87 -0
  697. hydpy/models/ga_garto.py +1001 -0
  698. hydpy/models/ga_garto_submodel1.py +79 -0
  699. hydpy/models/gland/__init__.py +14 -0
  700. hydpy/models/gland/gland_control.py +90 -0
  701. hydpy/models/gland/gland_derived.py +113 -0
  702. hydpy/models/gland/gland_fluxes.py +137 -0
  703. hydpy/models/gland/gland_inputs.py +12 -0
  704. hydpy/models/gland/gland_model.py +1439 -0
  705. hydpy/models/gland/gland_outlets.py +11 -0
  706. hydpy/models/gland/gland_states.py +90 -0
  707. hydpy/models/gland_gr4.py +501 -0
  708. hydpy/models/gland_gr5.py +463 -0
  709. hydpy/models/gland_gr6.py +487 -0
  710. hydpy/models/hland/__init__.py +20 -0
  711. hydpy/models/hland/hland_aides.py +19 -0
  712. hydpy/models/hland/hland_constants.py +37 -0
  713. hydpy/models/hland/hland_control.py +1530 -0
  714. hydpy/models/hland/hland_derived.py +683 -0
  715. hydpy/models/hland/hland_factors.py +57 -0
  716. hydpy/models/hland/hland_fixed.py +42 -0
  717. hydpy/models/hland/hland_fluxes.py +279 -0
  718. hydpy/models/hland/hland_inputs.py +19 -0
  719. hydpy/models/hland/hland_masks.py +107 -0
  720. hydpy/models/hland/hland_model.py +4664 -0
  721. hydpy/models/hland/hland_outlets.py +11 -0
  722. hydpy/models/hland/hland_parameters.py +227 -0
  723. hydpy/models/hland/hland_sequences.py +382 -0
  724. hydpy/models/hland/hland_states.py +236 -0
  725. hydpy/models/hland_96.py +1812 -0
  726. hydpy/models/hland_96c.py +1196 -0
  727. hydpy/models/hland_96p.py +1204 -0
  728. hydpy/models/kinw/__init__.py +18 -0
  729. hydpy/models/kinw/kinw_aides.py +306 -0
  730. hydpy/models/kinw/kinw_control.py +270 -0
  731. hydpy/models/kinw/kinw_derived.py +197 -0
  732. hydpy/models/kinw/kinw_fixed.py +33 -0
  733. hydpy/models/kinw/kinw_fluxes.py +37 -0
  734. hydpy/models/kinw/kinw_inlets.py +11 -0
  735. hydpy/models/kinw/kinw_model.py +3026 -0
  736. hydpy/models/kinw/kinw_outlets.py +11 -0
  737. hydpy/models/kinw/kinw_solver.py +45 -0
  738. hydpy/models/kinw/kinw_states.py +17 -0
  739. hydpy/models/kinw_williams.py +1299 -0
  740. hydpy/models/kinw_williams_ext.py +768 -0
  741. hydpy/models/lland/__init__.py +42 -0
  742. hydpy/models/lland/lland_aides.py +38 -0
  743. hydpy/models/lland/lland_constants.py +88 -0
  744. hydpy/models/lland/lland_control.py +1329 -0
  745. hydpy/models/lland/lland_derived.py +380 -0
  746. hydpy/models/lland/lland_factors.py +18 -0
  747. hydpy/models/lland/lland_fixed.py +128 -0
  748. hydpy/models/lland/lland_fluxes.py +626 -0
  749. hydpy/models/lland/lland_inlets.py +12 -0
  750. hydpy/models/lland/lland_inputs.py +33 -0
  751. hydpy/models/lland/lland_logs.py +17 -0
  752. hydpy/models/lland/lland_masks.py +212 -0
  753. hydpy/models/lland/lland_model.py +7690 -0
  754. hydpy/models/lland/lland_outlets.py +12 -0
  755. hydpy/models/lland/lland_parameters.py +195 -0
  756. hydpy/models/lland/lland_sequences.py +67 -0
  757. hydpy/models/lland/lland_states.py +280 -0
  758. hydpy/models/lland_dd.py +2270 -0
  759. hydpy/models/lland_knauf.py +2156 -0
  760. hydpy/models/lland_knauf_ic.py +1920 -0
  761. hydpy/models/meteo/__init__.py +12 -0
  762. hydpy/models/meteo/meteo_control.py +154 -0
  763. hydpy/models/meteo/meteo_derived.py +159 -0
  764. hydpy/models/meteo/meteo_factors.py +88 -0
  765. hydpy/models/meteo/meteo_fixed.py +19 -0
  766. hydpy/models/meteo/meteo_fluxes.py +46 -0
  767. hydpy/models/meteo/meteo_inputs.py +47 -0
  768. hydpy/models/meteo/meteo_logs.py +30 -0
  769. hydpy/models/meteo/meteo_model.py +2904 -0
  770. hydpy/models/meteo/meteo_parameters.py +14 -0
  771. hydpy/models/meteo/meteo_sequences.py +22 -0
  772. hydpy/models/meteo_clear_glob_io.py +77 -0
  773. hydpy/models/meteo_glob_fao56.py +217 -0
  774. hydpy/models/meteo_glob_io.py +68 -0
  775. hydpy/models/meteo_glob_morsim.py +444 -0
  776. hydpy/models/meteo_precip_io.py +76 -0
  777. hydpy/models/meteo_psun_sun_glob_io.py +83 -0
  778. hydpy/models/meteo_sun_fao56.py +188 -0
  779. hydpy/models/meteo_sun_morsim.py +466 -0
  780. hydpy/models/meteo_temp_io.py +76 -0
  781. hydpy/models/musk/__init__.py +15 -0
  782. hydpy/models/musk/musk_control.py +328 -0
  783. hydpy/models/musk/musk_derived.py +32 -0
  784. hydpy/models/musk/musk_factors.py +53 -0
  785. hydpy/models/musk/musk_fluxes.py +24 -0
  786. hydpy/models/musk/musk_inlets.py +11 -0
  787. hydpy/models/musk/musk_masks.py +15 -0
  788. hydpy/models/musk/musk_model.py +838 -0
  789. hydpy/models/musk/musk_outlets.py +11 -0
  790. hydpy/models/musk/musk_sequences.py +88 -0
  791. hydpy/models/musk/musk_solver.py +68 -0
  792. hydpy/models/musk/musk_states.py +64 -0
  793. hydpy/models/musk_classic.py +228 -0
  794. hydpy/models/musk_mct.py +1247 -0
  795. hydpy/models/rconc/__init__.py +12 -0
  796. hydpy/models/rconc/rconc_control.py +473 -0
  797. hydpy/models/rconc/rconc_derived.py +76 -0
  798. hydpy/models/rconc/rconc_fluxes.py +19 -0
  799. hydpy/models/rconc/rconc_logs.py +74 -0
  800. hydpy/models/rconc/rconc_model.py +260 -0
  801. hydpy/models/rconc/rconc_states.py +11 -0
  802. hydpy/models/rconc_nash.py +48 -0
  803. hydpy/models/rconc_uh.py +53 -0
  804. hydpy/models/sw1d/__init__.py +17 -0
  805. hydpy/models/sw1d/sw1d_control.py +356 -0
  806. hydpy/models/sw1d/sw1d_derived.py +85 -0
  807. hydpy/models/sw1d/sw1d_factors.py +78 -0
  808. hydpy/models/sw1d/sw1d_fixed.py +12 -0
  809. hydpy/models/sw1d/sw1d_fluxes.py +55 -0
  810. hydpy/models/sw1d/sw1d_inlets.py +17 -0
  811. hydpy/models/sw1d/sw1d_model.py +3385 -0
  812. hydpy/models/sw1d/sw1d_outlets.py +11 -0
  813. hydpy/models/sw1d/sw1d_receivers.py +11 -0
  814. hydpy/models/sw1d/sw1d_senders.py +11 -0
  815. hydpy/models/sw1d/sw1d_states.py +23 -0
  816. hydpy/models/sw1d_channel.py +2051 -0
  817. hydpy/models/sw1d_gate_out.py +599 -0
  818. hydpy/models/sw1d_lias.py +105 -0
  819. hydpy/models/sw1d_lias_sluice.py +531 -0
  820. hydpy/models/sw1d_network.py +1219 -0
  821. hydpy/models/sw1d_pump.py +448 -0
  822. hydpy/models/sw1d_q_in.py +79 -0
  823. hydpy/models/sw1d_q_out.py +81 -0
  824. hydpy/models/sw1d_storage.py +78 -0
  825. hydpy/models/sw1d_weir_out.py +75 -0
  826. hydpy/models/test/__init__.py +14 -0
  827. hydpy/models/test/test_control.py +28 -0
  828. hydpy/models/test/test_fluxes.py +17 -0
  829. hydpy/models/test/test_model.py +201 -0
  830. hydpy/models/test/test_solver.py +48 -0
  831. hydpy/models/test/test_states.py +17 -0
  832. hydpy/models/test_discontinous.py +46 -0
  833. hydpy/models/test_stiff0d.py +47 -0
  834. hydpy/models/test_stiff1d.py +42 -0
  835. hydpy/models/whmod/__init__.py +21 -0
  836. hydpy/models/whmod/whmod_constants.py +77 -0
  837. hydpy/models/whmod/whmod_control.py +333 -0
  838. hydpy/models/whmod/whmod_derived.py +210 -0
  839. hydpy/models/whmod/whmod_factors.py +9 -0
  840. hydpy/models/whmod/whmod_fluxes.py +105 -0
  841. hydpy/models/whmod/whmod_inputs.py +15 -0
  842. hydpy/models/whmod/whmod_masks.py +178 -0
  843. hydpy/models/whmod/whmod_model.py +2091 -0
  844. hydpy/models/whmod/whmod_parameters.py +155 -0
  845. hydpy/models/whmod/whmod_sequences.py +193 -0
  846. hydpy/models/whmod/whmod_states.py +73 -0
  847. hydpy/models/whmod_rural.py +794 -0
  848. hydpy/models/whmod_urban.py +1011 -0
  849. hydpy/models/wland/__init__.py +43 -0
  850. hydpy/models/wland/wland_aides.py +55 -0
  851. hydpy/models/wland/wland_constants.py +103 -0
  852. hydpy/models/wland/wland_control.py +508 -0
  853. hydpy/models/wland/wland_derived.py +330 -0
  854. hydpy/models/wland/wland_factors.py +11 -0
  855. hydpy/models/wland/wland_fixed.py +12 -0
  856. hydpy/models/wland/wland_fluxes.py +166 -0
  857. hydpy/models/wland/wland_inputs.py +33 -0
  858. hydpy/models/wland/wland_masks.py +54 -0
  859. hydpy/models/wland/wland_model.py +3755 -0
  860. hydpy/models/wland/wland_outlets.py +11 -0
  861. hydpy/models/wland/wland_parameters.py +214 -0
  862. hydpy/models/wland/wland_sequences.py +108 -0
  863. hydpy/models/wland/wland_solver.py +45 -0
  864. hydpy/models/wland/wland_states.py +56 -0
  865. hydpy/models/wland_gd.py +888 -0
  866. hydpy/models/wland_wag.py +1244 -0
  867. hydpy/models/wq/__init__.py +14 -0
  868. hydpy/models/wq/wq_control.py +117 -0
  869. hydpy/models/wq/wq_derived.py +182 -0
  870. hydpy/models/wq/wq_factors.py +79 -0
  871. hydpy/models/wq/wq_fluxes.py +17 -0
  872. hydpy/models/wq/wq_model.py +1889 -0
  873. hydpy/models/wq_trapeze.py +168 -0
  874. hydpy/models/wq_trapeze_strickler.py +101 -0
  875. hydpy/models/wq_walrus.py +57 -0
  876. hydpy/py.typed +0 -0
  877. hydpy/tests/.coveragerc +22 -0
  878. hydpy/tests/__init__.py +0 -0
  879. hydpy/tests/check_consistency.py +32 -0
  880. hydpy/tests/hydpydoctestcustomize.pth +1 -0
  881. hydpy/tests/hydpydoctestcustomize.py +15 -0
  882. hydpy/tests/iotesting/__init__.py +0 -0
  883. hydpy/tests/run_doctests.py +233 -0
  884. hydpy-6.2.dev1.data/scripts/hyd.py +277 -0
  885. hydpy-6.2.dev1.dist-info/LICENSE +165 -0
  886. hydpy-6.2.dev1.dist-info/METADATA +163 -0
  887. hydpy-6.2.dev1.dist-info/RECORD +890 -0
  888. hydpy-6.2.dev1.dist-info/WHEEL +5 -0
  889. hydpy-6.2.dev1.dist-info/licenses_hydpy_installer.txt +42 -0
  890. hydpy-6.2.dev1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,1045 @@
1
+ """This module implements features for defining local or global *HydPy* options."""
2
+
3
+ # import...
4
+ # ...from standard library
5
+ from __future__ import annotations
6
+ import itertools
7
+ import types
8
+
9
+ # ...from HydPy
10
+ import hydpy
11
+ from hydpy.core import exceptiontools
12
+ from hydpy.core import propertytools
13
+ from hydpy.core import timetools
14
+ from hydpy.core.typingtools import *
15
+
16
+ TypeOption = TypeVar(
17
+ "TypeOption",
18
+ bool,
19
+ int,
20
+ str,
21
+ timetools.Period,
22
+ SeriesFileType,
23
+ SeriesAggregationType,
24
+ SeriesConventionType,
25
+ )
26
+ TypeOptionContextBase = TypeVar("TypeOptionContextBase", bound="OptionContextBase[Any]")
27
+ TypeOptionPropertyBase = TypeVar(
28
+ "TypeOptionPropertyBase", bound="OptionPropertyBase[Any, Any]"
29
+ )
30
+
31
+
32
+ class OptionContextBase(Generic[TypeOption]):
33
+ """Base class for defining context managers required for the different
34
+ |OptionPropertyBase| subclasses."""
35
+
36
+ _old_value: TypeOption
37
+ _new_value: TypeOption | None
38
+ _set_value: tuple[Callable[[TypeOption | None], None]] | None
39
+
40
+ def __init__(
41
+ self,
42
+ value: TypeOption,
43
+ set_value: Callable[[TypeOption | None], None] | None = None,
44
+ ) -> None:
45
+ self._old_value = value
46
+ self._new_value = None
47
+ if set_value is None:
48
+ self._set_value = None
49
+ else:
50
+ self._set_value = (set_value,)
51
+
52
+ def __call__(
53
+ self: TypeOptionContextBase, new_value: TypeOption | None = None
54
+ ) -> TypeOptionContextBase:
55
+ self._new_value = new_value
56
+ return self
57
+
58
+ def __enter__(self) -> None:
59
+ if self._set_value is not None:
60
+ self._set_value[0](self._new_value)
61
+
62
+ def __exit__(
63
+ self,
64
+ exception_type: type[BaseException],
65
+ exception_value: BaseException,
66
+ traceback_: types.TracebackType,
67
+ ) -> None:
68
+ self._new_value = None
69
+ if self._set_value is not None:
70
+ self._set_value[0](self._old_value)
71
+
72
+
73
+ class OptionContextBool(int, OptionContextBase[bool]):
74
+ """Context manager required by |OptionPropertyBool|."""
75
+
76
+ def __new__( # pylint: disable=unused-argument
77
+ cls, value: bool, set_value: Callable[[bool], None] | None = None
78
+ ) -> OptionContextBool:
79
+ return super().__new__(cls, value)
80
+
81
+ def __repr__(self) -> str:
82
+ return "TRUE" if self else "FALSE"
83
+
84
+
85
+ class OptionContextInt(int, OptionContextBase[int]):
86
+ """Context manager required by |OptionPropertyInt|."""
87
+
88
+ def __new__( # pylint: disable=unused-argument
89
+ cls, value: int, set_value: Callable[[int], None] | None = None
90
+ ) -> OptionContextInt:
91
+ return super().__new__(cls, value)
92
+
93
+
94
+ class _OptionContextEllipsis(int, OptionContextBase[int]):
95
+ def __new__( # pylint: disable=unused-argument
96
+ cls,
97
+ value: int,
98
+ set_value: Callable[[int], None] | None = None,
99
+ optional: bool = False,
100
+ ) -> _OptionContextEllipsis:
101
+ return super().__new__(cls, value)
102
+
103
+ def __call__(
104
+ self: TypeOptionContextBase,
105
+ new_value: int | None = None,
106
+ optional: bool = False,
107
+ ) -> TypeOptionContextBase:
108
+ if optional and (self._old_value != -999):
109
+ self._new_value = self._old_value
110
+ else:
111
+ self._new_value = new_value
112
+ return self
113
+
114
+
115
+ class OptionContextStr(str, OptionContextBase[TypeOption]):
116
+ """Context manager required by |OptionPropertyStr|."""
117
+
118
+ def __new__( # pylint: disable=unused-argument
119
+ cls, value: TypeOption, set_value: Callable[[TypeOption], None] | None = None
120
+ ) -> Self:
121
+ return super().__new__(cls, value)
122
+
123
+
124
+ class OptionContextPeriod(timetools.Period, OptionContextBase[timetools.Period]):
125
+ """Context manager required by |OptionPropertyPeriod|."""
126
+
127
+ _set_value: tuple[Callable[[timetools.PeriodConstrArg | None], None]]
128
+
129
+ def __new__( # pylint: disable=unused-argument
130
+ cls,
131
+ value: timetools.PeriodConstrArg,
132
+ set_value: None | (Callable[[timetools.PeriodConstrArg | None], None]) = None,
133
+ ) -> OptionContextPeriod:
134
+ return super().__new__(cls, value)
135
+
136
+ def __call__(
137
+ self: TypeOptionContextBase, new_value: timetools.PeriodConstrArg | None = None
138
+ ) -> TypeOptionContextBase:
139
+ self._new_value = new_value
140
+ return self
141
+
142
+
143
+ class OptionPropertyBase(
144
+ propertytools.BaseDescriptor, Generic[TypeOption, TypeOptionContextBase]
145
+ ):
146
+ """Base class for defining descriptors that work like regular |property| instances
147
+ and support the `with` statement to change the property's value temporarily."""
148
+
149
+ _CONVERTER: tuple[Callable[[TypeOption], TypeOption]]
150
+ _CONTEXT: type[TypeOptionContextBase]
151
+ _default: TypeOption
152
+ _obj2value: dict[Hashable, TypeOption]
153
+
154
+ def __init__(self, default: TypeOption, doc: str) -> None:
155
+ self._default = default
156
+ self._obj2value = {}
157
+ self.set_doc(doc)
158
+
159
+ @overload
160
+ def __get__(self, obj: None, typ: type[Hashable]) -> Self: ...
161
+
162
+ @overload
163
+ def __get__(self, obj: Hashable, typ: type[Hashable]) -> TypeOptionContextBase: ...
164
+
165
+ def __get__(
166
+ self, obj: Hashable | None, typ: type[Hashable]
167
+ ) -> Self | TypeOptionContextBase:
168
+ if obj is None:
169
+ return self
170
+ return self._CONTEXT(
171
+ self._get_value(obj), lambda value: self._set_value(obj, value)
172
+ )
173
+
174
+ def __set__(self, obj: Hashable, value: TypeOption) -> None:
175
+ self._obj2value[obj] = self._CONVERTER[0](value)
176
+
177
+ def __delete__(self, obj: Hashable) -> None:
178
+ if obj in self._obj2value:
179
+ del self._obj2value[obj]
180
+
181
+ def _get_value(self, obj: Hashable) -> TypeOption:
182
+ return self._obj2value.get(obj, self._default)
183
+
184
+ def _set_value(self, obj: Hashable, value: TypeOption | None = None) -> None:
185
+ if value is not None:
186
+ self._obj2value[obj] = self._CONVERTER[0](value)
187
+
188
+
189
+ class OptionPropertyBool(OptionPropertyBase[bool, OptionContextBool]):
190
+ """Descriptor for defining bool-like options.
191
+
192
+ Framework developers should implement bool-like options as follows:
193
+
194
+ >>> from hydpy.core.optiontools import OptionPropertyBool
195
+ >>> class T:
196
+ ... v = OptionPropertyBool(True, "x")
197
+
198
+ The given string serves as documentation:
199
+
200
+ >>> T.v.__doc__
201
+ 'x'
202
+
203
+ Users can change the current value "normally" by assignments:
204
+
205
+ >>> t = T()
206
+ >>> assert t.v
207
+ >>> t.v = False
208
+ >>> assert not t.v
209
+
210
+ Deleting restores the default value:
211
+
212
+ >>> del t.v
213
+ >>> assert t.v
214
+
215
+ In most cases, the preferred way is to change options "temporarily" for a specific
216
+ code block introduced by the `with` statement:
217
+
218
+ >>> with t.v(False):
219
+ ... assert not t.v
220
+ ... with t.v(True):
221
+ ... assert t.v
222
+ ... with t.v():
223
+ ... assert t.v
224
+ ... with t.v(None):
225
+ ... assert t.v
226
+ ... with t.v(False):
227
+ ... assert not t.v
228
+ ... with t.v():
229
+ ... t.v = False
230
+ ... assert not t.v
231
+ ... assert t.v
232
+ ... assert t.v
233
+ ... assert t.v
234
+ ... assert not t.v
235
+ >>> assert t.v
236
+
237
+ >>> with t.v(False):
238
+ ... assert not t.v
239
+ ... raise RuntimeError
240
+ Traceback (most recent call last):
241
+ ...
242
+ RuntimeError
243
+ >>> assert t.v
244
+ """
245
+
246
+ _CONVERTER = (bool,)
247
+ _CONTEXT = OptionContextBool
248
+
249
+
250
+ class OptionPropertyInt(OptionPropertyBase[int, OptionContextInt]):
251
+ """Descriptor for defining integer-like options.
252
+
253
+ Framework developers should implement integer-like options as follows:
254
+
255
+ >>> from hydpy.core.optiontools import OptionPropertyInt
256
+ >>> class T:
257
+ ... v = OptionPropertyInt(1, "x")
258
+
259
+ The given string serves as documentation:
260
+
261
+ >>> T.v.__doc__
262
+ 'x'
263
+
264
+ Users can change the current value "normally" by assignments:
265
+
266
+ >>> t = T()
267
+ >>> assert t.v == 1
268
+ >>> t.v = 2
269
+ >>> assert t.v == 2
270
+
271
+ Deleting restores the default value:
272
+
273
+ >>> del t.v
274
+ >>> assert t.v == 1
275
+
276
+ In most cases, the prefered way is to change options "temporarily" for a specific
277
+ code block introduced by the `with` statement:
278
+
279
+ >>> with t.v(2):
280
+ ... assert t.v == 2
281
+ ... with t.v(3):
282
+ ... assert t.v == 3
283
+ ... with t.v():
284
+ ... assert t.v == 3
285
+ ... with t.v(None):
286
+ ... assert t.v == 3
287
+ ... with t.v(1):
288
+ ... assert t.v == 1
289
+ ... with t.v():
290
+ ... t.v = 4
291
+ ... assert t.v == 4
292
+ ... assert t.v == 3
293
+ ... assert t.v == 3
294
+ ... assert t.v == 3
295
+ ... assert t.v == 2
296
+ >>> assert t.v == 1
297
+
298
+ >>> with t.v(2):
299
+ ... assert t.v == 2
300
+ ... raise RuntimeError
301
+ Traceback (most recent call last):
302
+ ...
303
+ RuntimeError
304
+ >>> assert t.v == 1
305
+ """
306
+
307
+ _CONVERTER = (int,)
308
+ _CONTEXT = OptionContextInt
309
+
310
+
311
+ class _OptionPropertyEllipsis(OptionPropertyBase[int, _OptionContextEllipsis]):
312
+ """
313
+ >>> from hydpy.core.optiontools import _OptionPropertyEllipsis
314
+ >>> class T:
315
+ ... v = _OptionPropertyEllipsis(1, "x")
316
+
317
+ >>> T.v.__doc__
318
+ 'x'
319
+
320
+ >>> t = T()
321
+ >>> assert t.v == 1
322
+ >>> t.v = 2
323
+ >>> assert t.v == 2
324
+
325
+ >>> del t.v
326
+ >>> assert t.v == 1
327
+
328
+ >>> with t.v(2):
329
+ ... assert t.v == 2
330
+ ... with t.v(3):
331
+ ... assert t.v == 3
332
+ ... with t.v():
333
+ ... assert t.v == 3
334
+ ... with t.v(None):
335
+ ... assert t.v == 3
336
+ ... with t.v(1):
337
+ ... assert t.v == 1
338
+ ... with t.v():
339
+ ... t.v = 4
340
+ ... assert t.v == 4
341
+ ... assert t.v == 3
342
+ ... assert t.v == 3
343
+ ... assert t.v == 3
344
+ ... assert t.v == 2
345
+ >>> assert t.v == 1
346
+
347
+ >>> with t.v(2):
348
+ ... assert t.v == 2
349
+ ... raise RuntimeError
350
+ Traceback (most recent call last):
351
+ ...
352
+ RuntimeError
353
+ >>> assert t.v == 1
354
+
355
+ >>> with t.v(2, optional=True):
356
+ ... assert t.v == 1
357
+ >>> t.v = -999
358
+ >>> with t.v(2, optional=True):
359
+ ... assert t.v == 2
360
+ """
361
+
362
+ _CONVERTER = (int,)
363
+ _CONTEXT = _OptionContextEllipsis
364
+
365
+
366
+ class OptionPropertyStr(OptionPropertyBase[str, OptionContextStr]):
367
+ """Descriptor for defining string-like options.
368
+
369
+ Framework developers should implement string-like options as follows:
370
+
371
+ >>> from hydpy.core.optiontools import OptionPropertyStr
372
+ >>> class T:
373
+ ... v = OptionPropertyStr("1", "x")
374
+
375
+ The given string serves as documentation:
376
+
377
+ >>> T.v.__doc__
378
+ 'x'
379
+
380
+ Users can change the current value "normally" by assignments:
381
+
382
+ >>> t = T()
383
+ >>> assert t.v == "1"
384
+ >>> t.v = "2"
385
+ >>> assert t.v == "2"
386
+
387
+ Deleting restores the default value:
388
+
389
+ >>> del t.v
390
+ >>> assert t.v == "1"
391
+
392
+ In most cases, the prefered way is to change options "temporarily" for a specific
393
+ code block introduced by the `with` statement:
394
+
395
+ >>> with t.v("2"):
396
+ ... assert t.v == "2"
397
+ ... with t.v("3"):
398
+ ... assert t.v == "3"
399
+ ... with t.v():
400
+ ... assert t.v == "3"
401
+ ... with t.v(None):
402
+ ... assert t.v == "3"
403
+ ... with t.v("1"):
404
+ ... assert t.v == "1"
405
+ ... with t.v():
406
+ ... t.v = "4"
407
+ ... assert t.v == "4"
408
+ ... assert t.v == "3"
409
+ ... assert t.v == "3"
410
+ ... assert t.v == "3"
411
+ ... assert t.v == "2"
412
+ >>> assert t.v == "1"
413
+
414
+ >>> with t.v("2"):
415
+ ... assert t.v == "2"
416
+ ... raise RuntimeError
417
+ Traceback (most recent call last):
418
+ ...
419
+ RuntimeError
420
+ >>> assert t.v == "1"
421
+ """
422
+
423
+ _CONVERTER = (str,)
424
+ _CONTEXT = OptionContextStr
425
+
426
+
427
+ class OptionPropertyPeriod(OptionPropertyBase[timetools.Period, OptionContextPeriod]):
428
+ """Descriptor for defining options of type |Period|.
429
+
430
+ Framework or model developers should implement options of type |Period| as follows:
431
+
432
+ >>> from hydpy.core.optiontools import OptionPropertyPeriod
433
+ >>> class T:
434
+ ... v = OptionPropertyPeriod("1d", "x")
435
+
436
+ The given string serves as documentation:
437
+
438
+ >>> T.v.__doc__
439
+ 'x'
440
+
441
+ Users can change the current value "normally" by assignments (note the automatic
442
+ type conversion):
443
+
444
+ >>> t = T()
445
+ >>> assert t.v == "1d"
446
+ >>> t.v = "2d"
447
+ >>> from hydpy import Period
448
+ >>> assert t.v == Period("2d")
449
+
450
+ Deleting restores the default value:
451
+
452
+ >>> del t.v
453
+ >>> assert t.v == "1d"
454
+
455
+ In most cases, the prefered way is to change options "temporarily" for a specific
456
+ code block introduced by the `with` statement:
457
+
458
+ >>> with t.v("2d"):
459
+ ... assert t.v == "2d"
460
+ ... with t.v("3d"):
461
+ ... assert t.v == "3d"
462
+ ... with t.v():
463
+ ... assert t.v == "3d"
464
+ ... with t.v(None):
465
+ ... assert t.v == "3d"
466
+ ... with t.v("1d"):
467
+ ... assert t.v == "1d"
468
+ ... with t.v():
469
+ ... t.v = "4d"
470
+ ... assert t.v == "4d"
471
+ ... assert t.v == "3d"
472
+ ... assert t.v == "3d"
473
+ ... assert t.v == "3d"
474
+ ... assert t.v == "2d"
475
+ >>> assert t.v == "1d"
476
+
477
+ >>> with t.v("2d"):
478
+ ... assert t.v == "2d"
479
+ ... raise RuntimeError
480
+ Traceback (most recent call last):
481
+ ...
482
+ RuntimeError
483
+ >>> assert t.v == "1d"
484
+ """
485
+
486
+ _CONVERTER = (timetools.Period,)
487
+ _CONTEXT = OptionContextPeriod
488
+
489
+ def __set__(self, obj: Hashable, value: timetools.PeriodConstrArg) -> None:
490
+ self._obj2value[obj] = self._CONVERTER[0](value)
491
+
492
+ def _set_value(
493
+ self, obj: Hashable, value: timetools.PeriodConstrArg | None = None
494
+ ) -> None:
495
+ if value is not None:
496
+ self._obj2value[obj] = self._CONVERTER[0](value)
497
+
498
+
499
+ class _OptionPropertySimulationstep(OptionPropertyPeriod):
500
+ def _get_value(self, obj: Hashable) -> timetools.Period:
501
+ try:
502
+ return hydpy.pub.timegrids.stepsize
503
+ except exceptiontools.AttributeNotReady:
504
+ return super()._get_value(obj)
505
+
506
+
507
+ def _check_seriesfiletype(value: SeriesFileType) -> SeriesFileType:
508
+ try:
509
+ if value == "nc":
510
+ return "nc"
511
+ if value == "npy":
512
+ return "npy"
513
+ if value == "asc":
514
+ return "asc"
515
+ assert_never(value)
516
+ except AssertionError:
517
+ raise ValueError(
518
+ f"The given sequence file type `{value}` is not implemented. Please "
519
+ f"choose one of the following file types: npy, asc, and nc."
520
+ ) from None
521
+ assert False
522
+
523
+
524
+ class OptionPropertySeriesFileType(
525
+ OptionPropertyBase[SeriesFileType, OptionContextStr[SeriesFileType]]
526
+ ):
527
+ """Descriptor for defining options of type |SeriesFileType|.
528
+
529
+ *HydPy* currently supports a simple text format (`asc`), the numpy binary format
530
+ (`npy`) and NetCDF files (`nc`). Options based on |OptionPropertySeriesFileType|
531
+ automatically check if the given string is a supported file-ending and raise errors
532
+ if not:
533
+
534
+ >>> from hydpy.core.optiontools import OptionPropertySeriesFileType
535
+ >>> class T:
536
+ ... v = OptionPropertySeriesFileType("asc", "x")
537
+ >>> T.v.__doc__
538
+ 'x'
539
+
540
+ >>> t = T()
541
+ >>> assert t.v == "asc"
542
+ >>> t.v = "abc"
543
+ Traceback (most recent call last):
544
+ ...
545
+ ValueError: The given sequence file type `abc` is not implemented. Please choose \
546
+ one of the following file types: npy, asc, and nc.
547
+ >>> assert t.v == "asc"
548
+ >>> t.v = "npy"
549
+ >>> assert t.v == "npy"
550
+ >>> t.v = "nc"
551
+ >>> assert t.v == "nc"
552
+ >>> t.v = "asc"
553
+ >>> assert t.v == "asc"
554
+
555
+ >>> with t.v("abc"):
556
+ ... pass
557
+ Traceback (most recent call last):
558
+ ...
559
+ ValueError: The given sequence file type `abc` is not implemented. Please choose \
560
+ one of the following file types: npy, asc, and nc.
561
+ >>> assert t.v == "asc"
562
+ >>> with t.v("npy"):
563
+ ... assert t.v == "npy"
564
+ ... with t.v("nc"):
565
+ ... assert t.v == "nc"
566
+ ... with t.v():
567
+ ... assert t.v == "nc"
568
+ ... with t.v(None):
569
+ ... assert t.v == "nc"
570
+ ... assert t.v == "npy"
571
+ >>> assert t.v == "asc"
572
+ """
573
+
574
+ _CONVERTER = (_check_seriesfiletype,)
575
+ _CONTEXT = OptionContextStr[SeriesFileType]
576
+
577
+
578
+ def _check_seriesaggregationtype(value: SeriesAggregationType) -> SeriesAggregationType:
579
+ try:
580
+ if value == "none":
581
+ return "none"
582
+ if value == "mean":
583
+ return "mean"
584
+ assert_never(value)
585
+ except AssertionError:
586
+ raise ValueError(
587
+ f"The given aggregation mode `{value}` is not implemented. Please "
588
+ f"choose one of the following modes: none and mean."
589
+ ) from None
590
+ assert False
591
+
592
+
593
+ class OptionPropertySeriesAggregation(
594
+ OptionPropertyBase[SeriesAggregationType, OptionContextStr[SeriesAggregationType]]
595
+ ):
596
+ """Descriptor for defining options of type |SeriesAggregationType|.
597
+
598
+ The only currently supported aggregation is averaging (`mean`). Use `none` to
599
+ avoid any aggregation. Options based on |OptionPropertySeriesAggregation|
600
+ automatically check if the given string meets one of these modes and raise errors
601
+ if not:
602
+
603
+ >>> from hydpy.core.optiontools import OptionPropertySeriesAggregation
604
+ >>> class T:
605
+ ... v = OptionPropertySeriesAggregation("none", "x")
606
+ >>> T.v.__doc__
607
+ 'x'
608
+
609
+ >>> t = T()
610
+ >>> assert t.v == "none"
611
+ >>> t.v = "sum"
612
+ Traceback (most recent call last):
613
+ ...
614
+ ValueError: The given aggregation mode `sum` is not implemented. Please choose \
615
+ one of the following modes: none and mean.
616
+ >>> assert t.v == "none"
617
+ >>> t.v = "mean"
618
+ >>> assert t.v == "mean"
619
+ >>> t.v = "none"
620
+ >>> assert t.v == "none"
621
+
622
+ >>> with t.v("sum"):
623
+ ... pass
624
+ Traceback (most recent call last):
625
+ ...
626
+ ValueError: The given aggregation mode `sum` is not implemented. Please choose \
627
+ one of the following modes: none and mean.
628
+ >>> assert t.v == "none"
629
+ >>> with t.v("mean"):
630
+ ... assert t.v == "mean"
631
+ ... with t.v():
632
+ ... assert t.v == "mean"
633
+ ... with t.v(None):
634
+ ... assert t.v == "mean"
635
+ ... assert t.v == "mean"
636
+ >>> assert t.v == "none"
637
+ """
638
+
639
+ _CONVERTER = (_check_seriesaggregationtype,)
640
+ _CONTEXT = OptionContextStr[SeriesAggregationType]
641
+
642
+
643
+ def _check_seriesconventiontype(value: SeriesConventionType) -> SeriesConventionType:
644
+ try:
645
+ if value == "model-specific":
646
+ return "model-specific"
647
+ if value == "HydPy":
648
+ return "HydPy"
649
+ assert_never(value)
650
+ except AssertionError:
651
+ raise ValueError(
652
+ f"The given time series naming convention `{value}` is not "
653
+ f"implemented. Please choose one of the following modes: "
654
+ f"model-specific and HydPy."
655
+ ) from None
656
+ assert False
657
+
658
+
659
+ class OptionPropertySeriesConvention(
660
+ OptionPropertyBase[SeriesConventionType, OptionContextStr[SeriesConventionType]]
661
+ ):
662
+ """Descriptor for defining options of type |SeriesConventionType|.
663
+
664
+ *HydPy* currently follows two naming conventions when reading input time series.
665
+ The original convention is to rely on the model-specific sequence names in
666
+ lowercase letters ("model-specific"). The more convenient convention is to rely on
667
+ the standard names defined by the enum |sequencetools.StandardInputNames|
668
+ ("HydPy"). We will likely support more official naming conventions later and
669
+ eventually allow writing time series following other conventions than the
670
+ "model-specific" one:
671
+
672
+ >>> from hydpy.core.optiontools import OptionPropertySeriesConvention
673
+ >>> class T:
674
+ ... v = OptionPropertySeriesConvention("model-specific", "x")
675
+ >>> T.v.__doc__
676
+ 'x'
677
+
678
+ >>> t = T()
679
+ >>> assert t.v == "model-specific"
680
+ >>> t.v = "WMO"
681
+ Traceback (most recent call last):
682
+ ...
683
+ ValueError: The given time series naming convention `WMO` is not implemented. \
684
+ Please choose one of the following modes: model-specific and HydPy.
685
+ >>> assert t.v == "model-specific"
686
+ >>> t.v = "HydPy"
687
+ >>> assert t.v == "HydPy"
688
+ >>> t.v = "model-specific"
689
+ >>> assert t.v == "model-specific"
690
+
691
+ >>> with t.v("WMO"):
692
+ ... pass
693
+ Traceback (most recent call last):
694
+ ...
695
+ ValueError: The given time series naming convention `WMO` is not implemented. \
696
+ Please choose one of the following modes: model-specific and HydPy.
697
+
698
+ >>> assert t.v == "model-specific"
699
+ >>> with t.v("HydPy"):
700
+ ... assert t.v == "HydPy"
701
+ ... with t.v():
702
+ ... assert t.v == "HydPy"
703
+ ... with t.v(None):
704
+ ... assert t.v == "HydPy"
705
+ ... assert t.v == "HydPy"
706
+ >>> assert t.v == "model-specific"
707
+ """
708
+
709
+ _CONVERTER = (_check_seriesconventiontype,)
710
+ _CONTEXT = OptionContextStr[SeriesConventionType]
711
+
712
+
713
+ class Options:
714
+ """Singleton class for the general options available in the global |pub| module.
715
+
716
+ Most options are simple bool-like flags.
717
+
718
+ You can change all options in two ways. First, using the `with` statement makes
719
+ sure the change is reverted after leaving the corresponding code block (even if an
720
+ error occurs):
721
+
722
+ >>> from hydpy import pub
723
+ >>> pub.options.printprogress = 0
724
+ >>> pub.options.printprogress
725
+ FALSE
726
+ >>> with pub.options.printprogress(True):
727
+ ... print(pub.options.printprogress)
728
+ TRUE
729
+ >>> pub.options.printprogress
730
+ FALSE
731
+
732
+ Alternatively, you can change all options via simple assignments:
733
+
734
+ >>> pub.options.printprogress = True
735
+ >>> assert pub.options.printprogress
736
+
737
+ But then you might have to keep in mind to undo the change later:
738
+
739
+ >>> assert pub.options.printprogress
740
+ >>> pub.options.printprogress = False
741
+ >>> assert not pub.options.printprogress
742
+
743
+ When using the `with` statement, you can pass nothing or |None|, which does not
744
+ change the original setting and resets it after leaving the `with` block:
745
+
746
+ >>> with pub.options.printprogress(None):
747
+ ... assert not pub.options.printprogress
748
+ ... pub.options.printprogress = True
749
+ ... assert pub.options.printprogress
750
+ >>> assert not pub.options.printprogress
751
+
752
+ The delete statement restores the respective default setting:
753
+
754
+ >>> del pub.options.printprogress
755
+ >>> assert pub.options.printprogress
756
+
757
+ >>> pub.options.printprogress = False
758
+ """
759
+
760
+ checkprojectstructure = OptionPropertyBool(
761
+ True,
762
+ """A bool-like flag for raising a warning when creating a |HydPy| instance for
763
+ a project without the basic project structure on disk.
764
+
765
+ Defaults usually to true but during testing to false:
766
+
767
+ >>> from hydpy import HydPy, pub
768
+ >>> assert not pub.options.checkprojectstructure
769
+ >>> del pub.options.checkprojectstructure
770
+ >>> assert pub.options.checkprojectstructure
771
+ """,
772
+ )
773
+
774
+ checkseries = OptionPropertyBool(
775
+ True,
776
+ """A bool-like flag for raising an error when loading an input time series that
777
+ does not cover the whole initialisation period or contains |numpy.nan|
778
+ values.
779
+
780
+ Defaults to true:
781
+
782
+ >>> from hydpy import pub
783
+ >>> assert pub.options.checkseries
784
+ >>> del pub.options.checkseries
785
+ >>> assert pub.options.checkseries
786
+ """,
787
+ )
788
+ ellipsis = _OptionPropertyEllipsis(
789
+ -999,
790
+ """The maximum number of collection members shown in string representations
791
+ before and behind ellipsis points.
792
+
793
+ Ellipsis points serve to shorten the string representations of iterable HydPy
794
+ objects that contain many entries. Set this option to -999 to rely on the
795
+ default values of the respective iterable objects or zero to avoid any
796
+ ellipsis points. -999 is the default value, but zero is the preferred value
797
+ during testing:
798
+
799
+ >>> from hydpy import pub
800
+ >>> assert pub.options.ellipsis == 0
801
+ >>> del pub.options.ellipsis
802
+ >>> assert pub.options.ellipsis == -999
803
+ """,
804
+ )
805
+ parameterstep = OptionPropertyPeriod(
806
+ timetools.Period("1d"),
807
+ """The actual parameter time step size. Change it by passing a |Period| object
808
+ or any valid |Period| constructor argument.
809
+
810
+ Defaults to one day:
811
+
812
+ >>> from hydpy import pub
813
+ >>> assert pub.options.parameterstep == "1d"
814
+ >>> del pub.options.parameterstep
815
+ >>> assert pub.options.parameterstep == "1d"
816
+ """,
817
+ )
818
+ printprogress = OptionPropertyBool(
819
+ True,
820
+ """A bool-like flag for printing information about the progress of some
821
+ processes to the standard output.
822
+
823
+ Defaults usually to true but during testing to false:
824
+
825
+ >>> from hydpy import pub
826
+ >>> assert not pub.options.printprogress
827
+ >>> del pub.options.printprogress
828
+ >>> assert pub.options.printprogress
829
+ """,
830
+ )
831
+ reprdigits = OptionPropertyInt(
832
+ -1,
833
+ """The maximum number of decimal places for floating point numbers that are
834
+ part of HydPy's string representations (see function |repr_|).
835
+
836
+ -1 means printing with the highest available precision. Defaults usually to
837
+ -1 but during testing to 6:
838
+
839
+ >>> from hydpy import pub
840
+ >>> assert pub.options.reprdigits == 6
841
+ >>> del pub.options.reprdigits
842
+ >>> assert pub.options.reprdigits == -1
843
+ """,
844
+ )
845
+ simulationstep = _OptionPropertySimulationstep(
846
+ timetools.Period(),
847
+ """The actual simulation time step size.
848
+
849
+ HydPy does not define a default simulation step, which is indicated by an empty
850
+ |Period| object).
851
+
852
+ >>> from hydpy import pub
853
+ >>> pub.options.simulationstep
854
+ Period()
855
+
856
+ Change it by passing a |Period| object or any valid |Period| constructor
857
+ argument, but note that you cannot manually define the |Options.simulationstep|
858
+ whenever it is already available via attribute |Timegrids.stepsize| of the
859
+ global |Timegrids| object in module |pub| (`pub.timegrids`):
860
+
861
+ >>> pub.options.simulationstep = "1h"
862
+ >>> pub.options.simulationstep
863
+ Period("1h")
864
+
865
+ >>> pub.timegrids = "2000-01-01", "2001-01-01", "1d"
866
+ >>> pub.options.simulationstep
867
+ Period("1d")
868
+
869
+ >>> pub.options.simulationstep = "1s"
870
+ >>> pub.options.simulationstep
871
+ Period("1d")
872
+
873
+ >>> del pub.timegrids
874
+ >>> pub.options.simulationstep
875
+ Period("1s")
876
+
877
+ >>> del pub.options.simulationstep
878
+ >>> pub.options.simulationstep
879
+ Period()
880
+ """,
881
+ )
882
+ timestampleft = OptionPropertyBool(
883
+ True,
884
+ """A bool-like flag telling if assigning interval data (like hourly
885
+ precipitation) to single time points relies on the start (True, default) or the
886
+ end (False) of the respective interval.
887
+
888
+ HydPy-internally, we usually prevent such potentially problematic assignments
889
+ by using |Timegrid| objects that define grids of intervals instead of time
890
+ points. However, exceptions cannot be avoided, such as when reading or writing
891
+ NetCDF files.
892
+
893
+ Defaults to true:
894
+
895
+ >>> from hydpy import pub
896
+ >>> assert pub.options.timestampleft
897
+ >>> del pub.options.timestampleft
898
+ >>> assert pub.options.timestampleft
899
+ """,
900
+ )
901
+ trimvariables = OptionPropertyBool(
902
+ True,
903
+ """A bool-like flag for enabling/disabling function |trim|. Set it to |False|
904
+ only for good reasons.
905
+
906
+ Defaults to true:
907
+
908
+ >>> from hydpy import pub
909
+ >>> assert pub.options.trimvariables
910
+ >>> del pub.options.trimvariables
911
+ >>> assert pub.options.trimvariables
912
+ """,
913
+ )
914
+ usecython = OptionPropertyBool(
915
+ True,
916
+ """A bool-like flag for applying cythonized models, which are much faster than
917
+ pure Python models.
918
+
919
+ The benefit of using pure Python models is they simplify debugging a lot.
920
+ Hence, setting this option to false makes sense when implementing a new model
921
+ or when trying to discover why a model does not work as expected.
922
+
923
+ Defaults to true, but note that all tests work with this flag being enabled and
924
+ disabled.
925
+
926
+ >>> from hydpy import pub
927
+ >>> del pub.options.usecython
928
+ >>> assert pub.options.usecython
929
+ """,
930
+ )
931
+ usedefaultvalues = OptionPropertyBool(
932
+ False,
933
+ """A bool-like flag for initialising parameters with standard values.
934
+
935
+ Defaults to false:
936
+
937
+ >>> from hydpy import pub
938
+ >>> assert not pub.options.usedefaultvalues
939
+ >>> del pub.options.usedefaultvalues
940
+ >>> assert not pub.options.usedefaultvalues
941
+ """,
942
+ )
943
+ utclongitude = OptionPropertyInt(
944
+ 15,
945
+ """Longitude of the centre of the local time zone (see option
946
+ |Options.utcoffset|).
947
+
948
+ Defaults to 15, which corresponds to the central meridian of UTC+01:00:
949
+
950
+ >>> from hydpy import pub
951
+ >>> assert pub.options.utclongitude == 15
952
+ >>> del pub.options.utclongitude
953
+ >>> assert pub.options.utclongitude == 15
954
+ """,
955
+ )
956
+ utcoffset = OptionPropertyInt(
957
+ 60,
958
+ """Local time offset from UTC in minutes s(see option |Options.utclongitude|.
959
+
960
+ Defaults to 60, which corresponds to UTC+01:00.
961
+
962
+ >>> from hydpy import pub
963
+ >>> assert pub.options.utcoffset == 60
964
+ >>> del pub.options.utcoffset
965
+ >>> assert pub.options.utcoffset == 60
966
+ """,
967
+ )
968
+ warnmissingcontrolfile = OptionPropertyBool(
969
+ False,
970
+ """A bool-like flag for only raising a warning instead of an exception when a
971
+ necessary control file is missing.
972
+
973
+ Defaults to false:
974
+
975
+ >>> from hydpy import pub
976
+ >>> assert not pub.options.warnmissingcontrolfile
977
+ >>> del pub.options.warnmissingcontrolfile
978
+ >>> assert not pub.options.warnmissingcontrolfile
979
+ """,
980
+ )
981
+ warnmissingobsfile = OptionPropertyBool(
982
+ True,
983
+ """A bool-like flag for raising a warning when a requested observation sequence
984
+ demanded by a node instance is missing.
985
+
986
+ Defaults to true:
987
+
988
+ >>> from hydpy import pub
989
+ >>> assert pub.options.warnmissingobsfile
990
+ >>> del pub.options.warnmissingobsfile
991
+ >>> assert pub.options.warnmissingobsfile
992
+ """,
993
+ )
994
+ warnmissingsimfile = OptionPropertyBool(
995
+ True,
996
+ """A bool-like flag for raising a warning when a requested simulation sequence
997
+ demanded by a node instance is missing.
998
+
999
+ Defaults to true:
1000
+
1001
+ >>> from hydpy import pub
1002
+ >>> assert pub.options.warnmissingsimfile
1003
+ >>> del pub.options.warnmissingsimfile
1004
+ >>> assert pub.options.warnmissingsimfile
1005
+ """,
1006
+ )
1007
+ warnsimulationstep = OptionPropertyBool(
1008
+ True,
1009
+ """A bool-like flag for raising a warning when function |simulationstep| is
1010
+ called for the first time directly by the user.
1011
+
1012
+ Defaults usually to true but during testing to false:
1013
+
1014
+ >>> from hydpy import pub
1015
+ >>> assert not pub.options.warnsimulationstep
1016
+ >>> del pub.options.warnsimulationstep
1017
+ >>> assert pub.options.warnsimulationstep
1018
+ """,
1019
+ )
1020
+ warntrim = OptionPropertyBool(
1021
+ True,
1022
+ """A bool-like flag for raising a warning when a |Variable| object trims its
1023
+ value(s) not to violate certain boundaries.
1024
+
1025
+ To cope with the limited precision of floating-point numbers, only those
1026
+ violations beyond a small tolerance value are reported (see function |trim|).
1027
+
1028
+ Defaults usually to true but during testing to false:
1029
+
1030
+ >>> from hydpy import pub
1031
+ >>> assert not pub.options.warntrim
1032
+ >>> del pub.options.warntrim
1033
+ >>> assert pub.options.warntrim
1034
+ """,
1035
+ )
1036
+
1037
+ def __repr__(self) -> str:
1038
+ type_ = type(self)
1039
+ lines = ["Options("]
1040
+ for option in itertools.chain(vars(type_).keys(), vars(self).keys()):
1041
+ if not option.startswith("_"):
1042
+ value = getattr(self, option)
1043
+ lines.append(f" {option} -> {repr(value)}")
1044
+ lines.append(")")
1045
+ return "\n".join(lines)