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.
- hydpy/__init__.py +275 -0
- hydpy/aliases.py +2554 -0
- hydpy/auxs/__init__.py +0 -0
- hydpy/auxs/anntools.py +1305 -0
- hydpy/auxs/armatools.py +883 -0
- hydpy/auxs/calibtools.py +3337 -0
- hydpy/auxs/interptools.py +1094 -0
- hydpy/auxs/iuhtools.py +543 -0
- hydpy/auxs/networktools.py +597 -0
- hydpy/auxs/ppolytools.py +809 -0
- hydpy/auxs/quadtools.py +61 -0
- hydpy/auxs/roottools.py +228 -0
- hydpy/auxs/smoothtools.py +273 -0
- hydpy/auxs/statstools.py +2125 -0
- hydpy/auxs/validtools.py +81 -0
- hydpy/conf/HydPyConfigBase.xsd +68637 -0
- hydpy/conf/HydPyConfigBase.xsdt +358 -0
- hydpy/conf/HydPyConfigMultipleRuns.xsd +25 -0
- hydpy/conf/HydPyConfigSingleRun.xsd +24 -0
- hydpy/conf/__init__.py +0 -0
- hydpy/conf/a_coefficients_explicit_lobatto_sequence.npy +0 -0
- hydpy/conf/support_points_for_smoothpar_logistic2.npy +0 -0
- hydpy/config.py +42 -0
- hydpy/core/__init__.py +0 -0
- hydpy/core/aliastools.py +214 -0
- hydpy/core/autodoctools.py +1947 -0
- hydpy/core/auxfiletools.py +1169 -0
- hydpy/core/devicetools.py +3810 -0
- hydpy/core/exceptiontools.py +269 -0
- hydpy/core/filetools.py +1985 -0
- hydpy/core/hydpytools.py +3089 -0
- hydpy/core/importtools.py +1398 -0
- hydpy/core/indextools.py +345 -0
- hydpy/core/itemtools.py +1849 -0
- hydpy/core/masktools.py +460 -0
- hydpy/core/modeltools.py +4868 -0
- hydpy/core/netcdftools.py +2683 -0
- hydpy/core/objecttools.py +2023 -0
- hydpy/core/optiontools.py +1045 -0
- hydpy/core/parametertools.py +4674 -0
- hydpy/core/printtools.py +222 -0
- hydpy/core/propertytools.py +643 -0
- hydpy/core/pubtools.py +254 -0
- hydpy/core/selectiontools.py +1571 -0
- hydpy/core/sequencetools.py +4476 -0
- hydpy/core/seriestools.py +339 -0
- hydpy/core/testtools.py +2483 -0
- hydpy/core/timetools.py +3567 -0
- hydpy/core/typingtools.py +333 -0
- hydpy/core/variabletools.py +2615 -0
- hydpy/cythons/__init__.py +24 -0
- hydpy/cythons/annutils.pxd +33 -0
- hydpy/cythons/annutils.pyi +25 -0
- hydpy/cythons/annutils.pyx +120 -0
- hydpy/cythons/autogen/__init__.py +0 -0
- hydpy/cythons/autogen/annutils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/annutils.pxd +42 -0
- hydpy/cythons/autogen/annutils.pyx +129 -0
- hydpy/cythons/autogen/c_arma.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_arma.pxd +179 -0
- hydpy/cythons/autogen/c_arma.pyx +356 -0
- hydpy/cythons/autogen/c_arma_rimorido.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_arma_rimorido.pxd +179 -0
- hydpy/cythons/autogen/c_arma_rimorido.pyx +356 -0
- hydpy/cythons/autogen/c_conv.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_conv.pxd +198 -0
- hydpy/cythons/autogen/c_conv.pyx +491 -0
- hydpy/cythons/autogen/c_conv_idw.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_conv_idw.pxd +124 -0
- hydpy/cythons/autogen/c_conv_idw.pyx +264 -0
- hydpy/cythons/autogen/c_conv_idw_ed.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_conv_idw_ed.pxd +197 -0
- hydpy/cythons/autogen/c_conv_idw_ed.pyx +481 -0
- hydpy/cythons/autogen/c_conv_nn.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_conv_nn.pxd +120 -0
- hydpy/cythons/autogen/c_conv_nn.pyx +224 -0
- hydpy/cythons/autogen/c_dam.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam.pxd +805 -0
- hydpy/cythons/autogen/c_dam.pyx +1477 -0
- hydpy/cythons/autogen/c_dam_llake.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_llake.pxd +364 -0
- hydpy/cythons/autogen/c_dam_llake.pyx +705 -0
- hydpy/cythons/autogen/c_dam_lreservoir.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_lreservoir.pxd +365 -0
- hydpy/cythons/autogen/c_dam_lreservoir.pyx +708 -0
- hydpy/cythons/autogen/c_dam_lretention.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_lretention.pxd +340 -0
- hydpy/cythons/autogen/c_dam_lretention.pyx +625 -0
- hydpy/cythons/autogen/c_dam_pump.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_pump.pxd +402 -0
- hydpy/cythons/autogen/c_dam_pump.pyx +724 -0
- hydpy/cythons/autogen/c_dam_pump_sluice.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_pump_sluice.pxd +452 -0
- hydpy/cythons/autogen/c_dam_pump_sluice.pyx +829 -0
- hydpy/cythons/autogen/c_dam_sluice.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_sluice.pxd +404 -0
- hydpy/cythons/autogen/c_dam_sluice.pyx +726 -0
- hydpy/cythons/autogen/c_dam_v001.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_v001.pxd +452 -0
- hydpy/cythons/autogen/c_dam_v001.pyx +816 -0
- hydpy/cythons/autogen/c_dam_v002.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_v002.pxd +394 -0
- hydpy/cythons/autogen/c_dam_v002.pyx +703 -0
- hydpy/cythons/autogen/c_dam_v003.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_v003.pxd +417 -0
- hydpy/cythons/autogen/c_dam_v003.pyx +744 -0
- hydpy/cythons/autogen/c_dam_v004.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_v004.pxd +486 -0
- hydpy/cythons/autogen/c_dam_v004.pyx +891 -0
- hydpy/cythons/autogen/c_dam_v005.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dam_v005.pxd +524 -0
- hydpy/cythons/autogen/c_dam_v005.pyx +928 -0
- hydpy/cythons/autogen/c_dummy.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dummy.pxd +151 -0
- hydpy/cythons/autogen/c_dummy.pyx +263 -0
- hydpy/cythons/autogen/c_dummy_interceptedwater.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dummy_interceptedwater.pxd +69 -0
- hydpy/cythons/autogen/c_dummy_interceptedwater.pyx +104 -0
- hydpy/cythons/autogen/c_dummy_node2node.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dummy_node2node.pxd +89 -0
- hydpy/cythons/autogen/c_dummy_node2node.pyx +148 -0
- hydpy/cythons/autogen/c_dummy_snowalbedo.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dummy_snowalbedo.pxd +69 -0
- hydpy/cythons/autogen/c_dummy_snowalbedo.pyx +104 -0
- hydpy/cythons/autogen/c_dummy_snowcover.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dummy_snowcover.pxd +69 -0
- hydpy/cythons/autogen/c_dummy_snowcover.pyx +104 -0
- hydpy/cythons/autogen/c_dummy_snowycanopy.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dummy_snowycanopy.pxd +69 -0
- hydpy/cythons/autogen/c_dummy_snowycanopy.pyx +104 -0
- hydpy/cythons/autogen/c_dummy_soilwater.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_dummy_soilwater.pxd +69 -0
- hydpy/cythons/autogen/c_dummy_soilwater.pyx +104 -0
- hydpy/cythons/autogen/c_evap.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap.pxd +1029 -0
- hydpy/cythons/autogen/c_evap.pyx +2601 -0
- hydpy/cythons/autogen/c_evap_aet_hbv96.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_aet_hbv96.pxd +227 -0
- hydpy/cythons/autogen/c_evap_aet_hbv96.pyx +584 -0
- hydpy/cythons/autogen/c_evap_aet_minhas.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_aet_minhas.pxd +193 -0
- hydpy/cythons/autogen/c_evap_aet_minhas.pyx +478 -0
- hydpy/cythons/autogen/c_evap_aet_morsim.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_aet_morsim.pxd +681 -0
- hydpy/cythons/autogen/c_evap_aet_morsim.pyx +1642 -0
- hydpy/cythons/autogen/c_evap_pet_ambav1.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_pet_ambav1.pxd +532 -0
- hydpy/cythons/autogen/c_evap_pet_ambav1.pyx +1296 -0
- hydpy/cythons/autogen/c_evap_pet_hbv96.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_pet_hbv96.pxd +179 -0
- hydpy/cythons/autogen/c_evap_pet_hbv96.pyx +328 -0
- hydpy/cythons/autogen/c_evap_pet_m.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_pet_m.pxd +124 -0
- hydpy/cythons/autogen/c_evap_pet_m.pyx +214 -0
- hydpy/cythons/autogen/c_evap_pet_mlc.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_pet_mlc.pxd +126 -0
- hydpy/cythons/autogen/c_evap_pet_mlc.pyx +214 -0
- hydpy/cythons/autogen/c_evap_ret_fao56.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_ret_fao56.pxd +305 -0
- hydpy/cythons/autogen/c_evap_ret_fao56.pyx +624 -0
- hydpy/cythons/autogen/c_evap_ret_io.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_ret_io.pxd +112 -0
- hydpy/cythons/autogen/c_evap_ret_io.pyx +176 -0
- hydpy/cythons/autogen/c_evap_ret_tw2002.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_evap_ret_tw2002.pxd +139 -0
- hydpy/cythons/autogen/c_evap_ret_tw2002.pyx +273 -0
- hydpy/cythons/autogen/c_exch.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_exch.pxd +230 -0
- hydpy/cythons/autogen/c_exch.pyx +462 -0
- hydpy/cythons/autogen/c_exch_branch_hbv96.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_exch_branch_hbv96.pxd +134 -0
- hydpy/cythons/autogen/c_exch_branch_hbv96.pyx +255 -0
- hydpy/cythons/autogen/c_exch_waterlevel.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_exch_waterlevel.pxd +54 -0
- hydpy/cythons/autogen/c_exch_waterlevel.pyx +78 -0
- hydpy/cythons/autogen/c_exch_weir_hbv96.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_exch_weir_hbv96.pxd +156 -0
- hydpy/cythons/autogen/c_exch_weir_hbv96.pyx +282 -0
- hydpy/cythons/autogen/c_ga.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_ga.pxd +353 -0
- hydpy/cythons/autogen/c_ga.pyx +1204 -0
- hydpy/cythons/autogen/c_ga_garto.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_ga_garto.pxd +330 -0
- hydpy/cythons/autogen/c_ga_garto.pyx +1105 -0
- hydpy/cythons/autogen/c_ga_garto_submodel1.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_ga_garto_submodel1.pxd +236 -0
- hydpy/cythons/autogen/c_ga_garto_submodel1.pyx +944 -0
- hydpy/cythons/autogen/c_gland.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_gland.pxd +437 -0
- hydpy/cythons/autogen/c_gland.pyx +726 -0
- hydpy/cythons/autogen/c_gland_gr4.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_gland_gr4.pxd +382 -0
- hydpy/cythons/autogen/c_gland_gr4.pyx +605 -0
- hydpy/cythons/autogen/c_gland_gr5.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_gland_gr5.pxd +368 -0
- hydpy/cythons/autogen/c_gland_gr5.pyx +568 -0
- hydpy/cythons/autogen/c_gland_gr6.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_gland_gr6.pxd +420 -0
- hydpy/cythons/autogen/c_gland_gr6.pyx +673 -0
- hydpy/cythons/autogen/c_hland.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_hland.pxd +855 -0
- hydpy/cythons/autogen/c_hland.pyx +2486 -0
- hydpy/cythons/autogen/c_hland_96.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_hland_96.pxd +631 -0
- hydpy/cythons/autogen/c_hland_96.pyx +1724 -0
- hydpy/cythons/autogen/c_hland_96c.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_hland_96c.pxd +621 -0
- hydpy/cythons/autogen/c_hland_96c.pyx +1822 -0
- hydpy/cythons/autogen/c_hland_96p.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_hland_96p.pxd +683 -0
- hydpy/cythons/autogen/c_hland_96p.pyx +1911 -0
- hydpy/cythons/autogen/c_kinw.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_kinw.pxd +509 -0
- hydpy/cythons/autogen/c_kinw.pyx +965 -0
- hydpy/cythons/autogen/c_kinw_williams.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_kinw_williams.pxd +409 -0
- hydpy/cythons/autogen/c_kinw_williams.pyx +763 -0
- hydpy/cythons/autogen/c_kinw_williams_ext.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_kinw_williams_ext.pxd +220 -0
- hydpy/cythons/autogen/c_kinw_williams_ext.pyx +440 -0
- hydpy/cythons/autogen/c_lland.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_lland.pxd +1386 -0
- hydpy/cythons/autogen/c_lland.pyx +3679 -0
- hydpy/cythons/autogen/c_lland_dd.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_lland_dd.pxd +679 -0
- hydpy/cythons/autogen/c_lland_dd.pyx +1719 -0
- hydpy/cythons/autogen/c_lland_knauf.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_lland_knauf.pxd +1096 -0
- hydpy/cythons/autogen/c_lland_knauf.pyx +2784 -0
- hydpy/cythons/autogen/c_lland_knauf_ic.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_lland_knauf_ic.pxd +1369 -0
- hydpy/cythons/autogen/c_lland_knauf_ic.pyx +3625 -0
- hydpy/cythons/autogen/c_meteo.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo.pxd +469 -0
- hydpy/cythons/autogen/c_meteo.pyx +879 -0
- hydpy/cythons/autogen/c_meteo_clear_glob_io.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo_clear_glob_io.pxd +75 -0
- hydpy/cythons/autogen/c_meteo_clear_glob_io.pyx +107 -0
- hydpy/cythons/autogen/c_meteo_glob_fao56.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo_glob_fao56.pxd +209 -0
- hydpy/cythons/autogen/c_meteo_glob_fao56.pyx +339 -0
- hydpy/cythons/autogen/c_meteo_glob_io.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo_glob_io.pxd +63 -0
- hydpy/cythons/autogen/c_meteo_glob_io.pyx +91 -0
- hydpy/cythons/autogen/c_meteo_glob_morsim.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo_glob_morsim.pxd +289 -0
- hydpy/cythons/autogen/c_meteo_glob_morsim.pyx +527 -0
- hydpy/cythons/autogen/c_meteo_precip_io.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo_precip_io.pxd +112 -0
- hydpy/cythons/autogen/c_meteo_precip_io.pyx +176 -0
- hydpy/cythons/autogen/c_meteo_psun_sun_glob_io.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo_psun_sun_glob_io.pxd +87 -0
- hydpy/cythons/autogen/c_meteo_psun_sun_glob_io.pyx +123 -0
- hydpy/cythons/autogen/c_meteo_sun_fao56.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo_sun_fao56.pxd +209 -0
- hydpy/cythons/autogen/c_meteo_sun_fao56.pyx +343 -0
- hydpy/cythons/autogen/c_meteo_sun_morsim.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo_sun_morsim.pxd +286 -0
- hydpy/cythons/autogen/c_meteo_sun_morsim.pyx +519 -0
- hydpy/cythons/autogen/c_meteo_temp_io.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_meteo_temp_io.pxd +112 -0
- hydpy/cythons/autogen/c_meteo_temp_io.pyx +176 -0
- hydpy/cythons/autogen/c_musk.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_musk.pxd +282 -0
- hydpy/cythons/autogen/c_musk.pyx +605 -0
- hydpy/cythons/autogen/c_musk_classic.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_musk_classic.pxd +138 -0
- hydpy/cythons/autogen/c_musk_classic.pyx +226 -0
- hydpy/cythons/autogen/c_musk_mct.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_musk_mct.pxd +282 -0
- hydpy/cythons/autogen/c_musk_mct.pyx +609 -0
- hydpy/cythons/autogen/c_rconc.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_rconc.pxd +119 -0
- hydpy/cythons/autogen/c_rconc.pyx +174 -0
- hydpy/cythons/autogen/c_rconc_nash.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_rconc_nash.pxd +111 -0
- hydpy/cythons/autogen/c_rconc_nash.pyx +185 -0
- hydpy/cythons/autogen/c_rconc_uh.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_rconc_uh.pxd +92 -0
- hydpy/cythons/autogen/c_rconc_uh.pyx +125 -0
- hydpy/cythons/autogen/c_sw1d.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d.pxd +511 -0
- hydpy/cythons/autogen/c_sw1d.pyx +1263 -0
- hydpy/cythons/autogen/c_sw1d_channel.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_channel.pxd +119 -0
- hydpy/cythons/autogen/c_sw1d_channel.pyx +300 -0
- hydpy/cythons/autogen/c_sw1d_gate_out.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_gate_out.pxd +240 -0
- hydpy/cythons/autogen/c_sw1d_gate_out.pyx +476 -0
- hydpy/cythons/autogen/c_sw1d_lias.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_lias.pxd +320 -0
- hydpy/cythons/autogen/c_sw1d_lias.pyx +619 -0
- hydpy/cythons/autogen/c_sw1d_lias_sluice.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_lias_sluice.pxd +325 -0
- hydpy/cythons/autogen/c_sw1d_lias_sluice.pyx +644 -0
- hydpy/cythons/autogen/c_sw1d_network.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_network.pxd +90 -0
- hydpy/cythons/autogen/c_sw1d_network.pyx +246 -0
- hydpy/cythons/autogen/c_sw1d_pump.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_pump.pxd +256 -0
- hydpy/cythons/autogen/c_sw1d_pump.pyx +502 -0
- hydpy/cythons/autogen/c_sw1d_q_in.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_q_in.pxd +224 -0
- hydpy/cythons/autogen/c_sw1d_q_in.pyx +383 -0
- hydpy/cythons/autogen/c_sw1d_q_out.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_q_out.pxd +224 -0
- hydpy/cythons/autogen/c_sw1d_q_out.pyx +383 -0
- hydpy/cythons/autogen/c_sw1d_storage.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_storage.pxd +193 -0
- hydpy/cythons/autogen/c_sw1d_storage.pyx +349 -0
- hydpy/cythons/autogen/c_sw1d_weir_out.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_sw1d_weir_out.pxd +212 -0
- hydpy/cythons/autogen/c_sw1d_weir_out.pyx +404 -0
- hydpy/cythons/autogen/c_test.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_test.pxd +175 -0
- hydpy/cythons/autogen/c_test.pyx +348 -0
- hydpy/cythons/autogen/c_test_discontinous.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_test_discontinous.pxd +146 -0
- hydpy/cythons/autogen/c_test_discontinous.pyx +256 -0
- hydpy/cythons/autogen/c_test_stiff0d.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_test_stiff0d.pxd +146 -0
- hydpy/cythons/autogen/c_test_stiff0d.pyx +250 -0
- hydpy/cythons/autogen/c_test_stiff1d.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_test_stiff1d.pxd +145 -0
- hydpy/cythons/autogen/c_test_stiff1d.pyx +294 -0
- hydpy/cythons/autogen/c_whmod.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_whmod.pxd +482 -0
- hydpy/cythons/autogen/c_whmod.pyx +1156 -0
- hydpy/cythons/autogen/c_whmod_rural.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_whmod_rural.pxd +411 -0
- hydpy/cythons/autogen/c_whmod_rural.pyx +982 -0
- hydpy/cythons/autogen/c_whmod_urban.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_whmod_urban.pxd +482 -0
- hydpy/cythons/autogen/c_whmod_urban.pyx +1155 -0
- hydpy/cythons/autogen/c_wland.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_wland.pxd +842 -0
- hydpy/cythons/autogen/c_wland.pyx +1890 -0
- hydpy/cythons/autogen/c_wland_gd.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_wland_gd.pxd +829 -0
- hydpy/cythons/autogen/c_wland_gd.pyx +1847 -0
- hydpy/cythons/autogen/c_wland_wag.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_wland_wag.pxd +810 -0
- hydpy/cythons/autogen/c_wland_wag.pyx +1780 -0
- hydpy/cythons/autogen/c_wq.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_wq.pxd +275 -0
- hydpy/cythons/autogen/c_wq.pyx +652 -0
- hydpy/cythons/autogen/c_wq_trapeze.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_wq_trapeze.pxd +170 -0
- hydpy/cythons/autogen/c_wq_trapeze.pyx +400 -0
- hydpy/cythons/autogen/c_wq_trapeze_strickler.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_wq_trapeze_strickler.pxd +243 -0
- hydpy/cythons/autogen/c_wq_trapeze_strickler.pyx +578 -0
- hydpy/cythons/autogen/c_wq_walrus.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/c_wq_walrus.pxd +61 -0
- hydpy/cythons/autogen/c_wq_walrus.pyx +82 -0
- hydpy/cythons/autogen/configutils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/configutils.pxd +17 -0
- hydpy/cythons/autogen/configutils.pyx +119 -0
- hydpy/cythons/autogen/interfaceutils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/interfaceutils.pxd +31 -0
- hydpy/cythons/autogen/interfaceutils.pyx +82 -0
- hydpy/cythons/autogen/interputils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/interputils.pxd +42 -0
- hydpy/cythons/autogen/interputils.pyx +118 -0
- hydpy/cythons/autogen/masterinterface.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/masterinterface.pxd +153 -0
- hydpy/cythons/autogen/masterinterface.pyx +222 -0
- hydpy/cythons/autogen/pointerutils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/pointerutils.pxd +31 -0
- hydpy/cythons/autogen/pointerutils.pyx +650 -0
- hydpy/cythons/autogen/ppolyutils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/ppolyutils.pxd +35 -0
- hydpy/cythons/autogen/ppolyutils.pyx +59 -0
- hydpy/cythons/autogen/quadutils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/quadutils.pxd +26 -0
- hydpy/cythons/autogen/quadutils.pyx +973 -0
- hydpy/cythons/autogen/rootutils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/rootutils.pxd +28 -0
- hydpy/cythons/autogen/rootutils.pyx +109 -0
- hydpy/cythons/autogen/sequenceutils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/sequenceutils.pxd +45 -0
- hydpy/cythons/autogen/sequenceutils.pyx +101 -0
- hydpy/cythons/autogen/smoothutils.cp313-win_amd64.pyd +0 -0
- hydpy/cythons/autogen/smoothutils.pxd +29 -0
- hydpy/cythons/autogen/smoothutils.pyx +833 -0
- hydpy/cythons/configutils.pxd +8 -0
- hydpy/cythons/configutils.pyi +5 -0
- hydpy/cythons/configutils.pyx +110 -0
- hydpy/cythons/interfaceutils.pxd +22 -0
- hydpy/cythons/interfaceutils.pyi +15 -0
- hydpy/cythons/interfaceutils.pyx +73 -0
- hydpy/cythons/interputils.pxd +33 -0
- hydpy/cythons/interputils.pyi +32 -0
- hydpy/cythons/interputils.pyx +109 -0
- hydpy/cythons/modelutils.py +2990 -0
- hydpy/cythons/pointerutils.pxd +22 -0
- hydpy/cythons/pointerutils.pyi +89 -0
- hydpy/cythons/pointerutils.pyx +641 -0
- hydpy/cythons/ppolyutils.pxd +26 -0
- hydpy/cythons/ppolyutils.pyi +21 -0
- hydpy/cythons/ppolyutils.pyx +50 -0
- hydpy/cythons/quadutils.pxd +17 -0
- hydpy/cythons/quadutils.pyi +13 -0
- hydpy/cythons/quadutils.pyx +964 -0
- hydpy/cythons/rootutils.pxd +19 -0
- hydpy/cythons/rootutils.pyi +21 -0
- hydpy/cythons/rootutils.pyx +100 -0
- hydpy/cythons/sequenceutils.pxd +36 -0
- hydpy/cythons/sequenceutils.pyi +7 -0
- hydpy/cythons/sequenceutils.pyx +92 -0
- hydpy/cythons/smoothutils.pxd +20 -0
- hydpy/cythons/smoothutils.pyi +15 -0
- hydpy/cythons/smoothutils.pyx +824 -0
- hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/land_dill_assl.py +13 -0
- hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/land_lahn_kalk.py +13 -0
- hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/land_lahn_leun.py +14 -0
- hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/land_lahn_marb.py +13 -0
- hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/stream_dill_assl_lahn_leun.py +5 -0
- hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/stream_lahn_leun_lahn_kalk.py +5 -0
- hydpy/data/HydPy-H-Lahn/conditions/init_1996_01_01_00_00_00/stream_lahn_marb_lahn_leun.py +5 -0
- hydpy/data/HydPy-H-Lahn/control/default/land.py +9 -0
- hydpy/data/HydPy-H-Lahn/control/default/land_dill_assl.py +57 -0
- hydpy/data/HydPy-H-Lahn/control/default/land_lahn_kalk.py +57 -0
- hydpy/data/HydPy-H-Lahn/control/default/land_lahn_leun.py +56 -0
- hydpy/data/HydPy-H-Lahn/control/default/land_lahn_marb.py +57 -0
- hydpy/data/HydPy-H-Lahn/control/default/stream_dill_assl_lahn_leun.py +7 -0
- hydpy/data/HydPy-H-Lahn/control/default/stream_lahn_leun_lahn_kalk.py +7 -0
- hydpy/data/HydPy-H-Lahn/control/default/stream_lahn_marb_lahn_leun.py +7 -0
- hydpy/data/HydPy-H-Lahn/multiple_runs.xml +309 -0
- hydpy/data/HydPy-H-Lahn/multiple_runs_alpha.xml +71 -0
- hydpy/data/HydPy-H-Lahn/network/default/headwaters.py +11 -0
- hydpy/data/HydPy-H-Lahn/network/default/nonheadwaters.py +11 -0
- hydpy/data/HydPy-H-Lahn/network/default/streams.py +8 -0
- hydpy/data/HydPy-H-Lahn/series/default/dill_assl_obs_q.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/evap_pet_hbv96_input_normalairtemperature.nc +0 -0
- hydpy/data/HydPy-H-Lahn/series/default/evap_pet_hbv96_input_normalevapotranspiration.nc +0 -0
- hydpy/data/HydPy-H-Lahn/series/default/hland_96_input_p.nc +0 -0
- hydpy/data/HydPy-H-Lahn/series/default/hland_96_input_t.nc +0 -0
- hydpy/data/HydPy-H-Lahn/series/default/lahn_kalk_obs_q.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/lahn_leun_obs_q.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/lahn_marb_obs_q.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_dill_assl_evap_pet_hbv96_input_normalairtemperature.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_dill_assl_evap_pet_hbv96_input_normalevapotranspiration.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_dill_assl_hland_96_input_p.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_dill_assl_hland_96_input_t.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_kalk_evap_pet_hbv96_input_normalairtemperature.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_kalk_evap_pet_hbv96_input_normalevapotranspiration.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_kalk_hland_96_input_p.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_kalk_hland_96_input_t.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_leun_evap_pet_hbv96_input_normalairtemperature.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_leun_evap_pet_hbv96_input_normalevapotranspiration.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_leun_hland_96_input_p.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_leun_hland_96_input_t.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_marb_evap_pet_hbv96_input_normalairtemperature.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_marb_evap_pet_hbv96_input_normalevapotranspiration.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_marb_hland_96_input_p.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/land_lahn_marb_hland_96_input_t.asc +11387 -0
- hydpy/data/HydPy-H-Lahn/series/default/obs_q.nc +0 -0
- hydpy/data/HydPy-H-Lahn/single_run.xml +152 -0
- hydpy/data/HydPy-H-Lahn/single_run.xmlt +143 -0
- hydpy/data/__init__.py +17 -0
- hydpy/docs/__init__.py +0 -0
- hydpy/docs/autofigs/__init__.py +0 -0
- hydpy/docs/bib/__init__.py +0 -0
- hydpy/docs/bib/refs.bib +566 -0
- hydpy/docs/combine_docversions.py +133 -0
- hydpy/docs/draw_model_sketches.py +1301 -0
- hydpy/docs/enable_autodoc.py +7 -0
- hydpy/docs/figs/HydPy-G-GR4.png +0 -0
- hydpy/docs/figs/HydPy-G-GR5.png +0 -0
- hydpy/docs/figs/HydPy-G-GR6.png +0 -0
- hydpy/docs/figs/HydPy-H-HBV96-COSERO.png +0 -0
- hydpy/docs/figs/HydPy-H-HBV96-PREVAH.png +0 -0
- hydpy/docs/figs/HydPy-H-HBV96.png +0 -0
- hydpy/docs/figs/HydPy-H-Lahn.png +0 -0
- hydpy/docs/figs/HydPy-KinW-Williams.png +0 -0
- hydpy/docs/figs/HydPy-L-DD.png +0 -0
- hydpy/docs/figs/HydPy-W-Wag.png +0 -0
- hydpy/docs/figs/HydPy_Logo.png +0 -0
- hydpy/docs/figs/HydPy_Logo_Text.png +0 -0
- hydpy/docs/figs/IDLE-editor.png +0 -0
- hydpy/docs/figs/IDLE-shell.png +0 -0
- hydpy/docs/figs/LAWA_river-basin-bumbers.png +0 -0
- hydpy/docs/figs/__init__.py +0 -0
- hydpy/docs/html_/__init__.py +0 -0
- hydpy/docs/polish_html.py +57 -0
- hydpy/docs/prepare.py +224 -0
- hydpy/docs/publish_docs.py +53 -0
- hydpy/docs/rst/HydPy-ARMA.rst +27 -0
- hydpy/docs/rst/HydPy-Conv.rst +22 -0
- hydpy/docs/rst/HydPy-Dam.rst +79 -0
- hydpy/docs/rst/HydPy-Dummy.rst +21 -0
- hydpy/docs/rst/HydPy-Evap.rst +26 -0
- hydpy/docs/rst/HydPy-Exch.rst +36 -0
- hydpy/docs/rst/HydPy-G.rst +40 -0
- hydpy/docs/rst/HydPy-GA.rst +34 -0
- hydpy/docs/rst/HydPy-H.rst +24 -0
- hydpy/docs/rst/HydPy-KinW.rst +32 -0
- hydpy/docs/rst/HydPy-L.rst +42 -0
- hydpy/docs/rst/HydPy-Meteo.rst +28 -0
- hydpy/docs/rst/HydPy-Musk.rst +21 -0
- hydpy/docs/rst/HydPy-Rconc.rst +17 -0
- hydpy/docs/rst/HydPy-SW1D.rst +49 -0
- hydpy/docs/rst/HydPy-Test.rst +19 -0
- hydpy/docs/rst/HydPy-W.rst +20 -0
- hydpy/docs/rst/HydPy-WHMod.rst +19 -0
- hydpy/docs/rst/HydPy-WQ.rst +20 -0
- hydpy/docs/rst/__init__.py +0 -0
- hydpy/docs/rst/additional_repositories.rst +40 -0
- hydpy/docs/rst/auxiliaries.rst +31 -0
- hydpy/docs/rst/continuous_integration.rst +75 -0
- hydpy/docs/rst/core.rst +75 -0
- hydpy/docs/rst/cythons.rst +47 -0
- hydpy/docs/rst/definitions.rst +506 -0
- hydpy/docs/rst/developer_guide.rst +54 -0
- hydpy/docs/rst/example_projects.rst +40 -0
- hydpy/docs/rst/execution.rst +22 -0
- hydpy/docs/rst/framework_tools.rst +56 -0
- hydpy/docs/rst/how_to_read_the_reference_manual.rst +156 -0
- hydpy/docs/rst/hydpydependencies.rst +55 -0
- hydpy/docs/rst/index.rst +125 -0
- hydpy/docs/rst/installation.rst +155 -0
- hydpy/docs/rst/model_families.rst +79 -0
- hydpy/docs/rst/model_overview.rst +291 -0
- hydpy/docs/rst/modelimports.rst +10 -0
- hydpy/docs/rst/options.rst +119 -0
- hydpy/docs/rst/programming_style.rst +572 -0
- hydpy/docs/rst/project_structure.rst +520 -0
- hydpy/docs/rst/quickstart.rst +304 -0
- hydpy/docs/rst/reference_manual.rst +29 -0
- hydpy/docs/rst/required_tools.rst +50 -0
- hydpy/docs/rst/simulation.rst +514 -0
- hydpy/docs/rst/submodel_interfaces.rst +32 -0
- hydpy/docs/rst/tests_and_documentation.rst +85 -0
- hydpy/docs/rst/user_guide.rst +38 -0
- hydpy/docs/rst/version_control.rst +116 -0
- hydpy/docs/rst/zbibliography.rst +8 -0
- hydpy/docs/sphinx/__init__.py +0 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/changes/frameset.html +11 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/changes/rstsource.html +15 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/changes/versionchanges.html +33 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/defindex.html +35 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/domainindex.html +56 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/genindex-single.html +63 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/genindex-split.html +41 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/genindex.html +76 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/globaltoc.html +11 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/layout.html +221 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/localtoc.html +15 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/opensearch.xml +13 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/page.html +13 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/relations.html +23 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/search.html +65 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/searchbox.html +21 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/searchfield.html +23 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/sourcelink.html +18 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/static/basic.css_t +925 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/static/doctools.js +156 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/static/documentation_options.js_t +13 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/static/file.png +0 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/static/language_data.js_t +26 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/static/minus.png +0 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/static/plus.png +0 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/static/searchtools.js +574 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/static/sphinx_highlight.js +154 -0
- hydpy/docs/sphinx/_themes/basic_hydpy/theme.conf +16 -0
- hydpy/docs/sphinx/_themes/classic_hydpy/layout.html +23 -0
- hydpy/docs/sphinx/_themes/classic_hydpy/static/classic.css_t +358 -0
- hydpy/docs/sphinx/_themes/classic_hydpy/static/sidebar.js_t +72 -0
- hydpy/docs/sphinx/_themes/classic_hydpy/theme.conf +32 -0
- hydpy/docs/sphinx/conf.py +398 -0
- hydpy/docs/sphinx/defaultlinks_extension.py +36 -0
- hydpy/docs/sphinx/integrationtest_extension.py +104 -0
- hydpy/docs/sphinx/projectstructure_extension.py +58 -0
- hydpy/docs/sphinx/submodelgraph_extension.py +53 -0
- hydpy/exe/__init__.py +0 -0
- hydpy/exe/commandtools.py +651 -0
- hydpy/exe/hyd.py +277 -0
- hydpy/exe/modelimports.py +41 -0
- hydpy/exe/replacetools.py +216 -0
- hydpy/exe/servertools.py +2348 -0
- hydpy/exe/xmltools.py +3280 -0
- hydpy/interfaces/__init__.py +0 -0
- hydpy/interfaces/aetinterfaces.py +94 -0
- hydpy/interfaces/dischargeinterfaces.py +45 -0
- hydpy/interfaces/petinterfaces.py +117 -0
- hydpy/interfaces/precipinterfaces.py +42 -0
- hydpy/interfaces/radiationinterfaces.py +79 -0
- hydpy/interfaces/rconcinterfaces.py +30 -0
- hydpy/interfaces/routinginterfaces.py +324 -0
- hydpy/interfaces/soilinterfaces.py +96 -0
- hydpy/interfaces/stateinterfaces.py +98 -0
- hydpy/interfaces/tempinterfaces.py +46 -0
- hydpy/models/__init__.py +0 -0
- hydpy/models/arma/__init__.py +14 -0
- hydpy/models/arma/arma_control.py +383 -0
- hydpy/models/arma/arma_derived.py +204 -0
- hydpy/models/arma/arma_fluxes.py +41 -0
- hydpy/models/arma/arma_inlets.py +11 -0
- hydpy/models/arma/arma_logs.py +19 -0
- hydpy/models/arma/arma_model.py +461 -0
- hydpy/models/arma/arma_outlets.py +11 -0
- hydpy/models/arma_rimorido.py +381 -0
- hydpy/models/conv/__init__.py +12 -0
- hydpy/models/conv/conv_control.py +303 -0
- hydpy/models/conv/conv_derived.py +271 -0
- hydpy/models/conv/conv_fluxes.py +54 -0
- hydpy/models/conv/conv_inlets.py +11 -0
- hydpy/models/conv/conv_model.py +687 -0
- hydpy/models/conv/conv_outlets.py +11 -0
- hydpy/models/conv_idw.py +120 -0
- hydpy/models/conv_idw_ed.py +184 -0
- hydpy/models/conv_nn.py +112 -0
- hydpy/models/dam/__init__.py +16 -0
- hydpy/models/dam/dam_aides.py +17 -0
- hydpy/models/dam/dam_control.py +346 -0
- hydpy/models/dam/dam_derived.py +559 -0
- hydpy/models/dam/dam_factors.py +46 -0
- hydpy/models/dam/dam_fluxes.py +179 -0
- hydpy/models/dam/dam_inlets.py +29 -0
- hydpy/models/dam/dam_logs.py +52 -0
- hydpy/models/dam/dam_model.py +5011 -0
- hydpy/models/dam/dam_outlets.py +23 -0
- hydpy/models/dam/dam_receivers.py +41 -0
- hydpy/models/dam/dam_senders.py +23 -0
- hydpy/models/dam/dam_solver.py +75 -0
- hydpy/models/dam/dam_states.py +11 -0
- hydpy/models/dam_llake.py +499 -0
- hydpy/models/dam_lreservoir.py +548 -0
- hydpy/models/dam_lretention.py +343 -0
- hydpy/models/dam_pump.py +278 -0
- hydpy/models/dam_pump_sluice.py +339 -0
- hydpy/models/dam_sluice.py +319 -0
- hydpy/models/dam_v001.py +1127 -0
- hydpy/models/dam_v002.py +381 -0
- hydpy/models/dam_v003.py +422 -0
- hydpy/models/dam_v004.py +665 -0
- hydpy/models/dam_v005.py +479 -0
- hydpy/models/dummy/__init__.py +15 -0
- hydpy/models/dummy/dummy_control.py +22 -0
- hydpy/models/dummy/dummy_fluxes.py +11 -0
- hydpy/models/dummy/dummy_inlets.py +11 -0
- hydpy/models/dummy/dummy_inputs.py +41 -0
- hydpy/models/dummy/dummy_model.py +196 -0
- hydpy/models/dummy/dummy_outlets.py +11 -0
- hydpy/models/dummy_interceptedwater.py +85 -0
- hydpy/models/dummy_node2node.py +83 -0
- hydpy/models/dummy_snowalbedo.py +84 -0
- hydpy/models/dummy_snowcover.py +84 -0
- hydpy/models/dummy_snowycanopy.py +86 -0
- hydpy/models/dummy_soilwater.py +85 -0
- hydpy/models/evap/__init__.py +13 -0
- hydpy/models/evap/evap_control.py +354 -0
- hydpy/models/evap/evap_derived.py +236 -0
- hydpy/models/evap/evap_factors.py +188 -0
- hydpy/models/evap/evap_fixed.py +68 -0
- hydpy/models/evap/evap_fluxes.py +150 -0
- hydpy/models/evap/evap_inputs.py +54 -0
- hydpy/models/evap/evap_logs.py +91 -0
- hydpy/models/evap/evap_masks.py +48 -0
- hydpy/models/evap/evap_model.py +9170 -0
- hydpy/models/evap/evap_parameters.py +149 -0
- hydpy/models/evap/evap_sequences.py +32 -0
- hydpy/models/evap/evap_states.py +18 -0
- hydpy/models/evap_aet_hbv96.py +372 -0
- hydpy/models/evap_aet_minhas.py +331 -0
- hydpy/models/evap_aet_morsim.py +627 -0
- hydpy/models/evap_pet_ambav1.py +483 -0
- hydpy/models/evap_pet_hbv96.py +147 -0
- hydpy/models/evap_pet_m.py +94 -0
- hydpy/models/evap_pet_mlc.py +107 -0
- hydpy/models/evap_ret_fao56.py +265 -0
- hydpy/models/evap_ret_io.py +74 -0
- hydpy/models/evap_ret_tw2002.py +165 -0
- hydpy/models/exch/__init__.py +14 -0
- hydpy/models/exch/exch_control.py +262 -0
- hydpy/models/exch/exch_derived.py +36 -0
- hydpy/models/exch/exch_factors.py +26 -0
- hydpy/models/exch/exch_fluxes.py +48 -0
- hydpy/models/exch/exch_inlets.py +11 -0
- hydpy/models/exch/exch_logs.py +12 -0
- hydpy/models/exch/exch_model.py +451 -0
- hydpy/models/exch/exch_outlets.py +17 -0
- hydpy/models/exch/exch_receivers.py +17 -0
- hydpy/models/exch_branch_hbv96.py +186 -0
- hydpy/models/exch_waterlevel.py +73 -0
- hydpy/models/exch_weir_hbv96.py +609 -0
- hydpy/models/ga/__init__.py +14 -0
- hydpy/models/ga/ga_aides.py +17 -0
- hydpy/models/ga/ga_control.py +208 -0
- hydpy/models/ga/ga_derived.py +77 -0
- hydpy/models/ga/ga_fluxes.py +83 -0
- hydpy/models/ga/ga_inputs.py +26 -0
- hydpy/models/ga/ga_logs.py +17 -0
- hydpy/models/ga/ga_model.py +2952 -0
- hydpy/models/ga/ga_states.py +87 -0
- hydpy/models/ga_garto.py +1001 -0
- hydpy/models/ga_garto_submodel1.py +79 -0
- hydpy/models/gland/__init__.py +14 -0
- hydpy/models/gland/gland_control.py +90 -0
- hydpy/models/gland/gland_derived.py +113 -0
- hydpy/models/gland/gland_fluxes.py +137 -0
- hydpy/models/gland/gland_inputs.py +12 -0
- hydpy/models/gland/gland_model.py +1439 -0
- hydpy/models/gland/gland_outlets.py +11 -0
- hydpy/models/gland/gland_states.py +90 -0
- hydpy/models/gland_gr4.py +501 -0
- hydpy/models/gland_gr5.py +463 -0
- hydpy/models/gland_gr6.py +487 -0
- hydpy/models/hland/__init__.py +20 -0
- hydpy/models/hland/hland_aides.py +19 -0
- hydpy/models/hland/hland_constants.py +37 -0
- hydpy/models/hland/hland_control.py +1530 -0
- hydpy/models/hland/hland_derived.py +683 -0
- hydpy/models/hland/hland_factors.py +57 -0
- hydpy/models/hland/hland_fixed.py +42 -0
- hydpy/models/hland/hland_fluxes.py +279 -0
- hydpy/models/hland/hland_inputs.py +19 -0
- hydpy/models/hland/hland_masks.py +107 -0
- hydpy/models/hland/hland_model.py +4664 -0
- hydpy/models/hland/hland_outlets.py +11 -0
- hydpy/models/hland/hland_parameters.py +227 -0
- hydpy/models/hland/hland_sequences.py +382 -0
- hydpy/models/hland/hland_states.py +236 -0
- hydpy/models/hland_96.py +1812 -0
- hydpy/models/hland_96c.py +1196 -0
- hydpy/models/hland_96p.py +1204 -0
- hydpy/models/kinw/__init__.py +18 -0
- hydpy/models/kinw/kinw_aides.py +306 -0
- hydpy/models/kinw/kinw_control.py +270 -0
- hydpy/models/kinw/kinw_derived.py +197 -0
- hydpy/models/kinw/kinw_fixed.py +33 -0
- hydpy/models/kinw/kinw_fluxes.py +37 -0
- hydpy/models/kinw/kinw_inlets.py +11 -0
- hydpy/models/kinw/kinw_model.py +3026 -0
- hydpy/models/kinw/kinw_outlets.py +11 -0
- hydpy/models/kinw/kinw_solver.py +45 -0
- hydpy/models/kinw/kinw_states.py +17 -0
- hydpy/models/kinw_williams.py +1299 -0
- hydpy/models/kinw_williams_ext.py +768 -0
- hydpy/models/lland/__init__.py +42 -0
- hydpy/models/lland/lland_aides.py +38 -0
- hydpy/models/lland/lland_constants.py +88 -0
- hydpy/models/lland/lland_control.py +1329 -0
- hydpy/models/lland/lland_derived.py +380 -0
- hydpy/models/lland/lland_factors.py +18 -0
- hydpy/models/lland/lland_fixed.py +128 -0
- hydpy/models/lland/lland_fluxes.py +626 -0
- hydpy/models/lland/lland_inlets.py +12 -0
- hydpy/models/lland/lland_inputs.py +33 -0
- hydpy/models/lland/lland_logs.py +17 -0
- hydpy/models/lland/lland_masks.py +212 -0
- hydpy/models/lland/lland_model.py +7690 -0
- hydpy/models/lland/lland_outlets.py +12 -0
- hydpy/models/lland/lland_parameters.py +195 -0
- hydpy/models/lland/lland_sequences.py +67 -0
- hydpy/models/lland/lland_states.py +280 -0
- hydpy/models/lland_dd.py +2270 -0
- hydpy/models/lland_knauf.py +2156 -0
- hydpy/models/lland_knauf_ic.py +1920 -0
- hydpy/models/meteo/__init__.py +12 -0
- hydpy/models/meteo/meteo_control.py +154 -0
- hydpy/models/meteo/meteo_derived.py +159 -0
- hydpy/models/meteo/meteo_factors.py +88 -0
- hydpy/models/meteo/meteo_fixed.py +19 -0
- hydpy/models/meteo/meteo_fluxes.py +46 -0
- hydpy/models/meteo/meteo_inputs.py +47 -0
- hydpy/models/meteo/meteo_logs.py +30 -0
- hydpy/models/meteo/meteo_model.py +2904 -0
- hydpy/models/meteo/meteo_parameters.py +14 -0
- hydpy/models/meteo/meteo_sequences.py +22 -0
- hydpy/models/meteo_clear_glob_io.py +77 -0
- hydpy/models/meteo_glob_fao56.py +217 -0
- hydpy/models/meteo_glob_io.py +68 -0
- hydpy/models/meteo_glob_morsim.py +444 -0
- hydpy/models/meteo_precip_io.py +76 -0
- hydpy/models/meteo_psun_sun_glob_io.py +83 -0
- hydpy/models/meteo_sun_fao56.py +188 -0
- hydpy/models/meteo_sun_morsim.py +466 -0
- hydpy/models/meteo_temp_io.py +76 -0
- hydpy/models/musk/__init__.py +15 -0
- hydpy/models/musk/musk_control.py +328 -0
- hydpy/models/musk/musk_derived.py +32 -0
- hydpy/models/musk/musk_factors.py +53 -0
- hydpy/models/musk/musk_fluxes.py +24 -0
- hydpy/models/musk/musk_inlets.py +11 -0
- hydpy/models/musk/musk_masks.py +15 -0
- hydpy/models/musk/musk_model.py +838 -0
- hydpy/models/musk/musk_outlets.py +11 -0
- hydpy/models/musk/musk_sequences.py +88 -0
- hydpy/models/musk/musk_solver.py +68 -0
- hydpy/models/musk/musk_states.py +64 -0
- hydpy/models/musk_classic.py +228 -0
- hydpy/models/musk_mct.py +1247 -0
- hydpy/models/rconc/__init__.py +12 -0
- hydpy/models/rconc/rconc_control.py +473 -0
- hydpy/models/rconc/rconc_derived.py +76 -0
- hydpy/models/rconc/rconc_fluxes.py +19 -0
- hydpy/models/rconc/rconc_logs.py +74 -0
- hydpy/models/rconc/rconc_model.py +260 -0
- hydpy/models/rconc/rconc_states.py +11 -0
- hydpy/models/rconc_nash.py +48 -0
- hydpy/models/rconc_uh.py +53 -0
- hydpy/models/sw1d/__init__.py +17 -0
- hydpy/models/sw1d/sw1d_control.py +356 -0
- hydpy/models/sw1d/sw1d_derived.py +85 -0
- hydpy/models/sw1d/sw1d_factors.py +78 -0
- hydpy/models/sw1d/sw1d_fixed.py +12 -0
- hydpy/models/sw1d/sw1d_fluxes.py +55 -0
- hydpy/models/sw1d/sw1d_inlets.py +17 -0
- hydpy/models/sw1d/sw1d_model.py +3385 -0
- hydpy/models/sw1d/sw1d_outlets.py +11 -0
- hydpy/models/sw1d/sw1d_receivers.py +11 -0
- hydpy/models/sw1d/sw1d_senders.py +11 -0
- hydpy/models/sw1d/sw1d_states.py +23 -0
- hydpy/models/sw1d_channel.py +2051 -0
- hydpy/models/sw1d_gate_out.py +599 -0
- hydpy/models/sw1d_lias.py +105 -0
- hydpy/models/sw1d_lias_sluice.py +531 -0
- hydpy/models/sw1d_network.py +1219 -0
- hydpy/models/sw1d_pump.py +448 -0
- hydpy/models/sw1d_q_in.py +79 -0
- hydpy/models/sw1d_q_out.py +81 -0
- hydpy/models/sw1d_storage.py +78 -0
- hydpy/models/sw1d_weir_out.py +75 -0
- hydpy/models/test/__init__.py +14 -0
- hydpy/models/test/test_control.py +28 -0
- hydpy/models/test/test_fluxes.py +17 -0
- hydpy/models/test/test_model.py +201 -0
- hydpy/models/test/test_solver.py +48 -0
- hydpy/models/test/test_states.py +17 -0
- hydpy/models/test_discontinous.py +46 -0
- hydpy/models/test_stiff0d.py +47 -0
- hydpy/models/test_stiff1d.py +42 -0
- hydpy/models/whmod/__init__.py +21 -0
- hydpy/models/whmod/whmod_constants.py +77 -0
- hydpy/models/whmod/whmod_control.py +333 -0
- hydpy/models/whmod/whmod_derived.py +210 -0
- hydpy/models/whmod/whmod_factors.py +9 -0
- hydpy/models/whmod/whmod_fluxes.py +105 -0
- hydpy/models/whmod/whmod_inputs.py +15 -0
- hydpy/models/whmod/whmod_masks.py +178 -0
- hydpy/models/whmod/whmod_model.py +2091 -0
- hydpy/models/whmod/whmod_parameters.py +155 -0
- hydpy/models/whmod/whmod_sequences.py +193 -0
- hydpy/models/whmod/whmod_states.py +73 -0
- hydpy/models/whmod_rural.py +794 -0
- hydpy/models/whmod_urban.py +1011 -0
- hydpy/models/wland/__init__.py +43 -0
- hydpy/models/wland/wland_aides.py +55 -0
- hydpy/models/wland/wland_constants.py +103 -0
- hydpy/models/wland/wland_control.py +508 -0
- hydpy/models/wland/wland_derived.py +330 -0
- hydpy/models/wland/wland_factors.py +11 -0
- hydpy/models/wland/wland_fixed.py +12 -0
- hydpy/models/wland/wland_fluxes.py +166 -0
- hydpy/models/wland/wland_inputs.py +33 -0
- hydpy/models/wland/wland_masks.py +54 -0
- hydpy/models/wland/wland_model.py +3755 -0
- hydpy/models/wland/wland_outlets.py +11 -0
- hydpy/models/wland/wland_parameters.py +214 -0
- hydpy/models/wland/wland_sequences.py +108 -0
- hydpy/models/wland/wland_solver.py +45 -0
- hydpy/models/wland/wland_states.py +56 -0
- hydpy/models/wland_gd.py +888 -0
- hydpy/models/wland_wag.py +1244 -0
- hydpy/models/wq/__init__.py +14 -0
- hydpy/models/wq/wq_control.py +117 -0
- hydpy/models/wq/wq_derived.py +182 -0
- hydpy/models/wq/wq_factors.py +79 -0
- hydpy/models/wq/wq_fluxes.py +17 -0
- hydpy/models/wq/wq_model.py +1889 -0
- hydpy/models/wq_trapeze.py +168 -0
- hydpy/models/wq_trapeze_strickler.py +101 -0
- hydpy/models/wq_walrus.py +57 -0
- hydpy/py.typed +0 -0
- hydpy/tests/.coveragerc +22 -0
- hydpy/tests/__init__.py +0 -0
- hydpy/tests/check_consistency.py +32 -0
- hydpy/tests/hydpydoctestcustomize.pth +1 -0
- hydpy/tests/hydpydoctestcustomize.py +15 -0
- hydpy/tests/iotesting/__init__.py +0 -0
- hydpy/tests/run_doctests.py +233 -0
- hydpy-6.2.dev1.data/scripts/hyd.py +277 -0
- hydpy-6.2.dev1.dist-info/LICENSE +165 -0
- hydpy-6.2.dev1.dist-info/METADATA +163 -0
- hydpy-6.2.dev1.dist-info/RECORD +890 -0
- hydpy-6.2.dev1.dist-info/WHEEL +5 -0
- hydpy-6.2.dev1.dist-info/licenses_hydpy_installer.txt +42 -0
- hydpy-6.2.dev1.dist-info/top_level.txt +1 -0
hydpy/exe/hyd.py
ADDED
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
"""The script for executing HydPy workflows.
|
|
3
|
+
|
|
4
|
+
.. _`Python Launcher for Windows`: \
|
|
5
|
+
https://docs.python.org/3/using/windows.html#launcher
|
|
6
|
+
|
|
7
|
+
.. _`here`: https://bitbucket.org/vinay.sajip/pylauncher/downloads
|
|
8
|
+
|
|
9
|
+
This script is thought to be called from a command line. After successfully
|
|
10
|
+
installating HydPy, you caninvoke it from anywhere on your computer. Test this by just
|
|
11
|
+
typing `hyd.py` into your command line:
|
|
12
|
+
|
|
13
|
+
>>> import subprocess
|
|
14
|
+
>>> from hydpy import run_subprocess
|
|
15
|
+
>>> result = run_subprocess("hyd.py") # doctest: +ELLIPSIS
|
|
16
|
+
Invoking hyd.py without arguments resulted in the following error:
|
|
17
|
+
The first positional argument defining the function to be called is missing.
|
|
18
|
+
<BLANKLINE>
|
|
19
|
+
See the following stack traceback for debugging:
|
|
20
|
+
...
|
|
21
|
+
|
|
22
|
+
If this test example does not work on your machine, you should first make sure there is
|
|
23
|
+
a `hyd.py` file in the `Scripts` folder of your Python distribution and that the
|
|
24
|
+
environment variable `Path` is pointing to this folder. Windows users should also make
|
|
25
|
+
shure to install the `Python Launcher for Windows`_. The Python standard distribution
|
|
26
|
+
contains this launcher, but other distributions like Anaconda do not. You can find a
|
|
27
|
+
suitable installer `here`_. As a stopgap, you could directly call Python and pass the
|
|
28
|
+
complete path of the `hyd.py` file available in your *HydPy* site-packages folder as an
|
|
29
|
+
argument:
|
|
30
|
+
|
|
31
|
+
>>> import sys
|
|
32
|
+
>>> from hydpy.exe import hyd
|
|
33
|
+
>>> command = f"{sys.executable} {hyd.__file__}"
|
|
34
|
+
>>> from hydpy import repr_
|
|
35
|
+
>>> repr_(command) # doctest: +ELLIPSIS
|
|
36
|
+
'...python... .../hydpy/exe/hyd.py'
|
|
37
|
+
>>> result = run_subprocess(command) # doctest: +ELLIPSIS
|
|
38
|
+
Invoking hyd.py without arguments resulted in the following error:
|
|
39
|
+
The first positional argument defining the function to be called is missing.
|
|
40
|
+
...
|
|
41
|
+
|
|
42
|
+
You are free to redirect output to a log file:
|
|
43
|
+
|
|
44
|
+
>>> from hydpy import TestIO
|
|
45
|
+
>>> TestIO.clear()
|
|
46
|
+
>>> with TestIO():
|
|
47
|
+
... result = run_subprocess("hyd.py logfile=my_log_file.txt")
|
|
48
|
+
>>> with TestIO(), open("my_log_file.txt") as logfile:
|
|
49
|
+
... print(logfile.read()) # doctest: +ELLIPSIS
|
|
50
|
+
Invoking hyd.py with argument `logfile=my_log_file.txt` resulted in the following \
|
|
51
|
+
error:
|
|
52
|
+
The first positional argument defining the function to be called is missing.
|
|
53
|
+
...
|
|
54
|
+
|
|
55
|
+
When passing `default` as keyword argument `logfile`, function |prepare_logfile|
|
|
56
|
+
generates a default name containing the current date and time:
|
|
57
|
+
|
|
58
|
+
>>> with TestIO():
|
|
59
|
+
... result = run_subprocess("hyd.py logfile=default")
|
|
60
|
+
>>> import os
|
|
61
|
+
>>> with TestIO():
|
|
62
|
+
... for filename in os.listdir("."):
|
|
63
|
+
... if filename.endswith(".log"):
|
|
64
|
+
... print(filename) # doctest: +ELLIPSIS
|
|
65
|
+
hydpy_...-...-..._...-...-....log
|
|
66
|
+
|
|
67
|
+
Without any further arguments, `hyd.py` does not know which function to call:
|
|
68
|
+
|
|
69
|
+
>>> result = run_subprocess("hyd.py") # doctest: +ELLIPSIS
|
|
70
|
+
Invoking hyd.py without arguments resulted in the following error:
|
|
71
|
+
The first positional argument defining the function to be called is missing.
|
|
72
|
+
...
|
|
73
|
+
|
|
74
|
+
The first additional argument must be an available "script function":
|
|
75
|
+
|
|
76
|
+
>>> result = run_subprocess("hyd.py "
|
|
77
|
+
... "wrong_argument") # doctest: +ELLIPSIS
|
|
78
|
+
Invoking hyd.py with argument `wrong_argument` resulted in the following error:
|
|
79
|
+
There is no `wrong_argument` function callable by `hyd.py`. Choose one of the \
|
|
80
|
+
following instead: await_server, exec_commands, exec_script, run_doctests, \
|
|
81
|
+
run_simulation, start_server, start_shell, xml_replace, and xml_validate.
|
|
82
|
+
...
|
|
83
|
+
|
|
84
|
+
Further argument requirements depend on the selected "script function":
|
|
85
|
+
|
|
86
|
+
>>> result = run_subprocess("hyd.py "
|
|
87
|
+
... "exec_commands") # doctest: +ELLIPSIS
|
|
88
|
+
Invoking hyd.py with argument `exec_commands` resulted in the following error:
|
|
89
|
+
Function `exec_commands` requires `1` positional arguments (commands), but `0` are \
|
|
90
|
+
given.
|
|
91
|
+
...
|
|
92
|
+
>>> result = run_subprocess("hyd.py "
|
|
93
|
+
... "exec_commands "
|
|
94
|
+
... "first_name "
|
|
95
|
+
... "second_name") # doctest: +ELLIPSIS
|
|
96
|
+
Invoking hyd.py with arguments `exec_commands, first_name, second_name` resulted in \
|
|
97
|
+
the following error:
|
|
98
|
+
Function `exec_commands` allows `1` positional arguments (commands), but `2` are \
|
|
99
|
+
given (first_name and second_name).
|
|
100
|
+
...
|
|
101
|
+
|
|
102
|
+
Optional keyword arguments are supported: (on Linux, we have to escape the characters \
|
|
103
|
+
"(", ")", ";", and "'" in the following)
|
|
104
|
+
|
|
105
|
+
>>> import platform
|
|
106
|
+
>>> esc = "" if "windows" in platform.platform().lower() else "\\\\"
|
|
107
|
+
>>> result = run_subprocess("hyd.py "
|
|
108
|
+
... "exec_commands "
|
|
109
|
+
... f"print{esc}(x+y{esc}) "
|
|
110
|
+
... f"x={esc}'2{esc}' "
|
|
111
|
+
... f"y={esc}'=1+1{esc}'")
|
|
112
|
+
Start to execute the commands ['print(x+y)'] for testing purposes.
|
|
113
|
+
2=1+1
|
|
114
|
+
|
|
115
|
+
Error messages raised by the "script function" itself also find their way into the
|
|
116
|
+
console or log file:
|
|
117
|
+
|
|
118
|
+
>>> result = run_subprocess( # doctest: +ELLIPSIS
|
|
119
|
+
... "hyd.py exec_commands "
|
|
120
|
+
... f"raise_RuntimeError{esc}({esc}'it_fails{esc}'{esc})")
|
|
121
|
+
Start to execute the commands ["raise_RuntimeError('it_fails')"] for testing purposes.
|
|
122
|
+
Invoking hyd.py with arguments `exec_commands, raise_RuntimeError('it_fails')` \
|
|
123
|
+
resulted in the following error:
|
|
124
|
+
it fails
|
|
125
|
+
...
|
|
126
|
+
|
|
127
|
+
The same is true for warning messages:
|
|
128
|
+
|
|
129
|
+
>>> result = run_subprocess("hyd.py " # doctest: +ELLIPSIS
|
|
130
|
+
... "exec_commands "
|
|
131
|
+
... f"import_warnings{esc};"
|
|
132
|
+
... f"warnings.warn{esc}({esc}'it_stumbles{esc}'{esc})")
|
|
133
|
+
Start to execute the commands ['import_warnings', "warnings.warn('it_stumbles')"] for \
|
|
134
|
+
testing purposes...
|
|
135
|
+
...UserWarning: it stumbles
|
|
136
|
+
|
|
137
|
+
And the same is true for printed messages:
|
|
138
|
+
|
|
139
|
+
>>> result = run_subprocess("hyd.py "
|
|
140
|
+
... "exec_commands "
|
|
141
|
+
... f"print{esc}({esc}'it_works{esc}'{esc})")
|
|
142
|
+
Start to execute the commands ["print('it_works')"] for testing purposes.
|
|
143
|
+
it works
|
|
144
|
+
|
|
145
|
+
To report the importance level of individual log messages, use the optional `logstyle`
|
|
146
|
+
keyword argument:
|
|
147
|
+
|
|
148
|
+
>>> result = run_subprocess( # doctest: +ELLIPSIS
|
|
149
|
+
... "hyd.py exec_commands "
|
|
150
|
+
... f"print{esc}({esc}'it_works{esc}'{esc}){esc};"
|
|
151
|
+
... f"import_warnings{esc};"
|
|
152
|
+
... f"warnings.warn{esc}({esc}'it_stumbles{esc}'{esc}){esc};"
|
|
153
|
+
... f"raise_RuntimeError{esc}({esc}'it_fails{esc}'{esc}) "
|
|
154
|
+
... "logstyle=prefixed")
|
|
155
|
+
info: Start to execute the commands ["print('it_works')", 'import_warnings', \
|
|
156
|
+
"warnings.warn('it_stumbles')", "raise_RuntimeError('it_fails')"] for testing purposes.
|
|
157
|
+
info: it works
|
|
158
|
+
warning: ...UserWarning: it stumbles
|
|
159
|
+
error: Invoking hyd.py with arguments `exec_commands, print('it_works');\
|
|
160
|
+
import_warnings;warnings.warn('it_stumbles');raise_RuntimeError('it_fails'), \
|
|
161
|
+
logstyle=prefixed` resulted in the following error:
|
|
162
|
+
error: it fails
|
|
163
|
+
...
|
|
164
|
+
|
|
165
|
+
So far, only `prefixed` and the default style `plain` have been implemented:
|
|
166
|
+
|
|
167
|
+
>>> result = run_subprocess("hyd.py " # doctest: +ELLIPSIS
|
|
168
|
+
... "exec_commands "
|
|
169
|
+
... "None "
|
|
170
|
+
... "logstyle=missing")
|
|
171
|
+
Invoking hyd.py with arguments `exec_commands, None, logstyle=missing` resulted in \
|
|
172
|
+
the following error:
|
|
173
|
+
The given log file style missing is not available. Please choose one of the \
|
|
174
|
+
following: plain and prefixed.
|
|
175
|
+
...
|
|
176
|
+
|
|
177
|
+
A related option is `errorstyle`, which allows for modifying the print style of
|
|
178
|
+
exception messages. So far, three error message printing styles are available:
|
|
179
|
+
|
|
180
|
+
>>> result = run_subprocess("hyd.py exec_commands " # doctest: +ELLIPSIS
|
|
181
|
+
... "errorstyle=wrong")
|
|
182
|
+
Invoking hyd.py with arguments `exec_commands, errorstyle=wrong` resulted in the \
|
|
183
|
+
following error:
|
|
184
|
+
The given error message style `wrong` is not available. Please choose one of the \
|
|
185
|
+
following: `multiline`, `single_line`, and `splittable`.
|
|
186
|
+
...
|
|
187
|
+
|
|
188
|
+
The (so far used) default is `multiline`. It prints the context, the message, and the
|
|
189
|
+
individual traceback components of the occurred error in separate lines:
|
|
190
|
+
|
|
191
|
+
>>> result = run_subprocess( # doctest: +ELLIPSIS
|
|
192
|
+
... "hyd.py exec_commands "
|
|
193
|
+
... "errorstyle=multiline "
|
|
194
|
+
... f"raise_RuntimeError{esc}({esc}'it_fails{esc}'{esc})")
|
|
195
|
+
Start to execute the commands ["raise_RuntimeError('it_fails')"] for testing purposes.
|
|
196
|
+
Invoking hyd.py with arguments `exec_commands, errorstyle=multiline, \
|
|
197
|
+
raise_RuntimeError('it_fails')` resulted in the following error:
|
|
198
|
+
it fails
|
|
199
|
+
<BLANKLINE>
|
|
200
|
+
See the following stack traceback for debugging:
|
|
201
|
+
...
|
|
202
|
+
|
|
203
|
+
.. _`Delft-FEWS`: https://oss.deltares.nl/web/delft-fews
|
|
204
|
+
|
|
205
|
+
`multiline` provides exhaustive information in a human-readable form. However,
|
|
206
|
+
printing separate lines can confuse other tools that parse and forward HydPy's error
|
|
207
|
+
messages (for example, `Delft-FEWS`_). Hence, the first alternative, `single_line`,
|
|
208
|
+
prints a single line. It does so also in a readable form by omitting the traceback:
|
|
209
|
+
|
|
210
|
+
>>> result = run_subprocess( # doctest: +ELLIPSIS
|
|
211
|
+
... "hyd.py exec_commands "
|
|
212
|
+
... "errorstyle=single_line "
|
|
213
|
+
... f"raise_RuntimeError{esc}({esc}'it_fails{esc}'{esc})")
|
|
214
|
+
Start to execute the commands ["raise_RuntimeError('it_fails')"] for testing purposes.
|
|
215
|
+
Invoking hyd.py with arguments `exec_commands, errorstyle=single_line, \
|
|
216
|
+
raise_RuntimeError('it_fails')` resulted in the following error: it fails
|
|
217
|
+
|
|
218
|
+
The second alternative, `splittable`, squeezes the whole information (including the
|
|
219
|
+
traceback) into a single line that uses the string `__hydpy_newline__` as a surrogate
|
|
220
|
+
newline character, and so allows to convert the complete error message into the
|
|
221
|
+
multiline form later:
|
|
222
|
+
|
|
223
|
+
>>> result = run_subprocess( # doctest: +ELLIPSIS
|
|
224
|
+
... "hyd.py exec_commands "
|
|
225
|
+
... "errorstyle=splittable "
|
|
226
|
+
... f"raise_RuntimeError{esc}({esc}'it_fails{esc}'{esc})")
|
|
227
|
+
Start to execute the commands ["raise_RuntimeError('it_fails')"] for testing purposes.
|
|
228
|
+
Invoking hyd.py with arguments `exec_commands, errorstyle=splittable, \
|
|
229
|
+
raise_RuntimeError('it_fails')` resulted in the following error:__hydpy_newline__it \
|
|
230
|
+
fails__hydpy_newline____hydpy_newline__See the following stack traceback for \
|
|
231
|
+
debugging:__hydpy_newline__ ...__hydpy_newline__
|
|
232
|
+
|
|
233
|
+
See the documentation on module |xmltools| for an actually successful example using the
|
|
234
|
+
"script function" |run_simulation|.
|
|
235
|
+
"""
|
|
236
|
+
# import...
|
|
237
|
+
# ...from standard-library
|
|
238
|
+
import sys
|
|
239
|
+
|
|
240
|
+
# ...from hydpy
|
|
241
|
+
from hydpy.exe import commandtools
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
def execute() -> None:
|
|
245
|
+
"""Call |execute_scriptfunction| of module |commandtools| in case |hyd| is the main
|
|
246
|
+
script.
|
|
247
|
+
|
|
248
|
+
>>> from hydpy.exe import hyd
|
|
249
|
+
>>> from unittest import mock
|
|
250
|
+
>>> with (
|
|
251
|
+
... mock.patch("hydpy.exe.commandtools.execute_scriptfunction") as fun,
|
|
252
|
+
... mock.patch("sys.exit") as exit_,
|
|
253
|
+
... mock.patch.object(hyd, "__name__", "__not_main__"),
|
|
254
|
+
... ):
|
|
255
|
+
... hyd.execute()
|
|
256
|
+
... exit_.called
|
|
257
|
+
False
|
|
258
|
+
>>> for return_value in (None, 0, 2):
|
|
259
|
+
... with (
|
|
260
|
+
... mock.patch(
|
|
261
|
+
... "hydpy.exe.commandtools.execute_scriptfunction",
|
|
262
|
+
... return_value=return_value
|
|
263
|
+
... ),
|
|
264
|
+
... mock.patch("sys.exit") as exit_,
|
|
265
|
+
... mock.patch.object(hyd, "__name__", "__main__"),
|
|
266
|
+
... ):
|
|
267
|
+
... hyd.execute()
|
|
268
|
+
... exit_.call_args
|
|
269
|
+
call(False)
|
|
270
|
+
call(False)
|
|
271
|
+
call(True)
|
|
272
|
+
"""
|
|
273
|
+
if __name__ == "__main__":
|
|
274
|
+
sys.exit(bool(commandtools.execute_scriptfunction()))
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
execute()
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"""This module bundles imports generally required for implementing new models.
|
|
2
|
+
|
|
3
|
+
Module |modelimports| is supposed to shorten the import section
|
|
4
|
+
of base and application models implemented. Just write:
|
|
5
|
+
|
|
6
|
+
>>> from hydpy.exe.modelimports import *
|
|
7
|
+
|
|
8
|
+
Thereafter, the following objects are available:
|
|
9
|
+
* module |numpy|
|
|
10
|
+
* numpys |numpy.nan| and |numpy.inf|
|
|
11
|
+
* functions |parameterstep|, |simulationstep|, and |controlcheck|
|
|
12
|
+
of module |importtools|
|
|
13
|
+
* class |Tester| of module |testtools|
|
|
14
|
+
* class |Cythonizer| of module |modelutils|
|
|
15
|
+
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
# import...
|
|
19
|
+
# ...from site-packages
|
|
20
|
+
import numpy
|
|
21
|
+
from numpy import nan
|
|
22
|
+
from numpy import inf
|
|
23
|
+
|
|
24
|
+
# ...from HydPy
|
|
25
|
+
# Load the required `magic` functions into the local namespace.
|
|
26
|
+
from hydpy.core.importtools import parameterstep
|
|
27
|
+
from hydpy.core.importtools import simulationstep
|
|
28
|
+
from hydpy.core.importtools import controlcheck
|
|
29
|
+
from hydpy.core.testtools import Tester
|
|
30
|
+
from hydpy.cythons.modelutils import Cythonizer
|
|
31
|
+
|
|
32
|
+
__all__ = [
|
|
33
|
+
"numpy",
|
|
34
|
+
"nan",
|
|
35
|
+
"inf",
|
|
36
|
+
"parameterstep",
|
|
37
|
+
"simulationstep",
|
|
38
|
+
"controlcheck",
|
|
39
|
+
"Tester",
|
|
40
|
+
"Cythonizer",
|
|
41
|
+
]
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
"""This module implements tools for file related string substitutions."""
|
|
2
|
+
|
|
3
|
+
# import...
|
|
4
|
+
# ...from HydPy
|
|
5
|
+
from hydpy import config
|
|
6
|
+
from hydpy.core import objecttools
|
|
7
|
+
from hydpy.core.typingtools import *
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def xml_replace(filename: str, *, printflag: bool = True, **replacements: str) -> None:
|
|
11
|
+
"""Read the content of an XML template file (XMLT), apply the given
|
|
12
|
+
`replacements` to its substitution markers, and write the result into
|
|
13
|
+
an XML file with the same name but ending with `xml` instead of `xmlt`.
|
|
14
|
+
|
|
15
|
+
First, we write an XMLT file, containing a regular HTML comment, a
|
|
16
|
+
readily defined element `e1`, and some other elements with
|
|
17
|
+
substitutions markers. Substitution markers are HTML comments
|
|
18
|
+
starting and ending with the `|` character:
|
|
19
|
+
|
|
20
|
+
>>> from hydpy import xml_replace, TestIO
|
|
21
|
+
>>> with TestIO():
|
|
22
|
+
... with open("test1.xmlt", "w") as templatefile:
|
|
23
|
+
... _ = templatefile.write(
|
|
24
|
+
... "<!--a normal comment-->\\n"
|
|
25
|
+
... "<e1>element 1</e1>\\n"
|
|
26
|
+
... "<e2><!--|e2|--></e2>\\n"
|
|
27
|
+
... "<e3><!--|e3_|--></e3>\\n"
|
|
28
|
+
... "<e4><!--|e4=element 4|--></e4>\\n"
|
|
29
|
+
... "<e2><!--|e2|--></e2>")
|
|
30
|
+
|
|
31
|
+
Function |xml_replace| can both be called within a Python session and
|
|
32
|
+
from a command line. We start with the first type of application.
|
|
33
|
+
|
|
34
|
+
Each substitution marker must be met by a keyword argument unless
|
|
35
|
+
it holds a default value (`e4`). All arguments are converted to
|
|
36
|
+
a |str| object (`e3`). Template files can use the same substitution
|
|
37
|
+
marker multiple times (`e2`):
|
|
38
|
+
|
|
39
|
+
>>> with TestIO():
|
|
40
|
+
... xml_replace("test1", e2="E2", e3_=3, e4="ELEMENT 4")
|
|
41
|
+
template file: test1.xmlt
|
|
42
|
+
target file: test1.xml
|
|
43
|
+
replacements:
|
|
44
|
+
e2 --> E2 (given argument)
|
|
45
|
+
e3_ --> 3 (given argument)
|
|
46
|
+
e4 --> ELEMENT 4 (given argument)
|
|
47
|
+
e2 --> E2 (given argument)
|
|
48
|
+
>>> with TestIO():
|
|
49
|
+
... with open("test1.xml") as targetfile:
|
|
50
|
+
... print(targetfile.read())
|
|
51
|
+
<!--a normal comment-->
|
|
52
|
+
<e1>element 1</e1>
|
|
53
|
+
<e2>E2</e2>
|
|
54
|
+
<e3>3</e3>
|
|
55
|
+
<e4>ELEMENT 4</e4>
|
|
56
|
+
<e2>E2</e2>
|
|
57
|
+
|
|
58
|
+
Without custom values, |xml_replace| applies predefined default
|
|
59
|
+
values, if available (`e4`):
|
|
60
|
+
|
|
61
|
+
>>> with TestIO():
|
|
62
|
+
... xml_replace("test1", e2="E2", e3_=3) # doctest: +ELLIPSIS
|
|
63
|
+
template file: test1.xmlt
|
|
64
|
+
target file: test1.xml
|
|
65
|
+
replacements:
|
|
66
|
+
e2 --> E2 (given argument)
|
|
67
|
+
e3_ --> 3 (given argument)
|
|
68
|
+
e4 --> element 4 (default argument)
|
|
69
|
+
e2 --> E2 (given argument)
|
|
70
|
+
>>> with TestIO():
|
|
71
|
+
... with open("test1.xml") as targetfile:
|
|
72
|
+
... print(targetfile.read())
|
|
73
|
+
<!--a normal comment-->
|
|
74
|
+
<e1>element 1</e1>
|
|
75
|
+
<e2>E2</e2>
|
|
76
|
+
<e3>3</e3>
|
|
77
|
+
<e4>element 4</e4>
|
|
78
|
+
<e2>E2</e2>
|
|
79
|
+
|
|
80
|
+
Missing and useless keyword arguments result in errors:
|
|
81
|
+
|
|
82
|
+
>>> with TestIO():
|
|
83
|
+
... xml_replace("test1", e2="E2")
|
|
84
|
+
Traceback (most recent call last):
|
|
85
|
+
...
|
|
86
|
+
RuntimeError: While trying to replace the markers `e2, e3_, and e4` \
|
|
87
|
+
of the XML template file `test1.xmlt` with the available keywords `e2`, \
|
|
88
|
+
the following error occurred: Marker `e3_` cannot be replaced.
|
|
89
|
+
|
|
90
|
+
>>> with TestIO():
|
|
91
|
+
... xml_replace("test1", e2="e2", e3_="E3", e4="e4", e5="e5")
|
|
92
|
+
Traceback (most recent call last):
|
|
93
|
+
...
|
|
94
|
+
RuntimeError: While trying to replace the markers `e2, e3_, and e4` \
|
|
95
|
+
of the XML template file `test1.xmlt` with the available keywords `e2, e3_, \
|
|
96
|
+
e4, and e5`, the following error occurred: Keyword(s) `e5` cannot be used.
|
|
97
|
+
|
|
98
|
+
Using different default values for the same substitution marker
|
|
99
|
+
is not allowed:
|
|
100
|
+
|
|
101
|
+
>>> from hydpy import pub, TestIO, xml_replace
|
|
102
|
+
>>> with TestIO():
|
|
103
|
+
... with open("test2.xmlt", "w") as templatefile:
|
|
104
|
+
... _ = templatefile.write(
|
|
105
|
+
... "<e4><!--|e4=element 4|--></e4>\\n"
|
|
106
|
+
... "<e4><!--|e4=ELEMENT 4|--></e4>")
|
|
107
|
+
|
|
108
|
+
>>> with TestIO():
|
|
109
|
+
... xml_replace("test2", e4=4)
|
|
110
|
+
template file: test2.xmlt
|
|
111
|
+
target file: test2.xml
|
|
112
|
+
replacements:
|
|
113
|
+
e4 --> 4 (given argument)
|
|
114
|
+
e4 --> 4 (given argument)
|
|
115
|
+
|
|
116
|
+
>>> with TestIO():
|
|
117
|
+
... with open("test2.xml") as targetfile:
|
|
118
|
+
... print(targetfile.read())
|
|
119
|
+
<e4>4</e4>
|
|
120
|
+
<e4>4</e4>
|
|
121
|
+
|
|
122
|
+
>>> with TestIO():
|
|
123
|
+
... xml_replace("test2")
|
|
124
|
+
Traceback (most recent call last):
|
|
125
|
+
...
|
|
126
|
+
RuntimeError: Template file `test2.xmlt` defines different default values \
|
|
127
|
+
for marker `e4`.
|
|
128
|
+
|
|
129
|
+
As mentioned above, function |xml_replace| is registered as a "script
|
|
130
|
+
function" and can thus be used via command line:
|
|
131
|
+
|
|
132
|
+
>>> pub.scriptfunctions["xml_replace"].__name__
|
|
133
|
+
'xml_replace'
|
|
134
|
+
>>> pub.scriptfunctions["xml_replace"].__module__
|
|
135
|
+
'hydpy.exe.replacetools'
|
|
136
|
+
|
|
137
|
+
Use script |hyd| to execute function |xml_replace|:
|
|
138
|
+
|
|
139
|
+
>>> from hydpy import run_subprocess
|
|
140
|
+
>>> with TestIO():
|
|
141
|
+
... result = run_subprocess(
|
|
142
|
+
... 'hyd.py xml_replace test1 e2="Element 2" e3_=3')
|
|
143
|
+
template file: test1.xmlt
|
|
144
|
+
target file: test1.xml
|
|
145
|
+
replacements:
|
|
146
|
+
e2 --> Element 2 (given argument)
|
|
147
|
+
e3_ --> 3 (given argument)
|
|
148
|
+
e4 --> element 4 (default argument)
|
|
149
|
+
e2 --> Element 2 (given argument)
|
|
150
|
+
|
|
151
|
+
>>> with TestIO():
|
|
152
|
+
... with open("test1.xml") as targetfile:
|
|
153
|
+
... print(targetfile.read())
|
|
154
|
+
<!--a normal comment-->
|
|
155
|
+
<e1>element 1</e1>
|
|
156
|
+
<e2>Element 2</e2>
|
|
157
|
+
<e3>3</e3>
|
|
158
|
+
<e4>element 4</e4>
|
|
159
|
+
<e2>Element 2</e2>
|
|
160
|
+
"""
|
|
161
|
+
keywords = set(replacements.keys())
|
|
162
|
+
templatename = f"{filename}.xmlt"
|
|
163
|
+
targetname = f"{filename}.xml"
|
|
164
|
+
if printflag:
|
|
165
|
+
print(f"template file: {templatename}")
|
|
166
|
+
print(f"target file: {targetname}")
|
|
167
|
+
print("replacements:")
|
|
168
|
+
with open(templatename, encoding=config.ENCODING) as templatefile:
|
|
169
|
+
templatebody = templatefile.read()
|
|
170
|
+
parts = templatebody.replace("<!--|", "|-->").split("|-->")
|
|
171
|
+
defaults: dict[str, str] = {}
|
|
172
|
+
for idx, part in enumerate(parts):
|
|
173
|
+
if idx % 2:
|
|
174
|
+
subparts = part.partition("=")
|
|
175
|
+
if subparts[2]:
|
|
176
|
+
parts[idx] = subparts[0]
|
|
177
|
+
if subparts[0] not in replacements:
|
|
178
|
+
if (subparts[0] in defaults) and (
|
|
179
|
+
defaults[subparts[0]] != str(subparts[2])
|
|
180
|
+
):
|
|
181
|
+
raise RuntimeError(
|
|
182
|
+
f"Template file `{templatename}` defines different "
|
|
183
|
+
f"default values for marker `{subparts[0]}`."
|
|
184
|
+
)
|
|
185
|
+
defaults[subparts[0]] = str(subparts[2])
|
|
186
|
+
markers = parts[1::2]
|
|
187
|
+
try:
|
|
188
|
+
unused_keywords = keywords.copy()
|
|
189
|
+
for idx, part in enumerate(parts):
|
|
190
|
+
if idx % 2:
|
|
191
|
+
argument_info = "given argument"
|
|
192
|
+
newpart = replacements.get(part)
|
|
193
|
+
if newpart is None:
|
|
194
|
+
argument_info = "default argument"
|
|
195
|
+
newpart = defaults.get(part)
|
|
196
|
+
if newpart is None:
|
|
197
|
+
raise RuntimeError(f"Marker `{part}` cannot be replaced.")
|
|
198
|
+
if printflag:
|
|
199
|
+
print(f" {part} --> {newpart} ({argument_info})")
|
|
200
|
+
parts[idx] = str(newpart)
|
|
201
|
+
unused_keywords.discard(part)
|
|
202
|
+
targetbody = "".join(parts)
|
|
203
|
+
if unused_keywords:
|
|
204
|
+
raise RuntimeError(
|
|
205
|
+
f"Keyword(s) `{objecttools.enumeration(unused_keywords)}` "
|
|
206
|
+
f"cannot be used."
|
|
207
|
+
)
|
|
208
|
+
with open(targetname, "w", encoding=config.ENCODING) as targetfile:
|
|
209
|
+
targetfile.write(targetbody)
|
|
210
|
+
except BaseException:
|
|
211
|
+
objecttools.augment_excmessage(
|
|
212
|
+
f"While trying to replace the markers "
|
|
213
|
+
f"`{objecttools.enumeration(sorted(set(markers)))}` of the "
|
|
214
|
+
f"XML template file `{templatename}` with the available "
|
|
215
|
+
f"keywords `{objecttools.enumeration(sorted(keywords))}`"
|
|
216
|
+
)
|