cognite-neat 0.75.6__py3-none-any.whl → 0.75.8__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.
Potentially problematic release.
This version of cognite-neat might be problematic. Click here for more details.
- cognite/neat/_version.py +1 -1
- cognite/neat/graph/extractors/_mock_graph_generator.py +6 -5
- cognite/neat/rules/analysis/_base.py +1 -1
- cognite/neat/rules/analysis/_information_rules.py +4 -4
- cognite/neat/rules/exporters/_models.py +6 -1
- cognite/neat/rules/exporters/_rules2dms.py +67 -14
- cognite/neat/rules/exporters/_rules2ontology.py +20 -17
- cognite/neat/rules/exporters/_validation.py +2 -2
- cognite/neat/rules/importers/_dms2rules.py +14 -15
- cognite/neat/rules/importers/_dtdl2rules/dtdl_converter.py +21 -19
- cognite/neat/rules/importers/_dtdl2rules/spec.py +1 -1
- cognite/neat/rules/importers/_owl2rules/_owl2rules.py +2 -2
- cognite/neat/rules/importers/_spreadsheet2rules.py +6 -1
- cognite/neat/rules/importers/_yaml2rules.py +8 -2
- cognite/neat/rules/issues/dms.py +1 -1
- cognite/neat/rules/models/data_types.py +282 -0
- cognite/neat/rules/models/entities.py +442 -0
- cognite/neat/rules/models/rdfpath.py +111 -11
- cognite/neat/rules/models/rules/_base.py +2 -2
- cognite/neat/rules/models/rules/_dms_architect_rules.py +117 -188
- cognite/neat/rules/models/rules/_dms_rules_write.py +355 -0
- cognite/neat/rules/models/rules/_dms_schema.py +3 -3
- cognite/neat/rules/models/rules/_domain_rules.py +6 -3
- cognite/neat/rules/models/rules/_information_rules.py +68 -61
- cognite/neat/rules/models/rules/_types/__init__.py +0 -47
- cognite/neat/rules/models/rules/_types/_base.py +1 -309
- cognite/neat/rules/models/rules/_types/_field.py +0 -225
- cognite/neat/utils/cdf_loaders/_data_modeling.py +4 -2
- cognite/neat/workflows/steps/lib/rules_exporter.py +97 -0
- cognite/neat/workflows/steps/lib/rules_importer.py +3 -3
- {cognite_neat-0.75.6.dist-info → cognite_neat-0.75.8.dist-info}/METADATA +1 -1
- {cognite_neat-0.75.6.dist-info → cognite_neat-0.75.8.dist-info}/RECORD +35 -34
- cognite/neat/rules/models/_entity.py +0 -142
- cognite/neat/rules/models/rules/_types/_value.py +0 -159
- {cognite_neat-0.75.6.dist-info → cognite_neat-0.75.8.dist-info}/LICENSE +0 -0
- {cognite_neat-0.75.6.dist-info → cognite_neat-0.75.8.dist-info}/WHEEL +0 -0
- {cognite_neat-0.75.6.dist-info → cognite_neat-0.75.8.dist-info}/entry_points.txt +0 -0
|
@@ -19,23 +19,11 @@ from pydantic_core import PydanticCustomError
|
|
|
19
19
|
from cognite.neat.rules import exceptions
|
|
20
20
|
|
|
21
21
|
from ._base import (
|
|
22
|
-
CLASS_ID_COMPLIANCE_REGEX,
|
|
23
|
-
ENTITY_ID_REGEX_COMPILED,
|
|
24
22
|
MORE_THAN_ONE_NONE_ALPHANUMERIC_REGEX,
|
|
25
23
|
PREFIX_COMPLIANCE_REGEX,
|
|
26
24
|
PROPERTY_ID_COMPLIANCE_REGEX,
|
|
27
25
|
VERSION_COMPLIANCE_REGEX,
|
|
28
|
-
VERSIONED_ENTITY_REGEX_COMPILED,
|
|
29
|
-
ClassEntity,
|
|
30
|
-
ContainerEntity,
|
|
31
|
-
ParentClassEntity,
|
|
32
|
-
ReferenceEntity,
|
|
33
|
-
Undefined,
|
|
34
|
-
Unknown,
|
|
35
|
-
ViewEntity,
|
|
36
|
-
ViewPropEntity,
|
|
37
26
|
)
|
|
38
|
-
from ._value import DMS_VALUE_TYPE_MAPPINGS, XSD_VALUE_TYPE_MAPPINGS, DMSValueType, XSDValueType
|
|
39
27
|
|
|
40
28
|
|
|
41
29
|
def _custom_error(exc_factory: Callable[[str | None, Exception], Any]) -> Any:
|
|
@@ -52,39 +40,6 @@ def _raise(exception: PydanticCustomError):
|
|
|
52
40
|
raise exception
|
|
53
41
|
|
|
54
42
|
|
|
55
|
-
def _split_parent(value: str | list[ParentClassEntity]) -> list[ParentClassEntity] | None:
|
|
56
|
-
if isinstance(value, list) and all(isinstance(x, ParentClassEntity) for x in value):
|
|
57
|
-
return value
|
|
58
|
-
|
|
59
|
-
if not (isinstance(value, str) and value):
|
|
60
|
-
return None
|
|
61
|
-
|
|
62
|
-
parents = []
|
|
63
|
-
for v in value.replace(", ", ",").split(","):
|
|
64
|
-
if ENTITY_ID_REGEX_COMPILED.match(v) or VERSIONED_ENTITY_REGEX_COMPILED.match(v):
|
|
65
|
-
parents.append(ParentClassEntity.from_string(entity_string=v))
|
|
66
|
-
else:
|
|
67
|
-
parents.append(ParentClassEntity(prefix=Undefined, suffix=v, name=v))
|
|
68
|
-
|
|
69
|
-
return parents
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
def _check_parent(value: list[ParentClassEntity]) -> list[ParentClassEntity]:
|
|
73
|
-
if not value:
|
|
74
|
-
return value
|
|
75
|
-
if illegal_ids := [v for v in value if re.search(MORE_THAN_ONE_NONE_ALPHANUMERIC_REGEX, v.suffix)]:
|
|
76
|
-
raise exceptions.MoreThanOneNonAlphanumericCharacter(
|
|
77
|
-
"parent", ", ".join(cast(list[str], illegal_ids))
|
|
78
|
-
).to_pydantic_custom_error()
|
|
79
|
-
if illegal_ids := [v for v in value if not re.match(CLASS_ID_COMPLIANCE_REGEX, v.suffix)]:
|
|
80
|
-
for v in illegal_ids:
|
|
81
|
-
print(v.id)
|
|
82
|
-
raise exceptions.ClassSheetParentClassIDRegexViolation(
|
|
83
|
-
cast(list[str], illegal_ids), CLASS_ID_COMPLIANCE_REGEX
|
|
84
|
-
).to_pydantic_custom_error()
|
|
85
|
-
return value
|
|
86
|
-
|
|
87
|
-
|
|
88
43
|
StrOrListType = Annotated[
|
|
89
44
|
str | list[str],
|
|
90
45
|
BeforeValidator(lambda value: value.replace(", ", ",").split(",") if isinstance(value, str) and value else value),
|
|
@@ -141,43 +96,6 @@ VersionType = Annotated[
|
|
|
141
96
|
]
|
|
142
97
|
|
|
143
98
|
|
|
144
|
-
ParentClassType = Annotated[
|
|
145
|
-
list[ParentClassEntity] | None,
|
|
146
|
-
BeforeValidator(_split_parent),
|
|
147
|
-
AfterValidator(_check_parent),
|
|
148
|
-
PlainSerializer(
|
|
149
|
-
lambda v: ",".join([entry.versioned_id for entry in v]) if v else None,
|
|
150
|
-
return_type=str,
|
|
151
|
-
when_used="unless-none",
|
|
152
|
-
),
|
|
153
|
-
]
|
|
154
|
-
|
|
155
|
-
ClassType = Annotated[
|
|
156
|
-
ClassEntity,
|
|
157
|
-
BeforeValidator(lambda value: (ClassType.from_raw(value) if isinstance(value, str) else value)),
|
|
158
|
-
AfterValidator(
|
|
159
|
-
lambda value: (
|
|
160
|
-
_raise(exceptions.MoreThanOneNonAlphanumericCharacter("class_", value.suffix).to_pydantic_custom_error())
|
|
161
|
-
if re.search(MORE_THAN_ONE_NONE_ALPHANUMERIC_REGEX, value.suffix)
|
|
162
|
-
else (
|
|
163
|
-
value
|
|
164
|
-
if re.match(CLASS_ID_COMPLIANCE_REGEX, value.suffix)
|
|
165
|
-
else _raise(
|
|
166
|
-
exceptions.ClassSheetClassIDRegexViolation(
|
|
167
|
-
value.suffix, CLASS_ID_COMPLIANCE_REGEX
|
|
168
|
-
).to_pydantic_custom_error()
|
|
169
|
-
)
|
|
170
|
-
)
|
|
171
|
-
)
|
|
172
|
-
),
|
|
173
|
-
PlainSerializer(
|
|
174
|
-
lambda v: v.versioned_id,
|
|
175
|
-
return_type=str,
|
|
176
|
-
when_used="unless-none",
|
|
177
|
-
),
|
|
178
|
-
]
|
|
179
|
-
|
|
180
|
-
|
|
181
99
|
PropertyType = Annotated[
|
|
182
100
|
str,
|
|
183
101
|
AfterValidator(
|
|
@@ -194,146 +112,3 @@ PropertyType = Annotated[
|
|
|
194
112
|
)
|
|
195
113
|
),
|
|
196
114
|
]
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
def _reference_entity_type_before_validator(value: Any | None = None) -> Any:
|
|
200
|
-
if not value:
|
|
201
|
-
return None
|
|
202
|
-
elif isinstance(value, rdflib.URIRef | ReferenceEntity):
|
|
203
|
-
return value
|
|
204
|
-
elif ReferenceEntity.from_raw(value).prefix == Undefined:
|
|
205
|
-
# case1: then this must be a URIRef!
|
|
206
|
-
return rdflib.URIRef(str(TypeAdapter(HttpUrl).validate_python(value)))
|
|
207
|
-
else:
|
|
208
|
-
# case2: this is a ReferenceEntity
|
|
209
|
-
return ReferenceEntity.from_raw(value)
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
ReferenceType = Annotated[
|
|
213
|
-
ReferenceEntity | rdflib.URIRef | None,
|
|
214
|
-
BeforeValidator(_reference_entity_type_before_validator),
|
|
215
|
-
PlainSerializer(
|
|
216
|
-
lambda v: v.versioned_id if isinstance(v, ReferenceEntity) else str(v),
|
|
217
|
-
return_type=str,
|
|
218
|
-
when_used="unless-none",
|
|
219
|
-
),
|
|
220
|
-
]
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
ContainerType = Annotated[
|
|
224
|
-
ContainerEntity,
|
|
225
|
-
BeforeValidator(ContainerEntity.from_raw),
|
|
226
|
-
PlainSerializer(
|
|
227
|
-
lambda v: v.versioned_id,
|
|
228
|
-
return_type=str,
|
|
229
|
-
when_used="unless-none",
|
|
230
|
-
),
|
|
231
|
-
]
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
ViewType = Annotated[
|
|
235
|
-
ViewEntity,
|
|
236
|
-
BeforeValidator(ViewEntity.from_raw),
|
|
237
|
-
PlainSerializer(
|
|
238
|
-
lambda v: v.versioned_id,
|
|
239
|
-
return_type=str,
|
|
240
|
-
when_used="unless-none",
|
|
241
|
-
),
|
|
242
|
-
]
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
def _semantic_value_type_before_validator(value: Any) -> Any:
|
|
246
|
-
if isinstance(value, XSDValueType | ClassEntity) or not isinstance(value, str):
|
|
247
|
-
return value
|
|
248
|
-
elif value in XSD_VALUE_TYPE_MAPPINGS:
|
|
249
|
-
return XSD_VALUE_TYPE_MAPPINGS[value]
|
|
250
|
-
elif value.lower() in XSD_VALUE_TYPE_MAPPINGS:
|
|
251
|
-
return XSD_VALUE_TYPE_MAPPINGS[value.lower()]
|
|
252
|
-
elif value == "#N/A":
|
|
253
|
-
return ClassEntity(prefix=Undefined, suffix=Unknown)
|
|
254
|
-
else:
|
|
255
|
-
return ClassEntity.from_raw(value)
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
def _semantic_value_type_serializer(value: Any) -> str:
|
|
259
|
-
if isinstance(value, ClassEntity):
|
|
260
|
-
return value.versioned_id
|
|
261
|
-
elif isinstance(value, XSDValueType):
|
|
262
|
-
return value.suffix
|
|
263
|
-
else:
|
|
264
|
-
return str(value)
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
def _dms_value_type_before_validator(value: Any) -> Any:
|
|
268
|
-
if isinstance(value, DMSValueType | ViewPropEntity) or not isinstance(value, str):
|
|
269
|
-
return value
|
|
270
|
-
elif value in DMS_VALUE_TYPE_MAPPINGS:
|
|
271
|
-
return DMS_VALUE_TYPE_MAPPINGS[value]
|
|
272
|
-
elif value.lower() in DMS_VALUE_TYPE_MAPPINGS:
|
|
273
|
-
return DMS_VALUE_TYPE_MAPPINGS[value.lower()]
|
|
274
|
-
else:
|
|
275
|
-
return ViewPropEntity.from_raw(value)
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
SemanticValueType = Annotated[
|
|
279
|
-
XSDValueType | ClassEntity,
|
|
280
|
-
BeforeValidator(_semantic_value_type_before_validator),
|
|
281
|
-
PlainSerializer(
|
|
282
|
-
_semantic_value_type_serializer,
|
|
283
|
-
return_type=str,
|
|
284
|
-
when_used="unless-none",
|
|
285
|
-
),
|
|
286
|
-
]
|
|
287
|
-
|
|
288
|
-
CdfValueType = Annotated[
|
|
289
|
-
DMSValueType | ViewPropEntity,
|
|
290
|
-
BeforeValidator(_dms_value_type_before_validator),
|
|
291
|
-
PlainSerializer(
|
|
292
|
-
lambda v: v.versioned_id if isinstance(v, ViewPropEntity | ViewEntity) else v.dms()._type,
|
|
293
|
-
return_type=str,
|
|
294
|
-
when_used="unless-none",
|
|
295
|
-
),
|
|
296
|
-
]
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
def _from_str_or_list_container(value: Any) -> list[ContainerEntity] | Any:
|
|
300
|
-
if not value:
|
|
301
|
-
return value
|
|
302
|
-
if isinstance(value, str):
|
|
303
|
-
return [ContainerEntity.from_raw(entry.strip()) for entry in value.split(",")]
|
|
304
|
-
elif isinstance(value, list):
|
|
305
|
-
return [ContainerEntity.from_raw(entry.strip()) if isinstance(entry, str) else entry for entry in value]
|
|
306
|
-
else:
|
|
307
|
-
return value
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
def _from_str_or_list_view(value: Any) -> list[ViewEntity] | Any:
|
|
311
|
-
if not value:
|
|
312
|
-
return value
|
|
313
|
-
if isinstance(value, str):
|
|
314
|
-
return [ViewEntity.from_raw(entry.strip()) for entry in value.split(",")]
|
|
315
|
-
elif isinstance(value, list):
|
|
316
|
-
return [ViewEntity.from_raw(entry.strip()) if isinstance(entry, str) else entry for entry in value]
|
|
317
|
-
else:
|
|
318
|
-
return value
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
ContainerListType = Annotated[
|
|
322
|
-
list[ContainerEntity],
|
|
323
|
-
BeforeValidator(_from_str_or_list_container),
|
|
324
|
-
PlainSerializer(
|
|
325
|
-
lambda v: ",".join([entry.versioned_id for entry in v]),
|
|
326
|
-
return_type=str,
|
|
327
|
-
when_used="unless-none",
|
|
328
|
-
),
|
|
329
|
-
]
|
|
330
|
-
|
|
331
|
-
ViewListType = Annotated[
|
|
332
|
-
list[ViewEntity],
|
|
333
|
-
BeforeValidator(_from_str_or_list_view),
|
|
334
|
-
PlainSerializer(
|
|
335
|
-
lambda v: ",".join([entry.versioned_id for entry in v]),
|
|
336
|
-
return_type=str,
|
|
337
|
-
when_used="unless-none",
|
|
338
|
-
),
|
|
339
|
-
]
|
|
@@ -87,8 +87,10 @@ class SpaceLoader(DataModelingLoader[str, SpaceApply, Space, SpaceApplyList, Spa
|
|
|
87
87
|
def update(self, items: Sequence[SpaceApply]) -> SpaceList:
|
|
88
88
|
return self.create(items)
|
|
89
89
|
|
|
90
|
-
def delete(self, ids: SequenceNotStr[str]) -> list[str]:
|
|
91
|
-
|
|
90
|
+
def delete(self, ids: SequenceNotStr[str] | Sequence[Space | SpaceApply]) -> list[str]:
|
|
91
|
+
if all(isinstance(item, Space) for item in ids) or all(isinstance(item, SpaceApply) for item in ids):
|
|
92
|
+
ids = [cast(Space | SpaceApply, item).space for item in ids]
|
|
93
|
+
return self.client.data_modeling.spaces.delete(cast(SequenceNotStr[str], ids))
|
|
92
94
|
|
|
93
95
|
|
|
94
96
|
class ViewLoader(DataModelingLoader[ViewId, ViewApply, View, ViewApplyList, ViewList]):
|
|
@@ -17,12 +17,109 @@ __all__ = [
|
|
|
17
17
|
"RulesToSHACL",
|
|
18
18
|
"RulesToSemanticDataModel",
|
|
19
19
|
"RulesToCDFTransformations",
|
|
20
|
+
"DeleteDataModelFromCDF",
|
|
20
21
|
]
|
|
21
22
|
|
|
22
23
|
|
|
23
24
|
CATEGORY = __name__.split(".")[-1].replace("_", " ").title()
|
|
24
25
|
|
|
25
26
|
|
|
27
|
+
class DeleteDataModelFromCDF(Step):
|
|
28
|
+
"""
|
|
29
|
+
This step deletes data model and its components from CDF
|
|
30
|
+
"""
|
|
31
|
+
|
|
32
|
+
description = "This step deletes data model and its components from CDF."
|
|
33
|
+
version = "private-beta"
|
|
34
|
+
category = CATEGORY
|
|
35
|
+
|
|
36
|
+
configurables: ClassVar[list[Configurable]] = [
|
|
37
|
+
Configurable(
|
|
38
|
+
name="Dry run",
|
|
39
|
+
value="False",
|
|
40
|
+
label=("Whether to perform a dry run of the deleter. "),
|
|
41
|
+
options=["True", "False"],
|
|
42
|
+
),
|
|
43
|
+
Configurable(
|
|
44
|
+
name="Components",
|
|
45
|
+
type="multi_select",
|
|
46
|
+
value="",
|
|
47
|
+
label="Select which DMS schema component(s) to be deleted from CDF",
|
|
48
|
+
options=["spaces", "containers", "views", "data_models"],
|
|
49
|
+
),
|
|
50
|
+
Configurable(
|
|
51
|
+
name="Multi-space components deletion",
|
|
52
|
+
value="False",
|
|
53
|
+
label=(
|
|
54
|
+
"Whether to delete only components belonging to the data model space"
|
|
55
|
+
" (i.e. space define under Metadata sheet of Rules), "
|
|
56
|
+
"or also additionally delete components outside of the data model space."
|
|
57
|
+
),
|
|
58
|
+
options=["True", "False"],
|
|
59
|
+
),
|
|
60
|
+
]
|
|
61
|
+
|
|
62
|
+
def run(self, rules: MultiRuleData, cdf_client: CogniteClient) -> FlowMessage: # type: ignore[override]
|
|
63
|
+
if self.configs is None or self.data_store_path is None:
|
|
64
|
+
raise StepNotInitialized(type(self).__name__)
|
|
65
|
+
components_to_delete = {
|
|
66
|
+
cast(Literal["all", "spaces", "data_models", "views", "containers"], key)
|
|
67
|
+
for key, value in self.complex_configs["Components"].items()
|
|
68
|
+
if value
|
|
69
|
+
}
|
|
70
|
+
dry_run = self.configs["Dry run"] == "True"
|
|
71
|
+
multi_space_components_delete: bool = self.configs["Multi-space components deletion"] == "True"
|
|
72
|
+
|
|
73
|
+
if not components_to_delete:
|
|
74
|
+
return FlowMessage(
|
|
75
|
+
error_text="No DMS Schema components selected for removal! Please select minimum one!",
|
|
76
|
+
step_execution_status=StepExecutionStatus.ABORT_AND_FAIL,
|
|
77
|
+
)
|
|
78
|
+
input_rules = rules.dms or rules.information
|
|
79
|
+
if input_rules is None:
|
|
80
|
+
return FlowMessage(
|
|
81
|
+
error_text="Missing DMS or Information rules in the input data! "
|
|
82
|
+
"Please ensure that a DMS or Information rules is provided!",
|
|
83
|
+
step_execution_status=StepExecutionStatus.ABORT_AND_FAIL,
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
dms_exporter = exporters.DMSExporter(
|
|
87
|
+
export_components=frozenset(components_to_delete),
|
|
88
|
+
include_space=(
|
|
89
|
+
None
|
|
90
|
+
if multi_space_components_delete
|
|
91
|
+
else {input_rules.metadata.space if isinstance(input_rules, DMSRules) else input_rules.metadata.prefix}
|
|
92
|
+
),
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
report_lines = ["# Data Model Deletion from CDF\n\n"]
|
|
96
|
+
errors = []
|
|
97
|
+
for result in dms_exporter.delete_from_cdf(rules=input_rules, client=cdf_client, dry_run=dry_run):
|
|
98
|
+
report_lines.append(result.as_report_str())
|
|
99
|
+
errors.extend(result.error_messages)
|
|
100
|
+
|
|
101
|
+
report_lines.append("\n\n# ERRORS\n\n")
|
|
102
|
+
report_lines.extend(errors)
|
|
103
|
+
|
|
104
|
+
output_dir = self.data_store_path / Path("staging")
|
|
105
|
+
output_dir.mkdir(parents=True, exist_ok=True)
|
|
106
|
+
report_file = "dms_component_creation_report.txt"
|
|
107
|
+
report_full_path = output_dir / report_file
|
|
108
|
+
report_full_path.write_text("\n".join(report_lines))
|
|
109
|
+
|
|
110
|
+
output_text = (
|
|
111
|
+
"<p></p>"
|
|
112
|
+
"Download Data Model Deletion "
|
|
113
|
+
f'<a href="/data/staging/{report_file}?{time.time()}" '
|
|
114
|
+
f'target="_blank">Report</a>'
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
if errors:
|
|
118
|
+
return FlowMessage(error_text=output_text, step_execution_status=StepExecutionStatus.ABORT_AND_FAIL)
|
|
119
|
+
else:
|
|
120
|
+
return FlowMessage(output_text=output_text)
|
|
121
|
+
|
|
122
|
+
|
|
26
123
|
class RulesToDMS(Step):
|
|
27
124
|
"""
|
|
28
125
|
This step exports Rules to DMS Schema components in CDF
|
|
@@ -6,8 +6,8 @@ from cognite.client import CogniteClient
|
|
|
6
6
|
|
|
7
7
|
from cognite.neat.rules import importers
|
|
8
8
|
from cognite.neat.rules.issues.formatters import FORMATTER_BY_NAME
|
|
9
|
+
from cognite.neat.rules.models.entities import DataModelEntity, DMSUnknownEntity
|
|
9
10
|
from cognite.neat.rules.models.rules import RoleTypes
|
|
10
|
-
from cognite.neat.rules.models.rules._types import DataModelEntity, Undefined
|
|
11
11
|
from cognite.neat.workflows._exceptions import StepNotInitialized
|
|
12
12
|
from cognite.neat.workflows.model import FlowMessage, StepExecutionStatus
|
|
13
13
|
from cognite.neat.workflows.steps.data_contracts import MultiRuleData
|
|
@@ -207,8 +207,8 @@ class DMSToRules(Step):
|
|
|
207
207
|
error_text = "Expected input payload to contain 'Data model id' key."
|
|
208
208
|
return FlowMessage(error_text=error_text, step_execution_status=StepExecutionStatus.ABORT_AND_FAIL)
|
|
209
209
|
|
|
210
|
-
datamodel_entity = DataModelEntity.
|
|
211
|
-
if datamodel_entity
|
|
210
|
+
datamodel_entity = DataModelEntity.load(datamodel_id_str)
|
|
211
|
+
if isinstance(datamodel_entity, DMSUnknownEntity):
|
|
212
212
|
error_text = (
|
|
213
213
|
f"Data model id should be in the format 'my_space:my_data_model(version=1)' "
|
|
214
214
|
f"or 'my_space:my_data_model', failed to parse space from {datamodel_id_str}"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
cognite/neat/__init__.py,sha256=v-rRiDOgZ3sQSMQKq0vgUQZvpeOkoHFXissAx6Ktg84,61
|
|
2
|
-
cognite/neat/_version.py,sha256=
|
|
2
|
+
cognite/neat/_version.py,sha256=osCAtP7V6N8d8ylLSMLqESEPBONdapAWxR22udUYrQY,23
|
|
3
3
|
cognite/neat/app/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
4
4
|
cognite/neat/app/api/asgi/metrics.py,sha256=nxFy7L5cChTI0a-zkCiJ59Aq8yLuIJp5c9Dg0wRXtV0,152
|
|
5
5
|
cognite/neat/app/api/configuration.py,sha256=xnKdBE_dtq1nRvKa79YGA_wimI5UhoSRuBQz4LkLzQw,4606
|
|
@@ -52,7 +52,7 @@ cognite/neat/graph/examples/skos-capturing-sheet-wind-topics.xlsx,sha256=CV_yK5Z
|
|
|
52
52
|
cognite/neat/graph/exceptions.py,sha256=G899CjKepLB2dxgwH4585cqqtjvbyH6MLTM2aaqZRqg,3402
|
|
53
53
|
cognite/neat/graph/extractors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
54
54
|
cognite/neat/graph/extractors/_base.py,sha256=TOXDnlqske8DgnJwA0THDVRgmR79Acjm56yF0E-2w7I,356
|
|
55
|
-
cognite/neat/graph/extractors/_mock_graph_generator.py,sha256=
|
|
55
|
+
cognite/neat/graph/extractors/_mock_graph_generator.py,sha256=xxrY3wuN7ZgP_iWirC_wtvEO5_cCsGoQZVyEZKx362w,14980
|
|
56
56
|
cognite/neat/graph/models.py,sha256=AtLgZh2qyRP6NRetjQCy9qLMuTQB0CH52Zsev-qa2sk,149
|
|
57
57
|
cognite/neat/graph/stores/__init__.py,sha256=ivvk7STSo-4wuP_CpizKUCPKmt_ufpNWRJUN9Bv5gdY,543
|
|
58
58
|
cognite/neat/graph/stores/_base.py,sha256=_39ZoiSed7U-OdOKhiuT8dOS3u7HNfSIkLQp3a0B0GQ,13473
|
|
@@ -148,60 +148,61 @@ cognite/neat/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
148
148
|
cognite/neat/rules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
149
149
|
cognite/neat/rules/_shared.py,sha256=UuciM9RlL9Iwh6UOYiKXFRwjnpRUnhsYRptTPjePmFE,176
|
|
150
150
|
cognite/neat/rules/analysis/__init__.py,sha256=J2yL0QWSvXOWLbaYPyA0HXHh3aqOWmkwobScdgVQpw8,115
|
|
151
|
-
cognite/neat/rules/analysis/_base.py,sha256=
|
|
152
|
-
cognite/neat/rules/analysis/_information_rules.py,sha256=
|
|
151
|
+
cognite/neat/rules/analysis/_base.py,sha256=PmN5NLgGsovsHtsnvUzc_zuarWl-Xwk1azWcYKKuWdA,669
|
|
152
|
+
cognite/neat/rules/analysis/_information_rules.py,sha256=zGY1cx1WG98fge-ADTQpceCtJojLD872v5DZNGaE8Ss,19608
|
|
153
153
|
cognite/neat/rules/examples/__init__.py,sha256=nxIwueAcHgZhkYriGxnDLQmIyiT8PByPHbScjYKDKe0,374
|
|
154
154
|
cognite/neat/rules/examples/wind-energy.owl,sha256=NuomCA9FuuLF0JlSuG3OKqD4VBcHgSjDKFLV17G1zV8,65934
|
|
155
155
|
cognite/neat/rules/exceptions.py,sha256=YLnsbXXJdDSr_szQoioEtOdqDV8PR7RdQjpMP2SWeCs,123868
|
|
156
156
|
cognite/neat/rules/exporters/__init__.py,sha256=Gn3CjkVKHJF9Po1ZPH4wAJ-sRW9up7b2CpXm-eReV3Q,413
|
|
157
157
|
cognite/neat/rules/exporters/_base.py,sha256=rJIKvM9CQlwwAOBlmpYepB1Urb-ZLC0xBxS0fE7am-I,1517
|
|
158
|
-
cognite/neat/rules/exporters/_models.py,sha256=
|
|
159
|
-
cognite/neat/rules/exporters/_rules2dms.py,sha256=
|
|
158
|
+
cognite/neat/rules/exporters/_models.py,sha256=BX19QXsbWjImCY9NCaOnrlMSs-6qcA5P3QLittrWvGM,1870
|
|
159
|
+
cognite/neat/rules/exporters/_rules2dms.py,sha256=KXK_bJp752Zo8E3apHnTZzcZ2sQnmXftazI1mKPEfcQ,14231
|
|
160
160
|
cognite/neat/rules/exporters/_rules2excel.py,sha256=oKYayDKKsCCMmquuppRzszORAJB9YB3O5DdZ2aplNjU,13767
|
|
161
|
-
cognite/neat/rules/exporters/_rules2ontology.py,sha256=
|
|
161
|
+
cognite/neat/rules/exporters/_rules2ontology.py,sha256=GBpaAjM0X8t02NWE3CRmKKovEiHhvOHdWfbeXP7Hh6c,20139
|
|
162
162
|
cognite/neat/rules/exporters/_rules2yaml.py,sha256=Irr4CwJ5pLlwiJeOMuGPU-HX9zoYrONyfV9JpRYz6j8,3038
|
|
163
|
-
cognite/neat/rules/exporters/_validation.py,sha256=
|
|
163
|
+
cognite/neat/rules/exporters/_validation.py,sha256=lXz97a9AtmhAIqX8CLmI32K8V0Fwf7Wa2X5reRl8HAM,4100
|
|
164
164
|
cognite/neat/rules/importers/__init__.py,sha256=zqNbGpvdVhYkLjWx1i9dJ3FXzYGtuQyTydUYsj-BndQ,408
|
|
165
165
|
cognite/neat/rules/importers/_base.py,sha256=Ldpc1IrZu1MejBRFwDyMDmHO-DDgfNDNhr9pFVjeb7U,4057
|
|
166
|
-
cognite/neat/rules/importers/_dms2rules.py,sha256=
|
|
166
|
+
cognite/neat/rules/importers/_dms2rules.py,sha256=VMgk7NV1yWmu8UlORUHcrB8bi7z8Icg-5V69PTrh4J4,10379
|
|
167
167
|
cognite/neat/rules/importers/_dtdl2rules/__init__.py,sha256=CNR-sUihs2mnR1bPMKs3j3L4ds3vFTsrl6YycExZTfU,68
|
|
168
168
|
cognite/neat/rules/importers/_dtdl2rules/_unit_lookup.py,sha256=wW4saKva61Q_i17guY0dc4OseJDQfqHy_QZBtm0OD6g,12134
|
|
169
|
-
cognite/neat/rules/importers/_dtdl2rules/dtdl_converter.py,sha256=
|
|
169
|
+
cognite/neat/rules/importers/_dtdl2rules/dtdl_converter.py,sha256=dHWbcP7rLxnLOef69DBR2xDYFIWj_DQPx-IkIWwBZIA,12676
|
|
170
170
|
cognite/neat/rules/importers/_dtdl2rules/dtdl_importer.py,sha256=vjAn2pCaav4FLE_-uJJcbeHZ5KS_yfsOLiKgXtFT8Zk,6801
|
|
171
|
-
cognite/neat/rules/importers/_dtdl2rules/spec.py,sha256=
|
|
171
|
+
cognite/neat/rules/importers/_dtdl2rules/spec.py,sha256=86lfb_QbKdAWgN-3wf7Umkn8VrxqLHjmBfCJkTB90Fo,11921
|
|
172
172
|
cognite/neat/rules/importers/_owl2rules/__init__.py,sha256=tdGcrgtozdQyST-pTlxIa4cLBNTLvtk1nNYR4vOdFSw,63
|
|
173
173
|
cognite/neat/rules/importers/_owl2rules/_owl2classes.py,sha256=3qxQlZr-3MLhL0oDHlCfOK9ndsT4edDGqz3pQb5f61A,7597
|
|
174
174
|
cognite/neat/rules/importers/_owl2rules/_owl2metadata.py,sha256=mqDa0oiKCX2gBEk47rX4r-VzOmsVyK6q_J7wvDOCklA,7804
|
|
175
175
|
cognite/neat/rules/importers/_owl2rules/_owl2properties.py,sha256=UB7iZZFkoeTsxuM745rl5I4Myp5mrotDgzmjPBBfv8w,7443
|
|
176
|
-
cognite/neat/rules/importers/_owl2rules/_owl2rules.py,sha256=
|
|
177
|
-
cognite/neat/rules/importers/_spreadsheet2rules.py,sha256=
|
|
178
|
-
cognite/neat/rules/importers/_yaml2rules.py,sha256=
|
|
176
|
+
cognite/neat/rules/importers/_owl2rules/_owl2rules.py,sha256=j4z2WR2HhhKha4d2jQKfbFpakaVPCcw4doAiLDcbbQk,6947
|
|
177
|
+
cognite/neat/rules/importers/_spreadsheet2rules.py,sha256=q464RCTA6iXCQrfHWdx8hBU5j4lV2X0Gyiv2Rq71VK8,11306
|
|
178
|
+
cognite/neat/rules/importers/_yaml2rules.py,sha256=G8O_D1eXwIZXc3KlS6bHSf2jlbhpqxBVFEzDC_EaOg0,4315
|
|
179
179
|
cognite/neat/rules/issues/__init__.py,sha256=Ms6jgCxCezc5IgTOwCFtXQPtoVFfOvdcXj84_rs917I,563
|
|
180
180
|
cognite/neat/rules/issues/base.py,sha256=qgoZ3qr35XLtdmkWWewf3sCYOW0sCkJrN9VpFvX-WzY,6158
|
|
181
|
-
cognite/neat/rules/issues/dms.py,sha256=
|
|
181
|
+
cognite/neat/rules/issues/dms.py,sha256=8bK-mnc6TNwXfdAJB6JYQrQRBB_k2MmFRNbXdhPiVDw,15338
|
|
182
182
|
cognite/neat/rules/issues/fileread.py,sha256=n-GZaULOJF_MKkBIh1maaOuGZXOvZYw7Y6fDAS0jrBI,4492
|
|
183
183
|
cognite/neat/rules/issues/formatters.py,sha256=_pSogWtfkt2JK0PZgWQffbj2On8vumFNshxOKAi5fYw,3346
|
|
184
184
|
cognite/neat/rules/issues/importing.py,sha256=GqUywhBD840Fbc4DD5L2I0oEllJ78MTjpmXogVEjihA,7493
|
|
185
185
|
cognite/neat/rules/issues/spreadsheet.py,sha256=Iyje5xqgDN3nhpF9hi1Nm-baCXMxOLYVXZ8_jE18zLI,13763
|
|
186
186
|
cognite/neat/rules/issues/spreadsheet_file.py,sha256=YCp0Pk_TsiqYuOPdWpjUpre-zvi2c5_MvrC_dxw10YY,4964
|
|
187
|
-
cognite/neat/rules/models/
|
|
188
|
-
cognite/neat/rules/models/
|
|
187
|
+
cognite/neat/rules/models/data_types.py,sha256=lanwkhwG8iHKfjYfia4v2SBTJrMeXOsqaVkVEP2QMXs,6078
|
|
188
|
+
cognite/neat/rules/models/entities.py,sha256=CWOSKRJjw6TQ4GifWNfkK5wGCw-RXr-7NZdycgGWmeI,15481
|
|
189
|
+
cognite/neat/rules/models/rdfpath.py,sha256=WypoGzJ6WCze3yNCFuHQQeLER7KJR_FGlskJafMjmas,11030
|
|
189
190
|
cognite/neat/rules/models/rules/__init__.py,sha256=YHzkEkDzDuPs9N69FP12SAbnOBiLOxk0m5jXH-IQgbY,522
|
|
190
|
-
cognite/neat/rules/models/rules/_base.py,sha256=
|
|
191
|
-
cognite/neat/rules/models/rules/_dms_architect_rules.py,sha256=
|
|
192
|
-
cognite/neat/rules/models/rules/
|
|
193
|
-
cognite/neat/rules/models/rules/
|
|
194
|
-
cognite/neat/rules/models/rules/
|
|
195
|
-
cognite/neat/rules/models/rules/
|
|
196
|
-
cognite/neat/rules/models/rules/_types/
|
|
197
|
-
cognite/neat/rules/models/rules/_types/
|
|
198
|
-
cognite/neat/rules/models/rules/_types/
|
|
191
|
+
cognite/neat/rules/models/rules/_base.py,sha256=CKFrEFeLROq6IWDb5SfYTRJqsrOm0gvB-MGudMKBQqo,11024
|
|
192
|
+
cognite/neat/rules/models/rules/_dms_architect_rules.py,sha256=ieNN0V88eS__NmM7rwp7eq8Rxm4ns9yX8ZUL-z_ogqE,52589
|
|
193
|
+
cognite/neat/rules/models/rules/_dms_rules_write.py,sha256=AnhW9QypNLPj4qHKMm8AFh7HGkV8nSifO2SKgErN5Cg,12898
|
|
194
|
+
cognite/neat/rules/models/rules/_dms_schema.py,sha256=BHxp6mhtvK0AFb6LeOHd0vnmrJVXQo78qhmAUOW9e_I,30777
|
|
195
|
+
cognite/neat/rules/models/rules/_domain_rules.py,sha256=oa_if8jPSZWN9nS2j-UdxnCSIfjwIWq128cPd_BzLOw,2655
|
|
196
|
+
cognite/neat/rules/models/rules/_information_rules.py,sha256=Cc1eB3rLj-WFvKOl45cgANjC_6oaYQE6Rs-Yeg7wLEk,22015
|
|
197
|
+
cognite/neat/rules/models/rules/_types/__init__.py,sha256=l1tGxzE7ezNHIL72AoEvNHN2IFuitxOLxiHJG__s6t4,305
|
|
198
|
+
cognite/neat/rules/models/rules/_types/_base.py,sha256=2GhLUE1ukV8X8SGL_JDxpbWGZyAvOnSqAE6JmDh5wbI,929
|
|
199
|
+
cognite/neat/rules/models/rules/_types/_field.py,sha256=74WfCSVbTubpK4n4VsysQqCch6VI8IcPqnHQpvNbFZ8,3197
|
|
199
200
|
cognite/neat/utils/__init__.py,sha256=l5Nyqhqo25bcQXCOb_lk01cr-UXsG8cczz_y_I0u6bg,68
|
|
200
201
|
cognite/neat/utils/auxiliary.py,sha256=E2-YtddzScvN7l7j0kNYIMlfqIUT9NWMqLpcJYPK4rY,309
|
|
201
202
|
cognite/neat/utils/cdf.py,sha256=dTg8wnm2916yhWT_2Jg9_PlauHCbmnuNgmpqrGU8eO0,711
|
|
202
203
|
cognite/neat/utils/cdf_loaders/__init__.py,sha256=s2aPR5XLo6WZ0ybstAJlcGFYkA7CyHW1XO-NYpL0V6o,483
|
|
203
204
|
cognite/neat/utils/cdf_loaders/_base.py,sha256=j85HINIx4poGD-0dN3JPHTqjOS1XhCxv7G9s1gC1GBo,2057
|
|
204
|
-
cognite/neat/utils/cdf_loaders/_data_modeling.py,sha256=
|
|
205
|
+
cognite/neat/utils/cdf_loaders/_data_modeling.py,sha256=VNtoBIoOLxGeVt2NIOnKSVK67MWJHE3mpqNf3-0xJKc,11304
|
|
205
206
|
cognite/neat/utils/cdf_loaders/_ingestion.py,sha256=GqIJ7JsFuM4TYK_AFysEwS1e5CaVWfq5NqYPEUnId5s,6319
|
|
206
207
|
cognite/neat/utils/cdf_loaders/data_classes.py,sha256=0apspfwVlFltYOZfmk_PNknS3Z3SCxVr3kkvXH0bfPA,3844
|
|
207
208
|
cognite/neat/utils/exceptions.py,sha256=-w4cAcvcoWLf-_ZwAl7QV_NysfqtQzIOd1Ti-mpxJgM,981
|
|
@@ -235,8 +236,8 @@ cognite/neat/workflows/steps/lib/graph_extractor.py,sha256=vW9UpJScx5dFVCSairpOd
|
|
|
235
236
|
cognite/neat/workflows/steps/lib/graph_loader.py,sha256=HfGg1HRZhbV58TFu89FTjKeUxGsbCYLeFJIQFDN_pQM,2341
|
|
236
237
|
cognite/neat/workflows/steps/lib/graph_store.py,sha256=r7VTxdaz8jJQU7FJbnRDMxvEYbSAZFNMABhPyfNwiFk,6295
|
|
237
238
|
cognite/neat/workflows/steps/lib/io_steps.py,sha256=QAGypoi1vP32BRiIgBZ0B4qsbFMcwhzpRiVUUnWysLA,16874
|
|
238
|
-
cognite/neat/workflows/steps/lib/rules_exporter.py,sha256=
|
|
239
|
-
cognite/neat/workflows/steps/lib/rules_importer.py,sha256=
|
|
239
|
+
cognite/neat/workflows/steps/lib/rules_exporter.py,sha256=iFHBWvxQOIe_m5glIJ_bIjJT331FU14uvWB5CbdmAKs,22585
|
|
240
|
+
cognite/neat/workflows/steps/lib/rules_importer.py,sha256=Eu5f6RNAbNDN_XRAgjGqdYrJnUJASakdF6UuBWCrStI,10394
|
|
240
241
|
cognite/neat/workflows/steps/lib/rules_validator.py,sha256=Zle0XH3_7e9CGmybk3XFvi1vOlvjZltLC_UUFaHrRXo,4784
|
|
241
242
|
cognite/neat/workflows/steps/lib/v1/__init__.py,sha256=725aFzVqhE0tbVOAW70zWXTGKFiYImVupRZ4C5_IkUo,274
|
|
242
243
|
cognite/neat/workflows/steps/lib/v1/graph_contextualization.py,sha256=Ge6LPr8mEWf47eP8g5C1EUCxKyoHcrHm3t5b9zb-9sA,3929
|
|
@@ -251,8 +252,8 @@ cognite/neat/workflows/steps_registry.py,sha256=PZVoHX4d6Vmjz6XzUFnFFWMCnrVnqkUC
|
|
|
251
252
|
cognite/neat/workflows/tasks.py,sha256=dqlJwKAb0jlkl7abbY8RRz3m7MT4SK8-7cntMWkOYjw,788
|
|
252
253
|
cognite/neat/workflows/triggers.py,sha256=_BLNplzoz0iic367u1mhHMHiUrCwP-SLK6_CZzfODX0,7071
|
|
253
254
|
cognite/neat/workflows/utils.py,sha256=gKdy3RLG7ctRhbCRwaDIWpL9Mi98zm56-d4jfHDqP1E,453
|
|
254
|
-
cognite_neat-0.75.
|
|
255
|
-
cognite_neat-0.75.
|
|
256
|
-
cognite_neat-0.75.
|
|
257
|
-
cognite_neat-0.75.
|
|
258
|
-
cognite_neat-0.75.
|
|
255
|
+
cognite_neat-0.75.8.dist-info/LICENSE,sha256=W8VmvFia4WHa3Gqxq1Ygrq85McUNqIGDVgtdvzT-XqA,11351
|
|
256
|
+
cognite_neat-0.75.8.dist-info/METADATA,sha256=pADAv8yoU3CyECTcRkfX5ftO96MfGYLvsFAWisLiJ0I,9316
|
|
257
|
+
cognite_neat-0.75.8.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
258
|
+
cognite_neat-0.75.8.dist-info/entry_points.txt,sha256=61FPqiWb25vbqB0KI7znG8nsg_ibLHBvTjYnkPvNFso,50
|
|
259
|
+
cognite_neat-0.75.8.dist-info/RECORD,,
|