res2df 1.2.0__tar.gz → 1.2.2__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 (256) hide show
  1. {res2df-1.2.0 → res2df-1.2.2}/PKG-INFO +4 -1
  2. res2df-1.2.2/SECURITY.md +16 -0
  3. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/rft.rst +1 -1
  4. {res2df-1.2.0 → res2df-1.2.2}/mypy.ini +3 -0
  5. {res2df-1.2.0 → res2df-1.2.2}/res2df/grid.py +6 -4
  6. {res2df-1.2.0 → res2df-1.2.2}/res2df/summary.py +3 -2
  7. {res2df-1.2.0 → res2df-1.2.2}/res2df/version.py +2 -2
  8. {res2df-1.2.0 → res2df-1.2.2}/res2df.egg-info/PKG-INFO +4 -1
  9. {res2df-1.2.0 → res2df-1.2.2}/res2df.egg-info/SOURCES.txt +1 -0
  10. {res2df-1.2.0 → res2df-1.2.2}/res2df.egg-info/requires.txt +5 -0
  11. {res2df-1.2.0 → res2df-1.2.2}/setup.py +2 -0
  12. {res2df-1.2.0 → res2df-1.2.2}/test_requirements.txt +1 -0
  13. {res2df-1.2.0 → res2df-1.2.2}/tests/test_summary.py +18 -0
  14. {res2df-1.2.0 → res2df-1.2.2}/.codacy.yml +0 -0
  15. {res2df-1.2.0 → res2df-1.2.2}/.github/workflows/codecov.yml +0 -0
  16. {res2df-1.2.0 → res2df-1.2.2}/.github/workflows/res2df.yml +0 -0
  17. {res2df-1.2.0 → res2df-1.2.2}/.github/workflows/style.yml +0 -0
  18. {res2df-1.2.0 → res2df-1.2.2}/.github/workflows/typing.yml +0 -0
  19. {res2df-1.2.0 → res2df-1.2.2}/.gitignore +0 -0
  20. {res2df-1.2.0 → res2df-1.2.2}/.pre-commit-config.yaml +0 -0
  21. {res2df-1.2.0 → res2df-1.2.2}/LICENSE +0 -0
  22. {res2df-1.2.0 → res2df-1.2.2}/README.md +0 -0
  23. {res2df-1.2.0 → res2df-1.2.2}/ci/testkomodo.sh +0 -0
  24. {res2df-1.2.0 → res2df-1.2.2}/docs/_static/equinor-logo.png +0 -0
  25. {res2df-1.2.0 → res2df-1.2.2}/docs/_static/equinor-logo2.jpg +0 -0
  26. {res2df-1.2.0 → res2df-1.2.2}/docs/_static/equinor_logo.jpg +0 -0
  27. {res2df-1.2.0 → res2df-1.2.2}/docs/_static/equinor_logo_only.jpg +0 -0
  28. {res2df-1.2.0 → res2df-1.2.2}/docs/_templates/layout.html +0 -0
  29. {res2df-1.2.0 → res2df-1.2.2}/docs/conf.py +0 -0
  30. {res2df-1.2.0 → res2df-1.2.2}/docs/contribution.rst +0 -0
  31. {res2df-1.2.0 → res2df-1.2.2}/docs/csv2res.rst +0 -0
  32. {res2df-1.2.0 → res2df-1.2.2}/docs/glossary.rst +0 -0
  33. {res2df-1.2.0 → res2df-1.2.2}/docs/history.rst +0 -0
  34. {res2df-1.2.0 → res2df-1.2.2}/docs/index.rst +0 -0
  35. {res2df-1.2.0 → res2df-1.2.2}/docs/installation.rst +0 -0
  36. {res2df-1.2.0 → res2df-1.2.2}/docs/introduction.rst +0 -0
  37. {res2df-1.2.0 → res2df-1.2.2}/docs/res2csv.rst +0 -0
  38. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/compdat.csv +0 -0
  39. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/compdat.rst +0 -0
  40. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/equil-example.csv +0 -0
  41. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/equil.rst +0 -0
  42. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/fipnum.inc +0 -0
  43. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/fipreports-example.csv +0 -0
  44. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/fipreports-example.txt +0 -0
  45. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/fipreports.rst +0 -0
  46. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/grid.csv +0 -0
  47. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/grid.rst +0 -0
  48. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/gruptree.csv +0 -0
  49. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/gruptree.rst +0 -0
  50. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/gruptreenet.csv +0 -0
  51. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/images/injectoranalysis.png +0 -0
  52. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/images/multibranch-rftanalysis.png +0 -0
  53. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/nnc.csv +0 -0
  54. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/nnc.rst +0 -0
  55. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/outflow.csv +0 -0
  56. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/pillars-dyn1-stacked.csv +0 -0
  57. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/pillars-dyn1-unstacked.csv +0 -0
  58. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/pillars-example1.csv +0 -0
  59. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/pillars.rst +0 -0
  60. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/pvt.csv +0 -0
  61. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/pvt.rst +0 -0
  62. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/rft_columns.csv +0 -0
  63. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/satfunc.csv +0 -0
  64. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/satfunc.rst +0 -0
  65. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/summary.csv +0 -0
  66. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/summary.rst +0 -0
  67. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/trans-boundaries.csv +0 -0
  68. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/trans-group.csv +0 -0
  69. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/trans.rst +0 -0
  70. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/trans1.csv +0 -0
  71. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/wcon.csv +0 -0
  72. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/wcon.rst +0 -0
  73. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/well_connection_status.csv +0 -0
  74. {res2df-1.2.0 → res2df-1.2.2}/docs/usage/wellconnstatus.rst +0 -0
  75. {res2df-1.2.0 → res2df-1.2.2}/docs/usage.rst +0 -0
  76. {res2df-1.2.0 → res2df-1.2.2}/py.typed +0 -0
  77. {res2df-1.2.0 → res2df-1.2.2}/res2df/__init__.py +0 -0
  78. {res2df-1.2.0 → res2df-1.2.2}/res2df/__version__.py +0 -0
  79. {res2df-1.2.0 → res2df-1.2.2}/res2df/common.py +0 -0
  80. {res2df-1.2.0 → res2df-1.2.2}/res2df/compdat.py +0 -0
  81. {res2df-1.2.0 → res2df-1.2.2}/res2df/config_jobs/CSV2RES +0 -0
  82. {res2df-1.2.0 → res2df-1.2.2}/res2df/config_jobs/RES2CSV +0 -0
  83. {res2df-1.2.0 → res2df-1.2.2}/res2df/constants.py +0 -0
  84. {res2df-1.2.0 → res2df-1.2.2}/res2df/csv2res.py +0 -0
  85. {res2df-1.2.0 → res2df-1.2.2}/res2df/equil.py +0 -0
  86. {res2df-1.2.0 → res2df-1.2.2}/res2df/faults.py +0 -0
  87. {res2df-1.2.0 → res2df-1.2.2}/res2df/fipreports.py +0 -0
  88. {res2df-1.2.0 → res2df-1.2.2}/res2df/gruptree.py +0 -0
  89. {res2df-1.2.0 → res2df-1.2.2}/res2df/hook_implementations/__init__.py +0 -0
  90. {res2df-1.2.0 → res2df-1.2.2}/res2df/hook_implementations/jobs.py +0 -0
  91. {res2df-1.2.0 → res2df-1.2.2}/res2df/inferdims.py +0 -0
  92. {res2df-1.2.0 → res2df-1.2.2}/res2df/nnc.py +0 -0
  93. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/BRANPROP +0 -0
  94. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/COMPDAT +0 -0
  95. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/COMPLUMP +0 -0
  96. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/COMPSEGS +0 -0
  97. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/DENSITY +0 -0
  98. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/EQLDIMS +0 -0
  99. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/EQUIL +0 -0
  100. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/FAULTS +0 -0
  101. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/GRUPNET +0 -0
  102. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/GRUPTREE +0 -0
  103. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/NODEPROP +0 -0
  104. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/PBVD +0 -0
  105. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/PDVD +0 -0
  106. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/PVDG +0 -0
  107. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/PVDO +0 -0
  108. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/PVTG +0 -0
  109. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/PVTO +0 -0
  110. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/PVTW +0 -0
  111. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/ROCK +0 -0
  112. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/RSVD +0 -0
  113. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/RVVD +0 -0
  114. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/SGFN +0 -0
  115. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/SGOF +0 -0
  116. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/SGWFN +0 -0
  117. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/SLGOF +0 -0
  118. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/SOF2 +0 -0
  119. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/SOF3 +0 -0
  120. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/SWFN +0 -0
  121. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/SWOF +0 -0
  122. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/TABDIMS +0 -0
  123. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/VFPINJ +0 -0
  124. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/VFPPROD +0 -0
  125. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/WCONHIST +0 -0
  126. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/WCONINJE +0 -0
  127. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/WCONINJH +0 -0
  128. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/WCONPROD +0 -0
  129. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/WELOPEN +0 -0
  130. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/WELSEGS +0 -0
  131. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/WELSPECS +0 -0
  132. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/WLIST +0 -0
  133. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/WSEGAICD +0 -0
  134. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/WSEGSICD +0 -0
  135. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/WSEGVALV +0 -0
  136. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/readme +0 -0
  137. {res2df-1.2.0 → res2df-1.2.2}/res2df/opmkeywords/runmetoupdate.sh +0 -0
  138. {res2df-1.2.0 → res2df-1.2.2}/res2df/parameters.py +0 -0
  139. {res2df-1.2.0 → res2df-1.2.2}/res2df/pillars.py +0 -0
  140. {res2df-1.2.0 → res2df-1.2.2}/res2df/pvt.py +0 -0
  141. {res2df-1.2.0 → res2df-1.2.2}/res2df/res2csv.py +0 -0
  142. {res2df-1.2.0 → res2df-1.2.2}/res2df/res2csvlogger.py +0 -0
  143. {res2df-1.2.0 → res2df-1.2.2}/res2df/resdatafiles.py +0 -0
  144. {res2df-1.2.0 → res2df-1.2.2}/res2df/rft.py +0 -0
  145. {res2df-1.2.0 → res2df-1.2.2}/res2df/satfunc.py +0 -0
  146. {res2df-1.2.0 → res2df-1.2.2}/res2df/svg_color_keyword_names.txt +0 -0
  147. {res2df-1.2.0 → res2df-1.2.2}/res2df/trans.py +0 -0
  148. {res2df-1.2.0 → res2df-1.2.2}/res2df/vfp/__init__.py +0 -0
  149. {res2df-1.2.0 → res2df-1.2.2}/res2df/vfp/_vfp.py +0 -0
  150. {res2df-1.2.0 → res2df-1.2.2}/res2df/vfp/_vfpcommon.py +0 -0
  151. {res2df-1.2.0 → res2df-1.2.2}/res2df/vfp/_vfpdefs.py +0 -0
  152. {res2df-1.2.0 → res2df-1.2.2}/res2df/vfp/_vfpinj.py +0 -0
  153. {res2df-1.2.0 → res2df-1.2.2}/res2df/vfp/_vfpprod.py +0 -0
  154. {res2df-1.2.0 → res2df-1.2.2}/res2df/wcon.py +0 -0
  155. {res2df-1.2.0 → res2df-1.2.2}/res2df/wellcompletiondata.py +0 -0
  156. {res2df-1.2.0 → res2df-1.2.2}/res2df/wellconnstatus.py +0 -0
  157. {res2df-1.2.0 → res2df-1.2.2}/res2df.egg-info/dependency_links.txt +0 -0
  158. {res2df-1.2.0 → res2df-1.2.2}/res2df.egg-info/entry_points.txt +0 -0
  159. {res2df-1.2.0 → res2df-1.2.2}/res2df.egg-info/not-zip-safe +0 -0
  160. {res2df-1.2.0 → res2df-1.2.2}/res2df.egg-info/top_level.txt +0 -0
  161. {res2df-1.2.0 → res2df-1.2.2}/ruff.toml +0 -0
  162. {res2df-1.2.0 → res2df-1.2.2}/setup.cfg +0 -0
  163. {res2df-1.2.0 → res2df-1.2.2}/tests/__init__.py +0 -0
  164. {res2df-1.2.0 → res2df-1.2.2}/tests/conftest.py +0 -0
  165. {res2df-1.2.0 → res2df-1.2.2}/tests/data/eightcells/EIGHTCELLS.DATA +0 -0
  166. {res2df-1.2.0 → res2df-1.2.2}/tests/data/eightcells/EIGHTCELLS.EGRID +0 -0
  167. {res2df-1.2.0 → res2df-1.2.2}/tests/data/eightcells/EIGHTCELLS.INIT +0 -0
  168. {res2df-1.2.0 → res2df-1.2.2}/tests/data/eightcells/EIGHTCELLS.INSPEC +0 -0
  169. {res2df-1.2.0 → res2df-1.2.2}/tests/data/eightcells/EIGHTCELLS.PRT +0 -0
  170. {res2df-1.2.0 → res2df-1.2.2}/tests/data/eightcells/EIGHTCELLS.RFT +0 -0
  171. {res2df-1.2.0 → res2df-1.2.2}/tests/data/eightcells/EIGHTCELLS.RSSPEC +0 -0
  172. {res2df-1.2.0 → res2df-1.2.2}/tests/data/eightcells/EIGHTCELLS.SMSPEC +0 -0
  173. {res2df-1.2.0 → res2df-1.2.2}/tests/data/eightcells/EIGHTCELLS.UNRST +0 -0
  174. {res2df-1.2.0 → res2df-1.2.2}/tests/data/eightcells/EIGHTCELLS.UNSMRY +0 -0
  175. {res2df-1.2.0 → res2df-1.2.2}/tests/data/eightcells/eightcells_duplicated_summary_vector/EIGHTCELLS_DUPES.DATA +0 -0
  176. {res2df-1.2.0 → res2df-1.2.2}/tests/data/eightcells/eightcells_duplicated_summary_vector/EIGHTCELLS_DUPES.SMSPEC +0 -0
  177. {res2df-1.2.0 → res2df-1.2.2}/tests/data/eightcells/eightcells_duplicated_summary_vector/EIGHTCELLS_DUPES.UNSMRY +0 -0
  178. {res2df-1.2.0 → res2df-1.2.2}/tests/data/eightcells/zones.lyr +0 -0
  179. {res2df-1.2.0 → res2df-1.2.2}/tests/data/fipreports/TEST1.PRT +0 -0
  180. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/grid/reek.faults +0 -0
  181. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/grid/reek.grid +0 -0
  182. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/grid/reek.multflt +0 -0
  183. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/grid/reek.multz +0 -0
  184. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/grid/reek.perm +0 -0
  185. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/grid/reek.poro +0 -0
  186. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/props/let-sgof.txt +0 -0
  187. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/props/let-swof.txt +0 -0
  188. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/props/reek.endpoints +0 -0
  189. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/props/reek.pvt +0 -0
  190. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/props/reek.swatinit +0 -0
  191. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/props/sgof.txt +0 -0
  192. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/props/swof.inc +0 -0
  193. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/props/swof.txt +0 -0
  194. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/regions/reek.eqlnum +0 -0
  195. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/regions/reek.fipnum +0 -0
  196. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/schedule/op6_aicd1_gp.sch +0 -0
  197. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/schedule/op6_icd1_gp.sch +0 -0
  198. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/schedule/op6_valve1_gp.sch +0 -0
  199. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/schedule/reek_history.sch +0 -0
  200. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/solution/reek.equil +0 -0
  201. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/include/summary/reek.smry +0 -0
  202. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/model/2_R001_REEK-0-OPMFLOW.PRT +0 -0
  203. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.DATA +0 -0
  204. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.ECLEND +0 -0
  205. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.EGRID +0 -0
  206. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.INIT +0 -0
  207. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.LOG +0 -0
  208. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.PRT +0 -0
  209. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.RFT +0 -0
  210. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.SMSPEC +0 -0
  211. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNRST +0 -0
  212. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/model/2_R001_REEK-0.UNSMRY +0 -0
  213. {res2df-1.2.0 → res2df-1.2.2}/tests/data/reek/eclipse/model/zones.lyr +0 -0
  214. {res2df-1.2.0 → res2df-1.2.2}/tests/data/timesteps/SHORT_STEP.DATA +0 -0
  215. {res2df-1.2.0 → res2df-1.2.2}/tests/data/timesteps/SHORT_STEP.SMSPEC +0 -0
  216. {res2df-1.2.0 → res2df-1.2.2}/tests/data/timesteps/SHORT_STEP.UNSMRY +0 -0
  217. {res2df-1.2.0 → res2df-1.2.2}/tests/data/timesteps/SHORT_STEP_LONG.DATA +0 -0
  218. {res2df-1.2.0 → res2df-1.2.2}/tests/data/timesteps/SHORT_STEP_LONG.SMSPEC +0 -0
  219. {res2df-1.2.0 → res2df-1.2.2}/tests/data/timesteps/SHORT_STEP_LONG.UNSMRY +0 -0
  220. {res2df-1.2.0 → res2df-1.2.2}/tests/data/timesteps/SHORT_STEP_WITH_TIMESTEP.DATA +0 -0
  221. {res2df-1.2.0 → res2df-1.2.2}/tests/data/timesteps/SHORT_STEP_WITH_TIMESTEP.SMSPEC +0 -0
  222. {res2df-1.2.0 → res2df-1.2.2}/tests/data/timesteps/SHORT_STEP_WITH_TIMESTEP.UNSMRY +0 -0
  223. {res2df-1.2.0 → res2df-1.2.2}/tests/data/timesteps/SHORT_STEP_WITH_TIMESTEP_LONG.DATA +0 -0
  224. {res2df-1.2.0 → res2df-1.2.2}/tests/data/timesteps/SHORT_STEP_WITH_TIMESTEP_LONG.SMSPEC +0 -0
  225. {res2df-1.2.0 → res2df-1.2.2}/tests/data/timesteps/SHORT_STEP_WITH_TIMESTEP_LONG.UNSMRY +0 -0
  226. {res2df-1.2.0 → res2df-1.2.2}/tests/test_common.py +0 -0
  227. {res2df-1.2.0 → res2df-1.2.2}/tests/test_compdat.py +0 -0
  228. {res2df-1.2.0 → res2df-1.2.2}/tests/test_eclfiles.py +0 -0
  229. {res2df-1.2.0 → res2df-1.2.2}/tests/test_equil.py +0 -0
  230. {res2df-1.2.0 → res2df-1.2.2}/tests/test_ert_hooks.py +0 -0
  231. {res2df-1.2.0 → res2df-1.2.2}/tests/test_faults.py +0 -0
  232. {res2df-1.2.0 → res2df-1.2.2}/tests/test_fipreports.py +0 -0
  233. {res2df-1.2.0 → res2df-1.2.2}/tests/test_grid.py +0 -0
  234. {res2df-1.2.0 → res2df-1.2.2}/tests/test_gruptree.py +0 -0
  235. {res2df-1.2.0 → res2df-1.2.2}/tests/test_hook_implementations.py +0 -0
  236. {res2df-1.2.0 → res2df-1.2.2}/tests/test_inferdims.py +0 -0
  237. {res2df-1.2.0 → res2df-1.2.2}/tests/test_init.py +0 -0
  238. {res2df-1.2.0 → res2df-1.2.2}/tests/test_integration.py +0 -0
  239. {res2df-1.2.0 → res2df-1.2.2}/tests/test_logging.py +0 -0
  240. {res2df-1.2.0 → res2df-1.2.2}/tests/test_nnc.py +0 -0
  241. {res2df-1.2.0 → res2df-1.2.2}/tests/test_parameters.py +0 -0
  242. {res2df-1.2.0 → res2df-1.2.2}/tests/test_pillars.py +0 -0
  243. {res2df-1.2.0 → res2df-1.2.2}/tests/test_pvt.py +0 -0
  244. {res2df-1.2.0 → res2df-1.2.2}/tests/test_rft.py +0 -0
  245. {res2df-1.2.0 → res2df-1.2.2}/tests/test_satfunc.py +0 -0
  246. {res2df-1.2.0 → res2df-1.2.2}/tests/test_summary_restarts.py +0 -0
  247. {res2df-1.2.0 → res2df-1.2.2}/tests/test_trans.py +0 -0
  248. {res2df-1.2.0 → res2df-1.2.2}/tests/test_userapi.py +0 -0
  249. {res2df-1.2.0 → res2df-1.2.2}/tests/test_vfp.py +0 -0
  250. {res2df-1.2.0 → res2df-1.2.2}/tests/test_wcon.py +0 -0
  251. {res2df-1.2.0 → res2df-1.2.2}/tests/test_wellcompletiondata.py +0 -0
  252. {res2df-1.2.0 → res2df-1.2.2}/tests/test_wellconnstatus.py +0 -0
  253. {res2df-1.2.0 → res2df-1.2.2}/tests/test_welopen.py +0 -0
  254. {res2df-1.2.0 → res2df-1.2.2}/tests/test_wlist.py +0 -0
  255. {res2df-1.2.0 → res2df-1.2.2}/tests/test_zonemap.py +0 -0
  256. {res2df-1.2.0 → res2df-1.2.2}/types_requirements.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: res2df
