res2df 1.3.6__tar.gz → 1.3.8__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.
Files changed (251) hide show
  1. {res2df-1.3.6 → res2df-1.3.8}/.github/workflows/codecov.yml +11 -6
  2. {res2df-1.3.6 → res2df-1.3.8}/.github/workflows/publish.yml +2 -2
  3. {res2df-1.3.6 → res2df-1.3.8}/.github/workflows/res2df.yml +12 -7
  4. {res2df-1.3.6 → res2df-1.3.8}/.github/workflows/style.yml +12 -4
  5. {res2df-1.3.6 → res2df-1.3.8}/.github/workflows/typing.yml +12 -4
  6. {res2df-1.3.6 → res2df-1.3.8}/.pre-commit-config.yaml +3 -5
  7. {res2df-1.3.6/src/res2df.egg-info → res2df-1.3.8}/PKG-INFO +4 -2
  8. {res2df-1.3.6 → res2df-1.3.8}/docs/conf.py +1 -1
  9. {res2df-1.3.6 → res2df-1.3.8}/pyproject.toml +19 -7
  10. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/__init__.py +2 -3
  11. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/common.py +79 -75
  12. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/compdat.py +27 -32
  13. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/csv2res.py +5 -9
  14. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/equil.py +24 -29
  15. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/faults.py +2 -7
  16. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/fipreports.py +10 -14
  17. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/grid.py +61 -68
  18. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/gruptree.py +33 -35
  19. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/inferdims.py +6 -9
  20. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/nnc.py +9 -13
  21. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/parameters.py +12 -12
  22. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/pillars.py +24 -31
  23. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/pvt.py +29 -34
  24. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/res2csv.py +10 -15
  25. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/res2csvlogger.py +1 -3
  26. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/resdatafiles.py +8 -8
  27. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/rft.py +36 -42
  28. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/satfunc.py +22 -28
  29. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/summary.py +57 -60
  30. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/trans.py +16 -38
  31. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/version.py +16 -3
  32. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/vfp/__init__.py +1 -1
  33. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/vfp/_vfp.py +28 -33
  34. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/vfp/_vfpcommon.py +18 -19
  35. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/vfp/_vfpdefs.py +2 -3
  36. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/vfp/_vfpinj.py +23 -58
  37. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/vfp/_vfpprod.py +28 -64
  38. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/wcon.py +4 -11
  39. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/wellcompletiondata.py +26 -26
  40. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/wellconnstatus.py +4 -5
  41. {res2df-1.3.6 → res2df-1.3.8/src/res2df.egg-info}/PKG-INFO +4 -2
  42. {res2df-1.3.6 → res2df-1.3.8}/src/res2df.egg-info/SOURCES.txt +1 -0
  43. {res2df-1.3.6 → res2df-1.3.8}/src/res2df.egg-info/requires.txt +3 -1
  44. res2df-1.3.8/tests/__init__.py +0 -0
  45. {res2df-1.3.6 → res2df-1.3.8}/tests/test_common.py +6 -7
  46. {res2df-1.3.6 → res2df-1.3.8}/tests/test_compdat.py +6 -8
  47. {res2df-1.3.6 → res2df-1.3.8}/tests/test_eclfiles.py +1 -3
  48. {res2df-1.3.6 → res2df-1.3.8}/tests/test_equil.py +26 -27
  49. {res2df-1.3.6 → res2df-1.3.8}/tests/test_ert_hooks.py +2 -6
  50. {res2df-1.3.6 → res2df-1.3.8}/tests/test_faults.py +1 -2
  51. {res2df-1.3.6 → res2df-1.3.8}/tests/test_fipreports.py +5 -5
  52. {res2df-1.3.6 → res2df-1.3.8}/tests/test_grid.py +45 -9
  53. {res2df-1.3.6 → res2df-1.3.8}/tests/test_gruptree.py +3 -4
  54. {res2df-1.3.6 → res2df-1.3.8}/tests/test_hook_implementations.py +1 -3
  55. {res2df-1.3.6 → res2df-1.3.8}/tests/test_inferdims.py +3 -4
  56. {res2df-1.3.6 → res2df-1.3.8}/tests/test_integration.py +1 -2
  57. {res2df-1.3.6 → res2df-1.3.8}/tests/test_logging.py +1 -3
  58. {res2df-1.3.6 → res2df-1.3.8}/tests/test_nnc.py +3 -6
  59. {res2df-1.3.6 → res2df-1.3.8}/tests/test_parameters.py +3 -2
  60. {res2df-1.3.6 → res2df-1.3.8}/tests/test_pvt.py +5 -7
  61. {res2df-1.3.6 → res2df-1.3.8}/tests/test_rft.py +20 -22
  62. {res2df-1.3.6 → res2df-1.3.8}/tests/test_satfunc.py +1 -2
  63. {res2df-1.3.6 → res2df-1.3.8}/tests/test_summary.py +17 -18
  64. {res2df-1.3.6 → res2df-1.3.8}/tests/test_summary_restarts.py +4 -6
  65. {res2df-1.3.6 → res2df-1.3.8}/tests/test_trans.py +1 -10
  66. {res2df-1.3.6 → res2df-1.3.8}/tests/test_userapi.py +1 -2
  67. {res2df-1.3.6 → res2df-1.3.8}/tests/test_vfp.py +1 -1
  68. {res2df-1.3.6 → res2df-1.3.8}/tests/test_wcon.py +1 -2
  69. {res2df-1.3.6 → res2df-1.3.8}/tests/test_wellcompletiondata.py +2 -2
  70. {res2df-1.3.6 → res2df-1.3.8}/tests/test_wellconnstatus.py +2 -4
  71. {res2df-1.3.6 → res2df-1.3.8}/tests/test_welopen.py +1 -2
  72. {res2df-1.3.6 → res2df-1.3.8}/tests/test_wlist.py +1 -2
  73. {res2df-1.3.6 → res2df-1.3.8}/.gitignore +0 -0
  74. {res2df-1.3.6 → res2df-1.3.8}/CONTRIBUTING.md +0 -0
  75. {res2df-1.3.6 → res2df-1.3.8}/LICENSE +0 -0
  76. {res2df-1.3.6 → res2df-1.3.8}/README.md +0 -0
  77. {res2df-1.3.6 → res2df-1.3.8}/SECURITY.md +0 -0
  78. {res2df-1.3.6 → res2df-1.3.8}/ci/testkomodo.sh +0 -0
  79. {res2df-1.3.6 → res2df-1.3.8}/docs/_static/equinor-logo.png +0 -0
  80. {res2df-1.3.6 → res2df-1.3.8}/docs/_static/equinor-logo2.jpg +0 -0
  81. {res2df-1.3.6 → res2df-1.3.8}/docs/_static/equinor_logo.jpg +0 -0
  82. {res2df-1.3.6 → res2df-1.3.8}/docs/_static/equinor_logo_only.jpg +0 -0
  83. {res2df-1.3.6 → res2df-1.3.8}/docs/_templates/layout.html +0 -0
  84. {res2df-1.3.6 → res2df-1.3.8}/docs/contribution.rst +0 -0
  85. {res2df-1.3.6 → res2df-1.3.8}/docs/csv2res.rst +0 -0
  86. {res2df-1.3.6 → res2df-1.3.8}/docs/glossary.rst +0 -0
  87. {res2df-1.3.6 → res2df-1.3.8}/docs/history.rst +0 -0
  88. {res2df-1.3.6 → res2df-1.3.8}/docs/index.rst +0 -0
  89. {res2df-1.3.6 → res2df-1.3.8}/docs/installation.rst +0 -0
  90. {res2df-1.3.6 → res2df-1.3.8}/docs/introduction.rst +0 -0
  91. {res2df-1.3.6 → res2df-1.3.8}/docs/res2csv.rst +0 -0
  92. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/compdat.csv +0 -0
  93. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/compdat.rst +0 -0
  94. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/equil-example.csv +0 -0
  95. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/equil.rst +0 -0
  96. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/fipnum.inc +0 -0
  97. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/fipreports-example.csv +0 -0
  98. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/fipreports-example.txt +0 -0
  99. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/fipreports.rst +0 -0
  100. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/grid.csv +0 -0
  101. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/grid.rst +0 -0
  102. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/gruptree.csv +0 -0
  103. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/gruptree.rst +0 -0
  104. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/gruptreenet.csv +0 -0
  105. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/images/injectoranalysis.png +0 -0
  106. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/images/multibranch-rftanalysis.png +0 -0
  107. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/nnc.csv +0 -0
  108. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/nnc.rst +0 -0
  109. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/outflow.csv +0 -0
  110. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/pillars-dyn1-stacked.csv +0 -0
  111. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/pillars-dyn1-unstacked.csv +0 -0
  112. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/pillars-example1.csv +0 -0
  113. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/pillars.rst +0 -0
  114. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/pvt.csv +0 -0
  115. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/pvt.rst +0 -0
  116. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/rft.rst +0 -0
  117. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/rft_columns.csv +0 -0
  118. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/satfunc.csv +0 -0
  119. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/satfunc.rst +0 -0
  120. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/summary.csv +0 -0
  121. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/summary.rst +0 -0
  122. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/trans-boundaries.csv +0 -0
  123. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/trans-group.csv +0 -0
  124. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/trans.rst +0 -0
  125. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/trans1.csv +0 -0
  126. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/wcon.csv +0 -0
  127. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/wcon.rst +0 -0
  128. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/well_connection_status.csv +0 -0
  129. {res2df-1.3.6 → res2df-1.3.8}/docs/usage/wellconnstatus.rst +0 -0
  130. {res2df-1.3.6 → res2df-1.3.8}/docs/usage.rst +0 -0
  131. {res2df-1.3.6 → res2df-1.3.8}/setup.cfg +0 -0
  132. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/__version__.py +0 -0
  133. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/constants.py +0 -0
  134. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/hook_implementations/__init__.py +0 -0
  135. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/hook_implementations/forward_model_steps.py +0 -0
  136. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/BRANPROP +0 -0
  137. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/COMPDAT +0 -0
  138. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/COMPLUMP +0 -0
  139. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/COMPSEGS +0 -0
  140. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/DENSITY +0 -0
  141. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/EQLDIMS +0 -0
  142. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/EQUIL +0 -0
  143. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/FAULTS +0 -0
  144. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/GRUPNET +0 -0
  145. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/GRUPTREE +0 -0
  146. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/NODEPROP +0 -0
  147. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/PBVD +0 -0
  148. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/PDVD +0 -0
  149. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/PVDG +0 -0
  150. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/PVDO +0 -0
  151. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/PVTG +0 -0
  152. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/PVTO +0 -0
  153. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/PVTW +0 -0
  154. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/ROCK +0 -0
  155. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/RSVD +0 -0
  156. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/RVVD +0 -0
  157. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/SGFN +0 -0
  158. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/SGOF +0 -0
  159. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/SGWFN +0 -0
  160. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/SLGOF +0 -0
  161. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/SOF2 +0 -0
  162. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/SOF3 +0 -0
  163. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/SWFN +0 -0
  164. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/SWOF +0 -0
  165. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/TABDIMS +0 -0
  166. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/VFPINJ +0 -0
  167. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/VFPPROD +0 -0
  168. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/WCONHIST +0 -0
  169. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/WCONINJE +0 -0
  170. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/WCONINJH +0 -0
  171. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/WCONPROD +0 -0
  172. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/WELOPEN +0 -0
  173. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/WELSEGS +0 -0
  174. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/WELSPECS +0 -0
  175. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/WLIST +0 -0
  176. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/WSEGAICD +0 -0
  177. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/WSEGSICD +0 -0
  178. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/WSEGVALV +0 -0
  179. {res2df-1.3.6/tests → res2df-1.3.8/src/res2df/opmkeywords}/__init__.py +0 -0
  180. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/readme +0 -0
  181. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/opmkeywords/runmetoupdate.sh +0 -0
  182. {res2df-1.3.6 → res2df-1.3.8}/src/res2df/svg_color_keyword_names.txt +0 -0
  183. {res2df-1.3.6 → res2df-1.3.8}/src/res2df.egg-info/dependency_links.txt +0 -0
  184. {res2df-1.3.6 → res2df-1.3.8}/src/res2df.egg-info/entry_points.txt +0 -0
  185. {res2df-1.3.6 → res2df-1.3.8}/src/res2df.egg-info/not-zip-safe +0 -0
  186. {res2df-1.3.6 → res2df-1.3.8}/src/res2df.egg-info/top_level.txt +0 -0
  187. {res2df-1.3.6 → res2df-1.3.8}/tests/conftest.py +0 -0
  188. {res2df-1.3.6 → res2df-1.3.8}/tests/data/eightcells/EIGHTCELLS.DATA +0 -0
  189. {res2df-1.3.6 → res2df-1.3.8}/tests/data/eightcells/EIGHTCELLS.EGRID +0 -0
  190. {res2df-1.3.6 → res2df-1.3.8}/tests/data/eightcells/EIGHTCELLS.INIT +0 -0
  191. {res2df-1.3.6 → res2df-1.3.8}/tests/data/eightcells/EIGHTCELLS.INSPEC +0 -0
  192. {res2df-1.3.6 → res2df-1.3.8}/tests/data/eightcells/EIGHTCELLS.PRT +0 -0
  193. {res2df-1.3.6 → res2df-1.3.8}/tests/data/eightcells/EIGHTCELLS.RFT +0 -0
  194. {res2df-1.3.6 → res2df-1.3.8}/tests/data/eightcells/EIGHTCELLS.RSSPEC +0 -0
  195. {res2df-1.3.6 → res2df-1.3.8}/tests/data/eightcells/EIGHTCELLS.SMSPEC +0 -0
  196. {res2df-1.3.6 → res2df-1.3.8}/tests/data/eightcells/EIGHTCELLS.UNRST +0 -0
  197. {res2df-1.3.6 → res2df-1.3.8}/tests/data/eightcells/EIGHTCELLS.UNSMRY +0 -0
  198. {res2df-1.3.6 → res2df-1.3.8}/tests/data/eightcells/eightcells_duplicated_summary_vector/EIGHTCELLS_DUPES.DATA +0 -0
  199. {res2df-1.3.6 → res2df-1.3.8}/tests/data/eightcells/eightcells_duplicated_summary_vector/EIGHTCELLS_DUPES.SMSPEC +0 -0
  200. {res2df-1.3.6 → res2df-1.3.8}/tests/data/eightcells/eightcells_duplicated_summary_vector/EIGHTCELLS_DUPES.UNSMRY +0 -0
  201. {res2df-1.3.6 → res2df-1.3.8}/tests/data/eightcells/zones.lyr +0 -0
  202. {res2df-1.3.6 → res2df-1.3.8}/tests/data/fipreports/TEST1.PRT +0 -0
  203. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/grid/reek.faults +0 -0
  204. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/grid/reek.grid +0 -0
  205. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/grid/reek.multflt +0 -0
  206. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/grid/reek.multz +0 -0
  207. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/grid/reek.perm +0 -0
  208. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/grid/reek.poro +0 -0
  209. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/props/let-sgof.txt +0 -0
  210. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/props/let-swof.txt +0 -0
  211. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/props/reek.endpoints +0 -0
  212. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/props/reek.pvt +0 -0
  213. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/props/reek.swatinit +0 -0
  214. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/props/sgof.txt +0 -0
  215. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/props/swof.inc +0 -0
  216. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/props/swof.txt +0 -0
  217. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/regions/reek.eqlnum +0 -0
  218. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/regions/reek.fipnum +0 -0
  219. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/schedule/op6_aicd1_gp.sch +0 -0
  220. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/schedule/op6_icd1_gp.sch +0 -0
  221. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/schedule/op6_valve1_gp.sch +0 -0
  222. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/schedule/reek_history.sch +0 -0
  223. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/solution/reek.equil +0 -0
  224. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/include/summary/reek.smry +0 -0
  225. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/model/2_R001_REEK-0-OPMFLOW.PRT +0 -0
  226. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/model/2_R001_REEK-0.DATA +0 -0
  227. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/model/2_R001_REEK-0.ECLEND +0 -0
  228. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/model/2_R001_REEK-0.EGRID +0 -0
  229. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/model/2_R001_REEK-0.INIT +0 -0
  230. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/model/2_R001_REEK-0.LOG +0 -0
  231. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/model/2_R001_REEK-0.PRT +0 -0
  232. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/model/2_R001_REEK-0.RFT +0 -0
  233. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/model/2_R001_REEK-0.SMSPEC +0 -0
  234. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNRST +0 -0
  235. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNSMRY +0 -0
  236. {res2df-1.3.6 → res2df-1.3.8}/tests/data/reek/eclipse/model/zones.lyr +0 -0
  237. {res2df-1.3.6 → res2df-1.3.8}/tests/data/timesteps/SHORT_STEP.DATA +0 -0
  238. {res2df-1.3.6 → res2df-1.3.8}/tests/data/timesteps/SHORT_STEP.SMSPEC +0 -0
  239. {res2df-1.3.6 → res2df-1.3.8}/tests/data/timesteps/SHORT_STEP.UNSMRY +0 -0
  240. {res2df-1.3.6 → res2df-1.3.8}/tests/data/timesteps/SHORT_STEP_LONG.DATA +0 -0
  241. {res2df-1.3.6 → res2df-1.3.8}/tests/data/timesteps/SHORT_STEP_LONG.SMSPEC +0 -0
  242. {res2df-1.3.6 → res2df-1.3.8}/tests/data/timesteps/SHORT_STEP_LONG.UNSMRY +0 -0
  243. {res2df-1.3.6 → res2df-1.3.8}/tests/data/timesteps/SHORT_STEP_WITH_TIMESTEP.DATA +0 -0
  244. {res2df-1.3.6 → res2df-1.3.8}/tests/data/timesteps/SHORT_STEP_WITH_TIMESTEP.SMSPEC +0 -0
  245. {res2df-1.3.6 → res2df-1.3.8}/tests/data/timesteps/SHORT_STEP_WITH_TIMESTEP.UNSMRY +0 -0
  246. {res2df-1.3.6 → res2df-1.3.8}/tests/data/timesteps/SHORT_STEP_WITH_TIMESTEP_LONG.DATA +0 -0
  247. {res2df-1.3.6 → res2df-1.3.8}/tests/data/timesteps/SHORT_STEP_WITH_TIMESTEP_LONG.SMSPEC +0 -0
  248. {res2df-1.3.6 → res2df-1.3.8}/tests/data/timesteps/SHORT_STEP_WITH_TIMESTEP_LONG.UNSMRY +0 -0
  249. {res2df-1.3.6 → res2df-1.3.8}/tests/test_init.py +0 -0
  250. {res2df-1.3.6 → res2df-1.3.8}/tests/test_pillars.py +0 -0
  251. {res2df-1.3.6 → res2df-1.3.8}/tests/test_zonemap.py +0 -0
