cognite-neat 0.127.21__py3-none-any.whl → 0.127.23__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/_data_model/validation/dms/__init__.py +6 -1
- cognite/neat/_data_model/validation/dms/_containers.py +48 -12
- cognite/neat/_data_model/validation/dms/_orchestrator.py +6 -1
- cognite/neat/_session/_html/static/deployment.js +17 -16
- cognite/neat/_session/_html/templates/deployment.html +11 -10
- cognite/neat/_session/_result.py +5 -0
- cognite/neat/_version.py +1 -1
- {cognite_neat-0.127.21.dist-info → cognite_neat-0.127.23.dist-info}/METADATA +1 -1
- {cognite_neat-0.127.21.dist-info → cognite_neat-0.127.23.dist-info}/RECORD +11 -11
- {cognite_neat-0.127.21.dist-info → cognite_neat-0.127.23.dist-info}/WHEEL +0 -0
- {cognite_neat-0.127.21.dist-info → cognite_neat-0.127.23.dist-info}/licenses/LICENSE +0 -0
|
@@ -13,7 +13,11 @@ from ._connections import (
|
|
|
13
13
|
ReverseConnectionTargetMissing,
|
|
14
14
|
)
|
|
15
15
|
from ._consistency import ViewSpaceVersionInconsistentWithDataModel
|
|
16
|
-
from ._containers import
|
|
16
|
+
from ._containers import (
|
|
17
|
+
ExternalContainerDoesNotExist,
|
|
18
|
+
ExternalContainerPropertyDoesNotExist,
|
|
19
|
+
RequiredContainerDoesNotExist,
|
|
20
|
+
)
|
|
17
21
|
from ._limits import (
|
|
18
22
|
ContainerPropertyCountIsOutOfLimits,
|
|
19
23
|
ContainerPropertyListSizeIsOutOfLimits,
|
|
@@ -36,6 +40,7 @@ __all__ = [
|
|
|
36
40
|
"DataModelViewCountIsOutOfLimits",
|
|
37
41
|
"DmsDataModelValidation",
|
|
38
42
|
"ExternalContainerDoesNotExist",
|
|
43
|
+
"ExternalContainerPropertyDoesNotExist",
|
|
39
44
|
"ImplementedViewNotExisting",
|
|
40
45
|
"RequiredContainerDoesNotExist",
|
|
41
46
|
"ReverseConnectionContainerMissing",
|
|
@@ -12,17 +12,15 @@ BASE_CODE = "NEAT-DMS-CONTAINER"
|
|
|
12
12
|
|
|
13
13
|
class ExternalContainerDoesNotExist(DataModelValidator):
|
|
14
14
|
"""
|
|
15
|
-
Validates that any container
|
|
15
|
+
Validates that any container referenced by a view property, when the
|
|
16
16
|
referenced container does not belong to the data model's space, exists in CDF.
|
|
17
17
|
|
|
18
18
|
## What it does
|
|
19
19
|
For each view property that maps to a container in a different space than the data model,
|
|
20
|
-
this validator checks that
|
|
21
|
-
- the referenced external container exists in CDF, and
|
|
22
|
-
- that the referenced container property also exists in that external container.
|
|
20
|
+
this validator checks that the referenced external container exists in CDF.
|
|
23
21
|
|
|
24
22
|
## Why is this bad?
|
|
25
|
-
If a view property references a container
|
|
23
|
+
If a view property references a container that does not exist in CDF,
|
|
26
24
|
the data model cannot be deployed. The affected view property will not function, and the
|
|
27
25
|
deployment of the entire data model will fail.
|
|
28
26
|
|
|
@@ -30,10 +28,6 @@ class ExternalContainerDoesNotExist(DataModelValidator):
|
|
|
30
28
|
View `my_space:WindTurbine` has a property `location` that maps to container
|
|
31
29
|
`other_space:WindTurbineContainer`, where `other_space` differs from `my_space`. If that
|
|
32
30
|
container does not exist in CDF, the model cannot be deployed.
|
|
33
|
-
|
|
34
|
-
Similarly, if a view property references `other_space:WindTurbineContainer` and its property
|
|
35
|
-
`gpsCoordinates`, and `gpsCoordinates` does not exist in that container in CDF, deployment
|
|
36
|
-
will also fail.
|
|
37
31
|
"""
|
|
38
32
|
|
|
39
33
|
code = f"{BASE_CODE}-001"
|
|
@@ -50,7 +44,7 @@ class ExternalContainerDoesNotExist(DataModelValidator):
|
|
|
50
44
|
continue
|
|
51
45
|
|
|
52
46
|
# Check existence of container in CDF
|
|
53
|
-
|
|
47
|
+
if property_.container not in self.cdf_resources.containers_by_reference:
|
|
54
48
|
errors.append(
|
|
55
49
|
ConsistencyError(
|
|
56
50
|
message=(
|
|
@@ -62,8 +56,50 @@ class ExternalContainerDoesNotExist(DataModelValidator):
|
|
|
62
56
|
)
|
|
63
57
|
)
|
|
64
58
|
|
|
59
|
+
return errors
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
class ExternalContainerPropertyDoesNotExist(DataModelValidator):
|
|
63
|
+
"""
|
|
64
|
+
Validates that any container property referenced by a view property, when the
|
|
65
|
+
referenced container does not belong to the data model's space, exists in CDF.
|
|
66
|
+
|
|
67
|
+
## What it does
|
|
68
|
+
For each view property that maps to a container in a different space than the data model,
|
|
69
|
+
this validator checks that the referenced container property exists in that external container in CDF.
|
|
70
|
+
This validator only runs if the external container exists in CDF.
|
|
71
|
+
|
|
72
|
+
## Why is this bad?
|
|
73
|
+
If a view property references a container property that does not exist in CDF,
|
|
74
|
+
the data model cannot be deployed. The affected view property will not function, and the
|
|
75
|
+
deployment of the entire data model will fail.
|
|
76
|
+
|
|
77
|
+
## Example
|
|
78
|
+
View `my_space:WindTurbine` has a property `location` that maps to container property
|
|
79
|
+
`gpsCoordinates` in `other_space:WindTurbineContainer`. If `gpsCoordinates` does not exist
|
|
80
|
+
in that container in CDF, deployment will fail.
|
|
81
|
+
"""
|
|
82
|
+
|
|
83
|
+
code = f"{BASE_CODE}-002"
|
|
84
|
+
|
|
85
|
+
def run(self) -> list[ConsistencyError]:
|
|
86
|
+
errors: list[ConsistencyError] = []
|
|
87
|
+
|
|
88
|
+
for view_ref, view in self.merged_views.items():
|
|
89
|
+
for property_ref, property_ in view.properties.items():
|
|
90
|
+
if not isinstance(property_, ViewCorePropertyRequest):
|
|
91
|
+
continue
|
|
92
|
+
|
|
93
|
+
if property_.container.space == self.local_resources.data_model_reference.space:
|
|
94
|
+
continue
|
|
95
|
+
|
|
96
|
+
# Only check property if container exists in CDF
|
|
97
|
+
# this check is done in ExternalContainerDoesNotExist
|
|
98
|
+
if property_.container not in self.cdf_resources.containers_by_reference:
|
|
99
|
+
continue
|
|
100
|
+
|
|
65
101
|
# Check existence of container property in CDF
|
|
66
|
-
|
|
102
|
+
if (
|
|
67
103
|
property_.container_property_identifier
|
|
68
104
|
not in self.cdf_resources.containers_by_reference[property_.container].properties
|
|
69
105
|
):
|
|
@@ -100,7 +136,7 @@ class RequiredContainerDoesNotExist(DataModelValidator):
|
|
|
100
136
|
If `windy_space:LocationContainer` does not exist in the data model or in CDF, deployment will fail.
|
|
101
137
|
"""
|
|
102
138
|
|
|
103
|
-
code = f"{BASE_CODE}-
|
|
139
|
+
code = f"{BASE_CODE}-003"
|
|
104
140
|
|
|
105
141
|
def run(self) -> list[ConsistencyError]:
|
|
106
142
|
errors: list[ConsistencyError] = []
|
|
@@ -35,7 +35,11 @@ from ._connections import (
|
|
|
35
35
|
ReverseConnectionTargetMissing,
|
|
36
36
|
)
|
|
37
37
|
from ._consistency import ViewSpaceVersionInconsistentWithDataModel
|
|
38
|
-
from ._containers import
|
|
38
|
+
from ._containers import (
|
|
39
|
+
ExternalContainerDoesNotExist,
|
|
40
|
+
ExternalContainerPropertyDoesNotExist,
|
|
41
|
+
RequiredContainerDoesNotExist,
|
|
42
|
+
)
|
|
39
43
|
from ._views import ImplementedViewNotExisting, ViewToContainerMappingNotPossible
|
|
40
44
|
|
|
41
45
|
|
|
@@ -116,6 +120,7 @@ class DmsDataModelValidation(OnSuccessIssuesChecker):
|
|
|
116
120
|
ImplementedViewNotExisting(local_resources, cdf_resources, self._modus_operandi),
|
|
117
121
|
# Containers
|
|
118
122
|
ExternalContainerDoesNotExist(local_resources, cdf_resources, self._modus_operandi),
|
|
123
|
+
ExternalContainerPropertyDoesNotExist(local_resources, cdf_resources, self._modus_operandi),
|
|
119
124
|
RequiredContainerDoesNotExist(local_resources, cdf_resources, self._modus_operandi),
|
|
120
125
|
# Consistency
|
|
121
126
|
ViewSpaceVersionInconsistentWithDataModel(local_resources, cdf_resources, self._modus_operandi),
|
|
@@ -4,12 +4,13 @@ let currentFilters = {
|
|
|
4
4
|
severity: 'all',
|
|
5
5
|
};
|
|
6
6
|
let currentSearch = '';
|
|
7
|
-
|
|
7
|
+
const storageKey = 'neat-deployment-theme-' + uniqueId;
|
|
8
|
+
let isDarkMode = localStorage.getItem(storageKey) === 'dark';
|
|
8
9
|
|
|
9
|
-
const container = document.getElementById('deploymentContainer');
|
|
10
|
-
const themeToggle = document.getElementById('themeToggle');
|
|
11
|
-
const themeIcon = document.getElementById('themeIcon');
|
|
12
|
-
const themeText = document.getElementById('themeText');
|
|
10
|
+
const container = document.getElementById('deploymentContainer-' + uniqueId);
|
|
11
|
+
const themeToggle = document.getElementById('themeToggle-' + uniqueId);
|
|
12
|
+
const themeIcon = document.getElementById('themeIcon-' + uniqueId);
|
|
13
|
+
const themeText = document.getElementById('themeText-' + uniqueId);
|
|
13
14
|
|
|
14
15
|
// Status configuration
|
|
15
16
|
const STATUS_CONFIG = {
|
|
@@ -21,9 +22,9 @@ const STATUS_CONFIG = {
|
|
|
21
22
|
|
|
22
23
|
// Initialize status badge
|
|
23
24
|
function initializeStatus() {
|
|
24
|
-
const statusBadge = document.getElementById('statusBadge');
|
|
25
|
-
const statusIcon = document.getElementById('statusIcon');
|
|
26
|
-
const statusText = document.getElementById('statusText');
|
|
25
|
+
const statusBadge = document.getElementById('statusBadge-' + uniqueId);
|
|
26
|
+
const statusIcon = document.getElementById('statusIcon-' + uniqueId);
|
|
27
|
+
const statusText = document.getElementById('statusText-' + uniqueId);
|
|
27
28
|
|
|
28
29
|
const statusConfig = STATUS_CONFIG[stats.status] || STATUS_CONFIG.pending;
|
|
29
30
|
statusIcon.textContent = statusConfig.icon;
|
|
@@ -47,12 +48,12 @@ initializeStatus();
|
|
|
47
48
|
|
|
48
49
|
themeToggle.addEventListener('click', function() {
|
|
49
50
|
isDarkMode = !isDarkMode;
|
|
50
|
-
localStorage.setItem(
|
|
51
|
+
localStorage.setItem(storageKey, isDarkMode ? 'dark' : 'light');
|
|
51
52
|
updateTheme();
|
|
52
53
|
});
|
|
53
54
|
|
|
54
55
|
function renderChanges() {
|
|
55
|
-
const listContainer = document.getElementById('deploymentList');
|
|
56
|
+
const listContainer = document.getElementById('deploymentList-' + uniqueId);
|
|
56
57
|
const filtered = changes.filter(change => {
|
|
57
58
|
const matchesChangeType = currentFilters.changeType === 'all' ||
|
|
58
59
|
change.change_type === currentFilters.changeType;
|
|
@@ -97,9 +98,9 @@ function renderChanges() {
|
|
|
97
98
|
}
|
|
98
99
|
|
|
99
100
|
// Change type filters (stat items)
|
|
100
|
-
document.querySelectorAll('.stat-item').forEach(item => {
|
|
101
|
+
document.querySelectorAll('#deploymentContainer-' + uniqueId + ' .stat-item').forEach(item => {
|
|
101
102
|
item.addEventListener('click', function() {
|
|
102
|
-
document.querySelectorAll('.stat-item').forEach(i => i.classList.remove('active'));
|
|
103
|
+
document.querySelectorAll('#deploymentContainer-' + uniqueId + ' .stat-item').forEach(i => i.classList.remove('active'));
|
|
103
104
|
this.classList.add('active');
|
|
104
105
|
currentFilters.changeType = this.dataset.filter;
|
|
105
106
|
renderChanges();
|
|
@@ -107,10 +108,10 @@ document.querySelectorAll('.stat-item').forEach(item => {
|
|
|
107
108
|
});
|
|
108
109
|
|
|
109
110
|
// Other filters
|
|
110
|
-
document.querySelectorAll('.filter-btn').forEach(btn => {
|
|
111
|
+
document.querySelectorAll('#deploymentContainer-' + uniqueId + ' .filter-btn').forEach(btn => {
|
|
111
112
|
btn.addEventListener('click', function() {
|
|
112
113
|
const filterType = this.dataset.filterType;
|
|
113
|
-
document.querySelectorAll(`[data-filter-type="${filterType}"]`).forEach(b =>
|
|
114
|
+
document.querySelectorAll('#deploymentContainer-' + uniqueId + ` [data-filter-type="${filterType}"]`).forEach(b =>
|
|
114
115
|
b.classList.remove('active')
|
|
115
116
|
);
|
|
116
117
|
this.classList.add('active');
|
|
@@ -120,13 +121,13 @@ document.querySelectorAll('.filter-btn').forEach(btn => {
|
|
|
120
121
|
});
|
|
121
122
|
|
|
122
123
|
// Search
|
|
123
|
-
document.getElementById('searchInput').addEventListener('input', function(e) {
|
|
124
|
+
document.getElementById('searchInput-' + uniqueId).addEventListener('input', function(e) {
|
|
124
125
|
currentSearch = e.target.value;
|
|
125
126
|
renderChanges();
|
|
126
127
|
});
|
|
127
128
|
|
|
128
129
|
// Export function
|
|
129
|
-
window
|
|
130
|
+
window['exportDeployment_' + uniqueId] = function() {
|
|
130
131
|
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
|
|
131
132
|
const report = {
|
|
132
133
|
status: stats.status,
|
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
{{SPECIFIC_CSS}}
|
|
4
4
|
</style>
|
|
5
5
|
|
|
6
|
-
<div class="issues-container deployment-container" id="deploymentContainer">
|
|
6
|
+
<div class="issues-container deployment-container" id="deploymentContainer-{{unique_id}}">
|
|
7
7
|
<div class="issues-header deployment-header">
|
|
8
|
-
<button class="theme-toggle" id="themeToggle">
|
|
9
|
-
<span id="themeIcon">🌙</span>
|
|
10
|
-
<span id="themeText">Dark</span>
|
|
8
|
+
<button class="theme-toggle" id="themeToggle-{{unique_id}}">
|
|
9
|
+
<span id="themeIcon-{{unique_id}}">🌙</span>
|
|
10
|
+
<span id="themeText-{{unique_id}}">Dark</span>
|
|
11
11
|
</button>
|
|
12
12
|
<h2 class="deployment-title issues-title">
|
|
13
13
|
<span>Deployment Result</span>
|
|
14
|
-
<span class="status-badge status-{{status}}" id="statusBadge">
|
|
15
|
-
<span id="statusIcon"></span>
|
|
16
|
-
<span id="statusText"></span>
|
|
14
|
+
<span class="status-badge status-{{status}}" id="statusBadge-{{unique_id}}">
|
|
15
|
+
<span id="statusIcon-{{unique_id}}"></span>
|
|
16
|
+
<span id="statusText-{{unique_id}}"></span>
|
|
17
17
|
</span>
|
|
18
18
|
</h2>
|
|
19
19
|
<div class="deployment-stats issues-stats">
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
<div class="stat-item" data-filter="unchanged">
|
|
36
36
|
<span class="stat-number">{{unchanged}}</span> Unchanged
|
|
37
37
|
</div>
|
|
38
|
-
<button class="export-btn" onclick="
|
|
38
|
+
<button class="export-btn" onclick="exportDeployment_{{unique_id}}()">Export Report</button>
|
|
39
39
|
</div>
|
|
40
40
|
</div>
|
|
41
41
|
|
|
@@ -58,17 +58,18 @@
|
|
|
58
58
|
</div>
|
|
59
59
|
|
|
60
60
|
<div class="control-group">
|
|
61
|
-
<input type="text" class="search-input" placeholder="🔍 Search resource IDs, changes..." id="searchInput">
|
|
61
|
+
<input type="text" class="search-input" placeholder="🔍 Search resource IDs, changes..." id="searchInput-{{unique_id}}">
|
|
62
62
|
</div>
|
|
63
63
|
</div>
|
|
64
64
|
|
|
65
|
-
<div class="deployment-list issues-list" id="deploymentList"></div>
|
|
65
|
+
<div class="deployment-list issues-list" id="deploymentList-{{unique_id}}"></div>
|
|
66
66
|
</div>
|
|
67
67
|
|
|
68
68
|
<script>
|
|
69
69
|
(function() {
|
|
70
70
|
const changes = {{CHANGES_JSON}};
|
|
71
71
|
const stats = {{STATS_JSON}};
|
|
72
|
+
const uniqueId = '{{unique_id}}';
|
|
72
73
|
{{SCRIPTS}}
|
|
73
74
|
})();
|
|
74
75
|
</script>
|
cognite/neat/_session/_result.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import json
|
|
2
|
+
import uuid
|
|
2
3
|
from typing import Any, get_args
|
|
3
4
|
|
|
4
5
|
from pydantic import BaseModel, Field
|
|
@@ -203,6 +204,9 @@ class Result:
|
|
|
203
204
|
|
|
204
205
|
def _build_template_vars(self, stats: DeploymentStatistics) -> dict[str, Any]:
|
|
205
206
|
"""Build template variables from statistics."""
|
|
207
|
+
# Generate unique ID for this render to avoid conflicts in Jupyter
|
|
208
|
+
unique_id = uuid.uuid4().hex[:8]
|
|
209
|
+
|
|
206
210
|
# Convert Pydantic models to dicts for JSON serialization
|
|
207
211
|
serialized_changes = [change.model_dump() for change in self._serialized_changes]
|
|
208
212
|
|
|
@@ -216,6 +220,7 @@ class Result:
|
|
|
216
220
|
"deleted": stats.by_change_type.delete,
|
|
217
221
|
"skipped": stats.by_change_type.skip,
|
|
218
222
|
"unchanged": stats.by_change_type.unchanged,
|
|
223
|
+
"unique_id": unique_id,
|
|
219
224
|
}
|
|
220
225
|
|
|
221
226
|
def _repr_html_(self) -> str:
|
cognite/neat/_version.py
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
__version__ = "0.127.
|
|
1
|
+
__version__ = "0.127.23"
|
|
2
2
|
__engine__ = "^2.0.4"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cognite-neat
|
|
3
|
-
Version: 0.127.
|
|
3
|
+
Version: 0.127.23
|
|
4
4
|
Summary: Knowledge graph transformation
|
|
5
5
|
Project-URL: Documentation, https://cognite-neat.readthedocs-hosted.com/
|
|
6
6
|
Project-URL: Homepage, https://cognite-neat.readthedocs-hosted.com/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
cognite/neat/__init__.py,sha256=Lo4DbjDOwnhCYUoAgPp5RG1fDdF7OlnomalTe7n1ydw,211
|
|
2
2
|
cognite/neat/_exceptions.py,sha256=ox-5hXpee4UJlPE7HpuEHV2C96aLbLKo-BhPDoOAzhA,1650
|
|
3
3
|
cognite/neat/_issues.py,sha256=wH1mnkrpBsHUkQMGUHFLUIQWQlfJ_qMfdF7q0d9wNhY,1871
|
|
4
|
-
cognite/neat/_version.py,sha256=
|
|
4
|
+
cognite/neat/_version.py,sha256=6DktX2aOea0YNw_rdzDYmaQ9evSmuWHFadhPA0xSc_M,47
|
|
5
5
|
cognite/neat/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
6
6
|
cognite/neat/v1.py,sha256=owqW5Mml2DSZx1AvPvwNRTBngfhBNrQ6EH-7CKL7Jp0,61
|
|
7
7
|
cognite/neat/_client/__init__.py,sha256=75Bh7eGhaN4sOt3ZcRzHl7pXaheu1z27kmTHeaI05vo,114
|
|
@@ -73,32 +73,32 @@ cognite/neat/_data_model/models/entities/_data_types.py,sha256=DfdEWGek7gODro-_0
|
|
|
73
73
|
cognite/neat/_data_model/models/entities/_identifiers.py,sha256=uBiK4ot3V0b_LGXuJ7bfha6AEcFI3p2letr1z2iSvig,1923
|
|
74
74
|
cognite/neat/_data_model/models/entities/_parser.py,sha256=zef_pSDZYMZrJl4IKreFDR577KutfhtN1xpH3Ayjt2o,7669
|
|
75
75
|
cognite/neat/_data_model/validation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
76
|
-
cognite/neat/_data_model/validation/dms/__init__.py,sha256=
|
|
76
|
+
cognite/neat/_data_model/validation/dms/__init__.py,sha256=qK9zBaXHj7x9k7geA1fRk6ewRB_hGm7bcq69WlDyffc,2357
|
|
77
77
|
cognite/neat/_data_model/validation/dms/_ai_readiness.py,sha256=SI46roGc2pbZQwY-6tuSWyS7uMbg2mIzXcVA3NPRCk4,6742
|
|
78
78
|
cognite/neat/_data_model/validation/dms/_base.py,sha256=y95k6HWGxX_EnnyuV2ooftgiyC-fwJaaHW28oEf9oBs,13113
|
|
79
79
|
cognite/neat/_data_model/validation/dms/_connections.py,sha256=goIcsGV4yYb-d9ltXg4eM5qxt8iErIIxtkiKJXZUYyM,26937
|
|
80
80
|
cognite/neat/_data_model/validation/dms/_consistency.py,sha256=K0mfAwwpW6zQXGDEldrA7Lgqk-giV_Y-gUKyb8Dw47k,2445
|
|
81
|
-
cognite/neat/_data_model/validation/dms/_containers.py,sha256=
|
|
81
|
+
cognite/neat/_data_model/validation/dms/_containers.py,sha256=Jqwu2JH36eyqA7xt6_UaLEl-zhZi4itI1dmb73GpJMY,7431
|
|
82
82
|
cognite/neat/_data_model/validation/dms/_limits.py,sha256=LVxF1qmeEdUVVAPmywCgxWJ9BR7Ai6nI4X1ylJ7pv8I,15982
|
|
83
|
-
cognite/neat/_data_model/validation/dms/_orchestrator.py,sha256=
|
|
83
|
+
cognite/neat/_data_model/validation/dms/_orchestrator.py,sha256=4_KHtfJcuXSSIP7sazhBzM4_nSEz0d77CrsX5rmShOc,10337
|
|
84
84
|
cognite/neat/_data_model/validation/dms/_views.py,sha256=3bHEEbFKTR_QH_tiJYHppQsZ9ruApv-kdyfehEjIlCU,4198
|
|
85
85
|
cognite/neat/_session/__init__.py,sha256=owqW5Mml2DSZx1AvPvwNRTBngfhBNrQ6EH-7CKL7Jp0,61
|
|
86
86
|
cognite/neat/_session/_issues.py,sha256=E8UQeSJURg2dm4MF1pfD9dp-heSRT7pgQZgKlD1-FGs,2723
|
|
87
87
|
cognite/neat/_session/_opt.py,sha256=QcVK08JMmVzJpD0GKHelbljMOQi6CMD1w-maQOlbyZQ,1350
|
|
88
88
|
cognite/neat/_session/_physical.py,sha256=VyMvvPyN9khR_26rMS0kVuZg23k5c8Hfs7XDeMrkF_w,10526
|
|
89
|
-
cognite/neat/_session/_result.py,sha256=
|
|
89
|
+
cognite/neat/_session/_result.py,sha256=po2X4s-Tioe0GQAGCfK862hKXNRX5YjJZsEzNcTC8nI,7879
|
|
90
90
|
cognite/neat/_session/_session.py,sha256=rezw1MEMN8DPA6waULt5-mdeMuwq3ZNnSb1CSsKM0ko,2584
|
|
91
91
|
cognite/neat/_session/_wrappers.py,sha256=9t_MnJ0Sw_v-f6oTIh8dtAT-3oEbqumGuND97aPCC3M,3581
|
|
92
92
|
cognite/neat/_session/_html/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
93
93
|
cognite/neat/_session/_html/_render.py,sha256=fD8iee4ql50CrHGH41SSh9Tw1lM0tHt-NF0OnnxHosg,1193
|
|
94
94
|
cognite/neat/_session/_html/static/__init__.py,sha256=ZLQFJMITBgbiyTRaVbFAm1l-Dhr5pXKKsfY8jjD3ZhY,305
|
|
95
95
|
cognite/neat/_session/_html/static/deployment.css,sha256=wRv2G0NKIxSq4kyOqd3ajZY60KeT4D6-D3lG-TmzURY,4894
|
|
96
|
-
cognite/neat/_session/_html/static/deployment.js,sha256=
|
|
96
|
+
cognite/neat/_session/_html/static/deployment.js,sha256=0fNAIYYtDJR6RhvZvnRSN6UvgvnWTXb_UFUSDxsI9JU,5795
|
|
97
97
|
cognite/neat/_session/_html/static/issues.css,sha256=Egvqo2cnY8FKTtZp_v3rTWcIgb1vTJvToNCJJovWm70,3824
|
|
98
98
|
cognite/neat/_session/_html/static/issues.js,sha256=NHx_iAsZTvpZjOoFsxFU_sxqjF4-F4EdHRmoc2DjpIE,6348
|
|
99
99
|
cognite/neat/_session/_html/static/shared.css,sha256=uUm5fqK1zrMBWCuAWdUoBRaAj9AO611hUxuGvxMzbzc,4190
|
|
100
100
|
cognite/neat/_session/_html/templates/__init__.py,sha256=hgufJuBxUZ2nLCMTCxGixmk5ztZF38HzPcvtBkWJwxw,128
|
|
101
|
-
cognite/neat/_session/_html/templates/deployment.html,sha256=
|
|
101
|
+
cognite/neat/_session/_html/templates/deployment.html,sha256=rhqcBI5no8h0BEiwTIQy5A3wvBygytCUolpc50yFiTE,3487
|
|
102
102
|
cognite/neat/_session/_html/templates/issues.html,sha256=k9Ml3LLeWGhpMfqSoCl6QuNRRy__E6Sa5S_I1Kc33NU,1659
|
|
103
103
|
cognite/neat/_session/_usage_analytics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
104
104
|
cognite/neat/_session/_usage_analytics/_collector.py,sha256=XRyeIW7Att3pIgLpNxQ2joGdIDijfgrPfX7G13OKz-o,4786
|
|
@@ -312,7 +312,7 @@ cognite/neat/v0/session/engine/__init__.py,sha256=D3MxUorEs6-NtgoICqtZ8PISQrjrr4
|
|
|
312
312
|
cognite/neat/v0/session/engine/_import.py,sha256=1QxA2_EK613lXYAHKQbZyw2yjo5P9XuiX4Z6_6-WMNQ,169
|
|
313
313
|
cognite/neat/v0/session/engine/_interface.py,sha256=3W-cYr493c_mW3P5O6MKN1xEQg3cA7NHR_ev3zdF9Vk,533
|
|
314
314
|
cognite/neat/v0/session/engine/_load.py,sha256=u0x7vuQCRoNcPt25KJBJRn8sJabonYK4vtSZpiTdP4k,5201
|
|
315
|
-
cognite_neat-0.127.
|
|
316
|
-
cognite_neat-0.127.
|
|
317
|
-
cognite_neat-0.127.
|
|
318
|
-
cognite_neat-0.127.
|
|
315
|
+
cognite_neat-0.127.23.dist-info/METADATA,sha256=Ax86njFaCOT2zngYvUBqbGlWnTbu744tClzc7erssFs,9150
|
|
316
|
+
cognite_neat-0.127.23.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
317
|
+
cognite_neat-0.127.23.dist-info/licenses/LICENSE,sha256=W8VmvFia4WHa3Gqxq1Ygrq85McUNqIGDVgtdvzT-XqA,11351
|
|
318
|
+
cognite_neat-0.127.23.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|