fmu-sumo 2.3.5__tar.gz → 2.3.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/PKG-INFO +1 -1
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/_version.py +2 -2
- fmu_sumo-2.3.7/src/fmu/sumo/explorer/objects/_child.py +169 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/objects/_document.py +5 -12
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/objects/_search_context.py +144 -75
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/objects/case.py +23 -9
- fmu_sumo-2.3.7/src/fmu/sumo/explorer/objects/iteration.py +51 -0
- fmu_sumo-2.3.7/src/fmu/sumo/explorer/objects/realization.py +56 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu_sumo.egg-info/PKG-INFO +1 -1
- fmu_sumo-2.3.5/src/fmu/sumo/explorer/objects/_child.py +0 -99
- fmu_sumo-2.3.5/src/fmu/sumo/explorer/objects/iteration.py +0 -32
- fmu_sumo-2.3.5/src/fmu/sumo/explorer/objects/realization.py +0 -33
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/pull_request_template.md +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/workflows/build_docs.yaml +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/workflows/check_formatting.yml +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/workflows/publish_release.yaml +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/workflows/run_tests.yaml +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/workflows/run_tests_access_drogon_affiliate_login.yaml +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/workflows/run_tests_access_drogon_manage_login.yaml +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/workflows/run_tests_access_drogon_manage_sharedkey.yaml +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/workflows/run_tests_access_drogon_read_login.yaml +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/workflows/run_tests_access_drogon_read_sharedkey.yaml +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/workflows/run_tests_access_drogon_write_login.yaml +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/workflows/run_tests_access_drogon_write_sharedkey.yaml +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/workflows/run_tests_access_no_access_login.yaml +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.gitignore +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.pre-commit-config.yaml +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.readthedocs.yml +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/CONTRIBUTING.md +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/LICENSE +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/README.md +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/SECURITY.md +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/docs/_static/equinor-logo.png +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/docs/_static/equinor-logo2.jpg +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/docs/_static/equinor_logo.jpg +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/docs/_static/equinor_logo_only.jpg +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/docs/_templates/layout.html +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/docs/conf.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/docs/explorer.rst +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/docs/index.rst +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/examples/explorer.ipynb +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/examples/explorer2.ipynb +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/examples/grids-and-properties.ipynb +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/examples/metrics.ipynb +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/examples/table-aggregation.ipynb +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/examples/tables.ipynb +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/pyproject.toml +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/setup.cfg +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/__init__.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/__init__.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/__init__.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/cache.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/explorer.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/filters.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/objects/__init__.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/objects/_metrics.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/objects/cases.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/objects/cpgrid.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/objects/cpgrid_property.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/objects/cube.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/objects/dictionary.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/objects/iterations.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/objects/polygons.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/objects/realizations.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/objects/surface.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/objects/table.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/objects/table_aggregated.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu/sumo/explorer/timefilter.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu_sumo.egg-info/SOURCES.txt +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu_sumo.egg-info/dependency_links.txt +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu_sumo.egg-info/requires.txt +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/src/fmu_sumo.egg-info/top_level.txt +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/tests/conftest.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/tests/context.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/tests/data/test_case_080/case2.json +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/tests/test_access/README.md +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/tests/test_access/tst_access_drogon_affiliate_login.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/tests/test_access/tst_access_drogon_manage_login.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/tests/test_access/tst_access_drogon_read_login.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/tests/test_access/tst_access_drogon_write_login.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/tests/test_access/tst_access_no_access_login.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/tests/test_explorer.py +0 -0
- {fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/tests/test_objects_table.py +0 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"""module containing class for child object"""
|
|
2
|
+
|
|
3
|
+
from io import BytesIO
|
|
4
|
+
from typing import Dict, List
|
|
5
|
+
|
|
6
|
+
from sumo.wrapper import SumoClient
|
|
7
|
+
|
|
8
|
+
from fmu.sumo.explorer.objects._document import Document
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Child(Document):
|
|
12
|
+
"""Class representing a child object in Sumo"""
|
|
13
|
+
|
|
14
|
+
def __init__(self, sumo: SumoClient, metadata: Dict, blob=None) -> None:
|
|
15
|
+
"""
|
|
16
|
+
Args:
|
|
17
|
+
sumo (SumoClient): connection to Sumo
|
|
18
|
+
metadata: (dict): child object metadata
|
|
19
|
+
"""
|
|
20
|
+
super().__init__(metadata)
|
|
21
|
+
self._sumo = sumo
|
|
22
|
+
self._blob = blob
|
|
23
|
+
|
|
24
|
+
@property
|
|
25
|
+
def blob(self) -> BytesIO:
|
|
26
|
+
"""Object blob"""
|
|
27
|
+
if self._blob is None:
|
|
28
|
+
res = self._sumo.get(f"/objects('{self.uuid}')/blob")
|
|
29
|
+
self._blob = BytesIO(res.content)
|
|
30
|
+
|
|
31
|
+
return self._blob
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
async def blob_async(self) -> BytesIO:
|
|
35
|
+
"""Object blob"""
|
|
36
|
+
if self._blob is None:
|
|
37
|
+
res = await self._sumo.get_async(f"/objects('{self.uuid}')/blob")
|
|
38
|
+
self._blob = BytesIO(res.content)
|
|
39
|
+
|
|
40
|
+
return self._blob
|
|
41
|
+
|
|
42
|
+
@property
|
|
43
|
+
def timestamp(self) -> str:
|
|
44
|
+
"""Object timestmap data"""
|
|
45
|
+
t0 = self._get_property(["data", "time", "t0", "value"])
|
|
46
|
+
t1 = self._get_property(["data", "time", "t1", "value"])
|
|
47
|
+
|
|
48
|
+
if t0 is not None and t1 is None:
|
|
49
|
+
return t0
|
|
50
|
+
|
|
51
|
+
return None
|
|
52
|
+
|
|
53
|
+
@property
|
|
54
|
+
def interval(self) -> str:
|
|
55
|
+
"""Object interval data"""
|
|
56
|
+
t0 = self._get_property(["data", "time", "t0", "value"])
|
|
57
|
+
t1 = self._get_property(["data", "time", "t1", "value"])
|
|
58
|
+
|
|
59
|
+
if t0 is not None and t1 is not None:
|
|
60
|
+
return (t0, t1)
|
|
61
|
+
|
|
62
|
+
return None
|
|
63
|
+
|
|
64
|
+
@property
|
|
65
|
+
def template_path(self):
|
|
66
|
+
return "/".join(
|
|
67
|
+
["{realization}", "{iteration}"]
|
|
68
|
+
+ self.relative_path.split("/")[2:]
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
@property
|
|
72
|
+
def spec(self) -> Dict:
|
|
73
|
+
"""Object spec data"""
|
|
74
|
+
return self.get_property("data.spec")
|
|
75
|
+
|
|
76
|
+
@property
|
|
77
|
+
def bbox(self) -> Dict:
|
|
78
|
+
"""Object boundary-box data"""
|
|
79
|
+
return self.get_property("data.bbox")
|
|
80
|
+
|
|
81
|
+
@property
|
|
82
|
+
def relative_path(self) -> str:
|
|
83
|
+
"""Object relative file path"""
|
|
84
|
+
return self.get_property("file.relative_path")
|
|
85
|
+
|
|
86
|
+
@property
|
|
87
|
+
def dataformat(self) -> str:
|
|
88
|
+
"""Object file format"""
|
|
89
|
+
return self.get_property("data.format")
|
|
90
|
+
|
|
91
|
+
@property
|
|
92
|
+
def format(self) -> str:
|
|
93
|
+
"""Object file format"""
|
|
94
|
+
return self.get_property("data.format")
|
|
95
|
+
|
|
96
|
+
@property
|
|
97
|
+
def stage(self) -> str:
|
|
98
|
+
"""Object stage"""
|
|
99
|
+
return self.get_property("fmu.context.stage")
|
|
100
|
+
|
|
101
|
+
@property
|
|
102
|
+
def aggregation(self) -> str:
|
|
103
|
+
"""Object aggregation operation"""
|
|
104
|
+
return self.get_property("fmu.aggregation.operation")
|
|
105
|
+
|
|
106
|
+
@property
|
|
107
|
+
def realization(self) -> str:
|
|
108
|
+
"""Object realization"""
|
|
109
|
+
return self.get_property("fmu.realization.id")
|
|
110
|
+
|
|
111
|
+
@property
|
|
112
|
+
def iteration(self) -> str:
|
|
113
|
+
"""Object iteration"""
|
|
114
|
+
return self.get_property("fmu.iteration.name")
|
|
115
|
+
|
|
116
|
+
@property
|
|
117
|
+
def context(self) -> str:
|
|
118
|
+
"""Object context"""
|
|
119
|
+
return self.get_property("fmu.context.stage")
|
|
120
|
+
|
|
121
|
+
@property
|
|
122
|
+
def vertical_domain(self) -> str:
|
|
123
|
+
"""Object vertical domain"""
|
|
124
|
+
return self.get_property("data.vertical_domain")
|
|
125
|
+
|
|
126
|
+
@property
|
|
127
|
+
def stratigraphic(self) -> str:
|
|
128
|
+
"""Object stratigraphic"""
|
|
129
|
+
return self.get_property("data.stratigraphic")
|
|
130
|
+
|
|
131
|
+
@property
|
|
132
|
+
def columns(self) -> List[str]:
|
|
133
|
+
"""Object table columns"""
|
|
134
|
+
return self.get_property("data.spec.columns")
|
|
135
|
+
|
|
136
|
+
@property
|
|
137
|
+
def tagname(self) -> str:
|
|
138
|
+
"""Object tagname"""
|
|
139
|
+
return self.get_property("data.tagname")
|
|
140
|
+
|
|
141
|
+
@property
|
|
142
|
+
def content(self) -> str:
|
|
143
|
+
"""Content"""
|
|
144
|
+
return self.get_property("data.content")
|
|
145
|
+
|
|
146
|
+
@property
|
|
147
|
+
def caseuuid(self) -> str:
|
|
148
|
+
"""Object case uuid"""
|
|
149
|
+
return self.get_property("fmu.case.uuid")
|
|
150
|
+
|
|
151
|
+
@property
|
|
152
|
+
def casename(self) -> str:
|
|
153
|
+
"""Object case name"""
|
|
154
|
+
return self.get_property("fmu.case.name")
|
|
155
|
+
|
|
156
|
+
@property
|
|
157
|
+
def classname(self) -> str:
|
|
158
|
+
"""Object class name"""
|
|
159
|
+
return self.get_property("class.name")
|
|
160
|
+
|
|
161
|
+
@property
|
|
162
|
+
def dataname(self) -> str:
|
|
163
|
+
"""Object data name"""
|
|
164
|
+
return self.get_property("data.name")
|
|
165
|
+
|
|
166
|
+
@property
|
|
167
|
+
def name(self) -> str:
|
|
168
|
+
"""Object data name"""
|
|
169
|
+
return self.get_property("data.name")
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"""Contains class for one document"""
|
|
2
2
|
|
|
3
3
|
import re
|
|
4
|
-
from typing import Dict, List
|
|
4
|
+
from typing import Any, Dict, List, Union
|
|
5
5
|
|
|
6
6
|
_path_split_rx = re.compile(r"\]\.|\.|\[")
|
|
7
7
|
|
|
@@ -11,11 +11,6 @@ def _splitpath(path):
|
|
|
11
11
|
return [int(x) if re.match(r"\d+", x) else x for x in parts]
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
def _makeprop(attribute):
|
|
15
|
-
path = _splitpath(attribute)
|
|
16
|
-
return lambda self: self._get_property(path)
|
|
17
|
-
|
|
18
|
-
|
|
19
14
|
class Document:
|
|
20
15
|
"""Class for representing a document in Sumo"""
|
|
21
16
|
|
|
@@ -41,7 +36,7 @@ class Document:
|
|
|
41
36
|
"""
|
|
42
37
|
return self._metadata
|
|
43
38
|
|
|
44
|
-
def _get_property(self, path: List[str]):
|
|
39
|
+
def _get_property(self, path: List[Union[str, int]]):
|
|
45
40
|
curr = self._metadata
|
|
46
41
|
|
|
47
42
|
for key in path:
|
|
@@ -52,10 +47,8 @@ class Document:
|
|
|
52
47
|
|
|
53
48
|
return curr
|
|
54
49
|
|
|
50
|
+
def get_property(self, path: str) -> Any:
|
|
51
|
+
return self._get_property(_splitpath(path))
|
|
52
|
+
|
|
55
53
|
def __getitem__(self, key: str):
|
|
56
54
|
return self._metadata[key]
|
|
57
|
-
|
|
58
|
-
@staticmethod
|
|
59
|
-
def map_properties(cls, propmap):
|
|
60
|
-
for name, attribute, doc in propmap:
|
|
61
|
-
setattr(cls, name, property(_makeprop(attribute), None, None, doc))
|
|
@@ -162,45 +162,6 @@ def _gen_filters(spec):
|
|
|
162
162
|
filters = _gen_filters(_filterspec)
|
|
163
163
|
|
|
164
164
|
|
|
165
|
-
_bucket_spec = {
|
|
166
|
-
"names": ["data.name.keyword", "List of unique object names."],
|
|
167
|
-
"tagnames": ["data.tagname.keyword", "List of unique object tagnames."],
|
|
168
|
-
"dataformats": [
|
|
169
|
-
"data.format.keyword",
|
|
170
|
-
"List of unique data.format values.",
|
|
171
|
-
],
|
|
172
|
-
"aggregations": [
|
|
173
|
-
"fmu.aggregation.operation.keyword",
|
|
174
|
-
"List of unique object aggregation operations.",
|
|
175
|
-
],
|
|
176
|
-
"stages": ["fmu.context.stage.keyword", "List of unique stages."],
|
|
177
|
-
# "stratigraphic": [
|
|
178
|
-
# "data.stratigraphic",
|
|
179
|
-
# "List of unique object stratigraphic.",
|
|
180
|
-
# ],
|
|
181
|
-
"vertical_domains": [
|
|
182
|
-
"data.vertical_domain",
|
|
183
|
-
"List of unique object vertical domains.",
|
|
184
|
-
],
|
|
185
|
-
"contents": ["data.content.keyword", "List of unique contents."],
|
|
186
|
-
"columns": ["data.spec.columns.keyword", "List of unique column names."],
|
|
187
|
-
"statuses": ["_sumo.status.keyword", "List of unique case statuses."],
|
|
188
|
-
"users": ["fmu.case.user.id.keyword", "List of unique user names."],
|
|
189
|
-
"fieldidentifiers": [
|
|
190
|
-
"masterdata.smda.field.identifier.keyword",
|
|
191
|
-
"List of unique field names.",
|
|
192
|
-
],
|
|
193
|
-
"stratcolumnidentifiers": [
|
|
194
|
-
"masterdata.smda.stratigraphic_column.identifier.keyword",
|
|
195
|
-
"List of unique stratigraphic column names.",
|
|
196
|
-
],
|
|
197
|
-
"realizationids": [
|
|
198
|
-
"fmu.realization.id",
|
|
199
|
-
"List of unique realization ids.",
|
|
200
|
-
],
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
|
|
204
165
|
def _build_bucket_query(query, field, size):
|
|
205
166
|
return {
|
|
206
167
|
"size": 0,
|
|
@@ -958,9 +919,9 @@ class SearchContext:
|
|
|
958
919
|
@property
|
|
959
920
|
async def timestamps_async(self) -> List[str]:
|
|
960
921
|
"""List of unique timestamps in SearchContext"""
|
|
961
|
-
ts = await self.
|
|
962
|
-
|
|
963
|
-
)
|
|
922
|
+
ts = await self.filter(
|
|
923
|
+
complex=self._timestamp_query
|
|
924
|
+
).get_field_values_async("data.time.t0.value")
|
|
964
925
|
return [datetime.fromtimestamp(t / 1000).isoformat() for t in ts]
|
|
965
926
|
|
|
966
927
|
def _extract_intervals(self, res):
|
|
@@ -1216,7 +1177,7 @@ class SearchContext:
|
|
|
1216
1177
|
Returns: realization object
|
|
1217
1178
|
"""
|
|
1218
1179
|
res = (
|
|
1219
|
-
await self._sumo.
|
|
1180
|
+
await self._sumo.post_async(
|
|
1220
1181
|
"/search", json=self._realization_query(uuid)
|
|
1221
1182
|
)
|
|
1222
1183
|
).json()
|
|
@@ -1547,6 +1508,146 @@ class SearchContext:
|
|
|
1547
1508
|
def p90(self):
|
|
1548
1509
|
return self.aggregate(operation="p90")
|
|
1549
1510
|
|
|
1511
|
+
@property
|
|
1512
|
+
def realizationids(self) -> List[int]:
|
|
1513
|
+
"""List of unique realization ids."""
|
|
1514
|
+
return self.get_field_values("fmu.realization.id")
|
|
1515
|
+
|
|
1516
|
+
@property
|
|
1517
|
+
async def realizationids_async(self) -> List[int]:
|
|
1518
|
+
"""List of unique realization ids."""
|
|
1519
|
+
return await self.get_field_values_async("fmu.realization.id")
|
|
1520
|
+
|
|
1521
|
+
@property
|
|
1522
|
+
def stratcolumnidentifiers(self) -> List[str]:
|
|
1523
|
+
"""List of unique stratigraphic column names."""
|
|
1524
|
+
return self.get_field_values(
|
|
1525
|
+
"masterdata.smda.stratigraphic_column.identifier.keyword"
|
|
1526
|
+
)
|
|
1527
|
+
|
|
1528
|
+
@property
|
|
1529
|
+
async def stratcolumnidentifiers_async(self) -> List[str]:
|
|
1530
|
+
"""List of unique stratigraphic column names."""
|
|
1531
|
+
return await self.get_field_values_async(
|
|
1532
|
+
"masterdata.smda.stratigraphic_column.identifier.keyword"
|
|
1533
|
+
)
|
|
1534
|
+
|
|
1535
|
+
@property
|
|
1536
|
+
def fieldidentifiers(self) -> List[str]:
|
|
1537
|
+
"""List of unique field names."""
|
|
1538
|
+
return self.get_field_values(
|
|
1539
|
+
"masterdata.smda.field.identifier.keyword"
|
|
1540
|
+
)
|
|
1541
|
+
|
|
1542
|
+
@property
|
|
1543
|
+
async def fieldidentifiers_async(self) -> List[str]:
|
|
1544
|
+
"""List of unique field names."""
|
|
1545
|
+
return await self.get_field_values_async(
|
|
1546
|
+
"masterdata.smda.field.identifier.keyword"
|
|
1547
|
+
)
|
|
1548
|
+
|
|
1549
|
+
@property
|
|
1550
|
+
def users(self) -> List[str]:
|
|
1551
|
+
"""List of unique user names."""
|
|
1552
|
+
return self.get_field_values("fmu.case.user.id.keyword")
|
|
1553
|
+
|
|
1554
|
+
@property
|
|
1555
|
+
async def users_async(self) -> List[str]:
|
|
1556
|
+
"""List of unique user names."""
|
|
1557
|
+
return await self.get_field_values_async("fmu.case.user.id.keyword")
|
|
1558
|
+
|
|
1559
|
+
@property
|
|
1560
|
+
def statuses(self) -> List[str]:
|
|
1561
|
+
"""List of unique case statuses."""
|
|
1562
|
+
return self.get_field_values("_sumo.status.keyword")
|
|
1563
|
+
|
|
1564
|
+
@property
|
|
1565
|
+
async def statuses_async(self) -> List[str]:
|
|
1566
|
+
"""List of unique case statuses."""
|
|
1567
|
+
return await self.get_field_values_async("_sumo.status.keyword")
|
|
1568
|
+
|
|
1569
|
+
@property
|
|
1570
|
+
def columns(self) -> List[str]:
|
|
1571
|
+
"""List of unique column names."""
|
|
1572
|
+
return self.get_field_values("data.spec.columns.keyword")
|
|
1573
|
+
|
|
1574
|
+
@property
|
|
1575
|
+
async def columns_async(self) -> List[str]:
|
|
1576
|
+
"""List of unique column names."""
|
|
1577
|
+
return await self.get_field_values_async("data.spec.columns.keyword")
|
|
1578
|
+
|
|
1579
|
+
@property
|
|
1580
|
+
def contents(self) -> List[str]:
|
|
1581
|
+
"""List of unique contents."""
|
|
1582
|
+
return self.get_field_values("data.content.keyword")
|
|
1583
|
+
|
|
1584
|
+
@property
|
|
1585
|
+
async def contents_async(self) -> List[str]:
|
|
1586
|
+
"""List of unique contents."""
|
|
1587
|
+
return await self.get_field_values_async("data.content.keyword")
|
|
1588
|
+
|
|
1589
|
+
@property
|
|
1590
|
+
def vertical_domains(self) -> List[str]:
|
|
1591
|
+
"""List of unique object vertical domains."""
|
|
1592
|
+
return self.get_field_values("data.vertical_domain")
|
|
1593
|
+
|
|
1594
|
+
@property
|
|
1595
|
+
async def vertical_domains_async(self) -> List[str]:
|
|
1596
|
+
"""List of unique object vertical domains."""
|
|
1597
|
+
return await self.get_field_values_async("data.vertical_domain")
|
|
1598
|
+
|
|
1599
|
+
@property
|
|
1600
|
+
def stages(self) -> List[str]:
|
|
1601
|
+
"""List of unique stages."""
|
|
1602
|
+
return self.get_field_values("fmu.context.stage.keyword")
|
|
1603
|
+
|
|
1604
|
+
@property
|
|
1605
|
+
async def stages_async(self) -> List[str]:
|
|
1606
|
+
"""List of unique stages."""
|
|
1607
|
+
return await self.get_field_values_async("fmu.context.stage.keyword")
|
|
1608
|
+
|
|
1609
|
+
@property
|
|
1610
|
+
def aggregations(self) -> List[str]:
|
|
1611
|
+
"""List of unique object aggregation operations."""
|
|
1612
|
+
return self.get_field_values("fmu.aggregation.operation.keyword")
|
|
1613
|
+
|
|
1614
|
+
@property
|
|
1615
|
+
async def aggregations_async(self) -> List[str]:
|
|
1616
|
+
"""List of unique object aggregation operations."""
|
|
1617
|
+
return await self.get_field_values_async(
|
|
1618
|
+
"fmu.aggregation.operation.keyword"
|
|
1619
|
+
)
|
|
1620
|
+
|
|
1621
|
+
@property
|
|
1622
|
+
def dataformats(self) -> List[str]:
|
|
1623
|
+
"""List of unique data.format values."""
|
|
1624
|
+
return self.get_field_values("data.format.keyword")
|
|
1625
|
+
|
|
1626
|
+
@property
|
|
1627
|
+
async def dataformats_async(self) -> List[str]:
|
|
1628
|
+
"""List of unique data.format values."""
|
|
1629
|
+
return await self.get_field_values_async("data.format.keyword")
|
|
1630
|
+
|
|
1631
|
+
@property
|
|
1632
|
+
def tagnames(self) -> List[str]:
|
|
1633
|
+
"""List of unique object tagnames."""
|
|
1634
|
+
return self.get_field_values("data.tagname.keyword")
|
|
1635
|
+
|
|
1636
|
+
@property
|
|
1637
|
+
async def tagnames_async(self) -> List[str]:
|
|
1638
|
+
"""List of unique object tagnames."""
|
|
1639
|
+
return await self.get_field_values_async("data.tagname.keyword")
|
|
1640
|
+
|
|
1641
|
+
@property
|
|
1642
|
+
def names(self) -> List[str]:
|
|
1643
|
+
"""List of unique object names."""
|
|
1644
|
+
return self.get_field_values("data.name.keyword")
|
|
1645
|
+
|
|
1646
|
+
@property
|
|
1647
|
+
async def names_async(self) -> List[str]:
|
|
1648
|
+
"""List of unique object names."""
|
|
1649
|
+
return await self.get_field_values_async("data.name.keyword")
|
|
1650
|
+
|
|
1550
1651
|
|
|
1551
1652
|
def _gen_filter_doc(spec):
|
|
1552
1653
|
fmap = {
|
|
@@ -1635,35 +1736,3 @@ Examples:
|
|
|
1635
1736
|
|
|
1636
1737
|
|
|
1637
1738
|
SearchContext.filter.__doc__ = _gen_filter_doc(_filterspec)
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
def _build_bucket_fn(property, docstring):
|
|
1641
|
-
def fn(self):
|
|
1642
|
-
return self.get_field_values(property)
|
|
1643
|
-
|
|
1644
|
-
return fn
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
def _build_bucket_fn_async(property, docstring):
|
|
1648
|
-
async def fn(self):
|
|
1649
|
-
return await self.get_field_values_async(property)
|
|
1650
|
-
|
|
1651
|
-
return fn
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
def _inject_bucket_fns(spec):
|
|
1655
|
-
for name, defn in spec.items():
|
|
1656
|
-
prop, docstring = defn
|
|
1657
|
-
fn = _build_bucket_fn(prop, docstring)
|
|
1658
|
-
setattr(SearchContext, name, property(fn, None, None, docstring))
|
|
1659
|
-
afn = _build_bucket_fn_async(prop, docstring)
|
|
1660
|
-
setattr(
|
|
1661
|
-
SearchContext,
|
|
1662
|
-
name + "_async",
|
|
1663
|
-
property(afn, None, None, docstring),
|
|
1664
|
-
)
|
|
1665
|
-
pass
|
|
1666
|
-
return
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
_inject_bucket_fns(_bucket_spec)
|
|
@@ -7,14 +7,6 @@ from sumo.wrapper import SumoClient
|
|
|
7
7
|
from fmu.sumo.explorer.objects._document import Document
|
|
8
8
|
from fmu.sumo.explorer.objects._search_context import SearchContext
|
|
9
9
|
|
|
10
|
-
_prop_desc = [
|
|
11
|
-
("name", "fmu.case.name", "Case name"),
|
|
12
|
-
("status", "_sumo.status", "Case status"),
|
|
13
|
-
("user", "fmu.case.user.id", "Name of user who uploaded case."),
|
|
14
|
-
("asset", "access.asset.name", "Case asset"),
|
|
15
|
-
("field", "masterdata.smda.field[0].identifier", "Case field"),
|
|
16
|
-
]
|
|
17
|
-
|
|
18
10
|
|
|
19
11
|
def _make_overview_query(id):
|
|
20
12
|
return {
|
|
@@ -96,5 +88,27 @@ class Case(Document, SearchContext):
|
|
|
96
88
|
|
|
97
89
|
return self._overview
|
|
98
90
|
|
|
91
|
+
@property
|
|
92
|
+
def field(self) -> str:
|
|
93
|
+
"""Case field"""
|
|
94
|
+
return self.get_property("masterdata.smda.field[0].identifier")
|
|
99
95
|
|
|
100
|
-
|
|
96
|
+
@property
|
|
97
|
+
def asset(self) -> str:
|
|
98
|
+
"""Case asset"""
|
|
99
|
+
return self.get_property("access.asset.name")
|
|
100
|
+
|
|
101
|
+
@property
|
|
102
|
+
def user(self) -> str:
|
|
103
|
+
"""Name of user who uploaded case."""
|
|
104
|
+
return self.get_property("fmu.case.user.id")
|
|
105
|
+
|
|
106
|
+
@property
|
|
107
|
+
def status(self) -> str:
|
|
108
|
+
"""Case status"""
|
|
109
|
+
return self.get_property("_sumo.status")
|
|
110
|
+
|
|
111
|
+
@property
|
|
112
|
+
def name(self) -> str:
|
|
113
|
+
"""Case name"""
|
|
114
|
+
return self.get_property("fmu.case.name")
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"""Module for (pseudo) iteration class."""
|
|
2
|
+
|
|
3
|
+
from typing import Dict
|
|
4
|
+
|
|
5
|
+
from sumo.wrapper import SumoClient
|
|
6
|
+
|
|
7
|
+
from fmu.sumo.explorer.objects._document import Document
|
|
8
|
+
from fmu.sumo.explorer.objects._search_context import SearchContext
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Iteration(Document, SearchContext):
|
|
12
|
+
"""Class for representing an iteration in Sumo."""
|
|
13
|
+
|
|
14
|
+
def __init__(self, sumo: SumoClient, metadata: Dict):
|
|
15
|
+
Document.__init__(self, metadata)
|
|
16
|
+
SearchContext.__init__(
|
|
17
|
+
self,
|
|
18
|
+
sumo,
|
|
19
|
+
must=[{"term": {"fmu.iteration.uuid.keyword": self.uuid}}],
|
|
20
|
+
)
|
|
21
|
+
pass
|
|
22
|
+
|
|
23
|
+
@property
|
|
24
|
+
def field(self) -> str:
|
|
25
|
+
"""Case field"""
|
|
26
|
+
return self.get_property("masterdata.smda.field[0].identifier")
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def asset(self) -> str:
|
|
30
|
+
"""Case asset"""
|
|
31
|
+
return self.get_property("access.asset.name")
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def user(self) -> str:
|
|
35
|
+
"""Name of user who uploaded iteration."""
|
|
36
|
+
return self.get_property("fmu.case.user.id")
|
|
37
|
+
|
|
38
|
+
@property
|
|
39
|
+
def caseuuid(self) -> str:
|
|
40
|
+
"""FMU case uuid"""
|
|
41
|
+
return self.get_property("fmu.case.uuid")
|
|
42
|
+
|
|
43
|
+
@property
|
|
44
|
+
def casename(self) -> str:
|
|
45
|
+
"""FMU case name"""
|
|
46
|
+
return self.get_property("fmu.case.name")
|
|
47
|
+
|
|
48
|
+
@property
|
|
49
|
+
def name(self) -> str:
|
|
50
|
+
"""FMU iteration name"""
|
|
51
|
+
return self.get_property("fmu.iteration.name")
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""Module for (pseudo) realization class."""
|
|
2
|
+
|
|
3
|
+
from typing import Dict
|
|
4
|
+
|
|
5
|
+
from sumo.wrapper import SumoClient
|
|
6
|
+
|
|
7
|
+
from fmu.sumo.explorer.objects._document import Document
|
|
8
|
+
from fmu.sumo.explorer.objects._search_context import SearchContext
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Realization(Document, SearchContext):
|
|
12
|
+
"""Class for representing a realization in Sumo."""
|
|
13
|
+
|
|
14
|
+
def __init__(self, sumo: SumoClient, metadata: Dict):
|
|
15
|
+
Document.__init__(self, metadata)
|
|
16
|
+
SearchContext.__init__(
|
|
17
|
+
self,
|
|
18
|
+
sumo,
|
|
19
|
+
must=[{"term": {"fmu.realization.uuid.keyword": self.uuid}}],
|
|
20
|
+
)
|
|
21
|
+
pass
|
|
22
|
+
|
|
23
|
+
@property
|
|
24
|
+
def field(self) -> str:
|
|
25
|
+
"""Case field"""
|
|
26
|
+
return self.get_property("masterdata.smda.field[0].identifier")
|
|
27
|
+
|
|
28
|
+
@property
|
|
29
|
+
def asset(self) -> str:
|
|
30
|
+
"""Case asset"""
|
|
31
|
+
return self.get_property("access.asset.name")
|
|
32
|
+
|
|
33
|
+
@property
|
|
34
|
+
def user(self) -> str:
|
|
35
|
+
"""Name of user who uploaded iteration."""
|
|
36
|
+
return self.get_property("fmu.case.user.id")
|
|
37
|
+
|
|
38
|
+
@property
|
|
39
|
+
def caseuuid(self) -> str:
|
|
40
|
+
"""FMU case uuid"""
|
|
41
|
+
return self.get_property("fmu.case.uuid")
|
|
42
|
+
|
|
43
|
+
@property
|
|
44
|
+
def casename(self) -> str:
|
|
45
|
+
"""FMU case name"""
|
|
46
|
+
return self.get_property("fmu.case.name")
|
|
47
|
+
|
|
48
|
+
@property
|
|
49
|
+
def iterationuuid(self) -> str:
|
|
50
|
+
"""FMU iteration uuid"""
|
|
51
|
+
return self.get_property("fmu.iteration.uuid")
|
|
52
|
+
|
|
53
|
+
@property
|
|
54
|
+
def iterationname(self) -> str:
|
|
55
|
+
"""FMU iteration name"""
|
|
56
|
+
return self.get_property("fmu.iteration.name")
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
"""module containing class for child object"""
|
|
2
|
-
|
|
3
|
-
from io import BytesIO
|
|
4
|
-
from typing import Dict
|
|
5
|
-
|
|
6
|
-
from sumo.wrapper import SumoClient
|
|
7
|
-
|
|
8
|
-
from fmu.sumo.explorer.objects._document import Document
|
|
9
|
-
|
|
10
|
-
_prop_desc = [
|
|
11
|
-
("name", "data.name", "Object name"),
|
|
12
|
-
("dataname", "data.name", "Object name"),
|
|
13
|
-
("classname", "class.name", "Object class name"),
|
|
14
|
-
("casename", "fmu.case.name", "Object case name"),
|
|
15
|
-
("caseuuid", "fmu.case.uuid", "Object case uuid"),
|
|
16
|
-
("content", "data.content", "Content"),
|
|
17
|
-
("tagname", "data.tagname", "Object tagname"),
|
|
18
|
-
("columns", "data.spec.columns", "Object table columns"),
|
|
19
|
-
("stratigraphic", "data.stratigraphic", "Object stratigraphic"),
|
|
20
|
-
("vertical_domain", "data.vertical_domain", "Object vertical domain"),
|
|
21
|
-
("context", "fmu.context.stage", "Object context"),
|
|
22
|
-
("iteration", "fmu.iteration.name", "Object iteration"),
|
|
23
|
-
("realization", "fmu.realization.id", "Object realization"),
|
|
24
|
-
(
|
|
25
|
-
"aggregation",
|
|
26
|
-
"fmu.aggregation.operation",
|
|
27
|
-
"Object aggregation operation",
|
|
28
|
-
),
|
|
29
|
-
("stage", "fmu.context.stage", "Object stage"),
|
|
30
|
-
("format", "data.format", "Object file format"),
|
|
31
|
-
("dataformat", "data.format", "Object file format"),
|
|
32
|
-
("relative_path", "file.relative_path", "Object relative file path"),
|
|
33
|
-
("bbox", "data.bbox", "Object boundary-box data"),
|
|
34
|
-
("spec", "data.spec", "Object spec data"),
|
|
35
|
-
]
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
class Child(Document):
|
|
39
|
-
"""Class representing a child object in Sumo"""
|
|
40
|
-
|
|
41
|
-
def __init__(self, sumo: SumoClient, metadata: Dict, blob=None) -> None:
|
|
42
|
-
"""
|
|
43
|
-
Args:
|
|
44
|
-
sumo (SumoClient): connection to Sumo
|
|
45
|
-
metadata: (dict): child object metadata
|
|
46
|
-
"""
|
|
47
|
-
super().__init__(metadata)
|
|
48
|
-
self._sumo = sumo
|
|
49
|
-
self._blob = blob
|
|
50
|
-
|
|
51
|
-
@property
|
|
52
|
-
def blob(self) -> BytesIO:
|
|
53
|
-
"""Object blob"""
|
|
54
|
-
if self._blob is None:
|
|
55
|
-
res = self._sumo.get(f"/objects('{self.uuid}')/blob")
|
|
56
|
-
self._blob = BytesIO(res.content)
|
|
57
|
-
|
|
58
|
-
return self._blob
|
|
59
|
-
|
|
60
|
-
@property
|
|
61
|
-
async def blob_async(self) -> BytesIO:
|
|
62
|
-
"""Object blob"""
|
|
63
|
-
if self._blob is None:
|
|
64
|
-
res = await self._sumo.get_async(f"/objects('{self.uuid}')/blob")
|
|
65
|
-
self._blob = BytesIO(res.content)
|
|
66
|
-
|
|
67
|
-
return self._blob
|
|
68
|
-
|
|
69
|
-
@property
|
|
70
|
-
def timestamp(self) -> str:
|
|
71
|
-
"""Object timestmap data"""
|
|
72
|
-
t0 = self._get_property(["data", "time", "t0", "value"])
|
|
73
|
-
t1 = self._get_property(["data", "time", "t1", "value"])
|
|
74
|
-
|
|
75
|
-
if t0 is not None and t1 is None:
|
|
76
|
-
return t0
|
|
77
|
-
|
|
78
|
-
return None
|
|
79
|
-
|
|
80
|
-
@property
|
|
81
|
-
def interval(self) -> str:
|
|
82
|
-
"""Object interval data"""
|
|
83
|
-
t0 = self._get_property(["data", "time", "t0", "value"])
|
|
84
|
-
t1 = self._get_property(["data", "time", "t1", "value"])
|
|
85
|
-
|
|
86
|
-
if t0 is not None and t1 is not None:
|
|
87
|
-
return (t0, t1)
|
|
88
|
-
|
|
89
|
-
return None
|
|
90
|
-
|
|
91
|
-
@property
|
|
92
|
-
def template_path(self):
|
|
93
|
-
return "/".join(
|
|
94
|
-
["{realization}", "{iteration}"]
|
|
95
|
-
+ self.relative_path.split("/")[2:]
|
|
96
|
-
)
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
Child.map_properties(Child, _prop_desc)
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"""Module for (pseudo) iteration class."""
|
|
2
|
-
|
|
3
|
-
from typing import Dict
|
|
4
|
-
|
|
5
|
-
from sumo.wrapper import SumoClient
|
|
6
|
-
|
|
7
|
-
from fmu.sumo.explorer.objects._document import Document
|
|
8
|
-
from fmu.sumo.explorer.objects._search_context import SearchContext
|
|
9
|
-
|
|
10
|
-
_prop_desc = [
|
|
11
|
-
("name", "fmu.iteration.name", "FMU iteration name"),
|
|
12
|
-
("casename", "fmu.case.name", "FMU case name"),
|
|
13
|
-
("caseuuid", "fmu.case.uuid", "FMU case uuid"),
|
|
14
|
-
("user", "fmu.case.user.id", "Name of user who uploaded iteration."),
|
|
15
|
-
("asset", "access.asset.name", "Case asset"),
|
|
16
|
-
("field", "masterdata.smda.field[0].identifier", "Case field"),
|
|
17
|
-
]
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
class Iteration(Document, SearchContext):
|
|
21
|
-
"""Class for representing an iteration in Sumo."""
|
|
22
|
-
|
|
23
|
-
def __init__(self, sumo: SumoClient, metadata: Dict):
|
|
24
|
-
Document.__init__(self, metadata)
|
|
25
|
-
SearchContext.__init__(
|
|
26
|
-
self,
|
|
27
|
-
sumo,
|
|
28
|
-
must=[{"term": {"fmu.iteration.uuid.keyword": self.uuid}}],
|
|
29
|
-
)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
Iteration.map_properties(Iteration, _prop_desc)
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"""Module for (pseudo) realization class."""
|
|
2
|
-
|
|
3
|
-
from typing import Dict
|
|
4
|
-
|
|
5
|
-
from sumo.wrapper import SumoClient
|
|
6
|
-
|
|
7
|
-
from fmu.sumo.explorer.objects._document import Document
|
|
8
|
-
from fmu.sumo.explorer.objects._search_context import SearchContext
|
|
9
|
-
|
|
10
|
-
_prop_desc = [
|
|
11
|
-
("iterationname", "fmu.iteration.name", "FMU iteration name"),
|
|
12
|
-
("iterationuuid", "fmu.iteration.uuid", "FMU iteration uuid"),
|
|
13
|
-
("casename", "fmu.case.name", "FMU case name"),
|
|
14
|
-
("caseuuid", "fmu.case.uuid", "FMU case uuid"),
|
|
15
|
-
("user", "fmu.case.user.id", "Name of user who uploaded iteration."),
|
|
16
|
-
("asset", "access.asset.name", "Case asset"),
|
|
17
|
-
("field", "masterdata.smda.field[0].identifier", "Case field"),
|
|
18
|
-
]
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
class Realization(Document, SearchContext):
|
|
22
|
-
"""Class for representing a realization in Sumo."""
|
|
23
|
-
|
|
24
|
-
def __init__(self, sumo: SumoClient, metadata: Dict):
|
|
25
|
-
Document.__init__(self, metadata)
|
|
26
|
-
SearchContext.__init__(
|
|
27
|
-
self,
|
|
28
|
-
sumo,
|
|
29
|
-
must=[{"term": {"fmu.realization.uuid.keyword": self.uuid}}],
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
Realization.map_properties(Realization, _prop_desc)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/workflows/run_tests_access_drogon_affiliate_login.yaml
RENAMED
|
File without changes
|
{fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/workflows/run_tests_access_drogon_manage_login.yaml
RENAMED
|
File without changes
|
{fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/workflows/run_tests_access_drogon_manage_sharedkey.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/workflows/run_tests_access_drogon_read_sharedkey.yaml
RENAMED
|
File without changes
|
{fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/workflows/run_tests_access_drogon_write_login.yaml
RENAMED
|
File without changes
|
{fmu_sumo-2.3.5 → fmu_sumo-2.3.7}/.github/workflows/run_tests_access_drogon_write_sharedkey.yaml
RENAMED
|
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
|