webviz-subsurface 0.2.43__py3-none-any.whl → 0.2.46__py3-none-any.whl
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.
- webviz_subsurface/_datainput/well_completions.py +1 -1
- webviz_subsurface/_models/gruptree_model.py +31 -7
- webviz_subsurface/_providers/ensemble_polygon_provider/_provider_impl_file.py +2 -1
- webviz_subsurface/_version.py +2 -2
- webviz_subsurface/plugins/_co2_migration/_plugin.py +31 -8
- webviz_subsurface/plugins/_co2_migration/_utilities/callbacks.py +183 -19
- webviz_subsurface/plugins/_co2_migration/_utilities/co2volume.py +83 -62
- webviz_subsurface/plugins/_co2_migration/_utilities/containment_data_provider.py +6 -0
- webviz_subsurface/plugins/_co2_migration/_utilities/generic.py +40 -3
- webviz_subsurface/plugins/_co2_migration/_utilities/initialization.py +2 -1
- webviz_subsurface/plugins/_co2_migration/_utilities/polygon_handler.py +4 -0
- webviz_subsurface/plugins/_co2_migration/views/mainview/settings.py +38 -3
- webviz_subsurface/plugins/_simulation_time_series/_views/_subplot_view/_property_serialization/ensemble_subplot_builder.py +3 -1
- webviz_subsurface/plugins/_vfp_analysis/_utils/_vfp_data_model.py +1 -1
- {webviz_subsurface-0.2.43.dist-info → webviz_subsurface-0.2.46.dist-info}/METADATA +1 -2
- {webviz_subsurface-0.2.43.dist-info → webviz_subsurface-0.2.46.dist-info}/RECORD +20 -21
- {webviz_subsurface-0.2.43.dist-info → webviz_subsurface-0.2.46.dist-info}/WHEEL +1 -1
- webviz_subsurface-0.2.43.dist-info/licenses/LICENSE.chromedriver +0 -6291
- {webviz_subsurface-0.2.43.dist-info → webviz_subsurface-0.2.46.dist-info}/entry_points.txt +0 -0
- {webviz_subsurface-0.2.43.dist-info → webviz_subsurface-0.2.46.dist-info}/licenses/LICENSE +0 -0
- {webviz_subsurface-0.2.43.dist-info → webviz_subsurface-0.2.46.dist-info}/top_level.txt +0 -0
|
@@ -11,7 +11,6 @@ import pandas as pd
|
|
|
11
11
|
import plotly.express as px
|
|
12
12
|
import plotly.graph_objects as go
|
|
13
13
|
|
|
14
|
-
from webviz_subsurface._providers import EnsembleTableProvider
|
|
15
14
|
from webviz_subsurface._utils.enum_shim import StrEnum
|
|
16
15
|
from webviz_subsurface.plugins._co2_migration._utilities.containment_data_provider import (
|
|
17
16
|
ContainmentDataProvider,
|
|
@@ -32,19 +31,6 @@ class _Columns(StrEnum):
|
|
|
32
31
|
VOLUME_OUTSIDE = "volume_outside"
|
|
33
32
|
|
|
34
33
|
|
|
35
|
-
class Colors(StrEnum):
|
|
36
|
-
# pylint: disable=invalid-name
|
|
37
|
-
total = "#222222"
|
|
38
|
-
contained = "#00aa00"
|
|
39
|
-
outside = "#006ddd"
|
|
40
|
-
hazardous = "#dd4300"
|
|
41
|
-
dissolved_water = "#208eb7"
|
|
42
|
-
dissolved_oil = "#A0522D"
|
|
43
|
-
gas = "#C41E3A"
|
|
44
|
-
free_gas = "#FF2400"
|
|
45
|
-
trapped_gas = "#880808"
|
|
46
|
-
|
|
47
|
-
|
|
48
34
|
class Marks(StrEnum):
|
|
49
35
|
dissolved_water = "/"
|
|
50
36
|
dissolved_oil = "x"
|
|
@@ -61,61 +47,76 @@ class Lines(StrEnum):
|
|
|
61
47
|
trapped_gas = "dashdot"
|
|
62
48
|
|
|
63
49
|
|
|
64
|
-
|
|
65
|
-
"#
|
|
66
|
-
"#
|
|
67
|
-
"#
|
|
68
|
-
"#
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
"#
|
|
74
|
-
"#
|
|
75
|
-
"#
|
|
76
|
-
"#
|
|
50
|
+
_CONTAINMENT_COLORS = {
|
|
51
|
+
"total": ("#222222", "#909090"),
|
|
52
|
+
"contained": ("#00aa00", "#55ff55"),
|
|
53
|
+
"outside": ("#006ddd", "#6eb6ff"),
|
|
54
|
+
"nogo": ("#dd4300", "#ff9a6e"),
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
_PHASE_COLORS = {
|
|
59
|
+
"total": ("#222222", "#909090"),
|
|
60
|
+
"dissolved_water": ("#208eb7", "#81cde9"),
|
|
61
|
+
"dissolved_oil": ("#A0522D", "#C28163"),
|
|
62
|
+
"gas": ("#C41E3A", "#E42E5A"),
|
|
63
|
+
"free_gas": ("#FF2400", "#FF7430"),
|
|
64
|
+
"trapped_gas": ("#880808", "#C84848"),
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
_GENERAL_COLORS = [
|
|
69
|
+
("#e91451", "#f589a8"),
|
|
70
|
+
("#daa218", "#f2d386"),
|
|
71
|
+
("#208eb7", "#81cde9"),
|
|
72
|
+
("#84bc04", "#cdfc63"),
|
|
73
|
+
("#b74532", "#e19e92"),
|
|
74
|
+
("#9a89b4", "#ccc4d9"),
|
|
75
|
+
("#8d30ba", "#c891e3"),
|
|
76
|
+
("#256b33", "#77d089"),
|
|
77
|
+
("#95704d", "#cfb7a1"),
|
|
78
|
+
("#1357ca", "#7ba7f3"),
|
|
79
|
+
("#f75ef0", "#fbaef7"),
|
|
80
|
+
("#34b36f", "#93e0b7"),
|
|
77
81
|
]
|
|
78
82
|
|
|
83
|
+
|
|
79
84
|
_LIGHTER_COLORS = {
|
|
80
85
|
"black": "#909090",
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
"#dd4300": "#ff9a6e",
|
|
85
|
-
"#e91451": "#f589a8",
|
|
86
|
-
"#daa218": "#f2d386",
|
|
87
|
-
"#208eb7": "#81cde9",
|
|
88
|
-
"#84bc04": "#cdfc63",
|
|
89
|
-
"#b74532": "#e19e92",
|
|
90
|
-
"#9a89b4": "#ccc4d9",
|
|
91
|
-
"#8d30ba": "#c891e3",
|
|
92
|
-
"#256b33": "#77d089",
|
|
93
|
-
"#95704d": "#cfb7a1",
|
|
94
|
-
"#1357ca": "#7ba7f3",
|
|
95
|
-
"#f75ef0": "#fbaef7",
|
|
96
|
-
"#34b36f": "#93e0b7",
|
|
97
|
-
"#C41E3A": "#E42E5A",
|
|
98
|
-
"#FF2400": "#FF7430",
|
|
99
|
-
"#880808": "#C84848",
|
|
86
|
+
**dict(_CONTAINMENT_COLORS.values()),
|
|
87
|
+
**dict(_PHASE_COLORS.values()),
|
|
88
|
+
**dict(_GENERAL_COLORS),
|
|
100
89
|
}
|
|
101
90
|
|
|
91
|
+
_LABEL_TRANSLATIONS = {
|
|
92
|
+
"nogo": "no-go",
|
|
93
|
+
"dissolved_water": "dissolved water",
|
|
94
|
+
"dissolved_oil": "dissolved oil",
|
|
95
|
+
"free_gas": "free gas",
|
|
96
|
+
"trapped_gas": "trapped gas",
|
|
97
|
+
}
|
|
102
98
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
return
|
|
111
|
-
|
|
112
|
-
|
|
99
|
+
|
|
100
|
+
def _translate_labels(df: Union[pd.DataFrame, Dict], column: str = "type") -> None:
|
|
101
|
+
def translate_label(label: str) -> str:
|
|
102
|
+
if ", " in label:
|
|
103
|
+
parts = label.split(", ")
|
|
104
|
+
translated_parts = [_LABEL_TRANSLATIONS.get(part, part) for part in parts]
|
|
105
|
+
return ", ".join(translated_parts)
|
|
106
|
+
return _LABEL_TRANSLATIONS.get(label, label)
|
|
107
|
+
|
|
108
|
+
if isinstance(df, dict):
|
|
109
|
+
df[column] = [translate_label(label) for label in df[column]]
|
|
110
|
+
else:
|
|
111
|
+
df[column] = df[column].apply(translate_label)
|
|
113
112
|
|
|
114
113
|
|
|
115
114
|
def _get_colors(color_options: List[str], split: str) -> List[str]:
|
|
116
|
-
if split
|
|
117
|
-
return [
|
|
118
|
-
|
|
115
|
+
if split == "containment":
|
|
116
|
+
return [_CONTAINMENT_COLORS[option][0] for option in color_options]
|
|
117
|
+
if split == "phase":
|
|
118
|
+
return [_PHASE_COLORS[option][0] for option in color_options]
|
|
119
|
+
options = [x[0] for x in _GENERAL_COLORS]
|
|
119
120
|
if split == "region":
|
|
120
121
|
options.reverse()
|
|
121
122
|
num_cols = len(color_options)
|
|
@@ -268,8 +269,8 @@ def _prepare_pattern_and_color_options_statistics_plot(
|
|
|
268
269
|
|
|
269
270
|
|
|
270
271
|
def _find_default_legendonly(df: pd.DataFrame, categories: List[str]) -> List[str]:
|
|
271
|
-
if "
|
|
272
|
-
default_option = "
|
|
272
|
+
if "no-go" in categories:
|
|
273
|
+
default_option = "no-go"
|
|
273
274
|
else:
|
|
274
275
|
max_value = -999.9
|
|
275
276
|
default_option = categories[0]
|
|
@@ -416,7 +417,7 @@ def _add_sort_key_and_real(
|
|
|
416
417
|
sort_value = np.sum(
|
|
417
418
|
df[
|
|
418
419
|
(df["phase"] == "total")
|
|
419
|
-
& (df["containment"] == "
|
|
420
|
+
& (df["containment"] == "nogo")
|
|
420
421
|
& (df["zone"] == containment_info.zone)
|
|
421
422
|
& (df["region"] == containment_info.region)
|
|
422
423
|
& (df["plume_group"] == containment_info.plume_group)
|
|
@@ -530,6 +531,9 @@ def generate_co2_volume_figure(
|
|
|
530
531
|
color_choice,
|
|
531
532
|
mark_choice,
|
|
532
533
|
)
|
|
534
|
+
_translate_labels(df, "type")
|
|
535
|
+
_translate_labels(cat_ord, "type")
|
|
536
|
+
|
|
533
537
|
fig = px.bar(
|
|
534
538
|
df,
|
|
535
539
|
y="real",
|
|
@@ -590,6 +594,9 @@ def generate_co2_time_containment_one_realization_figure(
|
|
|
590
594
|
color_choice,
|
|
591
595
|
mark_choice,
|
|
592
596
|
)
|
|
597
|
+
_translate_labels(df, "type")
|
|
598
|
+
_translate_labels(cat_ord, "type")
|
|
599
|
+
|
|
593
600
|
fig = px.area(
|
|
594
601
|
df,
|
|
595
602
|
x="date",
|
|
@@ -776,6 +783,8 @@ def generate_co2_time_containment_figure(
|
|
|
776
783
|
options = _prepare_line_type_and_color_options(
|
|
777
784
|
df, containment_info, color_choice, mark_choice
|
|
778
785
|
)
|
|
786
|
+
_translate_labels(df, "name")
|
|
787
|
+
_translate_labels(options, "name")
|
|
779
788
|
if legendonly_traces is None:
|
|
780
789
|
inactive_cols_at_startup = list(
|
|
781
790
|
options[~(options["line_type"].isin(["solid", "0px"]))]["name"]
|
|
@@ -788,6 +797,14 @@ def generate_co2_time_containment_figure(
|
|
|
788
797
|
except ValueError:
|
|
789
798
|
pass
|
|
790
799
|
|
|
800
|
+
options["name"] = options["name"].apply(
|
|
801
|
+
lambda label: ", ".join(
|
|
802
|
+
[_LABEL_TRANSLATIONS.get(part, part) for part in label.split(", ")]
|
|
803
|
+
)
|
|
804
|
+
if ", " in label
|
|
805
|
+
else _LABEL_TRANSLATIONS.get(label, label)
|
|
806
|
+
)
|
|
807
|
+
|
|
791
808
|
fig = go.Figure()
|
|
792
809
|
# Generate dummy scatters for legend entries
|
|
793
810
|
dummy_args = {"x": df["date"], "mode": "lines", "hoverinfo": "none"}
|
|
@@ -907,6 +924,8 @@ def generate_co2_statistics_figure(
|
|
|
907
924
|
color_choice,
|
|
908
925
|
mark_choice,
|
|
909
926
|
)
|
|
927
|
+
_translate_labels(df, "type")
|
|
928
|
+
_translate_labels(cat_ord, "type")
|
|
910
929
|
|
|
911
930
|
df = df.drop(columns=["REAL"]).reset_index(drop=True)
|
|
912
931
|
fig = px.ecdf(
|
|
@@ -973,6 +992,8 @@ def generate_co2_box_plot_figure(
|
|
|
973
992
|
color_choice,
|
|
974
993
|
mark_choice,
|
|
975
994
|
)
|
|
995
|
+
_translate_labels(df, "type")
|
|
996
|
+
_translate_labels(cat_ord, "type")
|
|
976
997
|
|
|
977
998
|
fig = go.Figure()
|
|
978
999
|
for count, type_val in enumerate(cat_ord["type"], 0):
|
|
@@ -34,6 +34,9 @@ class ContainmentDataProvider:
|
|
|
34
34
|
df = self._provider.get_column_data(
|
|
35
35
|
self._provider.column_names(), [realization]
|
|
36
36
|
)
|
|
37
|
+
# Backward compatibility:
|
|
38
|
+
df["containment"] = df["containment"].replace({"hazardous": "nogo"})
|
|
39
|
+
|
|
37
40
|
scale_factor = self._find_scale_factor(scale)
|
|
38
41
|
if scale_factor == 1.0:
|
|
39
42
|
return df
|
|
@@ -45,6 +48,9 @@ class ContainmentDataProvider:
|
|
|
45
48
|
co2_scale: Union[Co2MassScale, Co2VolumeScale],
|
|
46
49
|
) -> pd.DataFrame:
|
|
47
50
|
df = self._provider.get_column_data(self._provider.column_names())
|
|
51
|
+
# Backward compatibility:
|
|
52
|
+
df["containment"] = df["containment"].replace({"hazardous": "nogo"})
|
|
53
|
+
|
|
48
54
|
df = df.loc[
|
|
49
55
|
(df["zone"] == "all")
|
|
50
56
|
& (df["region"] == "all")
|
|
@@ -2,11 +2,15 @@ from __future__ import ( # Change to import Self from typing if we update to Py
|
|
|
2
2
|
annotations,
|
|
3
3
|
)
|
|
4
4
|
|
|
5
|
+
import logging
|
|
6
|
+
import warnings
|
|
5
7
|
from enum import Enum
|
|
6
|
-
from typing import Dict, List, TypedDict
|
|
8
|
+
from typing import Dict, List, Optional, TypedDict
|
|
7
9
|
|
|
8
10
|
from webviz_subsurface._utils.enum_shim import StrEnum
|
|
9
11
|
|
|
12
|
+
LOGGER = logging.getLogger(__name__)
|
|
13
|
+
|
|
10
14
|
|
|
11
15
|
class MapAttribute(StrEnum):
|
|
12
16
|
MIGRATION_TIME_SGAS = "Migration time (SGAS)"
|
|
@@ -212,7 +216,8 @@ class LayoutLabels(StrEnum):
|
|
|
212
216
|
|
|
213
217
|
SHOW_FAULTPOLYGONS = "Show fault polygons"
|
|
214
218
|
SHOW_CONTAINMENT_POLYGON = "Show containment polygon"
|
|
215
|
-
|
|
219
|
+
SHOW_NOGO_POLYGON = "Show no-go polygon"
|
|
220
|
+
SHOW_POLYGONS_AS_OUTLINES = "Show polygons as outlines"
|
|
216
221
|
SHOW_WELLS = "Show wells"
|
|
217
222
|
WELL_FILTER = "Well filter"
|
|
218
223
|
COMMON_SELECTIONS = "Options and global filters"
|
|
@@ -289,5 +294,37 @@ class MapThresholds:
|
|
|
289
294
|
class BoundarySettings(TypedDict):
|
|
290
295
|
polygon_file_pattern: str
|
|
291
296
|
attribute: str
|
|
292
|
-
hazardous_name: str
|
|
297
|
+
hazardous_name: str # Keep for backward compatibility
|
|
298
|
+
nogo_name: str
|
|
293
299
|
containment_name: str
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
class IgnoreHazardousPolyWarning(logging.Filter):
|
|
303
|
+
def filter(self, record: logging.LogRecord) -> bool:
|
|
304
|
+
haz_poly = (
|
|
305
|
+
"hazardous" in record.getMessage() or "invalid" in record.getMessage()
|
|
306
|
+
) and "SimulatedPolygonsAddress" in record.getMessage()
|
|
307
|
+
return not haz_poly
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
def deactivate_polygon_warnings() -> None:
|
|
311
|
+
logger1 = logging.getLogger(
|
|
312
|
+
"webviz_subsurface._providers.ensemble_polygon_provider._provider_impl_file"
|
|
313
|
+
)
|
|
314
|
+
logger1.addFilter(IgnoreHazardousPolyWarning())
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
def check_hazardous_polygon(boundary_settings: Optional[BoundarySettings]) -> None:
|
|
318
|
+
if boundary_settings is not None and "hazardous_name" in boundary_settings:
|
|
319
|
+
warning_txt = (
|
|
320
|
+
"In config file: 'hazardous_name' under 'boundary_settings' is deprecated and will be "
|
|
321
|
+
"removed in future versions. Use 'nogo_name' instead."
|
|
322
|
+
)
|
|
323
|
+
warnings.warn(
|
|
324
|
+
warning_txt,
|
|
325
|
+
DeprecationWarning,
|
|
326
|
+
)
|
|
327
|
+
LOGGER.warning(warning_txt)
|
|
328
|
+
# Only use nogo polygon if both are specified
|
|
329
|
+
if "nogo_name" in boundary_settings:
|
|
330
|
+
boundary_settings["hazardous_name"] = "invalid"
|
|
@@ -196,7 +196,8 @@ def init_polygon_provider_handlers(
|
|
|
196
196
|
filled_options: BoundarySettings = {
|
|
197
197
|
"polygon_file_pattern": "share/results/polygons/*.csv",
|
|
198
198
|
"attribute": "boundary",
|
|
199
|
-
"hazardous_name": "hazardous",
|
|
199
|
+
"hazardous_name": "hazardous", # Keep for backward compatibility (ccs-scripts issue #390)
|
|
200
|
+
"nogo_name": "nogo",
|
|
200
201
|
"containment_name": "containment",
|
|
201
202
|
}
|
|
202
203
|
if options is not None:
|
|
@@ -20,6 +20,7 @@ class PolygonHandler:
|
|
|
20
20
|
self._server = server
|
|
21
21
|
self._attribute = boundary_options["attribute"]
|
|
22
22
|
self._hazardous_name = boundary_options["hazardous_name"]
|
|
23
|
+
self._nogo_name = boundary_options["nogo_name"]
|
|
23
24
|
self._containment_name = boundary_options["containment_name"]
|
|
24
25
|
polygon_provider_factory = EnsemblePolygonProviderFactory.instance()
|
|
25
26
|
self._provider = polygon_provider_factory.create_from_ensemble_polygon_files(
|
|
@@ -28,6 +29,9 @@ class PolygonHandler:
|
|
|
28
29
|
)
|
|
29
30
|
server.add_provider(self._provider)
|
|
30
31
|
|
|
32
|
+
def extract_nogo_poly_url(self, realization: List[int]) -> Optional[str]:
|
|
33
|
+
return self._extract_polygon_url(self._nogo_name, self._attribute, realization)
|
|
34
|
+
|
|
31
35
|
def extract_hazardous_poly_url(self, realization: List[int]) -> Optional[str]:
|
|
32
36
|
return self._extract_polygon_url(
|
|
33
37
|
self._hazardous_name, self._attribute, realization
|
|
@@ -54,6 +54,8 @@ class ViewSettings(SettingsGroupABC):
|
|
|
54
54
|
CM_MAX = "cm-max"
|
|
55
55
|
CM_MIN_AUTO = "cm-min-auto"
|
|
56
56
|
CM_MAX_AUTO = "cm-max-auto"
|
|
57
|
+
CONTOURS_SWITCH = "contours-switch"
|
|
58
|
+
CONTOURS_QUANTITY = "contours-quantity"
|
|
57
59
|
|
|
58
60
|
GRAPH_SOURCE = "graph-source"
|
|
59
61
|
CO2_SCALE = "co2-scale"
|
|
@@ -155,6 +157,8 @@ class ViewSettings(SettingsGroupABC):
|
|
|
155
157
|
self.register_component_unique_id(self.Ids.CM_MAX),
|
|
156
158
|
self.register_component_unique_id(self.Ids.CM_MIN_AUTO),
|
|
157
159
|
self.register_component_unique_id(self.Ids.CM_MAX_AUTO),
|
|
160
|
+
self.register_component_unique_id(self.Ids.CONTOURS_SWITCH),
|
|
161
|
+
self.register_component_unique_id(self.Ids.CONTOURS_QUANTITY),
|
|
158
162
|
self.register_component_unique_id(self.Ids.MASS_UNIT),
|
|
159
163
|
self.register_component_unique_id(self.Ids.MASS_UNIT_UPDATE),
|
|
160
164
|
self._map_attribute_names,
|
|
@@ -604,8 +608,9 @@ class DialogLayout(wcc.Dialog):
|
|
|
604
608
|
checklist_values.append(LayoutLabels.SHOW_FAULTPOLYGONS)
|
|
605
609
|
checklist_options.append(LayoutLabels.SHOW_CONTAINMENT_POLYGON)
|
|
606
610
|
checklist_values.append(LayoutLabels.SHOW_CONTAINMENT_POLYGON)
|
|
607
|
-
checklist_options.append(LayoutLabels.
|
|
608
|
-
checklist_values.append(LayoutLabels.
|
|
611
|
+
checklist_options.append(LayoutLabels.SHOW_NOGO_POLYGON)
|
|
612
|
+
checklist_values.append(LayoutLabels.SHOW_NOGO_POLYGON)
|
|
613
|
+
checklist_options.append(LayoutLabels.SHOW_POLYGONS_AS_OUTLINES)
|
|
609
614
|
checklist_options.append(LayoutLabels.SHOW_WELLS)
|
|
610
615
|
checklist_values.append(LayoutLabels.SHOW_WELLS)
|
|
611
616
|
|
|
@@ -667,6 +672,7 @@ class FilterSelectorLayout(wcc.Selectors):
|
|
|
667
672
|
wcc.Dropdown(
|
|
668
673
|
id=formation_id,
|
|
669
674
|
clearable=False,
|
|
675
|
+
maxHeight=300,
|
|
670
676
|
),
|
|
671
677
|
],
|
|
672
678
|
)
|
|
@@ -770,6 +776,8 @@ class MapSelectorLayout(wcc.Selectors):
|
|
|
770
776
|
cm_max_id: str,
|
|
771
777
|
cm_min_auto_id: str,
|
|
772
778
|
cm_max_auto_id: str,
|
|
779
|
+
contour_switch_id: str,
|
|
780
|
+
contour_quantity_id: str,
|
|
773
781
|
mass_unit_id: str,
|
|
774
782
|
mass_unit_update_id: str,
|
|
775
783
|
map_attribute_names: FilteredMapAttribute,
|
|
@@ -791,6 +799,7 @@ class MapSelectorLayout(wcc.Selectors):
|
|
|
791
799
|
options=_compile_property_options(map_attribute_names),
|
|
792
800
|
value=next(iter(map_attribute_names.filtered_values)).value,
|
|
793
801
|
clearable=False,
|
|
802
|
+
maxHeight=500,
|
|
794
803
|
),
|
|
795
804
|
"Statistic",
|
|
796
805
|
wcc.Dropdown(
|
|
@@ -858,6 +867,29 @@ class MapSelectorLayout(wcc.Selectors):
|
|
|
858
867
|
],
|
|
859
868
|
style={"display": "flex"},
|
|
860
869
|
),
|
|
870
|
+
"Contours",
|
|
871
|
+
html.Div(
|
|
872
|
+
[
|
|
873
|
+
"#",
|
|
874
|
+
dcc.Input(
|
|
875
|
+
id=contour_quantity_id,
|
|
876
|
+
value=5,
|
|
877
|
+
type="number",
|
|
878
|
+
min=1,
|
|
879
|
+
style={"width": "25%"},
|
|
880
|
+
),
|
|
881
|
+
dcc.Checklist(
|
|
882
|
+
["On/Off"],
|
|
883
|
+
[],
|
|
884
|
+
id=contour_switch_id,
|
|
885
|
+
),
|
|
886
|
+
],
|
|
887
|
+
style={"display": "flex"},
|
|
888
|
+
title=(
|
|
889
|
+
"Contours work best with relatively smooth maps,"
|
|
890
|
+
" and Minimum and Maximum set to 'auto'."
|
|
891
|
+
),
|
|
892
|
+
),
|
|
861
893
|
OpenVisualizationThresholdsButton(),
|
|
862
894
|
],
|
|
863
895
|
)
|
|
@@ -999,6 +1031,7 @@ class GraphSelectorsLayout(wcc.Selectors):
|
|
|
999
1031
|
value="all",
|
|
1000
1032
|
id=containment_ids[ids.ZONE],
|
|
1001
1033
|
clearable=False,
|
|
1034
|
+
maxHeight=300,
|
|
1002
1035
|
),
|
|
1003
1036
|
],
|
|
1004
1037
|
id=containment_ids[ids.ZONE_COL],
|
|
@@ -1027,6 +1060,7 @@ class GraphSelectorsLayout(wcc.Selectors):
|
|
|
1027
1060
|
value="all",
|
|
1028
1061
|
id=containment_ids[ids.REGION],
|
|
1029
1062
|
clearable=False,
|
|
1063
|
+
maxHeight=300,
|
|
1030
1064
|
),
|
|
1031
1065
|
],
|
|
1032
1066
|
id=containment_ids[ids.REGION_COL],
|
|
@@ -1065,7 +1099,7 @@ class GraphSelectorsLayout(wcc.Selectors):
|
|
|
1065
1099
|
{"label": "All areas", "value": "total"},
|
|
1066
1100
|
{"label": "Contained", "value": "contained"},
|
|
1067
1101
|
{"label": "Outside", "value": "outside"},
|
|
1068
|
-
{"label": "
|
|
1102
|
+
{"label": "No-go", "value": "nogo"},
|
|
1069
1103
|
],
|
|
1070
1104
|
value="total",
|
|
1071
1105
|
clearable=False,
|
|
@@ -1134,6 +1168,7 @@ class GraphSelectorsLayout(wcc.Selectors):
|
|
|
1134
1168
|
wcc.Dropdown(
|
|
1135
1169
|
id=containment_ids[ids.DATE_OPTION],
|
|
1136
1170
|
clearable=False,
|
|
1171
|
+
maxHeight=300,
|
|
1137
1172
|
),
|
|
1138
1173
|
],
|
|
1139
1174
|
id=containment_ids[ids.DATE_OPTION_COL],
|
|
@@ -357,5 +357,7 @@ class EnsembleSubplotBuilder(GraphFigureBuilderBase):
|
|
|
357
357
|
missing = vectors - set(self._selected_vectors)
|
|
358
358
|
if missing:
|
|
359
359
|
raise ValueError(
|
|
360
|
-
f"Unexpected vectors found: {missing}.
|
|
360
|
+
f"Unexpected vectors found: {missing}."
|
|
361
|
+
f" Does not exist among selected vectors: "
|
|
362
|
+
f"{self._selected_vectors}"
|
|
361
363
|
)
|
|
@@ -241,7 +241,7 @@ def _read_vfp_arrow(filename: str) -> io.BytesIO:
|
|
|
241
241
|
source = pa.memory_map(filename, "r")
|
|
242
242
|
reader = pa.ipc.RecordBatchFileReader(source)
|
|
243
243
|
pa_table = reader.read_all()
|
|
244
|
-
vfp_dict = pyarrow2basic_data(pa_table)
|
|
244
|
+
vfp_dict = pyarrow2basic_data(pa_table) or {}
|
|
245
245
|
|
|
246
246
|
for key, _ in vfp_dict.items():
|
|
247
247
|
# Convert types to strings
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: webviz-subsurface
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.46
|
|
4
4
|
Summary: Webviz config plugins for subsurface data
|
|
5
5
|
Author: R&T Equinor
|
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
|
@@ -695,7 +695,6 @@ Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
|
695
695
|
Requires-Python: ~=3.11
|
|
696
696
|
Description-Content-Type: text/markdown
|
|
697
697
|
License-File: LICENSE
|
|
698
|
-
License-File: LICENSE.chromedriver
|
|
699
698
|
Requires-Dist: dash<3,>=2.0.0
|
|
700
699
|
Requires-Dist: dash_bootstrap_components>=0.10.3
|
|
701
700
|
Requires-Dist: dash-daq>=0.5.0
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
webviz_subsurface/__init__.py,sha256=XUL8THCPZObkUsxDodKtE_wx-pYmQ4sATXgx5sdYa-A,3824
|
|
2
|
-
webviz_subsurface/_version.py,sha256=
|
|
2
|
+
webviz_subsurface/_version.py,sha256=mS--kdtjJqUKfsljfki5FdWrl3-cIsK7SI2vUzlwC-A,706
|
|
3
3
|
webviz_subsurface/smry2arrow_batch.py,sha256=zTekRSgkUei6_DGT1ZWibd22PrFkkTQ_pnjZYvzMOL4,4129
|
|
4
4
|
webviz_subsurface/_abbreviations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
5
|
webviz_subsurface/_abbreviations/number_formatting.py,sha256=zElrkv3j3H6i7nbeeyKG1oE6VfNtzfrSJQYrC08Bev0,3479
|
|
@@ -36,7 +36,7 @@ webviz_subsurface/_datainput/seismic.py,sha256=7alyU9dezKgrSqiGI1R405hh5ymPDf5Cb
|
|
|
36
36
|
webviz_subsurface/_datainput/surface.py,sha256=fxrV65AJBw1dbIyJtnfknk7DriqpotF2oi7ZDNQBheE,348
|
|
37
37
|
webviz_subsurface/_datainput/units.py,sha256=xBtouLCXa4ZzNSCTjmTRfsHS3GluwTHIBh9SpzxAksA,15902
|
|
38
38
|
webviz_subsurface/_datainput/well.py,sha256=9_Hi66TMqy4tkwYXugYV_lSyZFQ9SY5rQZvkpPxxnp8,6916
|
|
39
|
-
webviz_subsurface/_datainput/well_completions.py,sha256=
|
|
39
|
+
webviz_subsurface/_datainput/well_completions.py,sha256=f_VPGoaarXBuJ7Pwjf8RTY-mJHxL21fJgbzvYVQT3VA,6289
|
|
40
40
|
webviz_subsurface/_datainput/xsection.py,sha256=X3B88ufAANzKOeHelVGIulj3cwRgMMrl6lbAq90QD4U,19126
|
|
41
41
|
webviz_subsurface/_datainput/eclipse_init_io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
42
42
|
webviz_subsurface/_datainput/eclipse_init_io/pvt_common.py,sha256=iH94cMbifEJjGC7Pj4HA8kYMPH4uXLoIlXtWy2oKo7E,30857
|
|
@@ -52,7 +52,7 @@ webviz_subsurface/_models/__init__.py,sha256=N2vfEx6bChJu9w_Vax_FslPBhNxbdWBqL6V
|
|
|
52
52
|
webviz_subsurface/_models/caching_ensemble_set_model_factory.py,sha256=Jt7lCEpPPBhLB36V-QRyc2cvp2hF85zmiXODqKTza_I,1201
|
|
53
53
|
webviz_subsurface/_models/ensemble_model.py,sha256=qic5LtPHeWRG3yzITvAihkiIxDZOuKYUFLbzc9peQcM,6288
|
|
54
54
|
webviz_subsurface/_models/ensemble_set_model.py,sha256=elS5eLpktTJeeSU_44hL9SBHufDQB3SyBllUJZzdSKM,4231
|
|
55
|
-
webviz_subsurface/_models/gruptree_model.py,sha256=
|
|
55
|
+
webviz_subsurface/_models/gruptree_model.py,sha256=yrYW-6FwCSJ4ClwJjqP3UeWV7ka6LcPza-Qyfp-O3Qw,9439
|
|
56
56
|
webviz_subsurface/_models/inplace_volumes_model.py,sha256=AxVJzEeYgDgKfbP6ePpxqwX9I1ybVpho9PSzpzfWzEY,15877
|
|
57
57
|
webviz_subsurface/_models/observation_model.py,sha256=Z9wO6KfO6FcJ99x8kq1Y2m_2bCsAiWexYjhVoJkqxAY,1629
|
|
58
58
|
webviz_subsurface/_models/parameter_model.py,sha256=IZOQvEM0zjzFQUsW0MzYfbo8kRVqZNJxzbe_uDW-GJE,7284
|
|
@@ -81,7 +81,7 @@ webviz_subsurface/_providers/ensemble_grid_provider/provider_impl_egrid.py,sha25
|
|
|
81
81
|
webviz_subsurface/_providers/ensemble_grid_provider/provider_impl_roff.py,sha256=FUsBpUroAHAPuKZ-sB1aAFwy4An4QDPYyGQ7WDzvCN0,12509
|
|
82
82
|
webviz_subsurface/_providers/ensemble_polygon_provider/__init__.py,sha256=kiBWm45NNnfX0bxigftDx60VT6aejFw40L40eYAfMUY,226
|
|
83
83
|
webviz_subsurface/_providers/ensemble_polygon_provider/_polygon_discovery.py,sha256=-c1k2GKee77yExf_IM56HitY10-5rbeqHC39biP1X9E,3049
|
|
84
|
-
webviz_subsurface/_providers/ensemble_polygon_provider/_provider_impl_file.py,sha256
|
|
84
|
+
webviz_subsurface/_providers/ensemble_polygon_provider/_provider_impl_file.py,sha256=-cTpldlxjSwfge7P5WzZJ7E8BU9wEz1f_wOkeqtBkSA,7485
|
|
85
85
|
webviz_subsurface/_providers/ensemble_polygon_provider/ensemble_polygon_provider.py,sha256=QACC3qF-bmIYd5sQB-tnSFcoYszQTT5WGWqkwm_hNZQ,1623
|
|
86
86
|
webviz_subsurface/_providers/ensemble_polygon_provider/ensemble_polygon_provider_factory.py,sha256=GvVSpkj2V9DhbJGRWwbuZRjoVnXGKdHMQea1p8tfVWw,3618
|
|
87
87
|
webviz_subsurface/_providers/ensemble_polygon_provider/polygon_server.py,sha256=yIJ1yv9Ngb203yANTppRDK2TBNt7FgF2JJRFbbOO3oU,4137
|
|
@@ -181,28 +181,28 @@ webviz_subsurface/plugins/_bhp_qc/views/_line_chart.py,sha256=dUF4H8H4i1yRg-m2Gs
|
|
|
181
181
|
webviz_subsurface/plugins/_bhp_qc/views/_view_functions.py,sha256=FdSaCWCnsGdIj2ET6K1r9DZS5rPTalt1SXdm2Hrpgr4,3024
|
|
182
182
|
webviz_subsurface/plugins/_co2_migration/__init__.py,sha256=SPo2gxFgYmDmEeAfZmHJn6x4vNh7215YYesWSL86yEk,34
|
|
183
183
|
webviz_subsurface/plugins/_co2_migration/_error.py,sha256=iZiTIa5qlUA4hy3cmjDrZio2bPAtIAOXoA6eTgkQ1dI,135
|
|
184
|
-
webviz_subsurface/plugins/_co2_migration/_plugin.py,sha256=
|
|
184
|
+
webviz_subsurface/plugins/_co2_migration/_plugin.py,sha256=kcwh0No0Hke4RgYd-xGHoUXfNt1yHkB6SQkmrlo1vew,41773
|
|
185
185
|
webviz_subsurface/plugins/_co2_migration/_types.py,sha256=RbS3WtAjoobXTRXk7S8Gk4Ci0xVty3nJxUPGL8L6q3o,199
|
|
186
186
|
webviz_subsurface/plugins/_co2_migration/_utilities/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
187
187
|
webviz_subsurface/plugins/_co2_migration/_utilities/_misc.py,sha256=0E-m_Ior6Kb5cbgfQpzC9mHI6FT2xj1Ihk0jtc6Mk6E,307
|
|
188
|
-
webviz_subsurface/plugins/_co2_migration/_utilities/callbacks.py,sha256=
|
|
189
|
-
webviz_subsurface/plugins/_co2_migration/_utilities/co2volume.py,sha256=
|
|
188
|
+
webviz_subsurface/plugins/_co2_migration/_utilities/callbacks.py,sha256=OgMVmuM6mHxJ1OmYSn0370gbI4q87_Ru-rpaTdnJOYM,27285
|
|
189
|
+
webviz_subsurface/plugins/_co2_migration/_utilities/co2volume.py,sha256=vHgEtQwBKoTsh-GGgnR8NBNqcUKvuxQUjil_Q5x0CpM,48038
|
|
190
190
|
webviz_subsurface/plugins/_co2_migration/_utilities/color_tables.py,sha256=NrQf72s7Oeq9rE0TGaHQ0PDfIpg9e0dx7dNtwo6-2ZA,2439
|
|
191
|
-
webviz_subsurface/plugins/_co2_migration/_utilities/containment_data_provider.py,sha256=
|
|
191
|
+
webviz_subsurface/plugins/_co2_migration/_utilities/containment_data_provider.py,sha256=chXhYjeKBCNWsseju-toVaKmxsGl-c6E86BlawTzxHE,5718
|
|
192
192
|
webviz_subsurface/plugins/_co2_migration/_utilities/containment_info.py,sha256=9vUTTIXO4vyCxEmvt_n38YPV2JWenzYuqutrB1KP1ko,972
|
|
193
193
|
webviz_subsurface/plugins/_co2_migration/_utilities/ensemble_well_picks.py,sha256=9Gx5FLiS5NeHY-8iaV8HBi_dBEldb9A5t5OUfNuAu-Q,3940
|
|
194
194
|
webviz_subsurface/plugins/_co2_migration/_utilities/fault_polygons_handler.py,sha256=w74r0DPZGKRCtChtLn4eXO5dOGPWcvMjt9udZFfasI4,1658
|
|
195
|
-
webviz_subsurface/plugins/_co2_migration/_utilities/generic.py,sha256=
|
|
196
|
-
webviz_subsurface/plugins/_co2_migration/_utilities/initialization.py,sha256=
|
|
195
|
+
webviz_subsurface/plugins/_co2_migration/_utilities/generic.py,sha256=p2_fFcNMKxpz73-vk138Kr0GdKwTRmkO8CDaz0PapG0,9792
|
|
196
|
+
webviz_subsurface/plugins/_co2_migration/_utilities/initialization.py,sha256=BJRnldWHKd1lChEzVAmCJTkQPUUZFA4KNQWl3mvxOgI,12000
|
|
197
197
|
webviz_subsurface/plugins/_co2_migration/_utilities/plume_extent.py,sha256=VsQr6DzJLvfbmwMj34cTa56woS_W8V0S08XQVtVTbu4,3390
|
|
198
|
-
webviz_subsurface/plugins/_co2_migration/_utilities/polygon_handler.py,sha256
|
|
198
|
+
webviz_subsurface/plugins/_co2_migration/_utilities/polygon_handler.py,sha256=MOc4c3zbG3DSaTm6R_Gx2V9C7tq0q0PftMYQocekLZs,2315
|
|
199
199
|
webviz_subsurface/plugins/_co2_migration/_utilities/summary_graphs.py,sha256=kWwzGUC2WQBgioPUt6RvXa4kAv6SDdbXJngLFrorCSg,5279
|
|
200
200
|
webviz_subsurface/plugins/_co2_migration/_utilities/surface_publishing.py,sha256=YfY8lOvJkb0oQLTb8EY6Fp_JWykAsItp68iGCpXJdFU,8498
|
|
201
201
|
webviz_subsurface/plugins/_co2_migration/_utilities/unsmry_data_provider.py,sha256=k-J2EkNeEvon64LZdo2mB1BQ4Iz25M1JAoyfCyvQOwc,3292
|
|
202
202
|
webviz_subsurface/plugins/_co2_migration/views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
203
203
|
webviz_subsurface/plugins/_co2_migration/views/mainview/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
204
204
|
webviz_subsurface/plugins/_co2_migration/views/mainview/mainview.py,sha256=4uj6d46znDPDfjpm3nh2iAeQavdqdMr623MQ2k1oXgw,10649
|
|
205
|
-
webviz_subsurface/plugins/_co2_migration/views/mainview/settings.py,sha256=
|
|
205
|
+
webviz_subsurface/plugins/_co2_migration/views/mainview/settings.py,sha256=jSpAsOkLPYsr5DLOajc-Xm4jSm_p1vcySfwdFgZWKWY,67791
|
|
206
206
|
webviz_subsurface/plugins/_grid_viewer_fmu/__init__.py,sha256=ZlS_MintakVLD0tEjrCySI4BWcxzR7wLP-smYZoAcE4,47
|
|
207
207
|
webviz_subsurface/plugins/_grid_viewer_fmu/_layout_elements.py,sha256=RHJUFVx17LvpsDOa8Y8gwNoRHoodcaXXQGRGwjqbeB0,124
|
|
208
208
|
webviz_subsurface/plugins/_grid_viewer_fmu/_plugin.py,sha256=-BFEoSRUxZUaMxJCOrzGdQ5-HYFgvYRLoph_4kmbYA8,5373
|
|
@@ -377,7 +377,7 @@ webviz_subsurface/plugins/_simulation_time_series/_views/__init__.py,sha256=47DE
|
|
|
377
377
|
webviz_subsurface/plugins/_simulation_time_series/_views/_subplot_view/__init__.py,sha256=Yt6Piyp2IkXxdlj-alqIKd6TFZjpmOWqSwjnuQxZSmI,31
|
|
378
378
|
webviz_subsurface/plugins/_simulation_time_series/_views/_subplot_view/_view.py,sha256=HeWZyFM77MSdHCDUhWwXORidxjlqhkD_9u9CVniRdX0,42176
|
|
379
379
|
webviz_subsurface/plugins/_simulation_time_series/_views/_subplot_view/_property_serialization/__init__.py,sha256=E6_uX-47qAv2qVvtue08xhv4uDhZLLImH4s3WsE-ssw,180
|
|
380
|
-
webviz_subsurface/plugins/_simulation_time_series/_views/_subplot_view/_property_serialization/ensemble_subplot_builder.py,sha256=
|
|
380
|
+
webviz_subsurface/plugins/_simulation_time_series/_views/_subplot_view/_property_serialization/ensemble_subplot_builder.py,sha256=yrd96RMk2kJlM5CdzQkiazEzXEgDoTglR8_LfOTDMpY,14272
|
|
381
381
|
webviz_subsurface/plugins/_simulation_time_series/_views/_subplot_view/_property_serialization/graph_figure_builder_base.py,sha256=Ys9_XDUR0fQ-rR_LGEGW8jgp-DGwukec21Mj6VJHchw,5732
|
|
382
382
|
webviz_subsurface/plugins/_simulation_time_series/_views/_subplot_view/_property_serialization/vector_subplot_builder.py,sha256=d7phNUn2ILx6_3TwfBsL2_1ossTi4-Lfcj_5IXjKXA8,14980
|
|
383
383
|
webviz_subsurface/plugins/_simulation_time_series/_views/_subplot_view/_settings/__init__.py,sha256=hDqljNMPXr18Dir-7aBnXAiCPlyHB9jLtytq8kAWXT4,298
|
|
@@ -471,7 +471,7 @@ webviz_subsurface/plugins/_vfp_analysis/__init__.py,sha256=CF23TDvv2GOK1yhW-gBvU
|
|
|
471
471
|
webviz_subsurface/plugins/_vfp_analysis/_plugin.py,sha256=Ni2GxLCFQFpD7VcqWQzy1Oa7sOm45VuLbnM81bYUrBY,1690
|
|
472
472
|
webviz_subsurface/plugins/_vfp_analysis/_types.py,sha256=t2yKFHT7Y0UL6HJ3Zv0tHdHPtZRRuXo3mUM_YLoqrJU,210
|
|
473
473
|
webviz_subsurface/plugins/_vfp_analysis/_utils/__init__.py,sha256=2CzWadhrnNQGdrpGSUrvqoTCMYvp3YnXvLPWB-egk8k,52
|
|
474
|
-
webviz_subsurface/plugins/_vfp_analysis/_utils/_vfp_data_model.py,sha256=
|
|
474
|
+
webviz_subsurface/plugins/_vfp_analysis/_utils/_vfp_data_model.py,sha256=b9w_E4QsEaNyxQgkhq0UZx0i8YpVH7dM3dyEwfbCZVI,9664
|
|
475
475
|
webviz_subsurface/plugins/_vfp_analysis/_views/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
476
476
|
webviz_subsurface/plugins/_vfp_analysis/_views/_vfp_view/__init__.py,sha256=S6q3vFDQe98gEuO0Ku1PPjSj_He1GVz6hbuTaPalcZQ,27
|
|
477
477
|
webviz_subsurface/plugins/_vfp_analysis/_views/_vfp_view/_view.py,sha256=qHkiQMfZDwkUKchM2G1sJVUgKqERCUIujCj-ly-aY1c,10035
|
|
@@ -550,10 +550,9 @@ webviz_subsurface/plugins/_well_log_viewer/controllers/_well_controller.py,sha25
|
|
|
550
550
|
webviz_subsurface/plugins/_well_log_viewer/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
551
551
|
webviz_subsurface/plugins/_well_log_viewer/utils/default_color_tables.py,sha256=0UgrvygPGEAuC15vn73NCXJUQLt9Dpn5QZqqq1IJkfw,4872
|
|
552
552
|
webviz_subsurface/plugins/_well_log_viewer/utils/xtgeo_well_log_to_json.py,sha256=T44-vFwvvjyo376yoL1QWDc98exG8N1cLTEzrGp-I7A,1608
|
|
553
|
-
webviz_subsurface-0.2.
|
|
554
|
-
webviz_subsurface-0.2.
|
|
555
|
-
webviz_subsurface-0.2.
|
|
556
|
-
webviz_subsurface-0.2.
|
|
557
|
-
webviz_subsurface-0.2.
|
|
558
|
-
webviz_subsurface-0.2.
|
|
559
|
-
webviz_subsurface-0.2.43.dist-info/RECORD,,
|
|
553
|
+
webviz_subsurface-0.2.46.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
554
|
+
webviz_subsurface-0.2.46.dist-info/METADATA,sha256=v_UNy8wVvDzDkbAyDmjl94_v8ke_byRQ_hjIrsZfSak,46790
|
|
555
|
+
webviz_subsurface-0.2.46.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
556
|
+
webviz_subsurface-0.2.46.dist-info/entry_points.txt,sha256=Xdu_x9E_hJBueKfSYBFAAVFzKeUrenikc8lydm9C-6A,4135
|
|
557
|
+
webviz_subsurface-0.2.46.dist-info/top_level.txt,sha256=ivY5svyqFD5YI8wdJHATxBrkxfcdU2Q6fDh5E_tDrl4,18
|
|
558
|
+
webviz_subsurface-0.2.46.dist-info/RECORD,,
|