subscript 1.2.2__tar.gz → 1.4.0__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.2.2 → subscript-1.4.0}/.github/workflows/codecov.yml +2 -2
- {subscript-1.2.2 → subscript-1.4.0}/.github/workflows/publish.yml +2 -2
- {subscript-1.2.2 → subscript-1.4.0}/.github/workflows/subscript.yml +7 -11
- {subscript-1.2.2 → subscript-1.4.0}/PKG-INFO +5 -7
- {subscript-1.2.2 → subscript-1.4.0}/README.md +2 -2
- subscript-1.4.0/ci/testkomodo.sh +34 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/contributing.rst +5 -3
- {subscript-1.2.2 → subscript-1.4.0}/pyproject.toml +23 -10
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/__init__.py +16 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/bjobsusers/bjobsusers.py +1 -3
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/casegen_upcars/casegen_upcars.py +2 -3
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/casegen_upcars/model.py +21 -29
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/casegen_upcars/udf.py +2 -1
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/casegen_upcars/udf_arg_parser.py +1 -1
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/check_swatinit/check_swatinit.py +9 -18
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/convert_grid_format/convert_grid_format.py +9 -11
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/csv2ofmvol/csv2ofmvol.py +2 -5
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/csv_merge/csv_merge.py +2 -3
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/csv_stack/csv_stack.py +7 -9
- subscript-1.4.0/src/subscript/eclcompress/allowlist.py +213 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/eclcompress/eclcompress.py +2 -6
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/ecldiff2roff/ecldiff2roff.py +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/fmu_copy_revision/fmu_copy_revision.py +2 -1
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/fmuobs/fmuobs.py +14 -10
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/fmuobs/parsers.py +5 -7
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/fmuobs/writers.py +7 -4
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/interp_relperm/interp_relperm.py +7 -8
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/merge_rft_ertobs/merge_rft_ertobs.py +2 -4
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/ofmvol2csv/ofmvol2csv.py +4 -12
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/pack_sim/pack_sim.py +5 -13
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/params2csv/params2csv.py +99 -50
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/presentvalue/presentvalue.py +17 -16
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/prtvol2csv/prtvol2csv.py +6 -3
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/restartthinner/restartthinner.py +4 -9
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/ri_wellmod/ri_wellmod.py +1 -2
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/rmsecl_volumetrics/rmsecl_volumetrics.py +6 -7
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/runrms/runrms.py +4 -11
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/sector2fluxnum/datafile_obj.py +3 -6
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/sector2fluxnum/flux_obj.py +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/sector2fluxnum/flux_util.py +3 -7
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/sector2fluxnum/fluxfile_obj.py +12 -25
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/summaryplot/summaryplot.py +35 -41
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/sunsch/sunsch.py +1 -1
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/sunsch/time_vector.py +26 -29
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/sw_model_utilities/sw_model_utilities.py +1 -1
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/version.py +2 -2
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/vfp2csv/vfp2csv.py +1 -2
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/welltest_dpds/welltest_dpds.py +6 -11
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript.egg-info/PKG-INFO +5 -7
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript.egg-info/SOURCES.txt +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript.egg-info/requires.txt +1 -4
- {subscript-1.2.2 → subscript-1.4.0}/tests/conftest.py +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_bjobsusers.py +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_check_swatinit.py +1 -2
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_check_swatinit_simulators.py +10 -29
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_convert_grid_format.py +1 -2
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_csv2ofmvol.py +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_csv_merge.py +2 -2
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_csv_stack.py +4 -12
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_eclcompress.py +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_ecldiff2roff.py +9 -3
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_fmu_copy_revision.py +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_fmuobs.py +3 -5
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_hook_implementations.py +2 -3
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_interp_relperm.py +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_merge_rft_ertobs.py +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_merge_unrst_files.py +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_ofmvol2csv.py +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_pack_sim.py +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_params2csv.py +120 -16
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_presentvalue.py +1 -2
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_prtvol2csv.py +2 -3
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_restartthinner.py +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_ri_wellmod.py +18 -4
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_rmsecl_volumetrics.py +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_runrms.py +3 -2
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_sector2fluxnum.py +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_summaryplot.py +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_sunsch.py +4 -5
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_sw_model_utilities.py +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_vfp2csv.py +0 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_welltest_dpds.py +2 -3
- subscript-1.2.2/.flake8 +0 -5
- subscript-1.2.2/ci/testkomodo.sh +0 -12
- subscript-1.2.2/src/subscript/eclcompress/allowlist.py +0 -215
- {subscript-1.2.2 → subscript-1.4.0}/.gitignore +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/.pylintrc +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/LICENSE +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/SECURITY.md +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/Makefile +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/_static/equinor-logo.png +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/_static/equinor-logo2.jpg +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/_static/equinor-logo2.png +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/_static/equinor_logo.jpg +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/_static/equinor_logo_only.jpg +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/_templates/layout.html +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/conf.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/history.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/index.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/make.bat +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/overview.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/bjobsusers.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/casegen_upcars.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/check_swatinit.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/convert_grid_format.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/csv2ofmvol.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/csv_merge.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/csv_stack.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/eclcompress.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/ecldiff2roff.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/fmu_copy_revision.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/fmuobs.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/images/Pack_sim_overview.png +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/images/Summaryplot-ensemble.png +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/images/Summaryplot-ert.png +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/images/Summaryplot-normalizeexample.png +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/images/Workflow_sector2fluxnum.png +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/images/casegen_upcars_geometry.png +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/images/check_swatinit_scatter.png +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/images/check_swatinit_volplot.png +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/images/ecl-swat-initialization.png +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/images/make_check_swatinit_images.sh +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/images/resinsight_wells_project_example.png +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/interp_relperm.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/merge_rft_ertobs.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/merge_unrst_files.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/ofmvol2csv.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/pack_sim.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/params2csv.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/presentvalue.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/prtvol2csv.csv +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/prtvol2csv.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/restartthinner.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/ri_wellmod.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/rmsecl_volumetrics.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/runeclipse.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/runrms.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/sector2fluxnum.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/summaryplot.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/sunsch.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/sw_model_utilities.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/vfp2csv.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/scripts/welltest_dpds.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/docs/usage.rst +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/setup.cfg +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/bjobsusers/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/casegen_upcars/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/check_swatinit/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/check_swatinit/constants.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/check_swatinit/pillarmodel.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/check_swatinit/plotter.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/config_jobs/CASEGEN_UPCARS +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/config_jobs/CHECK_SWATINIT +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/config_jobs/CSV2OFMVOL +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/config_jobs/CSV_STACK +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/config_jobs/ECLCOMPRESS +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/config_jobs/ECLDIFF2ROFF +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/config_jobs/ECLGRID2ROFF +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/config_jobs/ECLINIT2ROFF +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/config_jobs/ECLRST2ROFF +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/config_jobs/INTERP_RELPERM +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/config_jobs/MERGE_RFT_ERTOBS +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/config_jobs/MERGE_UNRST_FILES +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/config_jobs/OFMVOL2CSV +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/config_jobs/PARAMS2CSV +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/config_jobs/PRTVOL2CSV +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/config_jobs/RI_WELLMOD +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/config_jobs/SUNSCH +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/config_jobs/WELLTEST_DPDS +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/convert_grid_format/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/csv2ofmvol/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/csv_merge/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/csv_stack/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/eclcompress/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/ecldiff2roff/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/eclgrid2roff/eclgrid2roff.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/eclinit2roff/eclinit2roff.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/eclrst2roff/eclrst2roff.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/fmu_copy_revision/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/fmuobs/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/fmuobs/util.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/hook_implementations/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/hook_implementations/jobs.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/interp_relperm/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/legacy/duf +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/legacy/eclmanual +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/legacy/ertwatch +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/legacy/list_rms_usage +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/legacy/nosim +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/legacy/runeclipse +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/merge_rft_ertobs/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/merge_unrst_files/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/merge_unrst_files/merge_unrst_files.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/ofmvol2csv/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/pack_sim/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/params2csv/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/presentvalue/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/prtvol2csv/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/restartthinner/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/ri_wellmod/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/rmsecl_volumetrics/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/runrms/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/sector2fluxnum/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/sector2fluxnum/completions.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/sector2fluxnum/sector2fluxnum.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/summaryplot/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/sunsch/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/sw_model_utilities/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/vfp2csv/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript/welltest_dpds/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript.egg-info/dependency_links.txt +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript.egg-info/entry_points.txt +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/src/subscript.egg-info/top_level.txt +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/__init__.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/grid/reek.faults +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/grid/reek.grid +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/grid/reek.multflt +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/grid/reek.multz +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/grid/reek.perm +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/grid/reek.poro +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/props/let-sgof.txt +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/props/let-swof.txt +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/props/reek.endpoints +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/props/reek.pvt +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/props/reek.swatinit +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/props/sgof.txt +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/props/swof.inc +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/props/swof.txt +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/regions/reek.eqlnum +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/regions/reek.fipnum +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/schedule/reek_history.sch +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/solution/reek.equil +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/include/summary/reek.smry +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.DATA +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.ECLEND +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.EGRID +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.INIT +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.LOG +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.PRT +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.RFT +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.SMSPEC +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNRST +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNSMRY +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/eclipse/model/parameters.txt +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/parameters.txt +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/rms/README +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/rms/reek.rms10.1.3/.master +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/reek/rms/reek.rms11.1.0/.master +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/vfp/GasProd.VFP +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/vfp/pd2.VFP +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/welltest/eclipse/model/DROGON_DST_PLT-0.SMSPEC +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/data/welltest/eclipse/model/DROGON_DST_PLT-0.UNSMRY +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_casegen_upcars.py +1 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_docs.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_fmuobs_parsers.py +1 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_fmuobs_writers.py +1 -1
- {subscript-1.2.2 → subscript-1.4.0}/tests/test_subscriptlogger.py +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_casegen_upcars/demo_large_scale.yaml +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_casegen_upcars/demo_small_scale.yaml +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_casegen_upcars/dump_value.tmpl +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_casegen_upcars/upcars_eclipse_ref_lg.tmpl +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_casegen_upcars/upcars_eclipse_ref_ss.tmpl +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_eclcompress/permxyz.grdecl +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_fmuobs/drogon_wbhp_rft_wct_gor_tracer_4d.obs +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_fmuobs/ert-doc.csv +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_fmuobs/ert-doc.obs +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_fmuobs/ert-doc.yml +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_fmuobs/fmu-ensemble-obs.yml +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_fmuobs/hist_obs_wells.txt +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_fmuobs/ri-obs.csv +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_interp_relperm/cfg.yml +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_interp_relperm/sgof_base.inc +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_interp_relperm/sgof_opt.inc +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_interp_relperm/sgof_pes.inc +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_interp_relperm/swof_base.inc +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_interp_relperm/swof_opt.inc +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_interp_relperm/swof_pes.inc +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_merge_rft_ertobs/drogon/gendata_rft.csv +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A2.obs +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A2.txt +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A3.obs +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A3.txt +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A4.txt +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A4_1.obs +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A5.obs +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A5.txt +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A6.obs +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_merge_rft_ertobs/drogon/rft/R_A6.txt +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_merge_rft_ertobs/drogon/rft/well_date_rft.txt +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_merge_unrst_files/HIST.UNRST +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_merge_unrst_files/PRED.UNRST +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_ofmvol2csv/fileA.vol +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_ofmvol2csv/fileB.vol +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_ofmvol2csv/fileC.vol +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_ofmvol2csv/ofm_example.vol +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_ri_wellmod/drogon_include/grid/drogon.grid.grdecl +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_ri_wellmod/drogon_include/grid/drogon.ntg.grdecl +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_ri_wellmod/drogon_include/grid/drogon.perm.grdecl +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_ri_wellmod/drogon_trajectories/rft_wells.dat +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_ri_wellmod/drogon_trajectories/wells.dat +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_ri_wellmod/drogon_wells_noicd.rsp +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_ri_wellmod/reek_trajectories/reek_wells.dat +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_ri_wellmod/ri_reek_wells.rsp +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_runrms/runrms.yml +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.DATA +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.EGRID +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_sector2fluxnum/DUMPFLUX_TEST.FLUX +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_sector2fluxnum/OUT_COARSE.FLUX +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_sector2fluxnum/TEST.DATA +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_sector2fluxnum/TEST.EGRID +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_sector2fluxnum/TEST.INIT +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_sector2fluxnum/TEST.UNRST +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_sunsch/config.yml +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_sunsch/emptyinit.sch +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_sunsch/foo1.sch +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_sunsch/footemplate.sch +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_sunsch/initwithdates.sch +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_sunsch/merge2.sch +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_sunsch/mergeme.sch +0 -0
- {subscript-1.2.2 → subscript-1.4.0}/tests/testdata_sunsch/options3.sch +0 -0
|
@@ -16,12 +16,12 @@ jobs:
|
|
|
16
16
|
|
|
17
17
|
steps:
|
|
18
18
|
- name: Checkout
|
|
19
|
-
uses: actions/checkout@
|
|
19
|
+
uses: actions/checkout@v4
|
|
20
20
|
with:
|
|
21
21
|
fetch-depth: 0
|
|
22
22
|
|
|
23
23
|
- name: Set up Python 3.8
|
|
24
|
-
uses: actions/setup-python@
|
|
24
|
+
uses: actions/setup-python@v5
|
|
25
25
|
with:
|
|
26
26
|
python-version: 3.8
|
|
27
27
|
|
|
@@ -22,16 +22,16 @@ jobs:
|
|
|
22
22
|
runs-on: ubuntu-latest
|
|
23
23
|
strategy:
|
|
24
24
|
matrix:
|
|
25
|
-
python-version: ["3.8", "3.9", "3.10"]
|
|
25
|
+
python-version: ["3.8", "3.9", "3.10", "3.11"]
|
|
26
26
|
|
|
27
27
|
steps:
|
|
28
28
|
- name: Checkout commit locally
|
|
29
|
-
uses: actions/checkout@
|
|
29
|
+
uses: actions/checkout@v4
|
|
30
30
|
with:
|
|
31
31
|
fetch-depth: 0
|
|
32
32
|
|
|
33
33
|
- name: Set up Python ${{ matrix.python-version }}
|
|
34
|
-
uses: actions/setup-python@
|
|
34
|
+
uses: actions/setup-python@v5
|
|
35
35
|
with:
|
|
36
36
|
python-version: ${{ matrix.python-version }}
|
|
37
37
|
|
|
@@ -60,17 +60,13 @@ jobs:
|
|
|
60
60
|
- name: List all installed packages
|
|
61
61
|
run: pip freeze
|
|
62
62
|
|
|
63
|
-
- name:
|
|
63
|
+
- name: Format with ruff
|
|
64
64
|
if: ${{ always() }}
|
|
65
|
-
run:
|
|
65
|
+
run: ruff format . --check
|
|
66
66
|
|
|
67
|
-
- name: Lint with
|
|
67
|
+
- name: Lint with ruff
|
|
68
68
|
if: ${{ always() }}
|
|
69
|
-
run:
|
|
70
|
-
|
|
71
|
-
- name: Lint with flake8
|
|
72
|
-
if: ${{ always() }}
|
|
73
|
-
run: flake8 src tests
|
|
69
|
+
run: ruff check .
|
|
74
70
|
|
|
75
71
|
- name: Check typing with mypy
|
|
76
72
|
if: ${{ always() }}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: subscript
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.0
|
|
4
4
|
Summary: Equinor's collection of subsurface reservoir modelling scripts
|
|
5
5
|
Author-email: Equinor <rnyb@equinor.com>
|
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
|
@@ -692,6 +692,7 @@ Classifier: Operating System :: POSIX :: Linux
|
|
|
692
692
|
Classifier: Programming Language :: Python :: 3.8
|
|
693
693
|
Classifier: Programming Language :: Python :: 3.9
|
|
694
694
|
Classifier: Programming Language :: Python :: 3.10
|
|
695
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
695
696
|
Classifier: Natural Language :: English
|
|
696
697
|
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
697
698
|
Requires-Python: >=3.8
|
|
@@ -712,13 +713,9 @@ Requires-Dist: scipy
|
|
|
712
713
|
Requires-Dist: seaborn
|
|
713
714
|
Requires-Dist: segyio
|
|
714
715
|
Requires-Dist: shapely
|
|
715
|
-
Requires-Dist: urllib3<2
|
|
716
716
|
Requires-Dist: xlrd
|
|
717
717
|
Requires-Dist: xtgeo
|
|
718
718
|
Provides-Extra: tests
|
|
719
|
-
Requires-Dist: black; extra == "tests"
|
|
720
|
-
Requires-Dist: flake8; extra == "tests"
|
|
721
|
-
Requires-Dist: isort; extra == "tests"
|
|
722
719
|
Requires-Dist: mypy; extra == "tests"
|
|
723
720
|
Requires-Dist: pytest; extra == "tests"
|
|
724
721
|
Requires-Dist: pytest-cov; extra == "tests"
|
|
@@ -726,6 +723,7 @@ Requires-Dist: pytest-mock; extra == "tests"
|
|
|
726
723
|
Requires-Dist: pytest-xdist; extra == "tests"
|
|
727
724
|
Requires-Dist: rstcheck; extra == "tests"
|
|
728
725
|
Requires-Dist: rstcheck-core; extra == "tests"
|
|
726
|
+
Requires-Dist: ruff; extra == "tests"
|
|
729
727
|
Requires-Dist: types-Jinja2; extra == "tests"
|
|
730
728
|
Requires-Dist: types-PyYAML; extra == "tests"
|
|
731
729
|
Requires-Dist: types-python-dateutil; extra == "tests"
|
|
@@ -742,9 +740,9 @@ Requires-Dist: sphinx_rtd_theme; extra == "docs"
|
|
|
742
740
|
|
|
743
741
|
[](https://github.com/equinor/subscript/actions/workflows/subscript.yml)
|
|
744
742
|
[](https://codecov.io/gh/equinor/subscript)
|
|
745
|
-

|
|
743
|
+

|
|
746
744
|
[](https://www.gnu.org/licenses/gpl-3.0)
|
|
747
|
-
[](https://github.com/astral-sh/ruff)
|
|
748
746
|
|
|
749
747
|
**subscript** is Equinor's collection of scripts used for subsurface reservoir modelling.
|
|
750
748
|
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://github.com/equinor/subscript/actions/workflows/subscript.yml)
|
|
4
4
|
[](https://codecov.io/gh/equinor/subscript)
|
|
5
|
-

|
|
5
|
+

|
|
6
6
|
[](https://www.gnu.org/licenses/gpl-3.0)
|
|
7
|
-
[](https://github.com/astral-sh/ruff)
|
|
8
8
|
|
|
9
9
|
**subscript** is Equinor's collection of scripts used for subsurface reservoir modelling.
|
|
10
10
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
install_test_dependencies () {
|
|
2
|
+
pip install ".[tests,docs]"
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
copy_test_files () {
|
|
6
|
+
cp -r $CI_SOURCE_ROOT/tests $CI_TEST_ROOT/tests
|
|
7
|
+
cp $CI_SOURCE_ROOT/pyproject.toml $CI_TEST_ROOT
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
get_os_arch () {
|
|
11
|
+
uname_info=$(uname -a)
|
|
12
|
+
|
|
13
|
+
rhel7=$(echo "$uname_info" | grep "el7")
|
|
14
|
+
rhel8=$(echo "$uname_info" | grep "el8")
|
|
15
|
+
|
|
16
|
+
os_arch="undetermined"
|
|
17
|
+
|
|
18
|
+
if [ "$rhel7" ]; then
|
|
19
|
+
os_arch="x86_64_RH_7"
|
|
20
|
+
elif [ "$rhel8" ]; then
|
|
21
|
+
os_arch="x86_64_RH_8"
|
|
22
|
+
else
|
|
23
|
+
echo "$os_arch"
|
|
24
|
+
exit 1
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
echo "$os_arch"
|
|
28
|
+
exit 0
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
start_tests () {
|
|
32
|
+
os_arch="$(get_os_arch)"
|
|
33
|
+
pytest -n auto --flow-simulator="/project/res/$os_arch/bin/flowdaily" --eclipse-simulator="runeclipse"
|
|
34
|
+
}
|
|
@@ -58,8 +58,11 @@ running tests that rely upon a black oil simulation.
|
|
|
58
58
|
|
|
59
59
|
.. code-block:: console
|
|
60
60
|
|
|
61
|
+
# running on redhat 7
|
|
61
62
|
pytest -n auto --flow-simulator="/project/res/x86_64_RH_7/bin/flowdaily" --eclipse-simulator="runeclipse"
|
|
62
63
|
|
|
64
|
+
# running on redhat 8
|
|
65
|
+
pytest -n auto --flow-simulator="/project/res/x86_64_RH_8/bin/flowdaily" --eclipse-simulator="runeclipse"
|
|
63
66
|
|
|
64
67
|
Code style
|
|
65
68
|
----------
|
|
@@ -69,9 +72,8 @@ the linting done in CI:
|
|
|
69
72
|
|
|
70
73
|
.. code-block:: console
|
|
71
74
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
flake8 src tests
|
|
75
|
+
ruff .
|
|
76
|
+
ruff format .
|
|
75
77
|
mypy src/subscript
|
|
76
78
|
rstcheck -r docs
|
|
77
79
|
|
|
@@ -30,6 +30,7 @@ classifiers = [
|
|
|
30
30
|
"Programming Language :: Python :: 3.8",
|
|
31
31
|
"Programming Language :: Python :: 3.9",
|
|
32
32
|
"Programming Language :: Python :: 3.10",
|
|
33
|
+
"Programming Language :: Python :: 3.11",
|
|
33
34
|
"Natural Language :: English",
|
|
34
35
|
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
|
|
35
36
|
]
|
|
@@ -50,16 +51,12 @@ dependencies = [
|
|
|
50
51
|
"seaborn",
|
|
51
52
|
"segyio",
|
|
52
53
|
"shapely",
|
|
53
|
-
"urllib3<2",
|
|
54
54
|
"xlrd",
|
|
55
55
|
"xtgeo",
|
|
56
56
|
]
|
|
57
57
|
|
|
58
58
|
[project.optional-dependencies]
|
|
59
59
|
tests = [
|
|
60
|
-
"black",
|
|
61
|
-
"flake8",
|
|
62
|
-
"isort",
|
|
63
60
|
"mypy",
|
|
64
61
|
"pytest",
|
|
65
62
|
"pytest-cov",
|
|
@@ -67,6 +64,7 @@ tests = [
|
|
|
67
64
|
"pytest-xdist",
|
|
68
65
|
"rstcheck",
|
|
69
66
|
"rstcheck-core",
|
|
67
|
+
"ruff",
|
|
70
68
|
"types-Jinja2",
|
|
71
69
|
"types-PyYAML",
|
|
72
70
|
"types-python-dateutil",
|
|
@@ -134,12 +132,6 @@ script-files = [
|
|
|
134
132
|
"src/subscript/legacy/runeclipse",
|
|
135
133
|
]
|
|
136
134
|
|
|
137
|
-
[tool.black]
|
|
138
|
-
line-length = 88
|
|
139
|
-
|
|
140
|
-
[tool.isort]
|
|
141
|
-
profile = "black"
|
|
142
|
-
|
|
143
135
|
[tool.mypy]
|
|
144
136
|
ignore_missing_imports = true
|
|
145
137
|
|
|
@@ -166,3 +158,24 @@ markers = [
|
|
|
166
158
|
|
|
167
159
|
[tool.rstcheck]
|
|
168
160
|
ignore_directives = ["argparse", "automodule"]
|
|
161
|
+
|
|
162
|
+
[tool.ruff]
|
|
163
|
+
lint.ignore = [
|
|
164
|
+
"C901",
|
|
165
|
+
]
|
|
166
|
+
lint.select = [
|
|
167
|
+
"C",
|
|
168
|
+
"E",
|
|
169
|
+
"F",
|
|
170
|
+
"I",
|
|
171
|
+
"PIE",
|
|
172
|
+
"Q",
|
|
173
|
+
"RET",
|
|
174
|
+
"RSE",
|
|
175
|
+
"SIM",
|
|
176
|
+
"W",
|
|
177
|
+
]
|
|
178
|
+
line-length = 88
|
|
179
|
+
|
|
180
|
+
[tool.ruff.lint.isort]
|
|
181
|
+
combine-as-imports = true
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import logging
|
|
2
2
|
import sys
|
|
3
|
+
from pathlib import Path
|
|
3
4
|
|
|
4
5
|
try:
|
|
5
6
|
from importlib import metadata
|
|
@@ -9,6 +10,21 @@ except metadata.PackageNotFoundError:
|
|
|
9
10
|
pass
|
|
10
11
|
|
|
11
12
|
|
|
13
|
+
def detect_os(release_file: Path = Path("/etc/redhat-release")) -> str:
|
|
14
|
+
"""Detect operating system string in runtime, just use default if not found."""
|
|
15
|
+
default_os_version = "x86_64_RH_7"
|
|
16
|
+
|
|
17
|
+
if release_file.is_file():
|
|
18
|
+
with open(release_file, "r", encoding="utf-8") as buffer:
|
|
19
|
+
tokens = buffer.read().split()
|
|
20
|
+
for t in tokens:
|
|
21
|
+
if "." in t:
|
|
22
|
+
major = t.split(".")[0]
|
|
23
|
+
return f"x86_64_RH_{major}"
|
|
24
|
+
raise ValueError("Could not detect RHEL version")
|
|
25
|
+
return default_os_version
|
|
26
|
+
|
|
27
|
+
|
|
12
28
|
def getLogger(module_name="subscript"):
|
|
13
29
|
# pylint: disable=invalid-name
|
|
14
30
|
"""Provides a unified logger for subscript scripts.
|
|
@@ -65,9 +65,7 @@ def get_jobs(status: str, bjobs_function: Callable) -> pd.DataFrame:
|
|
|
65
65
|
data = [
|
|
66
66
|
[
|
|
67
67
|
uname,
|
|
68
|
-
1
|
|
69
|
-
if rex.match(hname) is None
|
|
70
|
-
else int(rex.match(hname).group(1)), # type: ignore
|
|
68
|
+
1 if rex.match(hname) is None else int(rex.match(hname).group(1)), # type: ignore
|
|
71
69
|
]
|
|
72
70
|
for (uname, hname) in slines
|
|
73
71
|
]
|
|
@@ -549,9 +549,8 @@ def main():
|
|
|
549
549
|
built_in_functions = ["range"]
|
|
550
550
|
|
|
551
551
|
for var in sorted(meta.find_undeclared_variables(ast)):
|
|
552
|
-
if dictionary.get(var) is None:
|
|
553
|
-
|
|
554
|
-
undefined_var.append(var)
|
|
552
|
+
if dictionary.get(var) is None and var not in built_in_functions:
|
|
553
|
+
undefined_var.append(var)
|
|
555
554
|
|
|
556
555
|
if undefined_var:
|
|
557
556
|
logger.warning(
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""Engine part of casegen_upcars"""
|
|
2
2
|
|
|
3
3
|
import datetime
|
|
4
4
|
import io
|
|
@@ -435,9 +435,7 @@ Initializing model
|
|
|
435
435
|
idx : idx + self._fracture_cell_count,
|
|
436
436
|
start_fracture_idx:end_fracture_idx,
|
|
437
437
|
start_fracture_k : end_fracture_k + 1,
|
|
438
|
-
] =
|
|
439
|
-
_i + 1
|
|
440
|
-
)
|
|
438
|
+
] = _i + 1
|
|
441
439
|
|
|
442
440
|
for _i, idx in enumerate(self._fracture_j):
|
|
443
441
|
fracture_length = max(0.0, min(1.0, self._fracture_length_x[_i])) * self._lx
|
|
@@ -470,9 +468,9 @@ Initializing model
|
|
|
470
468
|
if self._a * self._b * self._c == 0.0:
|
|
471
469
|
self.dict_info["ModelDescription"] = f"Slab with tilting angle {self._tilt}"
|
|
472
470
|
else:
|
|
473
|
-
self.dict_info[
|
|
474
|
-
"
|
|
475
|
-
|
|
471
|
+
self.dict_info["ModelDescription"] = (
|
|
472
|
+
"Dome structure with radius (x, y, z) : {:.2f}m, {:.2f}m, {:.2f}m"
|
|
473
|
+
)
|
|
476
474
|
|
|
477
475
|
x_mid = self._centroid_x * self._lx
|
|
478
476
|
y_mid = self._centroid_y * self._ly
|
|
@@ -494,13 +492,13 @@ Initializing model
|
|
|
494
492
|
cell_dz = np.empty((self._total_nx, self._total_ny, self._total_nz))
|
|
495
493
|
|
|
496
494
|
for idx in self._fracture_i:
|
|
497
|
-
cell_dx[
|
|
498
|
-
|
|
499
|
-
|
|
495
|
+
cell_dx[idx : idx + self._fracture_cell_count, :, :] = (
|
|
496
|
+
self._fracture_thickness
|
|
497
|
+
)
|
|
500
498
|
for idx in self._fracture_j:
|
|
501
|
-
cell_dy[
|
|
502
|
-
|
|
503
|
-
|
|
499
|
+
cell_dy[:, idx : idx + self._fracture_cell_count, :] = (
|
|
500
|
+
self._fracture_thickness
|
|
501
|
+
)
|
|
504
502
|
for idx in range(self._nz):
|
|
505
503
|
cell_dz[:, :, idx] = self._layer_dz[idx]
|
|
506
504
|
self._cell_volume = cell_dx * cell_dy * cell_dz
|
|
@@ -608,10 +606,7 @@ Initializing model
|
|
|
608
606
|
assert len(streak_property) == len(
|
|
609
607
|
self._streak_k
|
|
610
608
|
), f"Number of input {keyword} is not equal to number of streak"
|
|
611
|
-
if isinstance(fracture_property, int)
|
|
612
|
-
data_type = np.int16
|
|
613
|
-
else:
|
|
614
|
-
data_type = float
|
|
609
|
+
data_type = np.int16 if isinstance(fracture_property, int) else float
|
|
615
610
|
props = np.empty(
|
|
616
611
|
(self._total_nx, self._total_ny, self._total_nz), dtype=data_type
|
|
617
612
|
)
|
|
@@ -653,10 +648,7 @@ Initializing model
|
|
|
653
648
|
+ keyword
|
|
654
649
|
+ " is not equal to number fault in Y- direction"
|
|
655
650
|
)
|
|
656
|
-
if isinstance(fracture_x_property, int)
|
|
657
|
-
data_type = np.int16
|
|
658
|
-
else:
|
|
659
|
-
data_type = float
|
|
651
|
+
data_type = np.int16 if isinstance(fracture_x_property, int) else float
|
|
660
652
|
props = np.empty(
|
|
661
653
|
(self._total_nx, self._total_ny, self._total_nz), dtype=data_type
|
|
662
654
|
)
|
|
@@ -779,9 +771,9 @@ Initializing model
|
|
|
779
771
|
)
|
|
780
772
|
|
|
781
773
|
for idx in range(1, self._total_nz):
|
|
782
|
-
zcorn[
|
|
783
|
-
n_surface_points * 2 * idx : n_surface_points * (2 * idx
|
|
784
|
-
|
|
774
|
+
zcorn[n_surface_points * 2 * idx : n_surface_points * (2 * idx + 1)] = (
|
|
775
|
+
zcorn[n_surface_points * (2 * idx - 1) : n_surface_points * (2 * idx)]
|
|
776
|
+
)
|
|
785
777
|
zcorn[
|
|
786
778
|
n_surface_points * (2 * idx + 1) : 2 * n_surface_points * (idx + 1)
|
|
787
779
|
] = (
|
|
@@ -810,8 +802,8 @@ Initializing model
|
|
|
810
802
|
print("/", file=buffer_)
|
|
811
803
|
|
|
812
804
|
print("COORD", file=buffer_)
|
|
813
|
-
for _i in range(
|
|
814
|
-
for _j in range(
|
|
805
|
+
for _i in range(self._xv.shape[0]):
|
|
806
|
+
for _j in range(self._xv.shape[1]):
|
|
815
807
|
print(
|
|
816
808
|
# pylint: disable=consider-using-f-string
|
|
817
809
|
"{{x:{0}}} {{y:{0}}} {{z:{0}}} "
|
|
@@ -958,7 +950,7 @@ Initializing model
|
|
|
958
950
|
low=near_fracture_vug_fraction_dist[0],
|
|
959
951
|
high=near_fracture_vug_fraction_dist[1],
|
|
960
952
|
size=1,
|
|
961
|
-
)
|
|
953
|
+
)[0]
|
|
962
954
|
* self._total_matrix_cells
|
|
963
955
|
)
|
|
964
956
|
)
|
|
@@ -1028,7 +1020,7 @@ Initializing model
|
|
|
1028
1020
|
low=near_streak_vug_fraction_dist[0],
|
|
1029
1021
|
high=near_streak_vug_fraction_dist[1],
|
|
1030
1022
|
size=1,
|
|
1031
|
-
)
|
|
1023
|
+
)[0]
|
|
1032
1024
|
* self._total_matrix_cells
|
|
1033
1025
|
)
|
|
1034
1026
|
)
|
|
@@ -1085,7 +1077,7 @@ Initializing model
|
|
|
1085
1077
|
low=random_vug_fraction_dist[0],
|
|
1086
1078
|
high=random_vug_fraction_dist[1],
|
|
1087
1079
|
size=1,
|
|
1088
|
-
)
|
|
1080
|
+
)[0]
|
|
1089
1081
|
* self._total_matrix_cells
|
|
1090
1082
|
)
|
|
1091
1083
|
)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
"""SWATINIT qc tool"""
|
|
2
|
+
|
|
2
3
|
import argparse
|
|
3
4
|
import sys
|
|
4
5
|
from typing import Any, Dict, List
|
|
@@ -323,10 +324,7 @@ def qc_flag(qc_frame: pd.DataFrame) -> pd.DataFrame:
|
|
|
323
324
|
|
|
324
325
|
qc_col = pd.Series(index=qc_frame.index, dtype=str)
|
|
325
326
|
|
|
326
|
-
if "OWC" in qc_frame
|
|
327
|
-
contact = "OWC"
|
|
328
|
-
else:
|
|
329
|
-
contact = "GWC"
|
|
327
|
+
contact = "OWC" if "OWC" in qc_frame else "GWC"
|
|
330
328
|
|
|
331
329
|
# Eclipse and libecl does not calculate cell centres to the same decimals.
|
|
332
330
|
# Add some tolerance when testing towards fluid contacts.
|
|
@@ -356,9 +354,9 @@ def qc_flag(qc_frame: pd.DataFrame) -> pd.DataFrame:
|
|
|
356
354
|
# Below a nonzero capillary entry pressure but above the contact,
|
|
357
355
|
# SWAT and SWATINIT should be 1.
|
|
358
356
|
if "PPCW" in qc_frame:
|
|
359
|
-
qc_col[
|
|
360
|
-
|
|
361
|
-
|
|
357
|
+
qc_col[np.isclose(qc_frame["SWAT"], 1) & np.isclose(qc_frame["PPCW"], 0)] = (
|
|
358
|
+
__PC_SCALED__
|
|
359
|
+
)
|
|
362
360
|
|
|
363
361
|
# PC is scaled (including "scaling" using PC_SCALING=1), but
|
|
364
362
|
# SWAT!=SWATINIT, this must be due to EQUIL item 9 being nonzero.
|
|
@@ -553,10 +551,7 @@ def compute_pc(qc_frame: pd.DataFrame, satfunc_df: pd.DataFrame) -> pd.Series:
|
|
|
553
551
|
swls = satnum_frame["SWL"].values
|
|
554
552
|
else:
|
|
555
553
|
swls = None
|
|
556
|
-
if "SWU" in satnum_frame
|
|
557
|
-
swus = satnum_frame["SWU"].values
|
|
558
|
-
else:
|
|
559
|
-
swus = None
|
|
554
|
+
swus = satnum_frame["SWU"].values if "SWU" in satnum_frame else None
|
|
560
555
|
p_cap[satnum_frame.index] = _evaluate_pc(
|
|
561
556
|
satnum_frame["SWAT"].values,
|
|
562
557
|
satnum_frame["PC_SCALING"].values,
|
|
@@ -565,10 +560,7 @@ def compute_pc(qc_frame: pd.DataFrame, satfunc_df: pd.DataFrame) -> pd.Series:
|
|
|
565
560
|
satfunc_df[satfunc_df["SATNUM"] == satnum],
|
|
566
561
|
)
|
|
567
562
|
# Fix needed for OPM-flow above contact:
|
|
568
|
-
if "OWC" in qc_frame
|
|
569
|
-
contact = "OWC"
|
|
570
|
-
else:
|
|
571
|
-
contact = "GWC"
|
|
563
|
+
contact = "OWC" if "OWC" in qc_frame else "GWC"
|
|
572
564
|
|
|
573
565
|
# When SWATINIT=SWL=SWAT, PPCW as reported by Eclipse is the
|
|
574
566
|
# same as PCOW_MAX, and we cannot use it to compute PC, remove it:
|
|
@@ -618,7 +610,7 @@ def merge_equil(grid_df: pd.DataFrame, equil_df: pd.DataFrame) -> pd.DataFrame:
|
|
|
618
610
|
# Be compatible with future change in res2df:
|
|
619
611
|
equil_df.rename({"ACCURACY": "OIP_INIT"}, axis="columns", inplace=True)
|
|
620
612
|
|
|
621
|
-
contacts = list(
|
|
613
|
+
contacts = list({"OWC", "GOC", "GWC"}.intersection(set(equil_df.columns)))
|
|
622
614
|
# Rename and slice the equil dataframe:
|
|
623
615
|
equil_df = equil_df.rename(
|
|
624
616
|
{"Z": "Z_DATUM", "PRESSURE": "PRESSURE_DATUM"}, axis="columns"
|
|
@@ -630,8 +622,7 @@ def merge_equil(grid_df: pd.DataFrame, equil_df: pd.DataFrame) -> pd.DataFrame:
|
|
|
630
622
|
assert (
|
|
631
623
|
not pd.isnull(equil_df).any().any()
|
|
632
624
|
), f"BUG: NaNs in equil dataframe:\n{equil_df}"
|
|
633
|
-
|
|
634
|
-
return grid_df
|
|
625
|
+
return grid_df.merge(equil_df, on="EQLNUM", how="left")
|
|
635
626
|
|
|
636
627
|
|
|
637
628
|
def merge_pc_max(
|
{subscript-1.2.2 → subscript-1.4.0}/src/subscript/convert_grid_format/convert_grid_format.py
RENAMED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"""Conversion between grid corner point formats"""
|
|
2
2
|
|
|
3
3
|
import argparse
|
|
4
|
+
import logging
|
|
4
5
|
import os
|
|
5
6
|
import sys
|
|
6
7
|
from pathlib import Path
|
|
@@ -18,7 +19,9 @@ CONVERSIONS = ["ecl2roff"]
|
|
|
18
19
|
MODES = ["grid", "init", "restart"]
|
|
19
20
|
|
|
20
21
|
xtg = XTGeoDialog()
|
|
21
|
-
|
|
22
|
+
|
|
23
|
+
logging.basicConfig(level=logging.INFO)
|
|
24
|
+
logger = logging.getLogger(__name__)
|
|
22
25
|
|
|
23
26
|
|
|
24
27
|
def get_parser() -> argparse.ArgumentParser:
|
|
@@ -147,10 +150,7 @@ def _convert_ecl2roff(
|
|
|
147
150
|
if not props:
|
|
148
151
|
raise SystemExit("STOP. No properties given")
|
|
149
152
|
|
|
150
|
-
if ":" in props
|
|
151
|
-
props_list = props.split(":")
|
|
152
|
-
else:
|
|
153
|
-
props_list = props.split()
|
|
153
|
+
props_list = props.split(":") if ":" in props else props.split()
|
|
154
154
|
|
|
155
155
|
fformat = mode
|
|
156
156
|
fformat = fformat.replace("restart", "unrst")
|
|
@@ -162,10 +162,7 @@ def _convert_ecl2roff(
|
|
|
162
162
|
|
|
163
163
|
if os.path.exists(dates):
|
|
164
164
|
dates = " ".join(Path(dates).read_text(encoding="utf8").splitlines())
|
|
165
|
-
if ":" in dates
|
|
166
|
-
dates_list = dates.split(":")
|
|
167
|
-
else:
|
|
168
|
-
dates_list = dates.split()
|
|
165
|
+
dates_list = dates.split(":") if ":" in dates else dates.split()
|
|
169
166
|
else:
|
|
170
167
|
dates_list = None
|
|
171
168
|
|
|
@@ -198,8 +195,9 @@ def main(args=None) -> None:
|
|
|
198
195
|
logger.info(args)
|
|
199
196
|
|
|
200
197
|
if args.conversion not in set(CONVERSIONS):
|
|
201
|
-
|
|
202
|
-
|
|
198
|
+
raise ValueError(
|
|
199
|
+
f"Illegal conversion <{args.conversion}>. Allowed are: {CONVERSIONS}"
|
|
200
|
+
)
|
|
203
201
|
|
|
204
202
|
xtg.say("Running conversion...")
|
|
205
203
|
_convert_ecl2roff(
|
|
@@ -7,8 +7,7 @@ from typing import List, Union
|
|
|
7
7
|
import pandas as pd
|
|
8
8
|
from dateutil.relativedelta import relativedelta
|
|
9
9
|
|
|
10
|
-
from subscript import __version__
|
|
11
|
-
from subscript import getLogger as subscriptlogger
|
|
10
|
+
from subscript import __version__, getLogger as subscriptlogger
|
|
12
11
|
from subscript.eclcompress.eclcompress import glob_patterns
|
|
13
12
|
|
|
14
13
|
logger = subscriptlogger(__name__)
|
|
@@ -71,7 +70,7 @@ SUPPORTED_COLS = SUPPORTED_VOLCOLS + SUPPORTED_DAYCOLS
|
|
|
71
70
|
|
|
72
71
|
|
|
73
72
|
def read_pdm_csv_files(
|
|
74
|
-
csvfiles: Union[pd.DataFrame, str, List[str], List[pd.DataFrame]]
|
|
73
|
+
csvfiles: Union[pd.DataFrame, str, List[str], List[pd.DataFrame]],
|
|
75
74
|
) -> pd.DataFrame:
|
|
76
75
|
"""Read a list of CSV files and return a dataframe
|
|
77
76
|
|
|
@@ -250,8 +249,6 @@ class CustomFormatter(
|
|
|
250
249
|
|
|
251
250
|
# pylint: disable=unnecessary-pass
|
|
252
251
|
|
|
253
|
-
pass
|
|
254
|
-
|
|
255
252
|
|
|
256
253
|
def get_parser() -> argparse.ArgumentParser:
|
|
257
254
|
"""Parse command line arguments, return a Namespace with arguments"""
|
|
@@ -8,7 +8,7 @@ import sys
|
|
|
8
8
|
from typing import Dict, List, Optional
|
|
9
9
|
|
|
10
10
|
import pandas as pd
|
|
11
|
-
from ert import ErtScript
|
|
11
|
+
from ert.config import ErtScript
|
|
12
12
|
from ert.shared.plugins.plugin_manager import hook_implementation # type: ignore
|
|
13
13
|
|
|
14
14
|
from subscript import __version__, getLogger
|
|
@@ -54,7 +54,6 @@ class CustomFormatter(
|
|
|
54
54
|
"""
|
|
55
55
|
|
|
56
56
|
# pylint: disable=unnecessary-pass
|
|
57
|
-
pass
|
|
58
57
|
|
|
59
58
|
|
|
60
59
|
class CsvMerge(ErtScript):
|
|
@@ -243,7 +242,7 @@ def taglist(strings: List[str], regexp_str: str) -> list:
|
|
|
243
242
|
list is returned.
|
|
244
243
|
"""
|
|
245
244
|
regexp = re.compile(regexp_str)
|
|
246
|
-
matches =
|
|
245
|
+
matches = (re.match(regexp, x) for x in strings)
|
|
247
246
|
values = [x and x.group(1) for x in matches]
|
|
248
247
|
if any(values):
|
|
249
248
|
return values
|