3
- Version: 1.2.0
3
+ Version: 1.2.2
4
4
  Summary: Convert reservoir simulator input and output to DataFrames
5
5
  Home-page: http://github.com/equinor/res2df
6
6
  Author: Håvard Berland
@@ -10,17 +10,20 @@ Requires-Python: >=3.8
10
10
  Description-Content-Type: text/markdown
11
11
  License-File: LICENSE
12
12
  Requires-Dist: resdata>=5.0.0-b0
13
+ Requires-Dist: resfo
13
14
  Requires-Dist: numpy
14
15
  Requires-Dist: opm>=2020.10.2
15
16
  Requires-Dist: pandas
16
17
  Requires-Dist: pyarrow
17
18
  Requires-Dist: pyyaml>=5.1
18
19
  Requires-Dist: treelib
20
+ Requires-Dist: xtgeo<4.3.2; python_version <= "3.8"
19
21
  Provides-Extra: tests
20
22
  Requires-Dist: networkx; extra == "tests"
21
23
  Requires-Dist: pytest; extra == "tests"
22
24
  Requires-Dist: pytest-cov; extra == "tests"
23
25
  Requires-Dist: pytest-mock; extra == "tests"
26
+ Requires-Dist: pytest-timeout; extra == "tests"
24
27
  Provides-Extra: style