@@ -14,6 +14,7 @@ jobs:
14
14
  env:
15
15
  OS: ${{ matrix.os }}
16
16
  PYTHON: '3.11'
17
+ UV_SYSTEM_PYTHON: 1
17
18
 
18
19
  steps:
19
20
 
@@ -22,24 +23,28 @@ jobs:
22
23
  sudo apt-get update
23
24
  sudo apt-get install libegl1
24
25
 
25
- - uses: actions/checkout@v4
26
+ - uses: actions/checkout@v5
26
27
 
27
28
  - name: Setup Python
28
- uses: actions/setup-python@v5
29
+ uses: actions/setup-python@v6
29
30
  with:
30
31
  python-version: 3.11
31
- cache: "pip"
32
+
33
+ - name: Install uv
34
+ uses: astral-sh/setup-uv@v7
35
+ with:
36
+ enable-cache: true
37
+ python-version: "3.11"
32
38
 
33
39
  - name: Install res2df
34
40
  run: |
35
- pip install pip -U
36
- pip install .[tests,ert]
41
+ uv pip install ".[tests, ert]"
37
42
 
38
43
  - name: Generate coverage report and upload
39
44
  run: |
40
45
  pytest tests --disable-warnings --cov=res2df --cov-report=xml
41
46
  # Uninstall packages that res2df supports not being installed:
