subscript 1.14.6__tar.gz → 1.14.7__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.
- {subscript-1.14.6 → subscript-1.14.7}/PKG-INFO +1 -1
- {subscript-1.14.6 → subscript-1.14.7}/pyproject.toml +1 -0
- subscript-1.14.7/src/subscript/restartthinner/restartthinner.py +249 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/version.py +3 -3
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript.egg-info/PKG-INFO +1 -1
- subscript-1.14.7/tests/test_restartthinner.py +222 -0
- subscript-1.14.6/src/subscript/restartthinner/restartthinner.py +0 -230
- subscript-1.14.6/tests/test_restartthinner.py +0 -98
- {subscript-1.14.6 → subscript-1.14.7}/.github/dependabot.yml +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/.github/workflows/codecov.yml +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/.github/workflows/linting.yml +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/.github/workflows/publish.yml +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/.github/workflows/subscript.yml +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/.gitignore +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/LICENSE +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/README.md +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/SECURITY.md +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/ci/testkomodo.sh +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/Makefile +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/_static/equinor-logo.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/_static/equinor-logo2.jpg +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/_static/equinor-logo2.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/_static/equinor_logo.jpg +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/_static/equinor_logo_only.jpg +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/_templates/layout.html +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/conf.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/contributing.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/history.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/index.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/make.bat +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/overview.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/bjobsusers.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/casegen_upcars.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/check_swatinit.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/convert_grid_format.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/create_date_files.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/csv2ofmvol.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/csv_merge.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/csv_stack.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/eclcompress.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/ecldiff2roff.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/field_statistics.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/fmu_copy_revision.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/fmuobs.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/grav_subs_maps.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/grav_subs_points.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/images/Pack_sim_overview.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/images/Summaryplot-ensemble.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/images/Summaryplot-ert.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/images/Summaryplot-normalizeexample.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/images/Workflow_sector2fluxnum.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/images/casegen_upcars_geometry.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/images/check_swatinit_scatter.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/images/check_swatinit_volplot.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/images/ecl-swat-initialization.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/images/make_check_swatinit_images.sh +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/images/resinsight_wells_project_example.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/interp_relperm.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/merge_rft_ertobs.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/merge_unrst_files.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/ofmvol2csv.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/pack_sim.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/params2csv.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/presentvalue.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/prtvol2csv.csv +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/prtvol2csv.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/restartthinner.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/rmsecl_volumetrics.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/sector2fluxnum.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/summaryplot.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/sunsch.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/sw_model_utilities.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/vfp2csv.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/scripts/welltest_dpds.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/docs/usage.rst +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/setup.cfg +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/bjobsusers/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/bjobsusers/bjobsusers.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/casegen_upcars/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/casegen_upcars/casegen_upcars.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/casegen_upcars/model.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/casegen_upcars/udf.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/casegen_upcars/udf_arg_parser.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/check_swatinit/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/check_swatinit/check_swatinit.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/check_swatinit/constants.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/check_swatinit/pillarmodel.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/check_swatinit/plotter.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/convert_grid_format/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/convert_grid_format/convert_grid_format.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/create_date_files/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/create_date_files/create_date_files.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/csv2ofmvol/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/csv2ofmvol/csv2ofmvol.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/csv_merge/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/csv_merge/csv_merge.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/csv_stack/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/csv_stack/csv_stack.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/eclcompress/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/eclcompress/allowlist.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/eclcompress/eclcompress.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/ecldiff2roff/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/ecldiff2roff/ecldiff2roff.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/field_statistics/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/field_statistics/field_statistics.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/fmu_copy_revision/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/fmu_copy_revision/fmu_copy_revision.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/fmuobs/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/fmuobs/fmuobs.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/fmuobs/parsers.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/fmuobs/util.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/fmuobs/writers.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/grav_subs_maps/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/grav_subs_maps/grav_subs_maps.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/grav_subs_points/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/grav_subs_points/grav_subs_points.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/hook_implementations/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/hook_implementations/forward_model_steps.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/interp_relperm/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/interp_relperm/interp_relperm.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/legacy/duf +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/legacy/eclmanual +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/legacy/ertwatch +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/legacy/list_rms_usage +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/legacy/nosim +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/legacy/runeclipse +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/merge_rft_ertobs/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/merge_rft_ertobs/merge_rft_ertobs.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/merge_unrst_files/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/merge_unrst_files/merge_unrst_files.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/ofmvol2csv/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/ofmvol2csv/ofmvol2csv.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/pack_sim/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/pack_sim/pack_sim.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/params2csv/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/params2csv/params2csv.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/presentvalue/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/presentvalue/presentvalue.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/prtvol2csv/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/prtvol2csv/prtvol2csv.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/restartthinner/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/rmsecl_volumetrics/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/rmsecl_volumetrics/rmsecl_volumetrics.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/sector2fluxnum/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/sector2fluxnum/completions.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/sector2fluxnum/datafile_obj.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/sector2fluxnum/flux_obj.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/sector2fluxnum/flux_util.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/sector2fluxnum/fluxfile_obj.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/sector2fluxnum/sector2fluxnum.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/summaryplot/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/summaryplot/summaryplot.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/sunsch/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/sunsch/sunsch.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/sunsch/time_vector.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/sw_model_utilities/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/sw_model_utilities/sw_model_utilities.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/vfp2csv/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/vfp2csv/vfp2csv.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/welltest_dpds/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript/welltest_dpds/welltest_dpds.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript.egg-info/SOURCES.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript.egg-info/dependency_links.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript.egg-info/entry_points.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript.egg-info/requires.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/src/subscript.egg-info/top_level.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/__init__.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/baseline/test_summaryplotter_mpl_test_cmd_args0.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/baseline/test_summaryplotter_mpl_test_cmd_args1.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/baseline/test_summaryplotter_mpl_test_cmd_args10.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/baseline/test_summaryplotter_mpl_test_cmd_args11.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/baseline/test_summaryplotter_mpl_test_cmd_args2.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/baseline/test_summaryplotter_mpl_test_cmd_args3.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/baseline/test_summaryplotter_mpl_test_cmd_args4.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/baseline/test_summaryplotter_mpl_test_cmd_args5.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/baseline/test_summaryplotter_mpl_test_cmd_args6.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/baseline/test_summaryplotter_mpl_test_cmd_args7.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/baseline/test_summaryplotter_mpl_test_cmd_args8.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/baseline/test_summaryplotter_mpl_test_cmd_args9.png +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/conftest.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/edit/drogon.trans +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/grid/drogon.faults +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/grid/drogon.grid +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/grid/drogon.multnum +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/grid/drogon.multregt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/grid/drogon.perm +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/grid/drogon.poro +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/props/drogon.pvt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/props/drogon.sattab +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/props/drogon.swatinit +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/regions/drogon.eqlnum +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/regions/drogon.fipnum +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/regions/drogon.fipzon +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/regions/drogon.pvtnum +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/regions/drogon.satnum +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/runspec/drogon.dimens +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/runspec/drogon.eqldims +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/runspec/drogon.gridopts +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/runspec/drogon.regdims +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/runspec/drogon.tabdims +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/schedule/55_33-1.sch +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/schedule/55_33-1.wells +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/schedule/drogon_hist.sch +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/schedule/vfp/A-1.inc +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/schedule/vfp/A-2.inc +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/schedule/vfp/A-3.inc +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/schedule/vfp/A-4.inc +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/solution/drogon.equil +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/solution/drogon.rxvd +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/solution/drogon.thpres +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/include/summary/drogon.summary +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/drogon/eclipse/model/DROGON-0.DATA +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/grid/reek.faults +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/grid/reek.grid +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/grid/reek.multflt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/grid/reek.multz +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/grid/reek.perm +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/grid/reek.poro +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/props/let-sgof.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/props/let-swof.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/props/reek.endpoints +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/props/reek.pvt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/props/reek.swatinit +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/props/sgof.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/props/swof.inc +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/props/swof.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/regions/reek.eqlnum +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/regions/reek.fipnum +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/schedule/reek_history.sch +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/solution/reek.equil +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/include/summary/reek.smry +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/model/2_R001_REEK-0.DATA +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/model/2_R001_REEK-0.ECLEND +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/model/2_R001_REEK-0.EGRID +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/model/2_R001_REEK-0.INIT +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/model/2_R001_REEK-0.LOG +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/model/2_R001_REEK-0.PRT +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/model/2_R001_REEK-0.RFT +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/model/2_R001_REEK-0.SMSPEC +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNRST +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNSMRY +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/eclipse/model/parameters.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/parameters.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/rms/README +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/rms/reek.rms10.1.3/.master +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/reek/rms/reek.rms11.1.0/.master +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/vfp/GasProd.VFP +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/vfp/pd2.VFP +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/welltest/eclipse/model/DROGON_DST_PLT-0.SMSPEC +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/data/welltest/eclipse/model/DROGON_DST_PLT-0.UNSMRY +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_bjobsusers.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_casegen_upcars.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_check_swatinit.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_check_swatinit_simulators.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_convert_grid_format.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_create_date_files.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_csv2ofmvol.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_csv_merge.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_csv_stack.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_docs.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_eclcompress.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_ecldiff2roff.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_eclinit2roff.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_field_statistics.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_fmu_copy_revision.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_fmuobs.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_fmuobs_parsers.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_fmuobs_writers.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_grav_subs_maps.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_grav_subs_points.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_hook_implementations.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_interp_relperm.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_merge_rft_ertobs.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_merge_unrst_files.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_ofmvol2csv.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_pack_sim.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_params2csv.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_presentvalue.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_prtvol2csv.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_rmsecl_volumetrics.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_sector2fluxnum.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_subscriptlogger.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_summaryplot.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_sunsch.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_sw_model_utilities.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_vfp2csv.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/test_welltest_dpds.py +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_casegen_upcars/demo_large_scale.yaml +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_casegen_upcars/demo_small_scale.yaml +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_casegen_upcars/dump_value.tmpl +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_casegen_upcars/upcars_eclipse_ref_lg.tmpl +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_casegen_upcars/upcars_eclipse_ref_ss.tmpl +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_eclcompress/permxyz.grdecl +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/config_example.yml +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/ERTBOX.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/Geogrid.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/files.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_A_P1_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_A_P1_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_A_P2_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_A_P2_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_B_P1_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_B_P1_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_C_P2_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/mean_C_P2_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/nactive_A_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/nactive_A_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/nactive_B_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/nactive_B_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/nactive_C_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/nactive_C_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_A_F1_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_A_F1_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_A_F2_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_A_F2_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_A_F3_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_A_F3_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_B_F1_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_B_F1_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_B_F2_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_B_F2_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_B_F3_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_B_F3_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_C_F1_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_C_F1_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_C_F2_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_C_F2_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_C_F3_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/prob_C_F3_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_A_P1_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_A_P1_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_A_P2_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_A_P2_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_B_P1_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_B_P1_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_C_P2_0.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ensemble/share/grid_statistics/referencedata/stdev_C_P2_3.roff +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/ert/model/0readme +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/fmuconfig/output/global_variables.yml +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_field_statistics/rms/output/aps/ERTBOX.EGRID +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_fmuobs/drogon_wbhp_rft_wct_gor_tracer_4d.obs +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_fmuobs/ert-doc.csv +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_fmuobs/ert-doc.obs +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_fmuobs/ert-doc.yml +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_fmuobs/fmu-ensemble-obs.yml +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_fmuobs/hist_obs_wells.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_fmuobs/ri-obs.csv +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_gravity/HIST.EGRID +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_gravity/HIST.INIT +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_gravity/HIST.UNRST +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_gravity/global_variables.yml +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_gravity/grav_subs_maps.yml +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_gravity/grav_subs_points.yml +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_gravity/seabed.gri +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_gravity/station_coordinates.csv +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_interp_relperm/cfg.yml +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_interp_relperm/sgof_base.inc +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_interp_relperm/sgof_opt.inc +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_interp_relperm/sgof_pes.inc +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_interp_relperm/swof_base.inc +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_interp_relperm/swof_opt.inc +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_interp_relperm/swof_pes.inc +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_merge_rft_ertobs/drogon/gendata_rft.csv +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A2.obs +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A2.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A3.obs +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A3.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A4.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A4_1.obs +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A5.obs +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A5.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A6.obs +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A6.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_merge_rft_ertobs/drogon/rft/well_date_rft.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_merge_unrst_files/HIST.UNRST +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_merge_unrst_files/PRED.UNRST +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_ofmvol2csv/fileA.vol +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_ofmvol2csv/fileB.vol +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_ofmvol2csv/fileC.vol +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_ofmvol2csv/ofm_example.vol +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_prtvol2csv/0readme.txt +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_prtvol2csv/DROGON_FIPNUM.PRT +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_prtvol2csv/DROGON_FIPZON.PRT +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_prtvol2csv/DROGON_INACTIVE_FIPNUM.PRT +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_prtvol2csv/DROGON_NO_INITIAL_BALANCE.PRT +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_prtvol2csv/DROGON_NO_INITIAL_BALANCE_FLOW.PRT +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.DATA +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.EGRID +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.FLUX +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_sector2fluxnum/OUT_COARSE.FLUX +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_sector2fluxnum/TEST.DATA +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_sector2fluxnum/TEST.EGRID +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_sector2fluxnum/TEST.INIT +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_sector2fluxnum/TEST.UNRST +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_sunsch/config.yml +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_sunsch/emptyinit.sch +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_sunsch/foo1.sch +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_sunsch/footemplate.sch +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_sunsch/initwithdates.sch +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_sunsch/merge2.sch +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_sunsch/mergeme.sch +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/testdata_sunsch/options3.sch +0 -0
- {subscript-1.14.6 → subscript-1.14.7}/tests/utils.py +0 -0
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"""Restart file (UNRST) thinner, command line application"""
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import datetime
|
|
5
|
+
import logging
|
|
6
|
+
import shutil
|
|
7
|
+
import subprocess
|
|
8
|
+
import tempfile
|
|
9
|
+
from contextlib import chdir
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
|
|
12
|
+
import numpy as np
|
|
13
|
+
import pandas as pd
|
|
14
|
+
from resdata.resfile import ResdataFile
|
|
15
|
+
|
|
16
|
+
from subscript import __version__, getLogger
|
|
17
|
+
|
|
18
|
+
logger = getLogger(__name__)
|
|
19
|
+
|
|
20
|
+
DESCRIPTION = """
|
|
21
|
+
Slice a subset of restart-dates from an E100 Restart file (UNRST)
|
|
22
|
+
|
|
23
|
+
Example::
|
|
24
|
+
|
|
25
|
+
$ restartthinner --restarts 4 ECLIPSE.UNRST
|
|
26
|
+
|
|
27
|
+
where four restarts evenly spread out in relevant dates will be picked and
|
|
28
|
+
written to the same filename (keeping the original is optional)
|
|
29
|
+
"""
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def find_resdata_app(toolname: str) -> str:
|
|
33
|
+
"""Locate path of resdata apps, trying common suffixes (.x, .c.x, .cpp.x).
|
|
34
|
+
|
|
35
|
+
Args:
|
|
36
|
+
toolname: Base name of the tool (e.g., 'rd_unpack')
|
|
37
|
+
|
|
38
|
+
Returns:
|
|
39
|
+
Full path to the executable.
|
|
40
|
+
|
|
41
|
+
Raises:
|
|
42
|
+
OSError: If tool cannot be found in PATH.
|
|
43
|
+
"""
|
|
44
|
+
for ext in [".x", ".c.x", ".cpp.x", ""]: # Order matters.
|
|
45
|
+
if path := shutil.which(toolname + ext):
|
|
46
|
+
return path
|
|
47
|
+
raise OSError(f"{toolname} not found in PATH")
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def date_slicer(
|
|
51
|
+
slicedates: list[pd.Timestamp],
|
|
52
|
+
restartdates: list[datetime.datetime],
|
|
53
|
+
restartindices: list[int],
|
|
54
|
+
) -> list[int]:
|
|
55
|
+
"""Make a list of report indices that match the input slicedates."""
|
|
56
|
+
slicedatelist = []
|
|
57
|
+
for slicedate in slicedates:
|
|
58
|
+
daydistances = [abs((pd.Timestamp(slicedate) - x).days) for x in restartdates]
|
|
59
|
+
slicedatelist.append(restartindices[daydistances.index(min(daydistances))])
|
|
60
|
+
return slicedatelist
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
def rd_repacker(rstfilename: str, slicerstindices: list[int], quiet: bool) -> None:
|
|
64
|
+
"""Repack a UNRST file keeping only selected restart indices.
|
|
65
|
+
|
|
66
|
+
Uses rd_unpack and rd_pack utilities from resdata to unpack the UNRST file,
|
|
67
|
+
remove unwanted dates, and repack into a new UNRST file.
|
|
68
|
+
|
|
69
|
+
Args:
|
|
70
|
+
rstfilename: Path to the UNRST file.
|
|
71
|
+
slicerstindices: List of restart indices to keep.
|
|
72
|
+
quiet: If True, suppress subprocess output.
|
|
73
|
+
|
|
74
|
+
Raises:
|
|
75
|
+
OSError: If rd_unpack or rd_pack tools are not found.
|
|
76
|
+
"""
|
|
77
|
+
rd_unpack = find_resdata_app("rd_unpack")
|
|
78
|
+
rd_pack = find_resdata_app("rd_pack")
|
|
79
|
+
|
|
80
|
+
rstpath = Path(rstfilename)
|
|
81
|
+
rstdir = rstpath.parent or Path(".")
|
|
82
|
+
rstname = rstpath.name
|
|
83
|
+
|
|
84
|
+
with chdir(rstdir):
|
|
85
|
+
tempdir = Path(tempfile.mkdtemp(dir="."))
|
|
86
|
+
try:
|
|
87
|
+
# Move UNRST into temp directory and work there
|
|
88
|
+
shutil.move(rstname, tempdir / rstname)
|
|
89
|
+
|
|
90
|
+
with chdir(tempdir):
|
|
91
|
+
subprocess.run(
|
|
92
|
+
[rd_unpack, rstname],
|
|
93
|
+
stdout=subprocess.DEVNULL if quiet else None,
|
|
94
|
+
check=True,
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
for file in Path(".").glob("*.X*"):
|
|
98
|
+
index = int(file.suffix.lstrip(".X"))
|
|
99
|
+
if index not in slicerstindices:
|
|
100
|
+
file.unlink()
|
|
101
|
+
|
|
102
|
+
remaining_files = sorted(Path(".").glob("*.X*"))
|
|
103
|
+
subprocess.run(
|
|
104
|
+
[rd_pack, *[str(f) for f in remaining_files]],
|
|
105
|
+
stdout=subprocess.DEVNULL if quiet else None,
|
|
106
|
+
check=True,
|
|
107
|
+
)
|
|
108
|
+
|
|
109
|
+
# Move result back up
|
|
110
|
+
shutil.move(rstname, Path("..") / rstname)
|
|
111
|
+
finally:
|
|
112
|
+
shutil.rmtree(tempdir)
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def get_restart_indices(rstfilename: str) -> list[int]:
|
|
116
|
+
"""Extract a list of restart indices for a filename.
|
|
117
|
+
|
|
118
|
+
Args:
|
|
119
|
+
rstfilename: Path to the UNRST file.
|
|
120
|
+
|
|
121
|
+
Returns:
|
|
122
|
+
List of restart report indices.
|
|
123
|
+
|
|
124
|
+
Raises:
|
|
125
|
+
FileNotFoundError: If the file does not exist.
|
|
126
|
+
"""
|
|
127
|
+
if Path(rstfilename).exists():
|
|
128
|
+
# This function segfaults if file does not exist
|
|
129
|
+
return ResdataFile.file_report_list(str(rstfilename))
|
|
130
|
+
raise FileNotFoundError(f"{rstfilename} not found")
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
def restartthinner(
|
|
134
|
+
filename: str,
|
|
135
|
+
numberofslices: int,
|
|
136
|
+
quiet: bool = False,
|
|
137
|
+
dryrun: bool = True,
|
|
138
|
+
keep: bool = False,
|
|
139
|
+
) -> None:
|
|
140
|
+
"""Thin an existing UNRST file to selected number of restarts.
|
|
141
|
+
|
|
142
|
+
Args:
|
|
143
|
+
filename: Path to the UNRST file.
|
|
144
|
+
numberofslices: Number of restart dates to keep.
|
|
145
|
+
quiet: If True, suppress informational output.
|
|
146
|
+
dryrun: If True, only show what would be done without modifying files.
|
|
147
|
+
keep: If True, keep original file with .orig suffix.
|
|
148
|
+
"""
|
|
149
|
+
rst = ResdataFile(filename)
|
|
150
|
+
restart_indices = get_restart_indices(filename)
|
|
151
|
+
restart_dates = [
|
|
152
|
+
rst.iget_restart_sim_time(index) for index in range(len(restart_indices))
|
|
153
|
+
]
|
|
154
|
+
|
|
155
|
+
if numberofslices > 1:
|
|
156
|
+
slicedates = pd.DatetimeIndex(
|
|
157
|
+
np.linspace(
|
|
158
|
+
pd.Timestamp(restart_dates[0]).value,
|
|
159
|
+
pd.Timestamp(restart_dates[-1]).value,
|
|
160
|
+
int(numberofslices),
|
|
161
|
+
)
|
|
162
|
+
).to_list()
|
|
163
|
+
else:
|
|
164
|
+
slicedates = [restart_dates[-1]] # Only return last date if only one is wanted
|
|
165
|
+
|
|
166
|
+
slicerstindices = date_slicer(slicedates, restart_dates, restart_indices)
|
|
167
|
+
slicerstindices = sorted(set(slicerstindices)) # uniquify
|
|
168
|
+
|
|
169
|
+
if not quiet:
|
|
170
|
+
logger.info("Selected restarts:")
|
|
171
|
+
logger.info("-----------------------")
|
|
172
|
+
for idx, rstidx in enumerate(restart_indices):
|
|
173
|
+
slicepresent = "X" if rstidx in slicerstindices else ""
|
|
174
|
+
logger.info(
|
|
175
|
+
"%4d %s %s",
|
|
176
|
+
rstidx,
|
|
177
|
+
datetime.date.strftime(restart_dates[idx], "%Y-%m-%d"),
|
|
178
|
+
slicepresent,
|
|
179
|
+
)
|
|
180
|
+
logger.info("-----------------------")
|
|
181
|
+
|
|
182
|
+
if not dryrun:
|
|
183
|
+
if keep:
|
|
184
|
+
backupname = filename + ".orig"
|
|
185
|
+
logger.info("Backing up %s to %s", filename, backupname)
|
|
186
|
+
shutil.copyfile(filename, backupname)
|
|
187
|
+
rd_repacker(filename, slicerstindices, quiet)
|
|
188
|
+
logger.info("Written to %s", filename)
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
def get_parser() -> argparse.ArgumentParser:
|
|
192
|
+
"""Setup parser"""
|
|
193
|
+
parser = argparse.ArgumentParser(
|
|
194
|
+
formatter_class=argparse.ArgumentDefaultsHelpFormatter, description=DESCRIPTION
|
|
195
|
+
)
|
|
196
|
+
parser.add_argument("UNRST", help="Name of UNRST file")
|
|
197
|
+
parser.add_argument(
|
|
198
|
+
"-n",
|
|
199
|
+
"--restarts",
|
|
200
|
+
type=int,
|
|
201
|
+
help="Number of restart dates wanted",
|
|
202
|
+
required=True,
|
|
203
|
+
)
|
|
204
|
+
parser.add_argument(
|
|
205
|
+
"-d",
|
|
206
|
+
"--dryrun",
|
|
207
|
+
action="store_true",
|
|
208
|
+
default=False,
|
|
209
|
+
help="Dry-run only, do not touch files",
|
|
210
|
+
)
|
|
211
|
+
parser.add_argument(
|
|
212
|
+
"-q",
|
|
213
|
+
"--quiet",
|
|
214
|
+
action="store_true",
|
|
215
|
+
default=False,
|
|
216
|
+
help="Mute output from script",
|
|
217
|
+
)
|
|
218
|
+
parser.add_argument(
|
|
219
|
+
"-k",
|
|
220
|
+
"--keep",
|
|
221
|
+
action="store_true",
|
|
222
|
+
default=False,
|
|
223
|
+
help="Keep original UNRST file",
|
|
224
|
+
)
|
|
225
|
+
parser.add_argument(
|
|
226
|
+
"--version",
|
|
227
|
+
action="version",
|
|
228
|
+
version="%(prog)s (subscript version " + __version__ + ")",
|
|
229
|
+
)
|
|
230
|
+
return parser
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
def main() -> None:
|
|
234
|
+
"""Endpoint for command line script."""
|
|
235
|
+
parser = get_parser()
|
|
236
|
+
args = parser.parse_args()
|
|
237
|
+
|
|
238
|
+
if args.restarts <= 0:
|
|
239
|
+
parser.error("Number of restarts must be a positive number")
|
|
240
|
+
if args.UNRST.endswith(".DATA"):
|
|
241
|
+
parser.error("Provide the UNRST file, not the DATA file")
|
|
242
|
+
if args.quiet:
|
|
243
|
+
logger.setLevel(logging.WARNING)
|
|
244
|
+
|
|
245
|
+
restartthinner(args.UNRST, args.restarts, args.quiet, args.dryrun, args.keep)
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
if __name__ == "__main__":
|
|
249
|
+
main()
|
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '1.14.
|
|
32
|
-
__version_tuple__ = version_tuple = (1, 14,
|
|
31
|
+
__version__ = version = '1.14.7'
|
|
32
|
+
__version_tuple__ = version_tuple = (1, 14, 7)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g88003f2b0'
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import datetime
|
|
2
|
+
import logging
|
|
3
|
+
import os
|
|
4
|
+
import shutil
|
|
5
|
+
import subprocess
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
from unittest.mock import patch
|
|
8
|
+
|
|
9
|
+
import pandas as pd
|
|
10
|
+
import pytest
|
|
11
|
+
|
|
12
|
+
from subscript.restartthinner import restartthinner
|
|
13
|
+
|
|
14
|
+
ECLDIR = Path(__file__).absolute().parent / "data/reek/eclipse/model"
|
|
15
|
+
|
|
16
|
+
UNRST_FNAME = "2_R001_REEK-0.UNRST"
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def test_dryrun(tmp_path, mocker, monkeypatch):
|
|
20
|
+
"""Test dry-run"""
|
|
21
|
+
shutil.copyfile(ECLDIR / UNRST_FNAME, tmp_path / UNRST_FNAME)
|
|
22
|
+
|
|
23
|
+
monkeypatch.chdir(tmp_path)
|
|
24
|
+
|
|
25
|
+
orig_rstindices = restartthinner.get_restart_indices(UNRST_FNAME)
|
|
26
|
+
assert len(orig_rstindices) == 4
|
|
27
|
+
|
|
28
|
+
mocker.patch("sys.argv", ["restartthinner", "-d", "-n", "2", UNRST_FNAME])
|
|
29
|
+
restartthinner.main()
|
|
30
|
+
|
|
31
|
+
# Check that dry run did not do anything
|
|
32
|
+
assert Path(UNRST_FNAME).exists()
|
|
33
|
+
assert len(orig_rstindices) == len(restartthinner.get_restart_indices(UNRST_FNAME))
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def test_first_and_last(tmp_path, mocker, monkeypatch):
|
|
37
|
+
"""Ask for two restart points, this should give us the first and last."""
|
|
38
|
+
shutil.copyfile(ECLDIR / UNRST_FNAME, tmp_path / UNRST_FNAME)
|
|
39
|
+
|
|
40
|
+
monkeypatch.chdir(tmp_path)
|
|
41
|
+
|
|
42
|
+
orig_rstindices = restartthinner.get_restart_indices(UNRST_FNAME)
|
|
43
|
+
|
|
44
|
+
mocker.patch("sys.argv", ["restartthinner", "-n", "2", UNRST_FNAME, "--keep"])
|
|
45
|
+
restartthinner.main()
|
|
46
|
+
|
|
47
|
+
assert Path(UNRST_FNAME).exists()
|
|
48
|
+
assert Path(UNRST_FNAME + ".orig").exists() # The backed up file
|
|
49
|
+
|
|
50
|
+
new_rstindices = restartthinner.get_restart_indices(UNRST_FNAME)
|
|
51
|
+
assert len(new_rstindices) == 2
|
|
52
|
+
assert new_rstindices[0] == orig_rstindices[0]
|
|
53
|
+
assert new_rstindices[-1] == orig_rstindices[-1]
|
|
54
|
+
assert len(restartthinner.get_restart_indices(UNRST_FNAME + ".orig")) == 4
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def test_subdirectory(tmp_path, mocker, monkeypatch):
|
|
58
|
+
"""Check that we can thin an UNRST file two directory levels down"""
|
|
59
|
+
monkeypatch.chdir(tmp_path)
|
|
60
|
+
|
|
61
|
+
subdir = Path("eclipse/model")
|
|
62
|
+
subdir.mkdir(parents=True)
|
|
63
|
+
|
|
64
|
+
shutil.copyfile(ECLDIR / UNRST_FNAME, subdir / UNRST_FNAME)
|
|
65
|
+
orig_rstindices = restartthinner.get_restart_indices(subdir / UNRST_FNAME)
|
|
66
|
+
|
|
67
|
+
mocker.patch(
|
|
68
|
+
"sys.argv", ["restartthinner", "-n", "3", str(subdir / UNRST_FNAME), "--keep"]
|
|
69
|
+
)
|
|
70
|
+
print(os.getcwd())
|
|
71
|
+
restartthinner.main()
|
|
72
|
+
print(os.getcwd())
|
|
73
|
+
|
|
74
|
+
assert (subdir / UNRST_FNAME).exists()
|
|
75
|
+
assert (subdir / (UNRST_FNAME + ".orig")).exists() # The backed up file
|
|
76
|
+
|
|
77
|
+
new_rstindices = restartthinner.get_restart_indices(subdir / UNRST_FNAME)
|
|
78
|
+
assert len(new_rstindices) == 3
|
|
79
|
+
assert new_rstindices[0] == orig_rstindices[0]
|
|
80
|
+
assert new_rstindices[-1] == orig_rstindices[-1]
|
|
81
|
+
assert (
|
|
82
|
+
len(restartthinner.get_restart_indices(subdir / (UNRST_FNAME + ".orig"))) == 4
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def test_get_restart_indices_filenotfound(tmp_path, monkeypatch):
|
|
87
|
+
"""EclFile.file_report_list segfaults unless the code is careful"""
|
|
88
|
+
with pytest.raises(FileNotFoundError, match="foo"):
|
|
89
|
+
restartthinner.get_restart_indices("foo")
|
|
90
|
+
with pytest.raises(FileNotFoundError, match="foo"):
|
|
91
|
+
restartthinner.get_restart_indices(Path("foo"))
|
|
92
|
+
|
|
93
|
+
monkeypatch.chdir(tmp_path)
|
|
94
|
+
Path("FOO.UNRST").write_text("this is not an unrst file", encoding="utf8")
|
|
95
|
+
with pytest.raises(TypeError, match="which is not a restart file"):
|
|
96
|
+
restartthinner.get_restart_indices("FOO.UNRST")
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
@pytest.mark.integration
|
|
100
|
+
def test_integration():
|
|
101
|
+
"""Test that the endpoint is installed, and the binary tools are available"""
|
|
102
|
+
assert subprocess.check_output(["restartthinner", "-h"])
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
def test_single_restart_slice(tmp_path, mocker, monkeypatch):
|
|
106
|
+
"""Test requesting only 1 restart (should return just the last date)."""
|
|
107
|
+
shutil.copyfile(ECLDIR / UNRST_FNAME, tmp_path / UNRST_FNAME)
|
|
108
|
+
monkeypatch.chdir(tmp_path)
|
|
109
|
+
|
|
110
|
+
orig_rstindices = restartthinner.get_restart_indices(UNRST_FNAME)
|
|
111
|
+
|
|
112
|
+
mocker.patch("sys.argv", ["restartthinner", "-n", "1", UNRST_FNAME])
|
|
113
|
+
restartthinner.main()
|
|
114
|
+
|
|
115
|
+
new_rstindices = restartthinner.get_restart_indices(UNRST_FNAME)
|
|
116
|
+
assert len(new_rstindices) == 1
|
|
117
|
+
assert new_rstindices[0] == orig_rstindices[-1] # Should be the last date
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
def test_negative_restarts_error(tmp_path, mocker, capsys, monkeypatch):
|
|
121
|
+
"""Test that negative restart count gives an error."""
|
|
122
|
+
shutil.copyfile(ECLDIR / UNRST_FNAME, tmp_path / UNRST_FNAME)
|
|
123
|
+
monkeypatch.chdir(tmp_path)
|
|
124
|
+
|
|
125
|
+
mocker.patch("sys.argv", ["restartthinner", "-n", "-1", UNRST_FNAME])
|
|
126
|
+
with pytest.raises(SystemExit) as excinfo:
|
|
127
|
+
restartthinner.main()
|
|
128
|
+
|
|
129
|
+
assert excinfo.value.code == 2 # argparse error exit code
|
|
130
|
+
captured = capsys.readouterr()
|
|
131
|
+
assert "positive number" in captured.err
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
def test_zero_restarts_error(tmp_path, mocker, capsys, monkeypatch):
|
|
135
|
+
"""Test that zero restart count gives an error."""
|
|
136
|
+
shutil.copyfile(ECLDIR / UNRST_FNAME, tmp_path / UNRST_FNAME)
|
|
137
|
+
monkeypatch.chdir(tmp_path)
|
|
138
|
+
|
|
139
|
+
mocker.patch("sys.argv", ["restartthinner", "-n", "0", UNRST_FNAME])
|
|
140
|
+
with pytest.raises(SystemExit) as excinfo:
|
|
141
|
+
restartthinner.main()
|
|
142
|
+
|
|
143
|
+
assert excinfo.value.code == 2
|
|
144
|
+
captured = capsys.readouterr()
|
|
145
|
+
assert "positive number" in captured.err
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def test_data_file_error(tmp_path, mocker, capsys, monkeypatch):
|
|
149
|
+
"""Test that providing a DATA file instead of UNRST gives an error."""
|
|
150
|
+
monkeypatch.chdir(tmp_path)
|
|
151
|
+
Path("TEST.DATA").touch()
|
|
152
|
+
|
|
153
|
+
mocker.patch("sys.argv", ["restartthinner", "-n", "2", "TEST.DATA"])
|
|
154
|
+
with pytest.raises(SystemExit) as excinfo:
|
|
155
|
+
restartthinner.main()
|
|
156
|
+
|
|
157
|
+
assert excinfo.value.code == 2
|
|
158
|
+
captured = capsys.readouterr()
|
|
159
|
+
assert "UNRST file" in captured.err
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def test_find_resdata_app_not_found():
|
|
163
|
+
"""Test that OSError is raised when resdata tools are not in PATH."""
|
|
164
|
+
with (
|
|
165
|
+
patch.object(shutil, "which", return_value=None),
|
|
166
|
+
pytest.raises(OSError, match="nonexistent_tool not found in PATH"),
|
|
167
|
+
):
|
|
168
|
+
restartthinner.find_resdata_app("nonexistent_tool")
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def test_find_resdata_app_with_suffix():
|
|
172
|
+
"""Test that find_resdata_app tries different suffixes."""
|
|
173
|
+
call_count = {"count": 0}
|
|
174
|
+
|
|
175
|
+
def mock_which(name):
|
|
176
|
+
call_count["count"] += 1
|
|
177
|
+
# Simulate finding tool with .c.x suffix on second try
|
|
178
|
+
if name == "rd_unpack.c.x":
|
|
179
|
+
return "/usr/bin/rd_unpack.c.x"
|
|
180
|
+
return None
|
|
181
|
+
|
|
182
|
+
with patch.object(shutil, "which", side_effect=mock_which):
|
|
183
|
+
result = restartthinner.find_resdata_app("rd_unpack")
|
|
184
|
+
assert result == "/usr/bin/rd_unpack.c.x"
|
|
185
|
+
assert call_count["count"] == 2 # Tried .x first, then .c.x
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
def test_date_slicer():
|
|
189
|
+
"""Test date_slicer matches slicedates to nearest restart dates."""
|
|
190
|
+
|
|
191
|
+
# Create test data with 4 restart dates
|
|
192
|
+
restart_dates = [
|
|
193
|
+
datetime.datetime(2020, 1, 1),
|
|
194
|
+
datetime.datetime(2020, 4, 1),
|
|
195
|
+
datetime.datetime(2020, 7, 1),
|
|
196
|
+
datetime.datetime(2020, 10, 1),
|
|
197
|
+
]
|
|
198
|
+
restart_indices = [0, 1, 2, 3]
|
|
199
|
+
|
|
200
|
+
# Slice dates that should match to indices 0, 2, 3
|
|
201
|
+
slice_dates = [
|
|
202
|
+
pd.Timestamp("2020-01-15"), # Closest to Jan 1 -> index 0
|
|
203
|
+
pd.Timestamp("2020-06-15"), # Closest to Jul 1 -> index 2
|
|
204
|
+
pd.Timestamp("2020-11-01"), # Closest to Oct 1 -> index 3
|
|
205
|
+
]
|
|
206
|
+
|
|
207
|
+
result = restartthinner.date_slicer(slice_dates, restart_dates, restart_indices)
|
|
208
|
+
assert result == [0, 2, 3]
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
def test_quiet_mode(tmp_path, mocker, caplog, monkeypatch):
|
|
212
|
+
"""Test that quiet mode suppresses log output."""
|
|
213
|
+
shutil.copyfile(ECLDIR / UNRST_FNAME, tmp_path / UNRST_FNAME)
|
|
214
|
+
monkeypatch.chdir(tmp_path)
|
|
215
|
+
|
|
216
|
+
# Run with quiet mode
|
|
217
|
+
with caplog.at_level(logging.INFO, logger="subscript"):
|
|
218
|
+
mocker.patch("sys.argv", ["restartthinner", "-q", "-n", "2", UNRST_FNAME])
|
|
219
|
+
restartthinner.main()
|
|
220
|
+
|
|
221
|
+
# Check that log output is empty
|
|
222
|
+
assert len(caplog.text) == 0
|