py-modelrunner 0.18.1__tar.gz → 0.18.3__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.
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/.github/workflows/build.yml +2 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/.github/workflows/check_docs.yml +1 -1
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/.github/workflows/coverage_report.yml +2 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/.github/workflows/release_pip.yml +2 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/PKG-INFO +2 -4
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/README.md +0 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/docs/source/conf.py +3 -3
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/docs/source/parse_examples.py +1 -1
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/docs/source/run_autodoc.py +9 -9
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/docs/source/sphinx_simplify_typehints.py +22 -21
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/examples/io_hdf.py +2 -3
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/examples/io_json.py +2 -3
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/examples/io_yaml.py +2 -3
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/examples/model_class.py +1 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/examples/model_decorator.py +1 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/examples/model_function.py +1 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/examples/model_storage_output.py +1 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/examples/read_many.py +5 -6
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/examples/script_custom_func.py +3 -4
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/examples/script_function.py +2 -3
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/examples/script_many_classes.py +1 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/examples/script_minimal.py +2 -3
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/examples/script_model_class.py +1 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/examples/submit_function.py +3 -4
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/examples/submit_many_func.py +3 -5
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/examples/submit_many_iter.py +3 -5
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/examples/submit_shebang.py +4 -4
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/__main__.py +2 -3
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/_version.py +2 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/config.py +14 -15
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/model/__init__.py +1 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/model/base.py +34 -22
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/model/factory.py +8 -9
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/model/parameters.py +32 -30
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/run/__init__.py +2 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/run/__main__.py +1 -1
- py_modelrunner-0.18.3/modelrunner/run/compatibility/__init__.py +4 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/run/compatibility/triage.py +9 -10
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/run/compatibility/version0.py +7 -8
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/run/compatibility/version1.py +14 -17
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/run/compatibility/version2.py +2 -3
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/run/job.py +10 -11
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/run/launch.py +6 -7
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/run/results.py +41 -35
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/storage/__init__.py +2 -3
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/storage/access_modes.py +6 -10
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/storage/attributes.py +6 -6
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/storage/backend/__init__.py +3 -1
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/storage/backend/hdf.py +15 -13
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/storage/backend/json.py +2 -3
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/storage/backend/memory.py +9 -10
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/storage/backend/text_base.py +19 -18
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/storage/backend/utils.py +1 -1
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/storage/backend/yaml.py +6 -7
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/storage/backend/zarr.py +14 -16
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/storage/base.py +58 -37
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/storage/group.py +34 -35
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/storage/tools.py +5 -6
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/storage/trajectory.py +12 -15
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/storage/utils.py +18 -17
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/utils.py +13 -4
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/py_modelrunner.egg-info/PKG-INFO +2 -4
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/py_modelrunner.egg-info/requires.txt +1 -1
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/pyproject.toml +37 -1
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/requirements_full.txt +1 -1
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/scripts/create_compatibility_files.py +8 -8
- py_modelrunner-0.18.3/scripts/format_code.sh +11 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/scripts/run_tests.py +9 -9
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/test_compatibility.py +3 -3
- py_modelrunner-0.18.3/tests/conftest.py +4 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/helpers/asserts.py +2 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/helpers/storage.py +6 -5
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/model/scripts/function.py +1 -1
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/model/scripts/function_main.py +2 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/model/scripts/function_marked.py +2 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/model/scripts/make_model.py +2 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/model/scripts/make_model_class.py +2 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/model/scripts/make_model_marked.py +2 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/model/test_model.py +23 -21
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/model/test_parameters.py +10 -10
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/requirements.txt +2 -3
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/run/scripts/fail.py +1 -1
- py_modelrunner-0.18.3/tests/run/scripts/function.py +5 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/run/scripts/print.py +1 -1
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/run/test_job.py +12 -12
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/run/test_results.py +18 -6
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/run/test_run_main.py +5 -5
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/storage/test_group.py +2 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/storage/test_register_action.py +23 -15
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/storage/test_storage_generic.py +21 -16
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/storage/test_storage_special.py +7 -7
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/storage/test_trajectory.py +14 -18
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/storage/test_utils.py +2 -2
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/test_config.py +6 -6
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/test_examples.py +3 -3
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/test_main.py +2 -2
- py_modelrunner-0.18.1/modelrunner/run/compatibility/__init__.py +0 -5
- py_modelrunner-0.18.1/scripts/format_code.sh +0 -13
- py_modelrunner-0.18.1/tests/conftest.py +0 -4
- py_modelrunner-0.18.1/tests/run/scripts/function.py +0 -3
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/.gitignore +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/.readthedocs.yaml +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/LICENSE +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/docs/Makefile +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/docs/build_all.sh +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/docs/requirements.txt +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/docs/source/.gitignore +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/docs/source/examples.rst +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/docs/source/index.rst +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/docs/source/installation.rst +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/docs/source/user_manual.rst +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/.gitignore +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/__init__.py +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/py.typed +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/run/templates/background.jinja +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/run/templates/foreground.jinja +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/run/templates/qsub.jinja +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/modelrunner/run/templates/srun.jinja +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/py_modelrunner.egg-info/SOURCES.txt +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/py_modelrunner.egg-info/dependency_links.txt +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/py_modelrunner.egg-info/not-zip-safe +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/py_modelrunner.egg-info/top_level.txt +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/requirements.txt +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/scripts/performance_hdf5_zarr.py +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/scripts/tests_all.sh +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/scripts/tests_codestyle.sh +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/scripts/tests_coverage.sh +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/scripts/tests_debug.sh +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/scripts/tests_parallel.sh +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/scripts/tests_run.sh +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/scripts/tests_types.sh +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/setup.cfg +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/0/result.hdf +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/0/result.json +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/0/result.pkl +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/0/result.yaml +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/1/array.json +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/1/array.pkl +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/1/array.yaml +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/1/array.zarr +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/1/array_col.json +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/1/array_col.pkl +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/1/array_col.yaml +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/1/array_col.zarr +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/1/dict.json +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/1/dict.pkl +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/1/dict.yaml +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/1/dict.zarr +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/1/object.json +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/1/object.pkl +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/1/object.yaml +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/1/object.zarr +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/array.hdf +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/array.json +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/array.pkl +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/array.yaml +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/array.zip +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/array_col.hdf +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/array_col.json +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/array_col.pkl +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/array_col.yaml +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/array_col.zip +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/dict.hdf +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/dict.json +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/dict.pkl +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/dict.yaml +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/dict.zip +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/nested.hdf +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/nested.json +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/nested.pkl +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/nested.yaml +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/2/nested.zip +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/array.hdf +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/array.json +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/array.pkl +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/array.yaml +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/array.zip +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/array_col.hdf +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/array_col.json +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/array_col.pkl +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/array_col.yaml +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/array_col.zip +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/dict.hdf +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/dict.json +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/dict.pkl +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/dict.yaml +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/dict.zip +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_array.hdf +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_array.json +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_array.pkl +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_array.yaml +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_array.zip +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_array_col.hdf +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_array_col.json +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_array_col.pkl +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_array_col.yaml +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_array_col.zip +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_dict.hdf +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_dict.json +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_dict.pkl +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_dict.yaml +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_dict.zip +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_nested.hdf +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_nested.json +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_nested.pkl +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_nested.yaml +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/model_nested.zip +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/nested.hdf +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/nested.json +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/nested.pkl +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/nested.yaml +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/compatibility/3/nested.zip +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/helpers/__init__.py +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/model/scripts/empty.py +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/run/scripts/custom.jinja +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/run/scripts/script.py +0 -0
- {py_modelrunner-0.18.1 → py_modelrunner-0.18.3}/tests/test_version.py +0 -0
|
@@ -12,10 +12,10 @@ jobs:
|
|
|
12
12
|
python-version: ['3.8', '3.12']
|
|
13
13
|
|
|
14
14
|
steps:
|
|
15
|
-
- uses: actions/checkout@
|
|
15
|
+
- uses: actions/checkout@v4
|
|
16
16
|
|
|
17
17
|
- name: Set up Python ${{ matrix.python-version }}
|
|
18
|
-
uses: actions/setup-python@
|
|
18
|
+
uses: actions/setup-python@v5
|
|
19
19
|
with:
|
|
20
20
|
python-version: ${{ matrix.python-version }}
|
|
21
21
|
|
|
@@ -11,9 +11,9 @@ jobs:
|
|
|
11
11
|
python-version: [3.8]
|
|
12
12
|
|
|
13
13
|
steps:
|
|
14
|
-
- uses: actions/checkout@
|
|
14
|
+
- uses: actions/checkout@v4
|
|
15
15
|
- name: Set up Python ${{ matrix.python-version }}
|
|
16
|
-
uses: actions/setup-python@
|
|
16
|
+
uses: actions/setup-python@v5
|
|
17
17
|
with:
|
|
18
18
|
python-version: ${{ matrix.python-version }}
|
|
19
19
|
- name: Install dependencies
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: py-modelrunner
|
|
3
|
-
Version: 0.18.
|
|
3
|
+
Version: 0.18.3
|
|
4
4
|
Summary: Python classes for organizing (HPC) simulations
|
|
5
5
|
Author-email: David Zwicker <david.zwicker@ds.mpg.de>
|
|
6
6
|
License: MIT
|
|
@@ -30,7 +30,7 @@ Provides-Extra: all
|
|
|
30
30
|
Requires-Dist: h5py>=3.5; extra == "all"
|
|
31
31
|
Requires-Dist: pandas>=1.3; extra == "all"
|
|
32
32
|
Requires-Dist: PyYAML>=5; extra == "all"
|
|
33
|
-
Requires-Dist: zarr
|
|
33
|
+
Requires-Dist: zarr<3,>=2; extra == "all"
|
|
34
34
|
Provides-Extra: test
|
|
35
35
|
Requires-Dist: black>=19; extra == "test"
|
|
36
36
|
Requires-Dist: isort>=5.1; extra == "test"
|
|
@@ -49,8 +49,6 @@ Requires-Dist: mypy>=0.770; extra == "test"
|
|
|
49
49
|
[](https://anaconda.org/conda-forge/py-modelrunner)
|
|
50
50
|
[](https://opensource.org/licenses/MIT)
|
|
51
51
|
[](https://codecov.io/gh/zwicker-group/py-modelrunner)
|
|
52
|
-
[](https://github.com/psf/black)
|
|
53
|
-
|
|
54
52
|
|
|
55
53
|
|
|
56
54
|
This package provides python classes for handling and running physical simulations.
|
|
@@ -7,8 +7,6 @@
|
|
|
7
7
|
[](https://anaconda.org/conda-forge/py-modelrunner)
|
|
8
8
|
[](https://opensource.org/licenses/MIT)
|
|
9
9
|
[](https://codecov.io/gh/zwicker-group/py-modelrunner)
|
|
10
|
-
[](https://github.com/psf/black)
|
|
11
|
-
|
|
12
10
|
|
|
13
11
|
|
|
14
12
|
This package provides python classes for handling and running physical simulations.
|
|
@@ -15,19 +15,19 @@
|
|
|
15
15
|
import os.path
|
|
16
16
|
import sys
|
|
17
17
|
|
|
18
|
-
sys.path.insert(0, os.path.abspath("../.."))
|
|
18
|
+
sys.path.insert(0, os.path.abspath("../..")) # noqa: PTH100
|
|
19
19
|
sys.path.insert(0, ".")
|
|
20
20
|
|
|
21
21
|
from datetime import date
|
|
22
22
|
|
|
23
|
-
import sphinx_simplify_typehints
|
|
23
|
+
import sphinx_simplify_typehints
|
|
24
24
|
|
|
25
25
|
# -- Project information -----------------------------------------------------
|
|
26
26
|
|
|
27
27
|
project = "py-modelrunner"
|
|
28
28
|
module_name = "modelrunner"
|
|
29
29
|
author = "David Zwicker"
|
|
30
|
-
copyright = f"{date.today().year}, {author}" #
|
|
30
|
+
copyright = f"{date.today().year}, {author}" # noqa: A001
|
|
31
31
|
|
|
32
32
|
# The short X.Y version
|
|
33
33
|
import modelrunner
|
|
@@ -12,7 +12,7 @@ OUTPUT = ROOT / "docs" / "source" / "examples"
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
def main():
|
|
15
|
-
"""
|
|
15
|
+
"""Parse all examples and write them in a special example module."""
|
|
16
16
|
# create the output directory
|
|
17
17
|
OUTPUT.mkdir(parents=True, exist_ok=True)
|
|
18
18
|
|
|
@@ -4,15 +4,16 @@ import glob
|
|
|
4
4
|
import logging
|
|
5
5
|
import os
|
|
6
6
|
import subprocess as sp
|
|
7
|
+
from pathlib import Path
|
|
7
8
|
|
|
8
9
|
logging.basicConfig(level=logging.INFO)
|
|
9
10
|
|
|
10
11
|
OUTPUT_PATH = "packages"
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
def replace_in_file(infile, replacements, outfile=None):
|
|
14
|
-
"""
|
|
15
|
-
|
|
14
|
+
def replace_in_file(infile: Path, replacements, outfile=None):
|
|
15
|
+
"""Reads in a file, replaces the given data using python formatting and writes back
|
|
16
|
+
the result to a file.
|
|
16
17
|
|
|
17
18
|
Args:
|
|
18
19
|
infile (str):
|
|
@@ -22,26 +23,25 @@ def replace_in_file(infile, replacements, outfile=None):
|
|
|
22
23
|
outfile (str):
|
|
23
24
|
Output file to which the data is written. If it is omitted, the
|
|
24
25
|
input file will be overwritten instead
|
|
25
|
-
|
|
26
26
|
"""
|
|
27
27
|
if outfile is None:
|
|
28
28
|
outfile = infile
|
|
29
29
|
|
|
30
|
-
with open(
|
|
30
|
+
with infile.open() as fp:
|
|
31
31
|
content = fp.read()
|
|
32
32
|
|
|
33
33
|
for key, value in replacements.items():
|
|
34
34
|
content = content.replace(key, value)
|
|
35
35
|
|
|
36
|
-
with open(
|
|
36
|
+
with outfile.open("w") as fp:
|
|
37
37
|
fp.write(content)
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
def main(package="modelrunner"):
|
|
41
41
|
# remove old files
|
|
42
|
-
for path in
|
|
42
|
+
for path in Path(OUTPUT_PATH).glob("*.rst"):
|
|
43
43
|
logging.info("Remove file `%s`", path)
|
|
44
|
-
|
|
44
|
+
path.unlink()
|
|
45
45
|
|
|
46
46
|
# run sphinx-apidoc
|
|
47
47
|
sp.check_call(
|
|
@@ -67,7 +67,7 @@ def main(package="modelrunner"):
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
# replace unwanted information
|
|
70
|
-
for path in
|
|
70
|
+
for path in Path(OUTPUT_PATH).glob("*.rst"):
|
|
71
71
|
logging.info("Patch file `%s`", path)
|
|
72
72
|
replace_in_file(path, REPLACEMENTS)
|
|
73
73
|
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Simple sphinx plug-in that simplifies type information in function signatures
|
|
3
|
-
"""
|
|
1
|
+
"""Simple sphinx plug-in that simplifies type information in function signatures."""
|
|
4
2
|
|
|
5
3
|
import collections
|
|
6
4
|
import re
|
|
@@ -32,7 +30,7 @@ REPLACEMENTS_REGEX = {
|
|
|
32
30
|
def process_signature(
|
|
33
31
|
app, what: str, name: str, obj, options, signature, return_annotation
|
|
34
32
|
):
|
|
35
|
-
"""Process signature by applying replacement rules"""
|
|
33
|
+
"""Process signature by applying replacement rules."""
|
|
36
34
|
if signature is not None:
|
|
37
35
|
for key, value in REPLACEMENTS.items():
|
|
38
36
|
signature = signature.replace(key, value)
|
|
@@ -42,7 +40,7 @@ def process_signature(
|
|
|
42
40
|
|
|
43
41
|
|
|
44
42
|
def sphinx_display_parameters(app, what, name, obj, options, lines):
|
|
45
|
-
"""
|
|
43
|
+
"""Helper function to display parameters in sphinx documentation.
|
|
46
44
|
|
|
47
45
|
Example:
|
|
48
46
|
This function should be connected to the 'autodoc-process-docstring'
|
|
@@ -50,25 +48,28 @@ def sphinx_display_parameters(app, what, name, obj, options, lines):
|
|
|
50
48
|
|
|
51
49
|
app.connect('autodoc-process-docstring', sphinx_display_parameters)
|
|
52
50
|
"""
|
|
53
|
-
if
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
51
|
+
if (
|
|
52
|
+
what == "class"
|
|
53
|
+
and issubclass(obj, Parameterized)
|
|
54
|
+
and any(":param parameters:" in line for line in lines)
|
|
55
|
+
):
|
|
56
|
+
# parse parameters
|
|
57
|
+
parameters = obj.get_parameters(sort=False)
|
|
58
|
+
if parameters:
|
|
59
|
+
lines.append(".. admonition::")
|
|
60
|
+
lines.append(f" Parameters of {obj.__name__}:")
|
|
61
|
+
lines.append(" ")
|
|
62
|
+
for p in parameters.values():
|
|
63
|
+
lines.append(f" {p.name}")
|
|
64
|
+
text = p.description.splitlines()
|
|
65
|
+
text.append(f"(Default value: :code:`{p.default_value!r}`)")
|
|
66
|
+
text = [" " + t for t in text]
|
|
67
|
+
lines.extend(text)
|
|
68
68
|
lines.append("")
|
|
69
|
+
lines.append("")
|
|
69
70
|
|
|
70
71
|
|
|
71
72
|
def setup(app):
|
|
72
|
-
"""
|
|
73
|
+
"""Set up hooks for this sphinx plugin."""
|
|
73
74
|
app.connect("autodoc-process-signature", process_signature)
|
|
74
75
|
app.connect("autodoc-process-docstring", sphinx_display_parameters)
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
This example shows reading and writing data using HDF files.
|
|
2
|
+
"""This example shows reading and writing data using HDF files.
|
|
4
3
|
|
|
5
4
|
.. codeauthor:: David Zwicker <david.zwicker@ds.mpg.de>
|
|
6
5
|
"""
|
|
@@ -11,7 +10,7 @@ from modelrunner import Result, run_function_with_cmd_args
|
|
|
11
10
|
|
|
12
11
|
|
|
13
12
|
def number_range(start: float = 1, length: int = 3):
|
|
14
|
-
"""
|
|
13
|
+
"""Create an ascending list of numbers."""
|
|
15
14
|
return start + np.arange(length)
|
|
16
15
|
|
|
17
16
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
This example shows reading and writing data using JSON files.
|
|
2
|
+
"""This example shows reading and writing data using JSON files.
|
|
4
3
|
|
|
5
4
|
.. codeauthor:: David Zwicker <david.zwicker@ds.mpg.de>
|
|
6
5
|
"""
|
|
@@ -9,7 +8,7 @@ from modelrunner import Result, run_function_with_cmd_args
|
|
|
9
8
|
|
|
10
9
|
|
|
11
10
|
def multiply(a: float = 1, b: float = 2):
|
|
12
|
-
"""Multiply two numbers"""
|
|
11
|
+
"""Multiply two numbers."""
|
|
13
12
|
return a * b
|
|
14
13
|
|
|
15
14
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
This example shows reading and writing data using JSON files.
|
|
2
|
+
"""This example shows reading and writing data using JSON files.
|
|
4
3
|
|
|
5
4
|
.. codeauthor:: David Zwicker <david.zwicker@ds.mpg.de>
|
|
6
5
|
"""
|
|
@@ -9,7 +8,7 @@ from modelrunner import Result, run_function_with_cmd_args
|
|
|
9
8
|
|
|
10
9
|
|
|
11
10
|
def multiply(a: float = 1, b: float = 2):
|
|
12
|
-
"""Multiply two numbers"""
|
|
11
|
+
"""Multiply two numbers."""
|
|
13
12
|
return a * b
|
|
14
13
|
|
|
15
14
|
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
This example shows how a collection of results can be read.
|
|
2
|
+
"""This example shows how a collection of results can be read.
|
|
4
3
|
|
|
5
4
|
.. codeauthor:: David Zwicker <david.zwicker@ds.mpg.de>
|
|
6
5
|
"""
|
|
7
6
|
|
|
8
|
-
import
|
|
7
|
+
from pathlib import Path
|
|
9
8
|
|
|
10
9
|
from modelrunner import ResultCollection, make_model_class
|
|
11
10
|
|
|
12
11
|
|
|
13
12
|
def multiply(a: float = 1, b: float = 2):
|
|
14
|
-
"""Multiply two numbers"""
|
|
13
|
+
"""Multiply two numbers."""
|
|
15
14
|
return a * b
|
|
16
15
|
|
|
17
16
|
|
|
@@ -20,11 +19,11 @@ if __name__ == "__main__":
|
|
|
20
19
|
model = make_model_class(multiply)
|
|
21
20
|
|
|
22
21
|
# write data
|
|
23
|
-
|
|
22
|
+
Path("data").mkdir(parents=True)
|
|
24
23
|
for n, a in enumerate(range(5, 10)):
|
|
25
24
|
result = model({"a": a}).get_result()
|
|
26
25
|
result.to_file(f"data/test_{n}.json")
|
|
27
26
|
|
|
28
27
|
# read data
|
|
29
28
|
rc = ResultCollection.from_folder("data")
|
|
30
|
-
print(rc.
|
|
29
|
+
print(rc.as_dataframe())
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env python3 -m modelrunner
|
|
2
|
-
"""
|
|
3
|
-
This example shows how a function is turned into a model using decorators.
|
|
2
|
+
"""This example shows how a function is turned into a model using decorators.
|
|
4
3
|
|
|
5
4
|
.. codeauthor:: David Zwicker <david.zwicker@ds.mpg.de>
|
|
6
5
|
"""
|
|
@@ -9,11 +8,11 @@ import modelrunner
|
|
|
9
8
|
|
|
10
9
|
|
|
11
10
|
def do_not_calculate(a=1, b=2):
|
|
12
|
-
"""This function should not be run"""
|
|
11
|
+
"""This function should not be run."""
|
|
13
12
|
raise RuntimeError("This must not run")
|
|
14
13
|
|
|
15
14
|
|
|
16
15
|
@modelrunner.make_model
|
|
17
16
|
def calculate(a=1, b=2):
|
|
18
|
-
"""This function has been marked as a model"""
|
|
17
|
+
"""This function has been marked as a model."""
|
|
19
18
|
print(a * b)
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
This example shows how a function is turned into a model explicitly.
|
|
2
|
+
"""This example shows how a function is turned into a model explicitly.
|
|
4
3
|
|
|
5
4
|
.. codeauthor:: David Zwicker <david.zwicker@ds.mpg.de>
|
|
6
5
|
"""
|
|
@@ -9,7 +8,7 @@ from modelrunner import run_function_with_cmd_args
|
|
|
9
8
|
|
|
10
9
|
|
|
11
10
|
def multiply(a: float = 1, b: float = 2):
|
|
12
|
-
"""Multiply two numbers"""
|
|
11
|
+
"""Multiply two numbers."""
|
|
13
12
|
return a * b
|
|
14
13
|
|
|
15
14
|
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env python3 -m modelrunner
|
|
2
|
-
"""
|
|
3
|
-
This example displays a minimal script defining a model using a `main` function.
|
|
2
|
+
"""This example displays a minimal script defining a model using a `main` function.
|
|
4
3
|
|
|
5
4
|
.. codeauthor:: David Zwicker <david.zwicker@ds.mpg.de>
|
|
6
5
|
"""
|
|
7
6
|
|
|
8
7
|
|
|
9
8
|
def main(a=1, b=2):
|
|
10
|
-
"""Multiply two numbers"""
|
|
9
|
+
"""Multiply two numbers."""
|
|
11
10
|
print(a * b)
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
This example shows how to submit a model to a queuing system.
|
|
2
|
+
"""This example shows how to submit a model to a queuing system.
|
|
4
3
|
|
|
5
4
|
Note that the method `foreground` just runs the script locally, thus not really queuing. To
|
|
6
5
|
actually queue a job on a high performance computing cluster, replace the `method`
|
|
7
|
-
argument by something more suitable; see the documentation.
|
|
6
|
+
argument by something more suitable; see the documentation.
|
|
8
7
|
|
|
9
8
|
.. codeauthor:: David Zwicker <david.zwicker@ds.mpg.de>
|
|
10
9
|
"""
|
|
@@ -14,7 +13,7 @@ from modelrunner import make_model, submit_job
|
|
|
14
13
|
|
|
15
14
|
@make_model
|
|
16
15
|
def multiply(a: float = 1, b: float = 2):
|
|
17
|
-
"""Multiply two numbers"""
|
|
16
|
+
"""Multiply two numbers."""
|
|
18
17
|
return a * b
|
|
19
18
|
|
|
20
19
|
|
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
This example shows how to submit the same model with multiple parameters.
|
|
2
|
+
"""This example shows how to submit the same model with multiple parameters.
|
|
4
3
|
|
|
5
4
|
Note that the method `foreground` just runs the script locally, thus not really queuing. To
|
|
6
5
|
actually queue a job on a high performance computing cluster, replace the `method`
|
|
7
|
-
argument by something more suitable; see the documentation.
|
|
6
|
+
argument by something more suitable; see the documentation.
|
|
8
7
|
|
|
9
8
|
.. codeauthor:: David Zwicker <david.zwicker@ds.mpg.de>
|
|
10
9
|
"""
|
|
11
10
|
|
|
12
|
-
|
|
13
11
|
from modelrunner import make_model, submit_jobs
|
|
14
12
|
|
|
15
13
|
|
|
16
14
|
@make_model
|
|
17
15
|
def main(a: float = 1, b: float = 2):
|
|
18
|
-
"""Multiply two numbers"""
|
|
16
|
+
"""Multiply two numbers."""
|
|
19
17
|
return a * b
|
|
20
18
|
|
|
21
19
|
|
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
|
-
"""
|
|
3
|
-
This example shows how to submit the same model with multiple parameters.
|
|
2
|
+
"""This example shows how to submit the same model with multiple parameters.
|
|
4
3
|
|
|
5
4
|
Note that the method `foreground` just runs the script locally, thus not really queuing. To
|
|
6
5
|
actually queue a job on a high performance computing cluster, replace the `method`
|
|
7
|
-
argument by something more suitable; see the documentation.
|
|
6
|
+
argument by something more suitable; see the documentation.
|
|
8
7
|
|
|
9
8
|
.. codeauthor:: David Zwicker <david.zwicker@ds.mpg.de>
|
|
10
9
|
"""
|
|
11
10
|
|
|
12
|
-
|
|
13
11
|
from modelrunner import make_model, submit_job
|
|
14
12
|
|
|
15
13
|
|
|
16
14
|
@make_model
|
|
17
15
|
def main(a: float = 1, b: float = 2):
|
|
18
|
-
"""Multiply two numbers"""
|
|
16
|
+
"""Multiply two numbers."""
|
|
19
17
|
return a * b
|
|
20
18
|
|
|
21
19
|
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env python3 -m modelrunner.run --output data.hdf5 --method foreground
|
|
2
|
-
"""
|
|
3
|
-
|
|
2
|
+
"""This example shows how to submit a model to a queuing system using the magic line
|
|
3
|
+
above.
|
|
4
4
|
|
|
5
5
|
Note that the method `foreground` just runs the script locally, thus not really
|
|
6
6
|
queuing. To actually queue a job on a high performance computing cluster, replace the
|
|
7
|
-
`method` argument by something more suitable; see the documentation.
|
|
7
|
+
`method` argument by something more suitable; see the documentation.
|
|
8
8
|
|
|
9
9
|
.. codeauthor:: David Zwicker <david.zwicker@ds.mpg.de>
|
|
10
10
|
"""
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def multiply(a: float = 1, b: float = 2):
|
|
14
|
-
"""Multiply two numbers"""
|
|
14
|
+
"""Multiply two numbers."""
|
|
15
15
|
return a * b
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Main module allowing to use the package to wrap existing code
|
|
1
|
+
"""Main module allowing to use the package to wrap existing code.
|
|
3
2
|
|
|
4
3
|
.. codeauthor:: David Zwicker <david.zwicker@ds.mpg.de>
|
|
5
4
|
"""
|
|
@@ -12,7 +11,7 @@ from modelrunner import Result, run_script
|
|
|
12
11
|
|
|
13
12
|
|
|
14
13
|
def run_script_from_command_line() -> Result:
|
|
15
|
-
"""
|
|
14
|
+
"""Helper function that runs a model from flags specified at the command line.
|
|
16
15
|
|
|
17
16
|
The function detects models automatically by trying several methods until one yields
|
|
18
17
|
a unique model to run:
|