42
- pip uninstall --yes ert networkx opm
47
+ uv pip uninstall ert opm
43
48
  # Run tests again in cov-append-mode:
44
49
  pytest tests --disable-warnings --cov=res2df --cov-report=xml --cov-append
45
50
  bash <(curl -s https://codecov.io/bash)
@@ -16,12 +16,12 @@ jobs:
16
16
 
17
17
  steps:
18
18
  - name: Checkout
19
- uses: actions/checkout@v4
19
+ uses: actions/checkout@v5
20
20
  with:
21
21
  fetch-depth: 0
22
22
 
23
23
  - name: Set up Python 3.11
24
- uses: actions/setup-python@v5
24
+ uses: actions/setup-python@v6
25
25
  with:
26
26
  python-version: '3.11'
27
27
 
@@ -14,6 +14,7 @@ on:
14
14
 
15
15
  env:
16
16
  ERT_SHOW_BACKTRACE: 1
17
+ UV_SYSTEM_PYTHON: 1
17
18
 
18
19
  jobs:
19
20
  res2df:
@@ -36,7 +37,7 @@ jobs:
36
37
  sudo apt-get install libegl1
37
38
 
38
39
  - name: Checkout commit locally
39
- uses: actions/checkout@v4
40
+ uses: actions/checkout@v5
40
41
 
41
42
  - name: Checkout tags
42
43
  # This seems necessary for setuptools_scm to be able to infer
@@ -44,23 +45,27 @@ jobs:
44
45
  run: git fetch --unshallow --tags
45
46
 
46
47
  - name: Set up Python ${{ matrix.python-version }}
47
- uses: actions/setup-python@v5
48
+ uses: actions/setup-python@v6
48
49
  with:
49
50
  python-version: ${{ matrix.python-version }}
50
- cache: "pip"
51
+
52
+ - name: Install uv
53
+ uses: astral-sh/setup-uv@v7
54
+ with:
55
+ enable-cache: true
56
+ python-version: ${{ matrix.python-version }}
51
57
 
52
58
  - name: Install res2df with dependencies
53
59
  run: |
54
- pip install --upgrade pip
55
- pip install ".[tests, docs]"
60
+ uv pip install ".[tests, docs]"
56
61
 
57
62
 
58
63
  - name: Install ert
59
64
  if: matrix.install-ert
60
- run: pip install ".[ert]"
65
+ run: uv pip install ".[ert]"
61
66
 
62
67
  - name: List all installed packages
63
- run: pip freeze
68
+ run: uv pip freeze
64
69
 
65
70
  - name: Run tests
66
71
  run: |
@@ -11,6 +11,9 @@ concurrency:
11
11
  group: ${{ github.workflow }}-${{ github.ref }}
12
12
  cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
13
13
 
14
+ env:
15
+ UV_SYSTEM_PYTHON: 1
16
+
14
17
  jobs:
15
18
  check-style:
16
19
  timeout-minutes: 15
@@ -20,19 +23,24 @@ jobs:
20
23
  python-version: ['3.12']
21
24
 
22
25
  steps:
23
- - uses: actions/checkout@v4
26
+ - uses: actions/checkout@v5
24
27
  with:
25
28
  fetch-depth: 0
26
29
 
27
30
  - name: Set up Python ${{ matrix.python-version }}
28
- uses: actions/setup-python@v5
31
+ uses: actions/setup-python@v6
32
+ with:
33
+ python-version: ${{ matrix.python-version }}
34
+
35
+ - name: Install uv
36
+ uses: astral-sh/setup-uv@v7
29
37
  with:
38
+ enable-cache: true
30
39
  python-version: ${{ matrix.python-version }}
31
- cache: "pip"
32
40
 
33
41
  - name: Install res2df with style dependencies
34
42
  run: |
35
- pip install ".[style]"
43
+ uv pip install ".[style]"
36
44
 
37
45
  - name: Run style check
38
46
  if: ${{ always() }}
@@ -11,6 +11,9 @@ concurrency:
11
11
  group: ${{ github.workflow }}-${{ github.ref }}
12
12
  cancel-in-progress: ${{ github.ref != 'refs/heads/master' }}
13
13
 
14
+ env:
15
+ UV_SYSTEM_PYTHON: 1
16
+
14
17
  jobs:
15
18
  check-style:
16
19
  timeout-minutes: 15
@@ -20,19 +23,24 @@ jobs:
20
23
  python-version: ['3.12']
21
24
 
22
25
  steps:
23
- - uses: actions/checkout@v4
26
+ - uses: actions/checkout@v5
24
27
  with:
25
28
  fetch-depth: 0
26
29
 
27
30
  - name: Set up Python ${{ matrix.python-version }}
28
- uses: actions/setup-python@v5
31
+ uses: actions/setup-python@v6
32
+ with:
33
+ python-version: ${{ matrix.python-version }}
34
+
35
+ - name: Install uv
36
+ uses: astral-sh/setup-uv@v7
29
37
  with:
38
+ enable-cache: true
30
39
  python-version: ${{ matrix.python-version }}
31
- cache: "pip"
32
40
 
33
41
  - name: Install res2df with types dependencies
34
42
  run: |
35
- pip install ".[types]"
43
+ uv pip install ".[types]"
36
44
 
37
45
  - name: Run mypy
38
46
  run: |
@@ -1,20 +1,18 @@
1
1
  repos:
2
2
  - repo: https://github.com/pre-commit/pre-commit-hooks
3
- rev: v5.0.0
3
+ rev: v6.0.0
4
4
  hooks:
5
5
  - id: no-commit-to-branch
6
6
  args: ['--branch', 'master']
7
7
  - id: check-yaml
8
8
  - id: debug-statements
9
9
  - id: end-of-file-fixer
10
- - id: fix-encoding-pragma
11
- args: [--remove]
12
10
  - id: mixed-line-ending
13
11
  - id: trailing-whitespace
14
12
 
15
13
  - repo: https://github.com/astral-sh/ruff-pre-commit
16
- rev: v0.9.2
14
+ rev: v0.14.0
17
15
  hooks:
18
- - id: ruff
16
+ - id: ruff-check
19
17
  args: [ --fix ]
20
18
  - id: ruff-format
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: res2df
3
- Version: 1.3.6
3
+ Version: 1.3.8
4
4
  Summary: Convert reservoir simulator input and output to DataFrames
5
5
  Author-email: Håvard Berland <havb@equinor.com>
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -696,6 +696,7 @@ Description-Content-Type: text/markdown
696
696
  License-File: LICENSE
697
697
  Requires-Dist: resdata>=5.0.0-b0
698
698
  Requires-Dist: resfo
699
+ Requires-Dist: networkx
699
700
  Requires-Dist: numpy
700
701
  Requires-Dist: opm>=2020.10.2
701
702
  Requires-Dist: pandas
@@ -703,7 +704,6 @@ Requires-Dist: pyarrow
703
704
  Requires-Dist: pyyaml>=5.1
704
705
  Requires-Dist: treelib
705
706
  Provides-Extra: tests
706
- Requires-Dist: networkx; extra == "tests"
707
707
  Requires-Dist: pytest; extra == "tests"
708
708
  Requires-Dist: pytest-cov; extra == "tests"
709
709
  Requires-Dist: pytest-mock; extra == "tests"
@@ -715,6 +715,8 @@ Requires-Dist: mypy; extra == "types"
715
715
  Requires-Dist: types-PyYAML; extra == "types"
716
716
  Requires-Dist: types-python-dateutil; extra == "types"
717
717
  Requires-Dist: types-setuptools; extra == "types"
718
+ Requires-Dist: types-networkx; extra == "types"
719
+ Requires-Dist: pandas-stubs; extra == "types"
718
720
  Provides-Extra: docs
719
721
  Requires-Dist: autoapi; extra == "docs"
720
722
  Requires-Dist: ipython; extra == "docs"
@@ -24,7 +24,7 @@ author = "Håvard Berland"
24
24
  copyright = f"Equinor 2019-{datetime.datetime.now().year}"
25
25
 
26
26
  # The short X.Y version
27
- import res2df # noqa
27
+ import res2df # noqa: F401, E402
28
28
 
29
29
  release = metadata.version("res2df")
30
30
  version = release
@@ -2,7 +2,6 @@
2
2
  requires = [
3
3
  "setuptools>=28",
4
4
  "setuptools_scm",
5
- "wheel"
6
5
  ]
7
6
  build-backend = "setuptools.build_meta"
8
7
 
@@ -36,6 +35,7 @@ dynamic = ["version"]
36
35
  dependencies= [
37
36
  "resdata>=5.0.0-b0",
38
37
  "resfo",
38
+ "networkx",
39
39
  "numpy",
40
40
  "opm>=2020.10.2",
41
41
  "pandas",
@@ -46,7 +46,6 @@ dependencies= [
46
46
 
47
47
  [project.optional-dependencies]
48
48
  tests = [
49
- "networkx",
50
49
  "pytest",
51
50
  "pytest-cov",
52
51
  "pytest-mock",
@@ -57,7 +56,9 @@ types = [
57
56
  "mypy",
58
57
  "types-PyYAML",
59
58
  "types-python-dateutil",
60
- "types-setuptools"
59
+ "types-setuptools",
60
+ "types-networkx",
61
+ "pandas-stubs",
61
62
  ]
62
63
  docs = [
63
64
  "autoapi",
@@ -98,12 +99,18 @@ res2df = "src/res2df"
98
99
  res2df = ["opmkeywords/*", "py.typed", "svg_color_keyword_names.txt"]
99
100
 
100
101
  [tool.mypy]
102
+ strict_equality = true
103
+ extra_checks = true
104
+
105
+ [[tool.mypy.overrides]]
106
+ module = [
107
+ "opm.*",
108
+ "resfo",
109
+ "pyarrow", # should be removed for pyarrow > 21.0.0
110
+ "resdata.*",
111
+ ]
101
112
  ignore_missing_imports = true
102
113
 
103
- [tool.pylint]
104
- # Module docstrings are not required
105
- disable = "missing-module-docstring"
106
-
107
114
  [tool.pytest.ini_options]
108
115
  markers = [
109
116
  "integration: marks a test as an integration test",
@@ -128,6 +135,9 @@ select = [
128
135
  "PL", # pylint
129
136
  "NPY", # numpy specific rules
130
137
  "C4", # flake8-comprehensions
138
+ "PD", # pandas-vet
139
+ "RUF", # ruff specific rules
140
+ "UP", # pyupgrade
131
141
  ]
132
142
  preview = true
133
143
  ignore = [
@@ -144,10 +154,12 @@ ignore = [
144
154
  "PLR0904", # too-many-public-methods
145
155
  "PLR1702", # too-many-nested-blocks
146
156
  "PLW3201", # bad-dunder-method-name
157
+ "PD013", # pandas-use-of-dot-stack
147
158
  ]
148
159
 
149
160
  [tool.ruff.lint.extend-per-file-ignores]
150
161
  "src/res2df/__init__.py" = ["PLC0414"]
162
+ "tests/*" = ["RUF005"]
151
163
 
152
164
  [tool.ruff.lint.pylint]
153
165
  max-args = 20
@@ -1,11 +1,10 @@
1
1
  import importlib
2
- from typing import List
3
2
 
4
3
  from .__version__ import __version__ as __version__
5
4
  from .res2csvlogger import getLogger_res2csv as getLogger_res2csv
6
5
  from .resdatafiles import ResdataFiles as ResdataFiles
7
6
 
8
- SUBMODULES: List[str] = [
7
+ SUBMODULES: list[str] = [
9
8
  "compdat",
10
9
  "equil",
11
10
  "faults",
@@ -26,5 +25,5 @@ SUBMODULES: List[str] = [
26
25
  ]
27
26
 
28
27
 
29
- for submodule in SUBMODULES + ["res2csv", "csv2res"]:
28
+ for submodule in [*SUBMODULES, "res2csv", "csv2res"]:
30
29
  importlib.import_module("res2df." + submodule)