cognite-neat 0.105.2__py3-none-any.whl → 0.106.0__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.
- cognite/neat/_config.py +6 -260
- cognite/neat/_graph/extractors/_classic_cdf/_base.py +26 -13
- cognite/neat/_graph/extractors/_classic_cdf/_classic.py +4 -1
- cognite/neat/_graph/extractors/_classic_cdf/_sequences.py +2 -2
- cognite/neat/_graph/loaders/_rdf2dms.py +7 -2
- cognite/neat/_graph/transformers/_base.py +4 -8
- cognite/neat/_graph/transformers/_classic_cdf.py +51 -41
- cognite/neat/_graph/transformers/_rdfpath.py +1 -1
- cognite/neat/_issues/warnings/_external.py +1 -1
- cognite/neat/_rules/importers/_rdf/_inference2rules.py +4 -2
- cognite/neat/_rules/models/mapping/_classic2core.yaml +70 -58
- cognite/neat/_rules/transformers/_mapping.py +3 -2
- cognite/neat/_session/_base.py +6 -7
- cognite/neat/_session/_inspect.py +6 -2
- cognite/neat/_session/_mapping.py +6 -8
- cognite/neat/_session/_prepare.py +9 -10
- cognite/neat/_session/_read.py +35 -26
- cognite/neat/_session/_set.py +9 -0
- cognite/neat/_session/_state.py +3 -1
- cognite/neat/_session/_to.py +11 -13
- cognite/neat/_store/_graph_store.py +33 -28
- cognite/neat/_utils/collection_.py +32 -11
- cognite/neat/_version.py +1 -1
- {cognite_neat-0.105.2.dist-info → cognite_neat-0.106.0.dist-info}/METADATA +1 -7
- {cognite_neat-0.105.2.dist-info → cognite_neat-0.106.0.dist-info}/RECORD +28 -28
- {cognite_neat-0.105.2.dist-info → cognite_neat-0.106.0.dist-info}/LICENSE +0 -0
- {cognite_neat-0.105.2.dist-info → cognite_neat-0.106.0.dist-info}/WHEEL +0 -0
- {cognite_neat-0.105.2.dist-info → cognite_neat-0.106.0.dist-info}/entry_points.txt +0 -0
cognite/neat/_session/_read.py
CHANGED
|
@@ -22,23 +22,22 @@ from .exceptions import NeatSessionError, session_class_wrapper
|
|
|
22
22
|
class ReadAPI:
|
|
23
23
|
"""Read from a data source into NeatSession graph store."""
|
|
24
24
|
|
|
25
|
-
def __init__(self, state: SessionState,
|
|
25
|
+
def __init__(self, state: SessionState, verbose: bool) -> None:
|
|
26
26
|
self._state = state
|
|
27
27
|
self._verbose = verbose
|
|
28
|
-
self.cdf = CDFReadAPI(state,
|
|
29
|
-
self.rdf = RDFReadAPI(state,
|
|
30
|
-
self.excel = ExcelReadAPI(state,
|
|
31
|
-
self.csv = CSVReadAPI(state,
|
|
32
|
-
self.yaml = YamlReadAPI(state,
|
|
33
|
-
self.xml = XMLReadAPI(state,
|
|
28
|
+
self.cdf = CDFReadAPI(state, verbose)
|
|
29
|
+
self.rdf = RDFReadAPI(state, verbose)
|
|
30
|
+
self.excel = ExcelReadAPI(state, verbose)
|
|
31
|
+
self.csv = CSVReadAPI(state, verbose)
|
|
32
|
+
self.yaml = YamlReadAPI(state, verbose)
|
|
33
|
+
self.xml = XMLReadAPI(state, verbose)
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
@session_class_wrapper
|
|
37
37
|
class BaseReadAPI:
|
|
38
|
-
def __init__(self, state: SessionState,
|
|
38
|
+
def __init__(self, state: SessionState, verbose: bool) -> None:
|
|
39
39
|
self._state = state
|
|
40
40
|
self._verbose = verbose
|
|
41
|
-
self._client = client
|
|
42
41
|
|
|
43
42
|
|
|
44
43
|
@session_class_wrapper
|
|
@@ -48,15 +47,15 @@ class CDFReadAPI(BaseReadAPI):
|
|
|
48
47
|
|
|
49
48
|
"""
|
|
50
49
|
|
|
51
|
-
def __init__(self, state: SessionState,
|
|
52
|
-
super().__init__(state,
|
|
53
|
-
self.classic = CDFClassicAPI(state,
|
|
50
|
+
def __init__(self, state: SessionState, verbose: bool) -> None:
|
|
51
|
+
super().__init__(state, verbose)
|
|
52
|
+
self.classic = CDFClassicAPI(state, verbose)
|
|
54
53
|
|
|
55
54
|
@property
|
|
56
55
|
def _get_client(self) -> NeatClient:
|
|
57
|
-
if self.
|
|
56
|
+
if self._state.client is None:
|
|
58
57
|
raise NeatValueError("No client provided. Please provide a client to read a data model.")
|
|
59
|
-
return self.
|
|
58
|
+
return self._state.client
|
|
60
59
|
|
|
61
60
|
def data_model(self, data_model_id: DataModelIdentifier) -> IssueList:
|
|
62
61
|
"""Reads a Data Model from CDF to the knowledge graph.
|
|
@@ -89,11 +88,11 @@ class CDFClassicAPI(BaseReadAPI):
|
|
|
89
88
|
|
|
90
89
|
@property
|
|
91
90
|
def _get_client(self) -> NeatClient:
|
|
92
|
-
if self.
|
|
91
|
+
if self._state.client is None:
|
|
93
92
|
raise ValueError("No client provided. Please provide a client to read a data model.")
|
|
94
|
-
return self.
|
|
93
|
+
return self._state.client
|
|
95
94
|
|
|
96
|
-
def graph(self, root_asset_external_id: str, limit_per_type: int | None = None) ->
|
|
95
|
+
def graph(self, root_asset_external_id: str, limit_per_type: int | None = None) -> IssueList:
|
|
97
96
|
"""Reads the classic knowledge graph from CDF.
|
|
98
97
|
|
|
99
98
|
The Classic Graph consists of the following core resource type.
|
|
@@ -129,14 +128,24 @@ class CDFClassicAPI(BaseReadAPI):
|
|
|
129
128
|
root_asset_external_id: The external id of the root asset
|
|
130
129
|
limit_per_type: The maximum number of nodes to extract per core node type. If None, all nodes are extracted.
|
|
131
130
|
|
|
131
|
+
Returns:
|
|
132
|
+
IssueList: A list of issues that occurred during the extraction.
|
|
133
|
+
|
|
134
|
+
Example:
|
|
135
|
+
```python
|
|
136
|
+
neat.read.cdf.graph("root_asset_external_id")
|
|
137
|
+
```
|
|
138
|
+
|
|
132
139
|
"""
|
|
133
140
|
extractor = extractors.ClassicGraphExtractor(
|
|
134
141
|
self._get_client, root_asset_external_id=root_asset_external_id, limit_per_type=limit_per_type
|
|
135
142
|
)
|
|
136
143
|
|
|
137
|
-
self._state.instances.store.write(extractor)
|
|
138
|
-
|
|
139
|
-
|
|
144
|
+
issues = self._state.instances.store.write(extractor)
|
|
145
|
+
issues.action = "Read Classic Graph"
|
|
146
|
+
if issues:
|
|
147
|
+
print("Use the .inspect.issues() for more details")
|
|
148
|
+
return issues
|
|
140
149
|
|
|
141
150
|
|
|
142
151
|
@session_class_wrapper
|
|
@@ -153,9 +162,9 @@ class ExcelReadAPI(BaseReadAPI):
|
|
|
153
162
|
```
|
|
154
163
|
"""
|
|
155
164
|
|
|
156
|
-
def __init__(self, state: SessionState,
|
|
157
|
-
super().__init__(state,
|
|
158
|
-
self.examples = ExcelExampleAPI(state,
|
|
165
|
+
def __init__(self, state: SessionState, verbose: bool) -> None:
|
|
166
|
+
super().__init__(state, verbose)
|
|
167
|
+
self.examples = ExcelExampleAPI(state, verbose)
|
|
159
168
|
|
|
160
169
|
def __call__(self, io: Any) -> IssueList:
|
|
161
170
|
"""Reads a Neat Excel Rules sheet to the graph store. The rules sheet may stem from an Information architect,
|
|
@@ -201,7 +210,7 @@ class YamlReadAPI(BaseReadAPI):
|
|
|
201
210
|
if format == "neat":
|
|
202
211
|
importer = importers.YAMLImporter.from_file(path, source_name=f"{reader!s}")
|
|
203
212
|
elif format == "toolkit":
|
|
204
|
-
dms_importer = importers.DMSImporter.from_path(path, self.
|
|
213
|
+
dms_importer = importers.DMSImporter.from_path(path, self._state.client)
|
|
205
214
|
if dms_importer.issue_list.has_warning_type(MissingCogniteClientWarning):
|
|
206
215
|
raise NeatSessionError(
|
|
207
216
|
"No client provided. You are referencing Cognite containers in your data model, "
|
|
@@ -316,8 +325,8 @@ class RDFReadAPI(BaseReadAPI):
|
|
|
316
325
|
io: file path or url to the RDF source
|
|
317
326
|
"""
|
|
318
327
|
|
|
319
|
-
def __init__(self, state: SessionState,
|
|
320
|
-
super().__init__(state,
|
|
328
|
+
def __init__(self, state: SessionState, verbose: bool) -> None:
|
|
329
|
+
super().__init__(state, verbose)
|
|
321
330
|
self.examples = RDFExamples(state)
|
|
322
331
|
|
|
323
332
|
def ontology(self, io: Any) -> IssueList:
|
cognite/neat/_session/_set.py
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
from cognite.client import CogniteClient
|
|
1
2
|
from cognite.client import data_modeling as dm
|
|
2
3
|
|
|
4
|
+
from cognite.neat._client import NeatClient
|
|
3
5
|
from cognite.neat._constants import COGNITE_MODELS
|
|
4
6
|
from cognite.neat._issues import IssueList
|
|
5
7
|
from cognite.neat._rules.models import DMSRules
|
|
@@ -35,3 +37,10 @@ class SetAPI:
|
|
|
35
37
|
" due to temporarily issue with the reverse direct relation interpretation"
|
|
36
38
|
)
|
|
37
39
|
return self._state.rule_transform(SetIDDMSModel(new_model_id))
|
|
40
|
+
|
|
41
|
+
def client(self, client: CogniteClient) -> None:
|
|
42
|
+
"""Sets the client to be used in the session."""
|
|
43
|
+
self._state.client = NeatClient(client)
|
|
44
|
+
if self._verbose:
|
|
45
|
+
print(f"Client set to {self._state.client.config.project} CDF project.")
|
|
46
|
+
return None
|
cognite/neat/_session/_state.py
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from dataclasses import dataclass, field
|
|
2
2
|
from typing import Literal, cast
|
|
3
3
|
|
|
4
|
+
from cognite.neat._client import NeatClient
|
|
4
5
|
from cognite.neat._issues import IssueList
|
|
5
6
|
from cognite.neat._rules.importers import BaseImporter, InferenceImporter
|
|
6
7
|
from cognite.neat._rules.models import DMSRules, InformationRules
|
|
@@ -15,10 +16,11 @@ from .exceptions import NeatSessionError
|
|
|
15
16
|
|
|
16
17
|
|
|
17
18
|
class SessionState:
|
|
18
|
-
def __init__(self, store_type: Literal["memory", "oxigraph"]) -> None:
|
|
19
|
+
def __init__(self, store_type: Literal["memory", "oxigraph"], client: NeatClient | None = None) -> None:
|
|
19
20
|
self.instances = InstancesState(store_type)
|
|
20
21
|
self.rule_store = NeatRulesStore()
|
|
21
22
|
self.last_reference: DMSRules | InformationRules | None = None
|
|
23
|
+
self.client = client
|
|
22
24
|
|
|
23
25
|
def rule_transform(self, *transformer: RulesTransformer) -> IssueList:
|
|
24
26
|
if not transformer:
|
cognite/neat/_session/_to.py
CHANGED
|
@@ -4,7 +4,6 @@ from typing import Any, Literal, overload
|
|
|
4
4
|
|
|
5
5
|
from cognite.client.data_classes.data_modeling import SpaceApply
|
|
6
6
|
|
|
7
|
-
from cognite.neat._client import NeatClient
|
|
8
7
|
from cognite.neat._constants import COGNITE_MODELS
|
|
9
8
|
from cognite.neat._graph import loaders
|
|
10
9
|
from cognite.neat._rules import exporters
|
|
@@ -25,10 +24,10 @@ class ToAPI:
|
|
|
25
24
|
|
|
26
25
|
"""
|
|
27
26
|
|
|
28
|
-
def __init__(self, state: SessionState,
|
|
27
|
+
def __init__(self, state: SessionState, verbose: bool) -> None:
|
|
29
28
|
self._state = state
|
|
30
29
|
self._verbose = verbose
|
|
31
|
-
self.cdf = CDFToAPI(state,
|
|
30
|
+
self.cdf = CDFToAPI(state, verbose)
|
|
32
31
|
|
|
33
32
|
def excel(
|
|
34
33
|
self,
|
|
@@ -153,8 +152,7 @@ class ToAPI:
|
|
|
153
152
|
class CDFToAPI:
|
|
154
153
|
"""Write a verified Data Model and Instances to CDF."""
|
|
155
154
|
|
|
156
|
-
def __init__(self, state: SessionState,
|
|
157
|
-
self._client = client
|
|
155
|
+
def __init__(self, state: SessionState, verbose: bool) -> None:
|
|
158
156
|
self._state = state
|
|
159
157
|
self._verbose = verbose
|
|
160
158
|
|
|
@@ -166,9 +164,9 @@ class CDFToAPI:
|
|
|
166
164
|
Note this space is required to be different than the space with the data model.
|
|
167
165
|
|
|
168
166
|
"""
|
|
169
|
-
if not self.
|
|
167
|
+
if not self._state.client:
|
|
170
168
|
raise NeatSessionError("No CDF client provided!")
|
|
171
|
-
|
|
169
|
+
client = self._state.client
|
|
172
170
|
space = space or f"{self._state.rule_store.last_verified_dms_rules.metadata.space}_instances"
|
|
173
171
|
|
|
174
172
|
if space and space == self._state.rule_store.last_verified_dms_rules.metadata.space:
|
|
@@ -176,16 +174,16 @@ class CDFToAPI:
|
|
|
176
174
|
elif not PATTERNS.space_compliance.match(str(space)):
|
|
177
175
|
raise NeatSessionError("Please provide a valid space name. {PATTERNS.space_compliance.pattern}")
|
|
178
176
|
|
|
179
|
-
if not
|
|
180
|
-
|
|
177
|
+
if not client.data_modeling.spaces.retrieve(space):
|
|
178
|
+
client.data_modeling.spaces.apply(SpaceApply(space=space))
|
|
181
179
|
|
|
182
180
|
loader = loaders.DMSLoader.from_rules(
|
|
183
181
|
self._state.rule_store.last_verified_dms_rules,
|
|
184
182
|
self._state.instances.store,
|
|
185
183
|
instance_space=space,
|
|
186
|
-
client=
|
|
184
|
+
client=client,
|
|
187
185
|
)
|
|
188
|
-
result = loader.load_into_cdf(
|
|
186
|
+
result = loader.load_into_cdf(client)
|
|
189
187
|
self._state.instances.outcome.append(result)
|
|
190
188
|
print("You can inspect the details with the .inspect.outcome.instances(...) method.")
|
|
191
189
|
return result
|
|
@@ -219,9 +217,9 @@ class CDFToAPI:
|
|
|
219
217
|
|
|
220
218
|
exporter = exporters.DMSExporter(existing=existing, export_components=components, drop_data=drop_data)
|
|
221
219
|
|
|
222
|
-
if not self.
|
|
220
|
+
if not self._state.client:
|
|
223
221
|
raise NeatSessionError("No client provided!")
|
|
224
222
|
|
|
225
|
-
result = self._state.rule_store.export_to_cdf(exporter, self.
|
|
223
|
+
result = self._state.rule_store.export_to_cdf(exporter, self._state.client, dry_run)
|
|
226
224
|
print("You can inspect the details with the .inspect.outcome.data_model(...) method.")
|
|
227
225
|
return result
|
|
@@ -15,6 +15,7 @@ from cognite.neat._graph._shared import rdflib_to_oxi_type
|
|
|
15
15
|
from cognite.neat._graph.extractors import RdfFileExtractor, TripleExtractors
|
|
16
16
|
from cognite.neat._graph.queries import Queries
|
|
17
17
|
from cognite.neat._graph.transformers import Transformers
|
|
18
|
+
from cognite.neat._issues import IssueList, catch_issues
|
|
18
19
|
from cognite.neat._rules.analysis import InformationAnalysis
|
|
19
20
|
from cognite.neat._rules.models import InformationRules
|
|
20
21
|
from cognite.neat._rules.models.entities import ClassEntity
|
|
@@ -157,39 +158,43 @@ class NeatGraphStore:
|
|
|
157
158
|
|
|
158
159
|
return cls(graph, rules)
|
|
159
160
|
|
|
160
|
-
def write(self, extractor: TripleExtractors) ->
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
extractor.
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
161
|
+
def write(self, extractor: TripleExtractors) -> IssueList:
|
|
162
|
+
last_change: Change | None = None
|
|
163
|
+
with catch_issues() as issue_list:
|
|
164
|
+
_start = datetime.now(timezone.utc)
|
|
165
|
+
success = True
|
|
166
|
+
|
|
167
|
+
if isinstance(extractor, RdfFileExtractor) and not extractor.issue_list.has_errors:
|
|
168
|
+
self._parse_file(extractor.filepath, cast(str, extractor.format), extractor.base_uri)
|
|
169
|
+
elif isinstance(extractor, RdfFileExtractor):
|
|
170
|
+
success = False
|
|
171
|
+
issue_text = "\n".join([issue.as_message() for issue in extractor.issue_list])
|
|
172
|
+
warnings.warn(
|
|
173
|
+
f"Cannot write to graph store with {type(extractor).__name__}, errors found in file:\n{issue_text}",
|
|
174
|
+
stacklevel=2,
|
|
175
|
+
)
|
|
176
|
+
else:
|
|
177
|
+
self._add_triples(extractor.extract())
|
|
178
|
+
|
|
179
|
+
if success:
|
|
180
|
+
_end = datetime.now(timezone.utc)
|
|
181
|
+
# Need to do the hasattr in case the extractor comes from NeatEngine.
|
|
182
|
+
activities = (
|
|
183
|
+
extractor._get_activity_names()
|
|
184
|
+
if hasattr(extractor, "_get_activity_names")
|
|
185
|
+
else [type(extractor).__name__]
|
|
186
|
+
)
|
|
187
|
+
for activity in activities:
|
|
188
|
+
last_change = Change.record(
|
|
187
189
|
activity=activity,
|
|
188
190
|
start=_start,
|
|
189
191
|
end=_end,
|
|
190
192
|
description=f"Extracted triples to graph store using {type(extractor).__name__}",
|
|
191
193
|
)
|
|
192
|
-
|
|
194
|
+
self.provenance.append(last_change)
|
|
195
|
+
if last_change:
|
|
196
|
+
last_change.target_entity.issues.extend(issue_list)
|
|
197
|
+
return issue_list
|
|
193
198
|
|
|
194
199
|
def _read_via_rules_linkage(
|
|
195
200
|
self, class_neat_id: URIRef, property_link_pairs: dict[str, URIRef] | None
|
|
@@ -2,6 +2,7 @@ from collections import Counter
|
|
|
2
2
|
from collections.abc import Iterable, Sequence
|
|
3
3
|
from typing import TypeVar
|
|
4
4
|
|
|
5
|
+
from cognite.neat._config import GLOBAL_CONFIG
|
|
5
6
|
from cognite.neat._constants import IN_PYODIDE
|
|
6
7
|
|
|
7
8
|
T_Element = TypeVar("T_Element")
|
|
@@ -26,20 +27,40 @@ def remove_list_elements(input_list: list, elements_to_remove: list) -> list:
|
|
|
26
27
|
|
|
27
28
|
|
|
28
29
|
def iterate_progress_bar(iterable: Iterable[T_Element], total: int, description: str) -> Iterable[T_Element]:
|
|
29
|
-
if IN_PYODIDE:
|
|
30
|
+
if IN_PYODIDE or GLOBAL_CONFIG.progress_bar in ("infer", "tqdm"):
|
|
30
31
|
try:
|
|
31
|
-
from tqdm import tqdm
|
|
32
|
+
from tqdm import tqdm
|
|
32
33
|
except ModuleNotFoundError:
|
|
33
34
|
return iterable
|
|
34
35
|
return tqdm(iterable, total=total, desc=description)
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
|
|
37
|
+
elif GLOBAL_CONFIG.progress_bar == "tqdm-notebook":
|
|
38
|
+
try:
|
|
39
|
+
from tqdm.notebook import tqdm as tqdm_notebook
|
|
40
|
+
except ModuleNotFoundError:
|
|
41
|
+
return iterable
|
|
42
|
+
return tqdm_notebook(iterable, total=total, desc=description)
|
|
43
|
+
elif GLOBAL_CONFIG.progress_bar in ("infer", "rich"):
|
|
44
|
+
# Progress bar from rich requires multi-threading, which is not supported in Pyodide
|
|
45
|
+
try:
|
|
46
|
+
from rich.progress import track
|
|
47
|
+
except ModuleNotFoundError:
|
|
48
|
+
return iterable
|
|
49
|
+
|
|
50
|
+
return track(
|
|
51
|
+
iterable,
|
|
52
|
+
total=total,
|
|
53
|
+
description=description,
|
|
54
|
+
)
|
|
55
|
+
elif GLOBAL_CONFIG.progress_bar is None:
|
|
39
56
|
return iterable
|
|
57
|
+
else:
|
|
58
|
+
raise ValueError(f"Unsupported progress bar type: {GLOBAL_CONFIG.progress_bar}")
|
|
59
|
+
|
|
40
60
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
61
|
+
def iterate_progress_bar_if_above_config_threshold(
|
|
62
|
+
iterable: Iterable[T_Element], total: int, description: str
|
|
63
|
+
) -> Iterable[T_Element]:
|
|
64
|
+
if GLOBAL_CONFIG.use_iterate_bar_threshold and total > GLOBAL_CONFIG.use_iterate_bar_threshold:
|
|
65
|
+
return iterate_progress_bar(iterable, total, description)
|
|
66
|
+
return iterable
|
cognite/neat/_version.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
__version__ = "0.
|
|
1
|
+
__version__ = "0.106.0"
|
|
2
2
|
__engine__ = "^2.0.3"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: cognite-neat
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.106.0
|
|
4
4
|
Summary: Knowledge graph transformation
|
|
5
5
|
Home-page: https://cognite-neat.readthedocs-hosted.com/
|
|
6
6
|
License: Apache-2.0
|
|
@@ -17,13 +17,11 @@ Provides-Extra: all
|
|
|
17
17
|
Provides-Extra: docs
|
|
18
18
|
Provides-Extra: google
|
|
19
19
|
Provides-Extra: oxi
|
|
20
|
-
Provides-Extra: service
|
|
21
20
|
Requires-Dist: PyYAML
|
|
22
21
|
Requires-Dist: backports.strenum (>=1.2,<2.0) ; python_version < "3.11"
|
|
23
22
|
Requires-Dist: cognite-sdk (>=7.71.2,<8.0.0)
|
|
24
23
|
Requires-Dist: elementpath (>=4.0.0,<5.0.0)
|
|
25
24
|
Requires-Dist: exceptiongroup (>=1.1.3,<2.0.0) ; python_version < "3.11"
|
|
26
|
-
Requires-Dist: fastapi (>=0,<1) ; extra == "service" or extra == "all"
|
|
27
25
|
Requires-Dist: google-api-python-client ; extra == "google"
|
|
28
26
|
Requires-Dist: google-auth-oauthlib ; extra == "google"
|
|
29
27
|
Requires-Dist: gspread ; extra == "google"
|
|
@@ -45,20 +43,16 @@ Requires-Dist: openpyxl
|
|
|
45
43
|
Requires-Dist: oxrdflib[oxigraph] (>=0.4.0,<0.5.0) ; extra == "oxi" or extra == "all"
|
|
46
44
|
Requires-Dist: packaging (>=22.0,<25.0)
|
|
47
45
|
Requires-Dist: pandas
|
|
48
|
-
Requires-Dist: prometheus-client (>=0,<1) ; extra == "service" or extra == "all"
|
|
49
46
|
Requires-Dist: pydantic (>=2,<3)
|
|
50
47
|
Requires-Dist: pymdown-extensions ; extra == "docs"
|
|
51
48
|
Requires-Dist: pyoxigraph (==0.4.3) ; extra == "oxi" or extra == "all"
|
|
52
|
-
Requires-Dist: python-multipart (==0.0.9) ; extra == "service" or extra == "all"
|
|
53
49
|
Requires-Dist: pyvis (>=0.3.2,<0.4.0)
|
|
54
50
|
Requires-Dist: rdflib
|
|
55
51
|
Requires-Dist: requests
|
|
56
52
|
Requires-Dist: rich[jupyter] (>=13.7.1,<14.0.0)
|
|
57
|
-
Requires-Dist: schedule (>=1,<2) ; extra == "service" or extra == "all"
|
|
58
53
|
Requires-Dist: tomli (>=2.0.1,<3.0.0) ; python_version < "3.11"
|
|
59
54
|
Requires-Dist: typing_extensions (>=4.8,<5.0) ; python_version < "3.11"
|
|
60
55
|
Requires-Dist: urllib3 (>=2,<3)
|
|
61
|
-
Requires-Dist: uvicorn[standard] (>=0,<1) ; extra == "service" or extra == "all"
|
|
62
56
|
Project-URL: Documentation, https://cognite-neat.readthedocs-hosted.com/
|
|
63
57
|
Project-URL: Repository, https://github.com/cognitedata/neat
|
|
64
58
|
Description-Content-Type: text/markdown
|
|
@@ -9,7 +9,7 @@ cognite/neat/_client/data_classes/data_modeling.py,sha256=RvpUp9ygd-yffQFJ7O2mQq
|
|
|
9
9
|
cognite/neat/_client/data_classes/neat_sequence.py,sha256=QZWSfWnwk6KlYJvsInco4Wdwc1U8DnOQKWmHebArbQY,10830
|
|
10
10
|
cognite/neat/_client/data_classes/schema.py,sha256=uD8ExxEiIP3zhK4b--Q5fND-vmcC05a9WU5ItLsqG88,23179
|
|
11
11
|
cognite/neat/_client/testing.py,sha256=c5ADJkRJFYGlJVQz-uPqxKExKXT297pxKh_ka4oGBjs,1082
|
|
12
|
-
cognite/neat/_config.py,sha256=
|
|
12
|
+
cognite/neat/_config.py,sha256=WT1BS8uADcFvGoUYOOfwFOVq_VBl472TisdoA3wLick,280
|
|
13
13
|
cognite/neat/_constants.py,sha256=ei0ODx_P1Z4O-8tVK_K_7oRvEMzovVJ-0kw96fW8a_0,4999
|
|
14
14
|
cognite/neat/_graph/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
15
|
cognite/neat/_graph/_shared.py,sha256=g7XFITbVxdDyGZ6mlgFUv5cBycrU7QbPktRikdUVkks,863
|
|
@@ -24,14 +24,14 @@ cognite/neat/_graph/extractors/__init__.py,sha256=dUdr4lg4HfEJuXeGGo2dmNdFwv75is
|
|
|
24
24
|
cognite/neat/_graph/extractors/_base.py,sha256=xvoK8ZCu7OOvqcI9glOLEh1DxqW_TA1xYPI5tQQG_50,859
|
|
25
25
|
cognite/neat/_graph/extractors/_classic_cdf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
26
|
cognite/neat/_graph/extractors/_classic_cdf/_assets.py,sha256=9WVFrAtUFAp_AAlb26Rtt2Axz9xsPQYetg7SKVrNCr4,1474
|
|
27
|
-
cognite/neat/_graph/extractors/_classic_cdf/_base.py,sha256=
|
|
28
|
-
cognite/neat/_graph/extractors/_classic_cdf/_classic.py,sha256=
|
|
27
|
+
cognite/neat/_graph/extractors/_classic_cdf/_base.py,sha256=aM4v7s291H08tq_mAAcvHfheWfXl5oCYbD4O2q3FqOE,11753
|
|
28
|
+
cognite/neat/_graph/extractors/_classic_cdf/_classic.py,sha256=6RBb06JxcLTj2VKCatlXj5_1TUx5SG_uV3e9-muu81Y,11272
|
|
29
29
|
cognite/neat/_graph/extractors/_classic_cdf/_data_sets.py,sha256=xRFv9pVFgIMTZ45E8teMC0Ynku_CuZdcZkVCbhPuPBk,1294
|
|
30
30
|
cognite/neat/_graph/extractors/_classic_cdf/_events.py,sha256=B8hRoMAg8GQvApjxals5PfPyjmdPO93U3nj_G7g0kDQ,1394
|
|
31
31
|
cognite/neat/_graph/extractors/_classic_cdf/_files.py,sha256=Q816cVQ9qS7Art66HJfErL2OV7MxH_eSIG7bJ8_HJ7Q,1406
|
|
32
32
|
cognite/neat/_graph/extractors/_classic_cdf/_labels.py,sha256=7guTZdGFT1r7ItE2VNgXwbBZ1y_005oB3fg1XbwT7WQ,2083
|
|
33
33
|
cognite/neat/_graph/extractors/_classic_cdf/_relationships.py,sha256=Mu0PRcgF3BEZ7HVNQpCT1Ht2TLl9n2JcRz-UinShiFY,2977
|
|
34
|
-
cognite/neat/_graph/extractors/_classic_cdf/_sequences.py,sha256=
|
|
34
|
+
cognite/neat/_graph/extractors/_classic_cdf/_sequences.py,sha256=754-yyf5OymxNQR2uzI-yo8JZDlr8mr6C-DgTAWDEcw,10738
|
|
35
35
|
cognite/neat/_graph/extractors/_classic_cdf/_timeseries.py,sha256=6CmmxWWG2IErfNKOPhsjQ5wSOTUZZMjulpaRbHj0Q-g,1560
|
|
36
36
|
cognite/neat/_graph/extractors/_dexpi.py,sha256=SFWnKXYpQToWag9aoX8fxISNa9b8KlqjZnkwI18BzNY,9431
|
|
37
37
|
cognite/neat/_graph/extractors/_dms.py,sha256=bK5p4-NdXlnQMGaalr6vgODcIvWu2e4qE6f8nnvdQK0,6685
|
|
@@ -40,17 +40,17 @@ cognite/neat/_graph/extractors/_mock_graph_generator.py,sha256=7WqyFu2Qj03pJD4au
|
|
|
40
40
|
cognite/neat/_graph/extractors/_rdf_file.py,sha256=YgPZN4Ayk6UlbwFFjdWn4Yo3P74D8KeNUb3slXg6Ox8,1604
|
|
41
41
|
cognite/neat/_graph/loaders/__init__.py,sha256=1eam_rG1BXTUJ8iDm8_IYZldEe177vn2GmHihDBi8qk,718
|
|
42
42
|
cognite/neat/_graph/loaders/_base.py,sha256=Fp6uUkNfAM-SVgsLz7tyNJxJ1eeEw3h2d4Q0YyppR-Y,3991
|
|
43
|
-
cognite/neat/_graph/loaders/_rdf2dms.py,sha256=
|
|
43
|
+
cognite/neat/_graph/loaders/_rdf2dms.py,sha256=swCF3fqCiroqGTGamMhlsJL9i8UDQ3kAt410W_LGMzQ,25531
|
|
44
44
|
cognite/neat/_graph/queries/__init__.py,sha256=BgDd-037kvtWwAoGAy8eORVNMiZ5-E9sIV0txIpeaN4,50
|
|
45
45
|
cognite/neat/_graph/queries/_base.py,sha256=Y3Amuave6xdQsDE5ZXCrYLUgOMIH8BXa4n5Pc9czAF0,14926
|
|
46
46
|
cognite/neat/_graph/queries/_construct.py,sha256=CW8uHtXXACUXDj1AcEjROXtvoiuyx0CTgZ0bURY5Neo,7213
|
|
47
47
|
cognite/neat/_graph/queries/_shared.py,sha256=uhw-nY4jJvivgtj1msdCRrfTWgauU7ybSHUqqUaFOUU,5390
|
|
48
48
|
cognite/neat/_graph/transformers/__init__.py,sha256=sSrjK3_UDeesN8RzOjfNAYqyOEwjZJPUGO4uDuMLZ3s,1620
|
|
49
|
-
cognite/neat/_graph/transformers/_base.py,sha256=
|
|
50
|
-
cognite/neat/_graph/transformers/_classic_cdf.py,sha256=
|
|
49
|
+
cognite/neat/_graph/transformers/_base.py,sha256=xQWAedOumkmzp16UGjtgnctXmk_mzixqOVZ4qjd2aOQ,4196
|
|
50
|
+
cognite/neat/_graph/transformers/_classic_cdf.py,sha256=0rTpB9crJ_RHrCnegZSYFQZKf3dnfIbO3q9I0TENbug,22240
|
|
51
51
|
cognite/neat/_graph/transformers/_iodd.py,sha256=KNz1fPdKK40UaHgPMECzNZgSeU5PdPRyLdaRYdq1iug,866
|
|
52
52
|
cognite/neat/_graph/transformers/_prune_graph.py,sha256=LFiAMYFteND5LGEv9KqYJr5C9-n7S5fR6IrEdtJyRnk,12447
|
|
53
|
-
cognite/neat/_graph/transformers/_rdfpath.py,sha256=
|
|
53
|
+
cognite/neat/_graph/transformers/_rdfpath.py,sha256=_ZM8hmZvBPcgbascKzkeDwAaQFoO6edfdpddzDjuQNg,5020
|
|
54
54
|
cognite/neat/_graph/transformers/_value_type.py,sha256=ZtH1KZmOGBGpUcqj4fBRlPOMq6kADt-HMShvYPS5Org,12841
|
|
55
55
|
cognite/neat/_issues/__init__.py,sha256=OVgWivp_Br31p8zPeHjOEXs-Wj7lJU1pU1L3pfhfuqE,518
|
|
56
56
|
cognite/neat/_issues/_base.py,sha256=vV0E8cfXKlOnRXFIDZKg5QPMruELEbCaUfQ01l5dR9A,20073
|
|
@@ -62,7 +62,7 @@ cognite/neat/_issues/errors/_resources.py,sha256=YoajFF4Nxq_mhhVSZ7r3J6V-sH8cMMn
|
|
|
62
62
|
cognite/neat/_issues/errors/_workflow.py,sha256=m_Hlsvl5A1Oy7P3IROnz-4_do8_orZ1Pr1IHqsMyEys,971
|
|
63
63
|
cognite/neat/_issues/formatters.py,sha256=ziNWT_YXwovTfU8Av5iYuSLgszzJYKTawM_z67VBdlU,3331
|
|
64
64
|
cognite/neat/_issues/warnings/__init__.py,sha256=6iIa8IFb7i1TtCS6Bp2ZiwPggQPWziKv9_jsb9v1m0U,2967
|
|
65
|
-
cognite/neat/_issues/warnings/_external.py,sha256=
|
|
65
|
+
cognite/neat/_issues/warnings/_external.py,sha256=O5GSRmIsAC6HyToQ7itpFFNILWCAg0OehPTVUy8pTuc,1319
|
|
66
66
|
cognite/neat/_issues/warnings/_general.py,sha256=idZZZDbeSrDJJ1PomdmIO40QsZQNn_lWztWvMA-9q50,782
|
|
67
67
|
cognite/neat/_issues/warnings/_models.py,sha256=i4ZXr1IINKbFiVhUd8-qAt9_cXB8D3W-ng1Ime_lQTA,4376
|
|
68
68
|
cognite/neat/_issues/warnings/_properties.py,sha256=cC1mWcHm7NM2avheTh3eUZmNrnI-s5rqjGvg0-YR6NI,3146
|
|
@@ -97,7 +97,7 @@ cognite/neat/_rules/importers/_dtdl2rules/spec.py,sha256=u__f08rAiYG0FIRiWoecBN8
|
|
|
97
97
|
cognite/neat/_rules/importers/_rdf/__init__.py,sha256=x06gjJ3dXlhJRRgyXZ-HoF4vFnbPmzI2ni6wyzwtfPU,183
|
|
98
98
|
cognite/neat/_rules/importers/_rdf/_base.py,sha256=b7MM4PV4d0irLbU8nKws4ynhiIuzmvvZeeQycHVKMpQ,5682
|
|
99
99
|
cognite/neat/_rules/importers/_rdf/_imf2rules.py,sha256=M5hfWZUhoCgXFlr8QNfogNCI2pxzqqAvTJII4yA8xJw,3723
|
|
100
|
-
cognite/neat/_rules/importers/_rdf/_inference2rules.py,sha256=
|
|
100
|
+
cognite/neat/_rules/importers/_rdf/_inference2rules.py,sha256=G_-UXNOBZy0jCDpghKp7-h8Lqn5qExGR-wrE6N9t0YY,12907
|
|
101
101
|
cognite/neat/_rules/importers/_rdf/_owl2rules.py,sha256=gTMe94DC9xe8NR9KNVHTMTshg_NzVuN1v8Lz95BUshI,3392
|
|
102
102
|
cognite/neat/_rules/importers/_rdf/_shared.py,sha256=mxBoqFQfvHeLa4kbDYAd7FEcHe1fv97tcqHd9gmFeKk,5867
|
|
103
103
|
cognite/neat/_rules/importers/_spreadsheet2rules.py,sha256=2KhOSzNPmQgBb64L3aIARwmqY944LNP_9QciMnn7ecY,10911
|
|
@@ -126,24 +126,24 @@ cognite/neat/_rules/models/information/_rules_input.py,sha256=_e4ocafo4RYg0b67y2
|
|
|
126
126
|
cognite/neat/_rules/models/information/_validation.py,sha256=HbaLShj6uumu-t9I3FUI_iKQfUDiwEkuFENHgWIPfrk,10202
|
|
127
127
|
cognite/neat/_rules/models/mapping/__init__.py,sha256=T68Hf7rhiXa7b03h4RMwarAmkGnB-Bbhc1H07b2PyC4,100
|
|
128
128
|
cognite/neat/_rules/models/mapping/_classic2core.py,sha256=2IEIWTF7siB7nHTKuafG_KJbt4h1CPMdG3yDsw3Sky8,1239
|
|
129
|
-
cognite/neat/_rules/models/mapping/_classic2core.yaml,sha256=
|
|
129
|
+
cognite/neat/_rules/models/mapping/_classic2core.yaml,sha256=jodkmcTborWJmG3At16OChtnol696X6D4lgAa7aaQ78,20491
|
|
130
130
|
cognite/neat/_rules/transformers/__init__.py,sha256=jzfzRDcyz_6azteTjGFBjKz9vQTwo_slT-eNocfWZxw,993
|
|
131
131
|
cognite/neat/_rules/transformers/_base.py,sha256=sflEUKfNgCE3NNErzBMJ88VJEYB12pU1H3da40B52Yg,2556
|
|
132
132
|
cognite/neat/_rules/transformers/_converters.py,sha256=0fnQl-RXGfh9WcRjIlgCmpjYs2gZa0ya8kNQL_FnMPk,52576
|
|
133
|
-
cognite/neat/_rules/transformers/_mapping.py,sha256=
|
|
133
|
+
cognite/neat/_rules/transformers/_mapping.py,sha256=2aNJ5hcJ2hRtQAacOEC6uOTM7SdglduimepmIhRUikg,18157
|
|
134
134
|
cognite/neat/_rules/transformers/_verification.py,sha256=jKTppklUCVwVlRfYyMfnUtV8r2ACTY-AtsoMF6L-KXo,4593
|
|
135
135
|
cognite/neat/_session/__init__.py,sha256=fxQ5URVlUnmEGYyB8Baw7IDq-uYacqkigbc4b-Pr9Fw,58
|
|
136
|
-
cognite/neat/_session/_base.py,sha256=
|
|
136
|
+
cognite/neat/_session/_base.py,sha256=pOpV9Bnkci-RjGj5ouzAf-chJ0lOlSnm2MVwqQmIQ84,10002
|
|
137
137
|
cognite/neat/_session/_collector.py,sha256=SPCb1fEuOVIMHMQsVUNS7nkUUPhtUuNatnWPAIfQMcE,4093
|
|
138
138
|
cognite/neat/_session/_drop.py,sha256=kfXSgsq3xaLOAxtfjPkix9C18xulJv4Cfu4gj86nBSY,1392
|
|
139
|
-
cognite/neat/_session/_inspect.py,sha256=
|
|
140
|
-
cognite/neat/_session/_mapping.py,sha256=
|
|
141
|
-
cognite/neat/_session/_prepare.py,sha256=
|
|
142
|
-
cognite/neat/_session/_read.py,sha256=
|
|
143
|
-
cognite/neat/_session/_set.py,sha256=
|
|
139
|
+
cognite/neat/_session/_inspect.py,sha256=yls1XrJpVid2IlOs6-m2-9Hlgn0AuT_CMIASDXVEktU,8410
|
|
140
|
+
cognite/neat/_session/_mapping.py,sha256=Q_ZYd75ZFvX7tcA3m-rfzMo-zTOgwXuR-lVq0E0kBzQ,2319
|
|
141
|
+
cognite/neat/_session/_prepare.py,sha256=Qk8qq3iQA7amRZInjnwwJkPZwGs3vUfQ21c-FUERFUo,23828
|
|
142
|
+
cognite/neat/_session/_read.py,sha256=8pSL1tTACw3Z6tMU8ck486FmUK3lXKWNH1V29_oKITk,14689
|
|
143
|
+
cognite/neat/_session/_set.py,sha256=7k6oPX3n7sUViGaSZOQb4zLQIBKDFt_y5xBmC5SYYjU,1997
|
|
144
144
|
cognite/neat/_session/_show.py,sha256=bp1IddBd0vBxlWcewxL3U3zv-GsE8l7lxIE7muCvyXk,16305
|
|
145
|
-
cognite/neat/_session/_state.py,sha256=
|
|
146
|
-
cognite/neat/_session/_to.py,sha256=
|
|
145
|
+
cognite/neat/_session/_state.py,sha256=PPn1OOu-4A0AyysxcRA1Ehr5CppRoCrF52uZDvt7Z6Y,4148
|
|
146
|
+
cognite/neat/_session/_to.py,sha256=G2OpRXyowe0UMDARFzVDyjQW13-8Dm40w9y8zesPjTg,9688
|
|
147
147
|
cognite/neat/_session/_wizard.py,sha256=O8d0FA87RIoiTOD2KLyTVsxwA2-ewAG2By4JfxXSL84,1474
|
|
148
148
|
cognite/neat/_session/engine/__init__.py,sha256=D3MxUorEs6-NtgoICqtZ8PISQrjrr4dvca6n48bu_bI,120
|
|
149
149
|
cognite/neat/_session/engine/_import.py,sha256=1QxA2_EK613lXYAHKQbZyw2yjo5P9XuiX4Z6_6-WMNQ,169
|
|
@@ -152,14 +152,14 @@ cognite/neat/_session/engine/_load.py,sha256=LcoYVthQyCzLWKzRE_75_nElS-n_eMWSPAg
|
|
|
152
152
|
cognite/neat/_session/exceptions.py,sha256=dvhwF7d8AADxqEI13nZreLCPBPN_7A3KiAqlWjkpuqc,2303
|
|
153
153
|
cognite/neat/_shared.py,sha256=Ov59SWYboRRsncB_5V1ZC_BAoACfNLjo80vqE5Ru6wo,2325
|
|
154
154
|
cognite/neat/_store/__init__.py,sha256=RrvuZrMdezqun5dOrwHWSk26kampZcvqiHBqSFumkEE,130
|
|
155
|
-
cognite/neat/_store/_graph_store.py,sha256=
|
|
155
|
+
cognite/neat/_store/_graph_store.py,sha256=EjZ2kuetEE0G6I2DvMxNUXDvx-p_ZEJAOtnCOgLBocI,18745
|
|
156
156
|
cognite/neat/_store/_provenance.py,sha256=g_u6O7jo3ZekQVtc-FfJR1fTGqD9L3ipwfSEjdHB1xM,6610
|
|
157
157
|
cognite/neat/_store/_rules_store.py,sha256=mpx63LSceedrDiRDG66RW5zlsaCYzyYspDiAV_WwW5U,15335
|
|
158
158
|
cognite/neat/_store/exceptions.py,sha256=1xLtWqX-TiGcXdgayBgeNx1cipoXkye7LmTMFdpMg1s,506
|
|
159
159
|
cognite/neat/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
160
160
|
cognite/neat/_utils/auth.py,sha256=jOoPN3hKyVDalsc-AotzuuyZP9DwtYmKhYxGzbwAC_w,14412
|
|
161
161
|
cognite/neat/_utils/auxiliary.py,sha256=WFOycFgoYipvDmtGvn6ZNH3H8iNZmHamrfe2kXRb8lM,6667
|
|
162
|
-
cognite/neat/_utils/collection_.py,sha256=
|
|
162
|
+
cognite/neat/_utils/collection_.py,sha256=JvYLSR6Cf8PIKGhr8HKRvep0U-z0980jbnIM_g-5I5I,2366
|
|
163
163
|
cognite/neat/_utils/graph_transformations_report.py,sha256=rjEy4XMvOygFL4UgnYOmFW6AHxaU9IXep-dmYc5654c,1230
|
|
164
164
|
cognite/neat/_utils/io_.py,sha256=D2Mg8sOxfBoDg3fC0jBzaxO3vkXmr0QvZSgYIv6xRkM,386
|
|
165
165
|
cognite/neat/_utils/rdf_.py,sha256=b3sE3aTW9lu4gJWQJEaq_NCLbI54cc1o12utz-xbLh8,9023
|
|
@@ -170,10 +170,10 @@ cognite/neat/_utils/text.py,sha256=0IffvBIAmeGh92F4T6xiEdd-vv3B7FOGEMbfuTktO5Y,4
|
|
|
170
170
|
cognite/neat/_utils/time_.py,sha256=O30LUiDH9TdOYz8_a9pFqTtJdg8vEjC3qHCk8xZblG8,345
|
|
171
171
|
cognite/neat/_utils/upload.py,sha256=iWKmsQgw4EHLv-11NjYu7zAj5LtqTAfNa87a1kWeuaU,5727
|
|
172
172
|
cognite/neat/_utils/xml_.py,sha256=FQkq84u35MUsnKcL6nTMJ9ajtG9D5i1u4VBnhGqP2DQ,1710
|
|
173
|
-
cognite/neat/_version.py,sha256=
|
|
173
|
+
cognite/neat/_version.py,sha256=jWs7dXFPYMcNh2DTNiuA6jFiNNxY_5JWElO8H2VTVfY,46
|
|
174
174
|
cognite/neat/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
175
|
-
cognite_neat-0.
|
|
176
|
-
cognite_neat-0.
|
|
177
|
-
cognite_neat-0.
|
|
178
|
-
cognite_neat-0.
|
|
179
|
-
cognite_neat-0.
|
|
175
|
+
cognite_neat-0.106.0.dist-info/LICENSE,sha256=W8VmvFia4WHa3Gqxq1Ygrq85McUNqIGDVgtdvzT-XqA,11351
|
|
176
|
+
cognite_neat-0.106.0.dist-info/METADATA,sha256=WEAC8ydzyYveGV3mP8SFMIRV5qMWkv2QbNln_pT1hvk,5349
|
|
177
|
+
cognite_neat-0.106.0.dist-info/WHEEL,sha256=RaoafKOydTQ7I_I3JTrPCg6kUmTgtm4BornzOqyEfJ8,88
|
|
178
|
+
cognite_neat-0.106.0.dist-info/entry_points.txt,sha256=SsQlnl8SNMSSjE3acBI835JYFtsIinLSbVmHmMEXv6E,51
|
|
179
|
+
cognite_neat-0.106.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|