rtc-tools 2.7.0.dev1__tar.gz → 2.8.0a0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rtc-tools might be problematic. Click here for more details.
- rtc_tools-2.8.0a0/.codecov.yml +12 -0
- rtc_tools-2.8.0a0/.coveragerc +15 -0
- rtc_tools-2.8.0a0/.git-blame-ignore-revs +35 -0
- rtc_tools-2.8.0a0/.github/actions/setup-python/action.yml +33 -0
- rtc_tools-2.8.0a0/.github/workflows/rtc-tools.yml +147 -0
- rtc_tools-2.8.0a0/.gitignore +32 -0
- rtc_tools-2.8.0a0/.pre-commit-config.yaml +13 -0
- rtc_tools-2.8.0a0/.readthedocs.yaml +26 -0
- rtc_tools-2.8.0a0/AUTHORS +10 -0
- rtc_tools-2.8.0a0/CONTRIBUTING.md +172 -0
- rtc_tools-2.8.0a0/COPYING +674 -0
- rtc_tools-2.8.0a0/PKG-INFO +279 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/README.md +9 -11
- rtc_tools-2.8.0a0/doc/.gitignore +1 -0
- rtc_tools-2.8.0a0/doc/Makefile +225 -0
- rtc_tools-2.8.0a0/doc/_static/theme_overrides.css +13 -0
- rtc_tools-2.8.0a0/doc/conf.py +391 -0
- rtc_tools-2.8.0a0/doc/examples/optimization/basic.rst +223 -0
- rtc_tools-2.8.0a0/doc/examples/optimization/cascading_channels.rst +168 -0
- rtc_tools-2.8.0a0/doc/examples/optimization/channel_pulse.rst +104 -0
- rtc_tools-2.8.0a0/doc/examples/optimization/channel_wave_damping.rst +198 -0
- rtc_tools-2.8.0a0/doc/examples/optimization/debugging.rst +29 -0
- rtc_tools-2.8.0a0/doc/examples/optimization/ensemble.rst +283 -0
- rtc_tools-2.8.0a0/doc/examples/optimization/goal_programming.rst +296 -0
- rtc_tools-2.8.0a0/doc/examples/optimization/integrator_delay.rst +55 -0
- rtc_tools-2.8.0a0/doc/examples/optimization/lookup_table.rst +232 -0
- rtc_tools-2.8.0a0/doc/examples/optimization/mixed_integer.rst +210 -0
- rtc_tools-2.8.0a0/doc/examples/optimization/pumped_hydropower_system.rst +249 -0
- rtc_tools-2.8.0a0/doc/examples/optimization.rst +19 -0
- rtc_tools-2.8.0a0/doc/examples/pyplots/basic_results.py +71 -0
- rtc_tools-2.8.0a0/doc/examples/pyplots/cascading_channels_results.py +135 -0
- rtc_tools-2.8.0a0/doc/examples/pyplots/channel_pulse_results.py +164 -0
- rtc_tools-2.8.0a0/doc/examples/pyplots/channel_wave_damping.py +164 -0
- rtc_tools-2.8.0a0/doc/examples/pyplots/ensemble_results.py +109 -0
- rtc_tools-2.8.0a0/doc/examples/pyplots/goal_programming_results.py +70 -0
- rtc_tools-2.8.0a0/doc/examples/pyplots/integrator_delay.py +60 -0
- rtc_tools-2.8.0a0/doc/examples/pyplots/lookup_table_results.py +52 -0
- rtc_tools-2.8.0a0/doc/examples/pyplots/mixed_integer_results.py +58 -0
- rtc_tools-2.8.0a0/doc/examples/pyplots/pumped_hydropower_system_results.py +75 -0
- rtc_tools-2.8.0a0/doc/examples/pyplots/simulation_results.py +67 -0
- rtc_tools-2.8.0a0/doc/examples/simulation/custom_equation.rst +40 -0
- rtc_tools-2.8.0a0/doc/examples/simulation/setpoint.rst +213 -0
- rtc_tools-2.8.0a0/doc/examples/simulation.rst +10 -0
- rtc_tools-2.8.0a0/doc/examples.rst +10 -0
- rtc_tools-2.8.0a0/doc/getting-started.rst +142 -0
- rtc_tools-2.8.0a0/doc/images/Lake-Hartwell-24012016.jpg +0 -0
- rtc_tools-2.8.0a0/doc/images/PumpedStoragePlant_openmodelica.png +0 -0
- rtc_tools-2.8.0a0/doc/images/Woudagemaal.jpg +0 -0
- rtc_tools-2.8.0a0/doc/images/basic_example_console.png +0 -0
- rtc_tools-2.8.0a0/doc/images/cascading_channels_omedit.png +0 -0
- rtc_tools-2.8.0a0/doc/images/channel_impulse_xs.png +0 -0
- rtc_tools-2.8.0a0/doc/images/channel_wave_damping_omedit.png +0 -0
- rtc_tools-2.8.0a0/doc/images/graig-coch-2117306_640.jpg +0 -0
- rtc_tools-2.8.0a0/doc/images/integrator_delay_modelica.png +0 -0
- rtc_tools-2.8.0a0/doc/images/lavant-2976738_1280.jpg +0 -0
- rtc_tools-2.8.0a0/doc/images/logo.png +0 -0
- rtc_tools-2.8.0a0/doc/images/orifice_vs_pump_openmodelica.png +0 -0
- rtc_tools-2.8.0a0/doc/images/pont-du-gard-1742029_1280.jpg +0 -0
- rtc_tools-2.8.0a0/doc/images/simple_storage_openmodelica.png +0 -0
- rtc_tools-2.8.0a0/doc/images/single_channel.png +0 -0
- rtc_tools-2.8.0a0/doc/images/single_channel_hec-ras.png +0 -0
- rtc_tools-2.8.0a0/doc/index.rst +45 -0
- rtc_tools-2.8.0a0/doc/make.bat +281 -0
- rtc_tools-2.8.0a0/doc/optimization/basics.rst +12 -0
- rtc_tools-2.8.0a0/doc/optimization/csv_io.rst +6 -0
- rtc_tools-2.8.0a0/doc/optimization/fews_io.rst +16 -0
- rtc_tools-2.8.0a0/doc/optimization/forecast_uncertainty.rst +10 -0
- rtc_tools-2.8.0a0/doc/optimization/goal_programming/converting_goals_to_constraints.rst +55 -0
- rtc_tools-2.8.0a0/doc/optimization/goal_programming/goals.rst +14 -0
- rtc_tools-2.8.0a0/doc/optimization/goal_programming/linearized_order.rst +14 -0
- rtc_tools-2.8.0a0/doc/optimization/goal_programming/main_idea.rst +70 -0
- rtc_tools-2.8.0a0/doc/optimization/goal_programming/minimize_absolute_value.rst +14 -0
- rtc_tools-2.8.0a0/doc/optimization/homotopy.rst +8 -0
- rtc_tools-2.8.0a0/doc/optimization/initial_state_estimation.rst +6 -0
- rtc_tools-2.8.0a0/doc/optimization/linearization.rst +6 -0
- rtc_tools-2.8.0a0/doc/optimization/lookup_tables.rst +10 -0
- rtc_tools-2.8.0a0/doc/optimization/modelica_models.rst +8 -0
- rtc_tools-2.8.0a0/doc/optimization/multi_objective.rst +13 -0
- rtc_tools-2.8.0a0/doc/optimization/time_discretization.rst +6 -0
- rtc_tools-2.8.0a0/doc/optimization.rst +19 -0
- rtc_tools-2.8.0a0/doc/simulation/basics.rst +8 -0
- rtc_tools-2.8.0a0/doc/simulation/csv_io.rst +6 -0
- rtc_tools-2.8.0a0/doc/simulation/fews_io.rst +6 -0
- rtc_tools-2.8.0a0/doc/simulation.rst +15 -0
- rtc_tools-2.8.0a0/examples/basic/input/initial_state.csv +2 -0
- rtc_tools-2.8.0a0/examples/basic/input/timeseries_import.csv +13 -0
- rtc_tools-2.8.0a0/examples/basic/model/Example.mo +15 -0
- rtc_tools-2.8.0a0/examples/basic/reference_output/timeseries_export.csv +13 -0
- rtc_tools-2.8.0a0/examples/basic/src/example.py +29 -0
- rtc_tools-2.8.0a0/examples/cascading_channels/input/initial_state.csv +2 -0
- rtc_tools-2.8.0a0/examples/cascading_channels/input/timeseries_import.csv +49 -0
- rtc_tools-2.8.0a0/examples/cascading_channels/model/.gitignore +1 -0
- rtc_tools-2.8.0a0/examples/cascading_channels/model/Example.mo +70 -0
- rtc_tools-2.8.0a0/examples/cascading_channels/reference_output/timeseries_export.csv +49 -0
- rtc_tools-2.8.0a0/examples/cascading_channels/src/example.py +90 -0
- rtc_tools-2.8.0a0/examples/channel_pulse/HEC-RAS.zip +0 -0
- rtc_tools-2.8.0a0/examples/channel_pulse/input/timeseries_import.csv +192 -0
- rtc_tools-2.8.0a0/examples/channel_pulse/model/Example.mo +41 -0
- rtc_tools-2.8.0a0/examples/channel_pulse/reference_output/HEC-RAS_export.csv +192 -0
- rtc_tools-2.8.0a0/examples/channel_pulse/reference_output/timeseries_export.csv +192 -0
- rtc_tools-2.8.0a0/examples/channel_pulse/reference_output/timeseries_export_inertial_wave.csv +192 -0
- rtc_tools-2.8.0a0/examples/channel_pulse/reference_output/timeseries_export_inertial_wave_semi_implicit.csv +192 -0
- rtc_tools-2.8.0a0/examples/channel_pulse/reference_output/timeseries_export_saint_venant.csv +192 -0
- rtc_tools-2.8.0a0/examples/channel_pulse/reference_output/timeseries_export_saint_venant_upwind.csv +192 -0
- rtc_tools-2.8.0a0/examples/channel_pulse/src/example.py +90 -0
- rtc_tools-2.8.0a0/examples/channel_wave_damping/input/timeseries_import.csv +119 -0
- rtc_tools-2.8.0a0/examples/channel_wave_damping/model/Example.mo +70 -0
- rtc_tools-2.8.0a0/examples/channel_wave_damping/model/ExampleLocalControl.mo +24 -0
- rtc_tools-2.8.0a0/examples/channel_wave_damping/model/ExampleOptimization.mo +5 -0
- rtc_tools-2.8.0a0/examples/channel_wave_damping/model/PIDController.mo +17 -0
- rtc_tools-2.8.0a0/examples/channel_wave_damping/output/.gitignore +0 -0
- rtc_tools-2.8.0a0/examples/channel_wave_damping/reference_output/timeseries_export.csv +703 -0
- rtc_tools-2.8.0a0/examples/channel_wave_damping/reference_output/timeseries_export_local_control.csv +703 -0
- rtc_tools-2.8.0a0/examples/channel_wave_damping/src/example_local_control.py +27 -0
- rtc_tools-2.8.0a0/examples/channel_wave_damping/src/example_optimization.py +52 -0
- rtc_tools-2.8.0a0/examples/channel_wave_damping/src/steady_state_initialization_mixin.py +14 -0
- rtc_tools-2.8.0a0/examples/channel_wave_damping/src/step_size_parameter_mixin.py +16 -0
- rtc_tools-2.8.0a0/examples/ensemble/input/.gitignore +2 -0
- rtc_tools-2.8.0a0/examples/ensemble/input/ensemble.csv +3 -0
- rtc_tools-2.8.0a0/examples/ensemble/input/forecast1/.gitignore +1 -0
- rtc_tools-2.8.0a0/examples/ensemble/input/forecast1/initial_state.csv +2 -0
- rtc_tools-2.8.0a0/examples/ensemble/input/forecast1/timeseries_import.csv +13 -0
- rtc_tools-2.8.0a0/examples/ensemble/input/forecast2/.gitignore +1 -0
- rtc_tools-2.8.0a0/examples/ensemble/input/forecast2/initial_state.csv +2 -0
- rtc_tools-2.8.0a0/examples/ensemble/input/forecast2/timeseries_import.csv +13 -0
- rtc_tools-2.8.0a0/examples/ensemble/input/lookup_tables/.gitignore +1 -0
- rtc_tools-2.8.0a0/examples/ensemble/input/lookup_tables/curvefit_options.ini +2 -0
- rtc_tools-2.8.0a0/examples/ensemble/input/lookup_tables/storage_V.csv +8 -0
- rtc_tools-2.8.0a0/examples/ensemble/model/Example.mo +13 -0
- rtc_tools-2.8.0a0/examples/ensemble/output/forecast1/.gitignore +0 -0
- rtc_tools-2.8.0a0/examples/ensemble/output/forecast2/.gitignore +0 -0
- rtc_tools-2.8.0a0/examples/ensemble/reference_output/forecast1/timeseries_export.csv +13 -0
- rtc_tools-2.8.0a0/examples/ensemble/reference_output/forecast2/timeseries_export.csv +13 -0
- rtc_tools-2.8.0a0/examples/ensemble/src/example.py +144 -0
- rtc_tools-2.8.0a0/examples/goal_programming/input/initial_state.csv +2 -0
- rtc_tools-2.8.0a0/examples/goal_programming/input/timeseries_import.csv +22 -0
- rtc_tools-2.8.0a0/examples/goal_programming/model/Example.mo +25 -0
- rtc_tools-2.8.0a0/examples/goal_programming/output/.gitignore +0 -0
- rtc_tools-2.8.0a0/examples/goal_programming/reference_output/timeseries_export.csv +22 -0
- rtc_tools-2.8.0a0/examples/goal_programming/src/example.py +181 -0
- rtc_tools-2.8.0a0/examples/integrator_delay/input/initial_state.csv +2 -0
- rtc_tools-2.8.0a0/examples/integrator_delay/input/timeseries_import.csv +11 -0
- rtc_tools-2.8.0a0/examples/integrator_delay/input/timeseries_import_simulation.csv +11 -0
- rtc_tools-2.8.0a0/examples/integrator_delay/model/Example.mo +31 -0
- rtc_tools-2.8.0a0/examples/integrator_delay/src/example.py +49 -0
- rtc_tools-2.8.0a0/examples/lookup_table/input/.gitignore +2 -0
- rtc_tools-2.8.0a0/examples/lookup_table/input/initial_state.csv +2 -0
- rtc_tools-2.8.0a0/examples/lookup_table/input/lookup_tables/.gitignore +1 -0
- rtc_tools-2.8.0a0/examples/lookup_table/input/lookup_tables/curvefit_options.ini +2 -0
- rtc_tools-2.8.0a0/examples/lookup_table/input/lookup_tables/storage_V.csv +8 -0
- rtc_tools-2.8.0a0/examples/lookup_table/input/timeseries_import.csv +13 -0
- rtc_tools-2.8.0a0/examples/lookup_table/model/Example.mo +13 -0
- rtc_tools-2.8.0a0/examples/lookup_table/output/.gitignore +0 -0
- rtc_tools-2.8.0a0/examples/lookup_table/reference_output/timeseries_export.csv +13 -0
- rtc_tools-2.8.0a0/examples/lookup_table/src/example.py +116 -0
- rtc_tools-2.8.0a0/examples/mixed_integer/input/initial_state.csv +2 -0
- rtc_tools-2.8.0a0/examples/mixed_integer/input/timeseries_import.csv +22 -0
- rtc_tools-2.8.0a0/examples/mixed_integer/model/Example.mo +25 -0
- rtc_tools-2.8.0a0/examples/mixed_integer/output/.gitignore +0 -0
- rtc_tools-2.8.0a0/examples/mixed_integer/reference_output/timeseries_export.csv +22 -0
- rtc_tools-2.8.0a0/examples/mixed_integer/src/example.py +88 -0
- rtc_tools-2.8.0a0/examples/pumped_hydropower_system/input/initial_state.csv +2 -0
- rtc_tools-2.8.0a0/examples/pumped_hydropower_system/input/timeseries_import.csv +22 -0
- rtc_tools-2.8.0a0/examples/pumped_hydropower_system/model/PumpedStoragePlant.mo +80 -0
- rtc_tools-2.8.0a0/examples/pumped_hydropower_system/output/.gitignore +0 -0
- rtc_tools-2.8.0a0/examples/pumped_hydropower_system/reference_output/timeseries_export.csv +22 -0
- rtc_tools-2.8.0a0/examples/pumped_hydropower_system/src/example.py +154 -0
- rtc_tools-2.8.0a0/examples/simulation/input/parameters.csv +2 -0
- rtc_tools-2.8.0a0/examples/simulation/input/timeseries_import.csv +13 -0
- rtc_tools-2.8.0a0/examples/simulation/model/Example.mo +19 -0
- rtc_tools-2.8.0a0/examples/simulation/output/.gitignore +0 -0
- rtc_tools-2.8.0a0/examples/simulation/reference_output/timeseries_export.csv +13 -0
- rtc_tools-2.8.0a0/examples/simulation/src/example.py +50 -0
- rtc_tools-2.8.0a0/examples/simulation_with_custom_equations/input/initial_state.csv +2 -0
- rtc_tools-2.8.0a0/examples/simulation_with_custom_equations/input/timeseries_import.csv +7 -0
- rtc_tools-2.8.0a0/examples/simulation_with_custom_equations/model/SimpleModel.mo +6 -0
- rtc_tools-2.8.0a0/examples/simulation_with_custom_equations/output/.gitignore +0 -0
- rtc_tools-2.8.0a0/examples/simulation_with_custom_equations/reference_output/timeseries_export.csv +7 -0
- rtc_tools-2.8.0a0/examples/simulation_with_custom_equations/src/simple_model.py +43 -0
- rtc_tools-2.8.0a0/examples/single_reservoir/input/initial_state.csv +2 -0
- rtc_tools-2.8.0a0/examples/single_reservoir/input/timeseries_import.csv +12 -0
- rtc_tools-2.8.0a0/examples/single_reservoir/model/single_reservoir.mo +15 -0
- rtc_tools-2.8.0a0/examples/single_reservoir/output/.gitignore +0 -0
- rtc_tools-2.8.0a0/examples/single_reservoir/reference_output/timeseries_export.csv +12 -0
- rtc_tools-2.8.0a0/examples/single_reservoir/src/single_reservoir.py +76 -0
- rtc_tools-2.8.0a0/pyproject.toml +106 -0
- rtc_tools-2.8.0a0/sonar-project.properties +17 -0
- rtc_tools-2.8.0a0/src/rtctools/__init__.py +3 -0
- rtc_tools-2.8.0a0/src/rtctools/_internal/__init__.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/_internal/casadi_helpers.py +13 -5
- rtc_tools-2.8.0a0/src/rtctools/_internal/ensemble_bounds_decorator.py +71 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/data/netcdf.py +16 -15
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/data/pi.py +5 -2
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/data/rtc.py +3 -3
- rtc_tools-2.8.0a0/src/rtctools/optimization/__init__.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/collocated_integrated_optimization_problem.py +75 -29
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/control_tree_mixin.py +9 -6
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/csv_lookup_table_mixin.py +5 -3
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/csv_mixin.py +3 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/goal_programming_mixin.py +11 -5
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/goal_programming_mixin_base.py +29 -4
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/io_mixin.py +11 -5
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/min_abs_goal_programming_mixin.py +9 -3
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/modelica_mixin.py +23 -10
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/optimization_problem.py +53 -11
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/pi_mixin.py +3 -3
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/single_pass_goal_programming_mixin.py +9 -3
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/rtctoolsapp.py +15 -13
- rtc_tools-2.8.0a0/src/rtctools/simulation/__init__.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/simulation/io_mixin.py +1 -1
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/simulation/pi_mixin.py +3 -3
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/simulation/simulation_problem.py +25 -12
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/util.py +1 -0
- rtc_tools-2.8.0a0/src/rtctools/version.py +51 -0
- rtc_tools-2.8.0a0/tests/__init__.py +0 -0
- rtc_tools-2.8.0a0/tests/data/__init__.py +0 -0
- rtc_tools-2.8.0a0/tests/data/data/.gitignore +2 -0
- rtc_tools-2.8.0a0/tests/data/data/curve.dat +0 -0
- rtc_tools-2.8.0a0/tests/data/data/diag.xml +22 -0
- rtc_tools-2.8.0a0/tests/data/data/initial_state_0.csv +2 -0
- rtc_tools-2.8.0a0/tests/data/data/initial_state_1.csv +2 -0
- rtc_tools-2.8.0a0/tests/data/data/look_up_table_0.csv +8 -0
- rtc_tools-2.8.0a0/tests/data/data/look_up_table_1.csv +8 -0
- rtc_tools-2.8.0a0/tests/data/data/look_up_table_2.csv +8 -0
- rtc_tools-2.8.0a0/tests/data/data/pi_run.xml +8 -0
- rtc_tools-2.8.0a0/tests/data/data/rtcDataConfig.xml +10 -0
- rtc_tools-2.8.0a0/tests/data/data/rtcParameterConfig.xml +16 -0
- rtc_tools-2.8.0a0/tests/data/data/surface.dat +0 -0
- rtc_tools-2.8.0a0/tests/data/data/timeseries_export.xml +16 -0
- rtc_tools-2.8.0a0/tests/data/data/timeseries_import.bin +0 -0
- rtc_tools-2.8.0a0/tests/data/data/timeseries_import.xml +28 -0
- rtc_tools-2.8.0a0/tests/data/data/timeseries_import_0.csv +22 -0
- rtc_tools-2.8.0a0/tests/data/data/timeseries_import_1.csv +22 -0
- rtc_tools-2.8.0a0/tests/data/data/timeseries_import_2.csv +22 -0
- rtc_tools-2.8.0a0/tests/data/data/timeseries_import_ensemble.nc +0 -0
- rtc_tools-2.8.0a0/tests/data/data/timeseries_import_ensemble.xml +51 -0
- rtc_tools-2.8.0a0/tests/data/data/timeseries_import_ensemblesize1_noRealization.nc +0 -0
- rtc_tools-2.8.0a0/tests/data/data/timeseries_import_ensemblesize1_withRealization.nc +0 -0
- rtc_tools-2.8.0a0/tests/data/data/timeseries_import_neq.xml +24 -0
- rtc_tools-2.8.0a0/tests/data/data_path.py +12 -0
- rtc_tools-2.8.0a0/tests/data/test_csv.py +56 -0
- rtc_tools-2.8.0a0/tests/data/test_data.py +195 -0
- rtc_tools-2.8.0a0/tests/data/test_diag.py +24 -0
- rtc_tools-2.8.0a0/tests/data/test_interpolate.py +125 -0
- rtc_tools-2.8.0a0/tests/data/test_netcdf.py +721 -0
- rtc_tools-2.8.0a0/tests/data/test_storage.py +156 -0
- rtc_tools-2.8.0a0/tests/data_path.py +12 -0
- rtc_tools-2.8.0a0/tests/examples/__init__.py +0 -0
- rtc_tools-2.8.0a0/tests/examples/test_examples.py +77 -0
- rtc_tools-2.8.0a0/tests/internal/__init__.py +0 -0
- rtc_tools-2.8.0a0/tests/internal/test_alias_tools.py +137 -0
- rtc_tools-2.8.0a0/tests/optimization/__init__.py +0 -0
- rtc_tools-2.8.0a0/tests/optimization/data/.gitignore +3 -0
- rtc_tools-2.8.0a0/tests/optimization/data/Model.mo +46 -0
- rtc_tools-2.8.0a0/tests/optimization/data/ModelAlgebraic.mo +8 -0
- rtc_tools-2.8.0a0/tests/optimization/data/ModelDebugChecks.mo +6 -0
- rtc_tools-2.8.0a0/tests/optimization/data/ModelDelay.mo +14 -0
- rtc_tools-2.8.0a0/tests/optimization/data/ModelMixedInteger.mo +8 -0
- rtc_tools-2.8.0a0/tests/optimization/data/ModelSymbolicParameters.mo +15 -0
- rtc_tools-2.8.0a0/tests/optimization/data/ModelWithInitial.mo +50 -0
- rtc_tools-2.8.0a0/tests/optimization/data/ModelWithInitialLinear.mo +38 -0
- rtc_tools-2.8.0a0/tests/optimization/data/ModelWithLookupTable.mo +4 -0
- rtc_tools-2.8.0a0/tests/optimization/data/SingleShootingModel.mo +17 -0
- rtc_tools-2.8.0a0/tests/optimization/data/ensemble.csv +3 -0
- rtc_tools-2.8.0a0/tests/optimization/data/initial_state.csv +2 -0
- rtc_tools-2.8.0a0/tests/optimization/data/lookup_tables/.gitignore +3 -0
- rtc_tools-2.8.0a0/tests/optimization/data/lookup_tables/curvefit_options.ini +5 -0
- rtc_tools-2.8.0a0/tests/optimization/data/lookup_tables/x_prime.csv +6 -0
- rtc_tools-2.8.0a0/tests/optimization/data/member0/.gitignore +2 -0
- rtc_tools-2.8.0a0/tests/optimization/data/member0/initial_state.csv +2 -0
- rtc_tools-2.8.0a0/tests/optimization/data/member0/parameters.csv +2 -0
- rtc_tools-2.8.0a0/tests/optimization/data/member0/timeseries_import.csv +23 -0
- rtc_tools-2.8.0a0/tests/optimization/data/member1/.gitignore +2 -0
- rtc_tools-2.8.0a0/tests/optimization/data/member1/initial_state.csv +2 -0
- rtc_tools-2.8.0a0/tests/optimization/data/member1/parameters.csv +2 -0
- rtc_tools-2.8.0a0/tests/optimization/data/member1/timeseries_import.csv +23 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/.gitignore +1 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/Model.mo +9 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_ensemble_sizes/ensemble.csv +5 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_ensemble_sizes/member0/timeseries_import.csv +6 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_ensemble_sizes/member1/timeseries_import.csv +6 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_ensemble_sizes/member2/timeseries_import.csv +6 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_ensemble_sizes/member3/timeseries_import.csv +6 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_ensemble_sizes/rtcDataConfig.xml +15 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_ensemble_sizes/rtcParameterConfig.xml +7 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_ensemble_sizes/timeseries_import.nc +0 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_ensemble_sizes/timeseries_import.xml +23 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_initial_date/ensemble.csv +3 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_initial_date/member0/timeseries_import.csv +6 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_initial_date/member1/timeseries_import.csv +6 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_initial_date/rtcDataConfig.xml +15 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_initial_date/rtcParameterConfig.xml +7 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_initial_date/timeseries_import.nc +0 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_initial_date/timeseries_import.xml +43 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_timestep/ensemble.csv +3 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_timestep/member0/timeseries_import.csv +6 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_timestep/member1/timeseries_import.csv +6 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_timestep/rtcDataConfig.xml +15 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_timestep/rtcParameterConfig.xml +7 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_timestep/timeseries_import.nc +0 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_timestep/timeseries_import.xml +43 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_values/ensemble.csv +3 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_values/member0/parameters.csv +2 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_values/member0/timeseries_import.csv +6 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_values/member1/parameters.csv +2 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_values/member1/timeseries_import.csv +6 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_values/rtcDataConfig.xml +15 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_values/rtcParameterConfig.xml +7 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_values/timeseries_import.nc +0 -0
- rtc_tools-2.8.0a0/tests/optimization/data/multiple_io_mixins/different_values/timeseries_import.xml +43 -0
- rtc_tools-2.8.0a0/tests/optimization/data/one-member-ensemble/ensemble.csv +2 -0
- rtc_tools-2.8.0a0/tests/optimization/data/one-member-ensemble/member0/.gitignore +2 -0
- rtc_tools-2.8.0a0/tests/optimization/data/one-member-ensemble/member0/initial_state.csv +2 -0
- rtc_tools-2.8.0a0/tests/optimization/data/one-member-ensemble/member0/parameters.csv +2 -0
- rtc_tools-2.8.0a0/tests/optimization/data/one-member-ensemble/member0/timeseries_import.csv +23 -0
- rtc_tools-2.8.0a0/tests/optimization/data/parameters.csv +2 -0
- rtc_tools-2.8.0a0/tests/optimization/data/rtcDataConfig.xml +59 -0
- rtc_tools-2.8.0a0/tests/optimization/data/rtcParameterConfig.xml +19 -0
- rtc_tools-2.8.0a0/tests/optimization/data/rtcParameterConfig_extra.xml +22 -0
- rtc_tools-2.8.0a0/tests/optimization/data/timeseries_import.csv +23 -0
- rtc_tools-2.8.0a0/tests/optimization/data/timeseries_import.nc +0 -0
- rtc_tools-2.8.0a0/tests/optimization/data/timeseries_import.xml +178 -0
- rtc_tools-2.8.0a0/tests/optimization/data_path.py +12 -0
- rtc_tools-2.8.0a0/tests/optimization/test_control_tree_mixin.py +259 -0
- rtc_tools-2.8.0a0/tests/optimization/test_csv_lookuptable_mixin.py +94 -0
- rtc_tools-2.8.0a0/tests/optimization/test_csv_mixin.py +127 -0
- rtc_tools-2.8.0a0/tests/optimization/test_debug_checks.py +219 -0
- rtc_tools-2.8.0a0/tests/optimization/test_delay_expressions.py +97 -0
- rtc_tools-2.8.0a0/tests/optimization/test_goal_programming.py +1177 -0
- rtc_tools-2.8.0a0/tests/optimization/test_integration.py +457 -0
- rtc_tools-2.8.0a0/tests/optimization/test_interpolation.py +444 -0
- rtc_tools-2.8.0a0/tests/optimization/test_io_mixin.py +323 -0
- rtc_tools-2.8.0a0/tests/optimization/test_linearized_order_goal_programming_mixin.py +160 -0
- rtc_tools-2.8.0a0/tests/optimization/test_min_abs_goal_programming.py +158 -0
- rtc_tools-2.8.0a0/tests/optimization/test_modelica_mixin.py +679 -0
- rtc_tools-2.8.0a0/tests/optimization/test_multiple_io_mixins.py +182 -0
- rtc_tools-2.8.0a0/tests/optimization/test_netcdf_mixin.py +219 -0
- rtc_tools-2.8.0a0/tests/optimization/test_optimization_problem.py +87 -0
- rtc_tools-2.8.0a0/tests/optimization/test_path_extra_variables.py +309 -0
- rtc_tools-2.8.0a0/tests/optimization/test_pi_mixin.py +108 -0
- rtc_tools-2.8.0a0/tests/optimization/test_planning_and_control_tree_mixin.py +106 -0
- rtc_tools-2.8.0a0/tests/optimization/test_planning_mixin.py +94 -0
- rtc_tools-2.8.0a0/tests/optimization/test_problem_class_check.py +32 -0
- rtc_tools-2.8.0a0/tests/optimization/test_single_pass_goal_programming.py +250 -0
- rtc_tools-2.8.0a0/tests/optimization/test_solvers.py +78 -0
- rtc_tools-2.8.0a0/tests/optimization/test_timeseries.py +50 -0
- rtc_tools-2.8.0a0/tests/optimization/test_vector_constraints_variables.py +789 -0
- rtc_tools-2.8.0a0/tests/optimization/test_vector_goals.py +301 -0
- rtc_tools-2.8.0a0/tests/simulation/__init__.py +0 -0
- rtc_tools-2.8.0a0/tests/simulation/data/.gitignore +2 -0
- rtc_tools-2.8.0a0/tests/simulation/data/Model.mo +45 -0
- rtc_tools-2.8.0a0/tests/simulation/data/ModelCustomEquation.mo +7 -0
- rtc_tools-2.8.0a0/tests/simulation/data/Model_base.mo +10 -0
- rtc_tools-2.8.0a0/tests/simulation/data/Model_delay.mo +15 -0
- rtc_tools-2.8.0a0/tests/simulation/data/Model_nominal.mo +4 -0
- rtc_tools-2.8.0a0/tests/simulation/data/infeasible_initial_value/initial_state.csv +2 -0
- rtc_tools-2.8.0a0/tests/simulation/data/infeasible_initial_value/model_infeasible.mo +7 -0
- rtc_tools-2.8.0a0/tests/simulation/data/infeasible_initial_value/model_out_of_bounds.mo +5 -0
- rtc_tools-2.8.0a0/tests/simulation/data/infeasible_initial_value/model_out_of_sym_bounds.mo +6 -0
- rtc_tools-2.8.0a0/tests/simulation/data/infeasible_initial_value/model_with_bounds.mo +5 -0
- rtc_tools-2.8.0a0/tests/simulation/data/infeasible_initial_value/model_with_input_series.mo +6 -0
- rtc_tools-2.8.0a0/tests/simulation/data/infeasible_initial_value/model_with_sym_ystart.mo +6 -0
- rtc_tools-2.8.0a0/tests/simulation/data/infeasible_initial_value/model_with_xstart.mo +5 -0
- rtc_tools-2.8.0a0/tests/simulation/data/infeasible_initial_value/model_with_zero_xstart.mo +5 -0
- rtc_tools-2.8.0a0/tests/simulation/data/infeasible_initial_value/timeseries_import.csv +3 -0
- rtc_tools-2.8.0a0/tests/simulation/data/infeasible_initial_value/timeseries_import_with_x.csv +3 -0
- rtc_tools-2.8.0a0/tests/simulation/data/initial_state.csv +2 -0
- rtc_tools-2.8.0a0/tests/simulation/data/parameters.csv +2 -0
- rtc_tools-2.8.0a0/tests/simulation/data/rtcDataConfig.xml +39 -0
- rtc_tools-2.8.0a0/tests/simulation/data/rtcParameterConfig.xml +19 -0
- rtc_tools-2.8.0a0/tests/simulation/data/timeseries_import.csv +23 -0
- rtc_tools-2.8.0a0/tests/simulation/data/timeseries_import.xml +143 -0
- rtc_tools-2.8.0a0/tests/simulation/data_path.py +12 -0
- rtc_tools-2.8.0a0/tests/simulation/test_csv_mixin.py +102 -0
- rtc_tools-2.8.0a0/tests/simulation/test_io_mixin.py +121 -0
- rtc_tools-2.8.0a0/tests/simulation/test_pi_mixin.py +31 -0
- rtc_tools-2.8.0a0/tests/simulation/test_problem_class_check.py +32 -0
- rtc_tools-2.8.0a0/tests/simulation/test_simulation.py +571 -0
- rtc_tools-2.8.0a0/tox-teamcity.ini +17 -0
- rtc_tools-2.8.0a0/tox.ini +24 -0
- rtc_tools-2.8.0a0/uv.lock +982 -0
- rtc_tools-2.8.0a0/xsd/rtcDataConfig.xsd +115 -0
- rtc_tools-2.8.0a0/xsd/rtcSharedTypes.xsd +116 -0
- rtc_tools-2.7.0.dev1/MANIFEST.in +0 -3
- rtc_tools-2.7.0.dev1/PKG-INFO +0 -51
- rtc_tools-2.7.0.dev1/pyproject.toml +0 -22
- rtc_tools-2.7.0.dev1/setup.cfg +0 -18
- rtc_tools-2.7.0.dev1/setup.py +0 -67
- rtc_tools-2.7.0.dev1/src/rtc_tools.egg-info/PKG-INFO +0 -51
- rtc_tools-2.7.0.dev1/src/rtc_tools.egg-info/SOURCES.txt +0 -58
- rtc_tools-2.7.0.dev1/src/rtc_tools.egg-info/dependency_links.txt +0 -1
- rtc_tools-2.7.0.dev1/src/rtc_tools.egg-info/entry_points.txt +0 -3
- rtc_tools-2.7.0.dev1/src/rtc_tools.egg-info/requires.txt +0 -12
- rtc_tools-2.7.0.dev1/src/rtc_tools.egg-info/top_level.txt +0 -1
- rtc_tools-2.7.0.dev1/src/rtctools/__init__.py +0 -5
- rtc_tools-2.7.0.dev1/src/rtctools/_version.py +0 -21
- rtc_tools-2.7.0.dev1/versioneer.py +0 -2277
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/COPYING.LESSER +0 -0
- /rtc_tools-2.7.0.dev1/src/rtctools/_internal/__init__.py → /rtc_tools-2.8.0a0/examples/basic/output/.gitignore +0 -0
- /rtc_tools-2.7.0.dev1/src/rtctools/optimization/__init__.py → /rtc_tools-2.8.0a0/examples/cascading_channels/output/.gitignore +0 -0
- /rtc_tools-2.7.0.dev1/src/rtctools/simulation/__init__.py → /rtc_tools-2.8.0a0/examples/channel_pulse/output/.gitignore +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/_internal/alias_tools.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/_internal/caching.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/_internal/debug_check_helpers.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/data/__init__.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/data/csv.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/data/interpolation/__init__.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/data/interpolation/bspline.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/data/interpolation/bspline1d.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/data/interpolation/bspline2d.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/data/storage.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/homotopy_mixin.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/initial_state_estimation_mixin.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/linearization_mixin.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/linearized_order_goal_programming_mixin.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/netcdf_mixin.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/planning_mixin.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/optimization/timeseries.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/src/rtctools/simulation/csv_mixin.py +0 -0
- {rtc_tools-2.7.0.dev1 → rtc_tools-2.8.0a0}/tests/test_case.py +0 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# This file contains revisions to be ignored by git blame.
|
|
2
|
+
# These revisions are expected to be formatting-only changes.
|
|
3
|
+
#
|
|
4
|
+
# Calling `git blame --ignore-revs-file .git-blame-ignore-revs` will
|
|
5
|
+
# tell git blame to ignore changes made by these revisions when assigning
|
|
6
|
+
# assigning blame, as if the change never happened.
|
|
7
|
+
#
|
|
8
|
+
# You can enable this as a default for your local repository by running
|
|
9
|
+
# `git config blame.ignoreRevsFile .git-blame-ignore-revs`
|
|
10
|
+
# This will probably be automatically picked by your IDE
|
|
11
|
+
#
|
|
12
|
+
# Important: if you are switching to the branch without this file,
|
|
13
|
+
# `git blame` will fail with an error
|
|
14
|
+
#
|
|
15
|
+
# Guidelines:
|
|
16
|
+
# - Only large automated refactorings are expected to be included in this file.
|
|
17
|
+
# Do not add new revision just because it feels unimportant
|
|
18
|
+
# - Add a link to the relevant issue/MR
|
|
19
|
+
|
|
20
|
+
# START https://github.com/Deltares/rtc-tools/issues/1536
|
|
21
|
+
2503c49901bc4a7a3dc86d46b234e8973ed2feb5
|
|
22
|
+
476aeb27d164cebe3781de7f9a40b04b839a5220
|
|
23
|
+
cf540b1ad8fc39909e6e05e7656901e26daefb62
|
|
24
|
+
c623c053a97506b120ab546aa406b4706f2cf200
|
|
25
|
+
cef7507e09c0f187ad209e949575a04b7204cbe9
|
|
26
|
+
30868b64e85c56d971cbccb622466a1fe46bcd82
|
|
27
|
+
8929d6eac903af87ef982566cb07f45369eedda1
|
|
28
|
+
ee870e42deda8974e482e96995c5c136a8cfe07c
|
|
29
|
+
7908178e50ababa32534d205d62d525049b60dc3
|
|
30
|
+
# END https://github.com/Deltares/rtc-tools/issues/1536
|
|
31
|
+
|
|
32
|
+
# START https://github.com/Deltares/rtc-tools/pull/1652
|
|
33
|
+
3df9a9ed5dfcbb6855ee8f4a0d22c4dec9f77507
|
|
34
|
+
c4e20c6c8debaa886eba596c468ee5a438bf73dd
|
|
35
|
+
# END https://github.com/Deltares/rtc-tools/pull/1652
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
name: "Setup Python Environment"
|
|
2
|
+
description: "Sets up Python environment with uv package manager"
|
|
3
|
+
|
|
4
|
+
inputs:
|
|
5
|
+
uv-version:
|
|
6
|
+
description: "Version of uv to install"
|
|
7
|
+
required: false
|
|
8
|
+
default: "0.7.9"
|
|
9
|
+
dependency-groups:
|
|
10
|
+
description: "Space-separated list of dependency groups to install (e.g. 'deploy tests')"
|
|
11
|
+
required: false
|
|
12
|
+
default: ""
|
|
13
|
+
|
|
14
|
+
runs:
|
|
15
|
+
using: "composite"
|
|
16
|
+
steps:
|
|
17
|
+
- name: Install uv
|
|
18
|
+
uses: astral-sh/setup-uv@v5
|
|
19
|
+
with:
|
|
20
|
+
version: ${{ inputs.uv-version }}
|
|
21
|
+
enable-cache: true
|
|
22
|
+
cache-dependency-glob: "uv.lock"
|
|
23
|
+
|
|
24
|
+
- name: Install dependencies
|
|
25
|
+
shell: bash
|
|
26
|
+
run: |
|
|
27
|
+
CMD="uv sync --frozen --no-dev"
|
|
28
|
+
if [[ -n "${{ inputs.dependency-groups }}" ]]; then
|
|
29
|
+
for group in ${{ inputs.dependency-groups }}; do
|
|
30
|
+
CMD="$CMD --group $group"
|
|
31
|
+
done
|
|
32
|
+
fi
|
|
33
|
+
$CMD
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
name: deltares/rtc-tools
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
workflow_dispatch:
|
|
6
|
+
concurrency:
|
|
7
|
+
group: "${{ github.ref }}"
|
|
8
|
+
cancel-in-progress: true
|
|
9
|
+
# env:
|
|
10
|
+
# PYPI_USER: "${{ secrets.PYPI_USER }}"
|
|
11
|
+
# PYPI_PASSWORD: "${{ secrets.PYPI_PASSWORD }}"
|
|
12
|
+
# CODECOV_TOKEN: "${{ secrets.CODECOV_TOKEN}}"
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
style:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
timeout-minutes: 30
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v4
|
|
20
|
+
- uses: ./.github/actions/setup-python
|
|
21
|
+
with:
|
|
22
|
+
dependency-groups: "style"
|
|
23
|
+
- run: uv run pre-commit run --all-files --show-diff-on-failure
|
|
24
|
+
|
|
25
|
+
build:
|
|
26
|
+
needs: [style]
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
container:
|
|
29
|
+
image: python:3.9
|
|
30
|
+
timeout-minutes: 30
|
|
31
|
+
steps:
|
|
32
|
+
- uses: actions/checkout@v4.1.0
|
|
33
|
+
with:
|
|
34
|
+
fetch-depth: 0
|
|
35
|
+
- uses: ./.github/actions/setup-python
|
|
36
|
+
- run: uv build
|
|
37
|
+
- uses: actions/upload-artifact@v4
|
|
38
|
+
if: success()
|
|
39
|
+
with:
|
|
40
|
+
name: "${{ github.job }}"
|
|
41
|
+
retention-days: 7
|
|
42
|
+
path: dist/
|
|
43
|
+
|
|
44
|
+
test-linux:
|
|
45
|
+
needs: build
|
|
46
|
+
runs-on: ubuntu-latest
|
|
47
|
+
container:
|
|
48
|
+
image: python:${{ matrix.version }}
|
|
49
|
+
timeout-minutes: 30
|
|
50
|
+
env:
|
|
51
|
+
TOXENV: py
|
|
52
|
+
strategy:
|
|
53
|
+
matrix:
|
|
54
|
+
version: # Also update sonar-project.properties when updating the python versions.
|
|
55
|
+
- '3.9'
|
|
56
|
+
- '3.10'
|
|
57
|
+
- '3.11'
|
|
58
|
+
- '3.12'
|
|
59
|
+
- '3.13'
|
|
60
|
+
steps:
|
|
61
|
+
- uses: actions/checkout@v4
|
|
62
|
+
- uses: ./.github/actions/setup-python
|
|
63
|
+
with:
|
|
64
|
+
dependency-groups: "tests"
|
|
65
|
+
- run: uv run tox -vv
|
|
66
|
+
|
|
67
|
+
coverage:
|
|
68
|
+
needs: build
|
|
69
|
+
runs-on: ubuntu-latest
|
|
70
|
+
container:
|
|
71
|
+
image: python:3.9
|
|
72
|
+
timeout-minutes: 30
|
|
73
|
+
env:
|
|
74
|
+
TOXENV: coverage
|
|
75
|
+
steps:
|
|
76
|
+
- uses: actions/checkout@v4.1.0
|
|
77
|
+
- uses: ./.github/actions/setup-python
|
|
78
|
+
with:
|
|
79
|
+
dependency-groups: "tests"
|
|
80
|
+
- run: uv run tox -vv
|
|
81
|
+
- name: Upload coverage report
|
|
82
|
+
uses: actions/upload-artifact@v4
|
|
83
|
+
if: success()
|
|
84
|
+
with:
|
|
85
|
+
name: coverage-report
|
|
86
|
+
retention-days: 7
|
|
87
|
+
path: coverage.xml
|
|
88
|
+
|
|
89
|
+
sonar:
|
|
90
|
+
needs: [coverage]
|
|
91
|
+
runs-on: ubuntu-latest
|
|
92
|
+
steps:
|
|
93
|
+
- uses: actions/checkout@v4
|
|
94
|
+
with:
|
|
95
|
+
fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis.
|
|
96
|
+
- name: Download coverage report
|
|
97
|
+
uses: actions/download-artifact@v4
|
|
98
|
+
with:
|
|
99
|
+
name: coverage-report
|
|
100
|
+
- name: SonarQube Scan
|
|
101
|
+
uses: SonarSource/sonarqube-scan-action@v5
|
|
102
|
+
env:
|
|
103
|
+
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
|
104
|
+
|
|
105
|
+
examples-linux:
|
|
106
|
+
needs: build
|
|
107
|
+
runs-on: ubuntu-latest
|
|
108
|
+
container:
|
|
109
|
+
image: python:${{ matrix.version }}
|
|
110
|
+
if: startsWith(github.ref, 'refs/tags')
|
|
111
|
+
timeout-minutes: 30
|
|
112
|
+
env:
|
|
113
|
+
TOXENV: examples
|
|
114
|
+
strategy:
|
|
115
|
+
matrix:
|
|
116
|
+
version:
|
|
117
|
+
- '3.9'
|
|
118
|
+
- '3.10'
|
|
119
|
+
- '3.11'
|
|
120
|
+
- '3.12'
|
|
121
|
+
- '3.13'
|
|
122
|
+
steps:
|
|
123
|
+
- uses: actions/checkout@v4.1.0
|
|
124
|
+
- uses: ./.github/actions/setup-python
|
|
125
|
+
with:
|
|
126
|
+
dependency-groups: "tests"
|
|
127
|
+
- run: uv run tox -vv
|
|
128
|
+
|
|
129
|
+
deploy:
|
|
130
|
+
needs: [test-linux, coverage, examples-linux]
|
|
131
|
+
runs-on: ubuntu-latest
|
|
132
|
+
if: ${{ github.event_name == 'push' && startsWith(github.ref, 'refs/tags/2.') }}
|
|
133
|
+
permissions:
|
|
134
|
+
id-token: write # Required for OIDC PyPI publishing
|
|
135
|
+
contents: read
|
|
136
|
+
steps:
|
|
137
|
+
- name: Check out code
|
|
138
|
+
uses: actions/checkout@v4
|
|
139
|
+
|
|
140
|
+
- name: Set up Python and uv
|
|
141
|
+
uses: ./.github/actions/setup-python
|
|
142
|
+
|
|
143
|
+
- name: Build package
|
|
144
|
+
run: uv build
|
|
145
|
+
|
|
146
|
+
- name: Publish package distributions to PyPI
|
|
147
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__
|
|
3
|
+
*.py[cod]
|
|
4
|
+
|
|
5
|
+
# C extensions
|
|
6
|
+
*.c
|
|
7
|
+
*.so
|
|
8
|
+
|
|
9
|
+
# Distribution & Packaging
|
|
10
|
+
.eggs
|
|
11
|
+
build
|
|
12
|
+
dist
|
|
13
|
+
src/*.egg-info
|
|
14
|
+
|
|
15
|
+
# Testing & Coverage
|
|
16
|
+
.pytest_cache
|
|
17
|
+
.tox
|
|
18
|
+
.coverage
|
|
19
|
+
|
|
20
|
+
# Example output
|
|
21
|
+
examples/**/output/**/*.csv
|
|
22
|
+
|
|
23
|
+
# Model caches
|
|
24
|
+
*.pymoca_cache
|
|
25
|
+
|
|
26
|
+
# Editors
|
|
27
|
+
.idea
|
|
28
|
+
.ipynb_checkpoints
|
|
29
|
+
.vscode
|
|
30
|
+
|
|
31
|
+
# Virtual environment
|
|
32
|
+
.venv
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
exclude: |
|
|
2
|
+
(?x)^(
|
|
3
|
+
src/rtctools/_version\.py|
|
|
4
|
+
src/rtctools/data/interpolation/__init__\.py|
|
|
5
|
+
versioneer.py
|
|
6
|
+
)$
|
|
7
|
+
repos:
|
|
8
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
9
|
+
rev: v0.9.4
|
|
10
|
+
hooks:
|
|
11
|
+
- id: ruff
|
|
12
|
+
args: [--fix, --exit-non-zero-on-fix]
|
|
13
|
+
- id: ruff-format
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# .readthedocs.yaml
|
|
2
|
+
# Read the Docs configuration file
|
|
3
|
+
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
|
4
|
+
|
|
5
|
+
# Required
|
|
6
|
+
version: 2
|
|
7
|
+
|
|
8
|
+
# Set the version of Python and other tools you might need
|
|
9
|
+
build:
|
|
10
|
+
os: ubuntu-22.04
|
|
11
|
+
tools:
|
|
12
|
+
python: "3.11"
|
|
13
|
+
jobs:
|
|
14
|
+
pre_create_environment:
|
|
15
|
+
- asdf plugin add uv
|
|
16
|
+
- asdf install uv latest
|
|
17
|
+
- asdf global uv latest
|
|
18
|
+
create_environment:
|
|
19
|
+
- uv venv "${READTHEDOCS_VIRTUALENV_PATH}"
|
|
20
|
+
install:
|
|
21
|
+
- UV_PROJECT_ENVIRONMENT="${READTHEDOCS_VIRTUALENV_PATH}" uv sync --frozen --group docs
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# Build documentation in the docs/ directory with Sphinx
|
|
25
|
+
sphinx:
|
|
26
|
+
configuration: doc/conf.py
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
# Contributing to RTC-Tools 2
|
|
2
|
+
|
|
3
|
+
There are many ways you can contribute to RTC-Tools, such as:
|
|
4
|
+
|
|
5
|
+
- **Reporting issues**: If you encounter any bugs, errors, or unexpected behavior while using RTC-Tools,
|
|
6
|
+
please report them on our [issue tracker](https://github.com/deltares/rtc-tools/issues).
|
|
7
|
+
Please follow the issue template and provide as much information as possible to help us reproduce and fix the issue.
|
|
8
|
+
- **Suggesting features**: If you have any ideas or suggestions for new features or improvements,
|
|
9
|
+
please share them on our [issue tracker](https://github.com/deltares/rtc-tools/issues).
|
|
10
|
+
Please use the appropriate category and tag for your topic and explain your motivation and use case clearly.
|
|
11
|
+
- **Submitting merge requests**: If you want to contribute code or documentation to RTC-Tools,
|
|
12
|
+
please fork the repository and create a merge request.
|
|
13
|
+
Please write docstrings for your functions and classes and make sure your changes pass the tests and checks before submitting.
|
|
14
|
+
Please also add a brief description of your changes and reference any related issues or discussions.
|
|
15
|
+
- **Improving documentation**: If you find any errors, typos, or inconsistencies in the documentation,
|
|
16
|
+
or if you want to add more examples, tutorials, or explanations,
|
|
17
|
+
please feel free to edit the documentation files in the docs folder and submit a merge request.
|
|
18
|
+
Please follow the [Sphinx syntax and style guide](https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html) for writing documentation.
|
|
19
|
+
- **Reviewing merge requests**: If you are familiar with RTC-Tools and want to help us maintain the quality and consistency of the code and documentation,
|
|
20
|
+
please review the open merge requests and provide constructive feedback and suggestions.
|
|
21
|
+
- **Testing new releases**: If you want to help us test the new features and bug fixes before they are officially released,
|
|
22
|
+
please install the latest development version of RTC-Tools from the [GitHub repository](https://github.com/deltares/rtc-tools)
|
|
23
|
+
and report any issues or feedback on the [issue tracker](https://github.com/deltares/rtc-tools/issues).
|
|
24
|
+
|
|
25
|
+
## Guidelines for creating issues
|
|
26
|
+
1. **Title**: Provide a concise and informative title. The title should summarize the problem.
|
|
27
|
+
2. **Description**: Describe the issue in detail. Include steps to reproduce the issue, expected behavior, and actual behavior.
|
|
28
|
+
3. **Labels**: Use labels to categorize the issue. This helps in prioritizing and resolving issues.
|
|
29
|
+
4. **Screenshots**: If applicable, add screenshots to help explain the problem.
|
|
30
|
+
5. **Environment**: Mention the version of RTC-Tools, Python and external packages you're using (CasADi, Pymoca, numpy), along with relevant details about your operating system.
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
## Guidelines for creating merge requests
|
|
34
|
+
1. **Identify or create issue**: Before making any changes,
|
|
35
|
+
please open an issue following the guidelines above,
|
|
36
|
+
or comment on an existing one in the
|
|
37
|
+
[issue tracker](https://github.com/deltares/rtc-tools/issues)
|
|
38
|
+
to discuss your ideas with the maintainers.
|
|
39
|
+
This will help us avoid duplication of work
|
|
40
|
+
and ensure that your contribution aligns with the goals of the project.
|
|
41
|
+
2. **Branch**: Create a new branch for each merge request. The branch name should be descriptive and reflect the changes being made.
|
|
42
|
+
3. **Commit**: Please make your commits following the guidelines in the [Commits and Commit Messages](#commits-and-commit-messages) section below.
|
|
43
|
+
4. **Write tests**: If possible, write tests that cover your changes, and add them to the `tests` folder.
|
|
44
|
+
This will help ensure that your changes result in the desired behavior and that functionalities will not accidently break in the future.
|
|
45
|
+
5. **Documentation**: Please also update the documentation if necessary and add examples to the `examples` folder.
|
|
46
|
+
6. **Create merge request**: Mention the corresponding issue from the [issue tracker](https://github.com/deltares/rtc-tools/issues).
|
|
47
|
+
Describe what changes you've made, why you've made them, and how they address the issue at hand.
|
|
48
|
+
7. **Code review**: Request code review from your peers. Address any comments or suggestions they might have.
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
## Commits and Commit Messages
|
|
52
|
+
|
|
53
|
+
Each commit ideally satisfies the following:
|
|
54
|
+
|
|
55
|
+
- Each commit has a clear and single purpose.
|
|
56
|
+
- After each commit, all unit tests should still pass.
|
|
57
|
+
|
|
58
|
+
Commit messages should have the following structure:
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
<scope>: <short description>
|
|
62
|
+
|
|
63
|
+
<complete description>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
- scope: explains which part of the code is affected, e.g.:
|
|
67
|
+
- optimization (only affects the optimization part)
|
|
68
|
+
- homotopy_mixin (only affects the homotopy_mixin module)
|
|
69
|
+
- tests (only affects the tests)
|
|
70
|
+
- doc (only affects the documentation)
|
|
71
|
+
- short description: describes what is changed in the commit with a single sentence.
|
|
72
|
+
- complete description: explain in detail what is done in the commit and why.
|
|
73
|
+
This can take up multiple paragraphs.
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
## Setting up a development environment
|
|
77
|
+
|
|
78
|
+
To set up your development environment, you will need:
|
|
79
|
+
|
|
80
|
+
- Python 3.9 or higher (up to 3.13)
|
|
81
|
+
- Git
|
|
82
|
+
|
|
83
|
+
You can clone the repository and install it from source:
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
git clone https://github.com/Deltares/RTC-Tools.git
|
|
87
|
+
cd RTC-Tools
|
|
88
|
+
uv sync
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
To ensure that your code meets our standards, we recommend using pre-commit.
|
|
92
|
+
Run the following command to set up the pre-commit hook:
|
|
93
|
+
```bash
|
|
94
|
+
pre-commit install
|
|
95
|
+
```
|
|
96
|
+
. This will
|
|
97
|
+
automatically check your code for formatting and linting issues before each
|
|
98
|
+
commit.
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
To run the tests:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
pytest tests
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
To build the documentation:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
cd doc
|
|
111
|
+
make html
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Version numbering and release cycle
|
|
115
|
+
|
|
116
|
+
For version numbers we use the guidelines described in <https://semver.org>:
|
|
117
|
+
|
|
118
|
+
> Given a version number MAJOR.MINOR.PATCH, increment the:
|
|
119
|
+
>
|
|
120
|
+
> 1. MAJOR version when you make incompatible API changes
|
|
121
|
+
> 2. MINOR version when you add functionality in a backward compatible manner
|
|
122
|
+
> 3. PATCH version when you make backward compatible bug fixes
|
|
123
|
+
>
|
|
124
|
+
> Additional labels for pre-release and build metadata are available
|
|
125
|
+
> as extensions to the MAJOR.MINOR.PATCH format.
|
|
126
|
+
|
|
127
|
+
The development of a new MINOR version in RTC-Tools consists of four stages:
|
|
128
|
+
|
|
129
|
+
1. Alpha (a): Version that is not yet feature complete and may contain bugs.
|
|
130
|
+
Each alpha release can either fix bugs or add new features.
|
|
131
|
+
2. Beta (b): Version that is feature complete but is likely to contain bugs.
|
|
132
|
+
After a beta version has been created, no new features can be added anymore.
|
|
133
|
+
A beta version is tested more thoroughly.
|
|
134
|
+
3. Release candidate (rc): Version that has been tested through the beta versions releases
|
|
135
|
+
and can now be tested as if it were the stable release.
|
|
136
|
+
If bugs still pop up, new RC versions can be created to fix them.
|
|
137
|
+
Additions are allowed but should be code-unrelated,
|
|
138
|
+
such as changes to the documentation required for the release.
|
|
139
|
+
4. Stable release: Final version that has passed all tests.
|
|
140
|
+
|
|
141
|
+
There can be multiple alpha-, beta-, and rc-versions,
|
|
142
|
+
but we should not go back to a previous stage.
|
|
143
|
+
|
|
144
|
+
An example of a release sequence is:
|
|
145
|
+
|
|
146
|
+
- 2.6.0a1 Add a feature.
|
|
147
|
+
- 2.6.0a2 Add another feature and fix a bug.
|
|
148
|
+
- 2.6.0b1 First beta release.
|
|
149
|
+
- 2.6.0b2 Fixed a bug.
|
|
150
|
+
- 2.6.0b3 Fixed another bug.
|
|
151
|
+
- 2.6.0rc1 First release candidate after having tested thoroughly.
|
|
152
|
+
- 2.6.0rc2 Fixed a bug that did not show up in the standard tests.
|
|
153
|
+
- 2.6.0 **Stable release**.
|
|
154
|
+
No changes were made after last release candidate.
|
|
155
|
+
- 2.6.1 Fixed a bug.
|
|
156
|
+
- 2.6.2 Fixed another bug.
|
|
157
|
+
|
|
158
|
+
If we start with a new release cycle for X.Y+1,
|
|
159
|
+
and still want to fix a bug for the previous version X.Y,
|
|
160
|
+
we create a separate branch `maintenance/X.Y` where we add patches for X.Y.
|
|
161
|
+
|
|
162
|
+
## Release Notes
|
|
163
|
+
|
|
164
|
+
Before creating a release, make sure that the release notes are updated in
|
|
165
|
+
[RELEASE_NOTES.md](RELEASE_NOTES.md).
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
## Contact
|
|
169
|
+
|
|
170
|
+
If you have any questions or comments about RTC-Tools, please contact us at rtctools@deltares.nl.
|
|
171
|
+
|
|
172
|
+
We hope you enjoy using and contributing to RTC-Tools!
|