25
28
  Requires-Dist: pre-commit; extra == "style"
26
29
  Provides-Extra: types
@@ -0,0 +1,16 @@
1
+ If you discover a security vulnerability in this project, please follow these steps to responsibly disclose it:
2
+
3
+ 1. **Do not** create a public GitHub issue for the vulnerability.
4
+ 2. Follow our guideline for Responsible Disclosure Policy at [https://www.equinor.com/about-us/csirt](https://www.equinor.com/about-us/csirt) to report the issue
5
+
6
+ The following information will help us triage your report more quickly:
7
+
8
+ - Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
9
+ - Full paths of source file(s) related to the manifestation of the issue
10
+ - The location of the affected source code (tag/branch/commit or direct URL)
11
+ - Any special configuration required to reproduce the issue
12
+ - Step-by-step instructions to reproduce the issue
13
+ - Proof-of-concept or exploit code (if possible)
14
+ - Impact of the issue, including how an attacker might exploit the issue
15
+
16
+ We prefer all communications to be in English.
@@ -20,7 +20,7 @@ Eclipse usage
20
20
  ^^^^^^^^^^^^^
21
21
 
22
22
  In order to get RFT files emitted from Eclipse, you need the ``WRFTPLT`` keyword
23
- in your :term`.DATA file`, example:
23
+ in your :term:`.DATA file`, example:
24
24
 
25
25
  .. code-block:: console
26
26
 
@@ -3,6 +3,9 @@
3
3
  [mypy-resdata.*]
4
4
  ignore_missing_imports = True
5
5
 
6
+ [mypy-resfo.*]
7
+ ignore_missing_imports = True
8
+
6
9
  [mypy-opm.*]
7
10
  ignore_missing_imports = True
8
11
 
@@ -23,6 +23,7 @@ import numpy as np
23
23
  import pandas as pd
24
24
  import pyarrow
25
25
  import pyarrow.feather
26
+ import resfo
26
27
  from resdata.resfile import ResdataFile
27
28
 
28
29
  from .__version__ import __version__
@@ -199,11 +200,12 @@ def rst2df(
199
200
  # for all active cells:
200
201
  activecells = resdatafiles.get_egrid().getNumActive()
201
202
  rstvectors = []
202
- for vec in resdatafiles.get_rstfile().headers:
203
- if vec[1] == activecells and any(
204
- fnmatch.fnmatch(vec[0], key) for key in vectors
203
+ for vec in resfo.lazy_read(resdatafiles.get_rstfilename()):
204
+ keyword_name = vec.read_keyword().strip()
205
+ if vec.read_length() == activecells and any(
206
+ fnmatch.fnmatch(keyword_name, key) for key in vectors
205
207
  ):
206
- rstvectors.append(vec[0])
208
+ rstvectors.append(keyword_name)
207
209
  rstvectors = list(set(rstvectors)) # Make unique list
208
210
  # Note that all of these might not exist at all timesteps.
209
211
 
@@ -499,7 +499,8 @@ def _df2pyarrow(dframe: pd.DataFrame) -> pyarrow.Table:
499
499
  field_list.append(pyarrow.field("DATE", pyarrow.timestamp("ms")))
500
500
  column_arrays = [dframe.index.to_numpy().astype("datetime64[ms]")]
501
501
 
502
- for colname in dframe.columns:
502
+ dframe_values = dframe.values.transpose()
503
+ for col_idx, colname in enumerate(dframe.columns):
503
504
  if "meta" in dframe.attrs and colname in dframe.attrs["meta"]:
504
505
  # Boolean objects in the metadata dictionary must be converted to bytes:
505
506
  field_metadata = {
@@ -516,7 +517,7 @@ def _df2pyarrow(dframe: pd.DataFrame) -> pyarrow.Table:
516
517
  else:
517
518
  dtype = pyarrow.float32()
518
519
  field_list.append(pyarrow.field(colname, dtype, metadata=field_metadata))
519
- column_arrays.append(dframe[colname].to_numpy())
520
+ column_arrays.append(dframe_values[col_idx])
520
521
 
521
522
  schema = pyarrow.schema(field_list)
522
523
 
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.2.0'
16
- __version_tuple__ = version_tuple = (1, 2, 0)
15
+ __version__ = version = '1.2.2'
16
+ __version_tuple__ = version_tuple = (1, 2, 2)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: res2df
3
- Version: 1.2.0
3
+ Version: 1.2.2
4
4
  Summary: Convert reservoir simulator input and output to DataFrames
5
5
  Home-page: http://github.com/equinor/res2df
6
6
  Author: Håvard Berland
@@ -10,17 +10,20 @@ Requires-Python: >=3.8
10
10
  Description-Content-Type: text/markdown
11
11
  License-File: LICENSE
12
12
  Requires-Dist: resdata>=5.0.0-b0
13
+ Requires-Dist: resfo
13
14
  Requires-Dist: numpy
14
15
  Requires-Dist: opm>=2020.10.2
15
16
  Requires-Dist: pandas
16
17
  Requires-Dist: pyarrow
17
18
  Requires-Dist: pyyaml>=5.1
18
19
  Requires-Dist: treelib
20
+ Requires-Dist: xtgeo<4.3.2; python_version <= "3.8"
19
21
  Provides-Extra: tests
20
22
  Requires-Dist: networkx; extra == "tests"
21
23
  Requires-Dist: pytest; extra == "tests"
22
24
  Requires-Dist: pytest-cov; extra == "tests"
23
25
  Requires-Dist: pytest-mock; extra == "tests"
26
+ Requires-Dist: pytest-timeout; extra == "tests"
24
27
  Provides-Extra: style
25
28
  Requires-Dist: pre-commit; extra == "style"
26
29
  Provides-Extra: types
@@ -3,6 +3,7 @@
3
3
  .pre-commit-config.yaml
4
4
  LICENSE
5
5
  README.md
6
+ SECURITY.md
6
7
  mypy.ini
7
8
  py.typed
8
9
  ruff.toml
@@ -1,4 +1,5 @@
1
1
  resdata>=5.0.0-b0
2
+ resfo
2
3
  numpy
3
4
  opm>=2020.10.2
4
5
  pandas
@@ -6,6 +7,9 @@ pyarrow
6
7
  pyyaml>=5.1
7
8
  treelib
8
9
 
10
+ [:python_version <= "3.8"]
11
+ xtgeo<4.3.2
12
+
9
13
  [docs]
10
14
  autoapi
11
15
  ipython
@@ -27,6 +31,7 @@ networkx
27
31
  pytest
28
32
  pytest-cov
29
33
  pytest-mock
34
+ pytest-timeout
30
35
 
31
36
  [types]
32
37
  mypy
@@ -17,12 +17,14 @@ LONG_DESCRIPTION = (Path(__file__).parent / "README.md").read_text()
17
17
  SETUP_REQUIREMENTS = ["setuptools>=28", "setuptools_scm"]
18
18
  REQUIREMENTS = [
19
19
  "resdata>=5.0.0-b0",
20
+ "resfo",
20
21
  "numpy",
21
22
  "opm>=2020.10.2",
22
23
  "pandas",
23
24
  "pyarrow",
24
25
  "pyyaml>=5.1",
25
26
  "treelib",
27
+ "xtgeo<4.3.2; python_version<='3.8'",
26
28
  ]
27
29
 
28
30
  TEST_REQUIREMENTS = (
@@ -2,3 +2,4 @@ networkx
2
2
  pytest
3
3
  pytest-cov
4
4
  pytest-mock
5
+ pytest-timeout
@@ -1108,6 +1108,24 @@ def test_df2pyarrow_mix_int_float():
1108
1108
  pd.testing.assert_frame_equal(dframe, pyat_df[["FOO", "BAR"]])
1109
1109
 
1110
1110
 
1111
+ @pytest.mark.timeout(10)
1112
+ def test_df2pyarrow_10000cols():
1113
+ """Summary files with thousands of columns should not be an issue"""
1114
+ columncount = 10000
1115
+ dateindex = [dt(2024, 1, 1, 0, 0, 0), dt(2025, 1, 1, 0, 0, 0)]
1116
+ dframe = pd.DataFrame(
1117
+ columns=[f"FOO{num}" for num in range(columncount)],
1118
+ index=dateindex,
1119
+ data=[[1] * columncount, [2] * columncount],
1120
+ ).astype("int32")
1121
+ dframe.attrs["meta"] = {f"FOO{num}": {"unit": "barf"} for num in range(columncount)}
1122
+ pyat = _df2pyarrow(dframe)
1123
+ for num in range(columncount):
1124
+ assert pyat.select([f"FOO{num}"]).schema[0].metadata == {
1125
+ b"unit": b"barf",
1126
+ }
1127
+
1128
+
1111
1129
  def test_df2pyarrow_500years():
1112
1130
  """Summary files can have DATE columns with timespans outside the
1113
1131
  Pandas dataframe nanosecond limitation. This should not present
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes