cognite-neat 0.122.2__py3-none-any.whl → 0.123.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.

Potentially problematic release.


This version of cognite-neat might be problematic. Click here for more details.

cognite/neat/_version.py CHANGED
@@ -1,2 +1,2 @@
1
- __version__ = "0.122.2"
1
+ __version__ = "0.123.0"
2
2
  __engine__ = "^2.0.4"
@@ -42,6 +42,7 @@ class EntityTypes(StrEnum):
42
42
  version = "version"
43
43
  prefix = "prefix"
44
44
  space = "space"
45
+ container_index = "container_index"
45
46
 
46
47
 
47
48
  def get_reserved_words(
@@ -47,6 +47,7 @@ from cognite.neat.core._data_model.models.data_types import DataType, Enum, Stri
47
47
  from cognite.neat.core._data_model.models.entities import (
48
48
  ConceptEntity,
49
49
  ContainerEntity,
50
+ ContainerIndexEntity,
50
51
  DMSNodeEntity,
51
52
  EdgeEntity,
52
53
  PhysicalUnknownEntity,
@@ -68,6 +69,7 @@ from cognite.neat.core._issues import (
68
69
  catch_issues,
69
70
  )
70
71
  from cognite.neat.core._issues.errors import (
72
+ FileNotFoundNeatError,
71
73
  FileTypeUnexpectedError,
72
74
  NeatValueError,
73
75
  PropertyTypeNotSupportedError,
@@ -254,7 +256,7 @@ class DMSImporter(BaseImporter[UnverifiedPhysicalDataModel]):
254
256
  elif path.is_dir():
255
257
  return cls.from_directory(path, client)
256
258
  else:
257
- raise NeatValueError(f"Unsupported YAML format: {format}")
259
+ raise FileNotFoundNeatError(path)
258
260
 
259
261
  def to_data_model(self) -> ImportedDataModel[UnverifiedPhysicalDataModel]:
260
262
  if self.issue_list.has_errors:
@@ -384,7 +386,9 @@ class DMSImporter(BaseImporter[UnverifiedPhysicalDataModel]):
384
386
  ),
385
387
  view=str(view_entity),
386
388
  view_property=prop_id,
387
- index=self._get_index(prop, prop_id),
389
+ # MyPy fails to understand that list[ContainerIndexEntity] | None is valid even though
390
+ # the index expects str | list[ContainerIndexEntity | str] | None.
391
+ index=self._get_index(prop, prop_id), # type: ignore[arg-type]
388
392
  constraint=self._get_constraint(prop, prop_id),
389
393
  )
390
394
 
@@ -547,14 +551,22 @@ class DMSImporter(BaseImporter[UnverifiedPhysicalDataModel]):
547
551
  return str(default)
548
552
  return None
549
553
 
550
- def _get_index(self, prop: ViewPropertyApply, prop_id: str) -> list[str] | None:
554
+ def _get_index(self, prop: ViewPropertyApply, prop_id: str) -> list[ContainerIndexEntity] | None:
551
555
  if not isinstance(prop, dm.MappedPropertyApply):
552
556
  return None
553
557
  container = self._all_containers_by_id[prop.container]
554
- index: list[str] = []
558
+ index: list[ContainerIndexEntity] = []
555
559
  for index_name, index_obj in (container.indexes or {}).items():
556
- if isinstance(index_obj, BTreeIndex | InvertedIndex) and prop_id in index_obj.properties:
557
- index.append(index_name)
560
+ if isinstance(index_obj, BTreeIndex) and prop_id in index_obj.properties:
561
+ order = None if len(index_obj.properties) == 1 else index_obj.properties.index(prop_id)
562
+ index.append(
563
+ ContainerIndexEntity(
564
+ prefix="btree", suffix=index_name, cursorable=index_obj.cursorable, order=order
565
+ )
566
+ )
567
+ elif isinstance(index_obj, InvertedIndex) and prop_id in index_obj.properties:
568
+ order = None if len(index_obj.properties) == 1 else index_obj.properties.index(prop_id)
569
+ index.append(ContainerIndexEntity(prefix="inverted", suffix=index_name, order=order))
558
570
  return index or None
559
571
 
560
572
  def _get_constraint(self, prop: ViewPropertyApply, prop_id: str) -> list[str] | None:
@@ -7,6 +7,7 @@ from ._single_value import (
7
7
  ConceptEntity,
8
8
  ConceptualEntity,
9
9
  ContainerEntity,
10
+ ContainerIndexEntity,
10
11
  DataModelEntity,
11
12
  DMSNodeEntity,
12
13
  DMSVersionedEntity,
@@ -33,6 +34,7 @@ __all__ = [
33
34
  "ConceptualEntity",
34
35
  "ContainerEntity",
35
36
  "ContainerEntityList",
37
+ "ContainerIndexEntity",
36
38
  "DMSFilter",
37
39
  "DMSNodeEntity",
38
40
  "DMSVersionedEntity",
@@ -172,8 +172,8 @@ class ConceptualEntity(BaseModel, extra="ignore"):
172
172
  extra: tuple[str, ...] = tuple(
173
173
  [
174
174
  str(v or "")
175
- for field_name in self.model_fields
176
- if isinstance(v := getattr(self, field_name), str | None) and field_name not in {"prefix", "suffix"}
175
+ for field_name in self.model_fields.keys()
176
+ if (v := getattr(self, field_name)) and field_name not in {"prefix", "suffix"}
177
177
  ]
178
178
  )
179
179
  if isinstance(self.prefix, _UndefinedType):
@@ -225,8 +225,8 @@ class ConceptualEntity(BaseModel, extra="ignore"):
225
225
  continue
226
226
  if model_dump[key] == value:
227
227
  to_delete.append(key)
228
- elif isinstance(self, EdgeEntity):
229
- # Exception is edge entity, then, we remove all the defaults we can.
228
+ elif isinstance(self, EdgeEntity | ContainerIndexEntity):
229
+ # Exception is edge and container index entities, then we remove all the defaults we can.
230
230
  continue
231
231
  else:
232
232
  # Not all fields are default. We should not remove any of them.
@@ -549,3 +549,23 @@ class ReferenceEntity(ConceptEntity):
549
549
 
550
550
  def as_concept_entity(self) -> ConceptEntity:
551
551
  return ConceptEntity(prefix=self.prefix, suffix=self.suffix, version=self.version)
552
+
553
+
554
+ class ContainerIndexEntity(PhysicalEntity[None]):
555
+ type_: ClassVar[EntityTypes] = EntityTypes.container_index
556
+ prefix: _UndefinedType | Literal["btree", "inverted"] = Undefined # type: ignore[assignment]
557
+ suffix: str
558
+ order: int | None = Field(None, description="The order of the index. None indicates the value is not set.")
559
+ cursorable: bool | None = Field(
560
+ None, description="Whether the index is cursorable. None indicates the value is not set."
561
+ )
562
+ by_space: bool | None = Field(
563
+ None, alias="bySpace", description="Whether the index is by space. None indicates the value is not set."
564
+ )
565
+
566
+ def as_id(self) -> None:
567
+ return None
568
+
569
+ @classmethod
570
+ def from_id(cls, id: None) -> Self:
571
+ return cls(suffix="dummy")
@@ -10,6 +10,7 @@ from ._single_value import (
10
10
  AssetEntity,
11
11
  ConceptEntity,
12
12
  ContainerEntity,
13
+ ContainerIndexEntity,
13
14
  RelationshipEntity,
14
15
  ViewEntity,
15
16
  )
@@ -66,6 +67,16 @@ ContainerEntityList = Annotated[
66
67
  BeforeValidator(_split_str),
67
68
  ]
68
69
 
70
+ ContainerIndexListType = Annotated[
71
+ list[ContainerIndexEntity],
72
+ BeforeValidator(_split_str),
73
+ PlainSerializer(
74
+ _join_str,
75
+ return_type=str,
76
+ when_used="unless-none",
77
+ ),
78
+ ]
79
+
69
80
  ViewEntityList = Annotated[
70
81
  list[ViewEntity],
71
82
  BeforeValidator(_split_str),
@@ -4,7 +4,7 @@ from collections.abc import Collection, Hashable, Sequence
4
4
  from typing import Any, cast
5
5
 
6
6
  from cognite.client.data_classes import data_modeling as dm
7
- from cognite.client.data_classes.data_modeling.containers import BTreeIndex
7
+ from cognite.client.data_classes.data_modeling.containers import BTreeIndex, InvertedIndex
8
8
  from cognite.client.data_classes.data_modeling.data_types import EnumValue as DMSEnumValue
9
9
  from cognite.client.data_classes.data_modeling.data_types import ListablePropertyType
10
10
  from cognite.client.data_classes.data_modeling.views import (
@@ -29,6 +29,7 @@ from cognite.neat.core._data_model.models.data_types import DataType, Double, En
29
29
  from cognite.neat.core._data_model.models.entities import (
30
30
  ConceptEntity,
31
31
  ContainerEntity,
32
+ ContainerIndexEntity,
32
33
  DMSFilter,
33
34
  DMSNodeEntity,
34
35
  EdgeEntity,
@@ -36,6 +37,7 @@ from cognite.neat.core._data_model.models.entities import (
36
37
  NodeTypeFilter,
37
38
  PhysicalUnknownEntity,
38
39
  ReverseConnectionEntity,
40
+ Undefined,
39
41
  UnitEntity,
40
42
  ViewEntity,
41
43
  )
@@ -380,14 +382,25 @@ class _DMSExporter:
380
382
  container.constraints = container.constraints or {}
381
383
  container.constraints[constraint_name] = dm.UniquenessConstraint(properties=list(properties))
382
384
 
383
- index_properties: dict[str, set[str]] = defaultdict(set)
385
+ index_properties: dict[tuple[str, bool], list[tuple[str, ContainerIndexEntity]]] = defaultdict(list)
384
386
  for prop in container_properties:
385
387
  if prop.container_property is not None:
386
388
  for index in prop.index or []:
387
- index_properties[index].add(prop.container_property)
388
- for index_name, properties in index_properties.items():
389
+ index_properties[(index.suffix, prop.is_list or False)].append((prop.container_property, index))
390
+ for (index_name, is_list), properties in index_properties.items():
389
391
  container.indexes = container.indexes or {}
390
- container.indexes[index_name] = BTreeIndex(properties=list(properties))
392
+ index_property_list = [prop_id for prop_id, _ in sorted(properties, key=lambda x: x[1].order or 0)]
393
+ index_entity = properties[0][1]
394
+ if index_entity.prefix == "inverted" or (index_entity.prefix is Undefined and is_list):
395
+ container.indexes[index_name] = InvertedIndex(properties=index_property_list)
396
+ elif index_entity.prefix == "btree" or (index_entity.prefix is Undefined and not is_list):
397
+ container.indexes[index_name] = BTreeIndex(
398
+ properties=index_property_list, cursorable=index_entity.cursorable or False
399
+ )
400
+ else:
401
+ raise NeatValueError(
402
+ f"Invalid index prefix {index_entity.prefix!r} in {container_id}.{index_entity.suffix!r}"
403
+ )
391
404
 
392
405
  # We might drop containers we convert direct relations of list into multi-edge connections
393
406
  # which do not have a container.
@@ -21,6 +21,7 @@ from cognite.neat.core._data_model.models._base_unverified import (
21
21
  from cognite.neat.core._data_model.models.data_types import DataType
22
22
  from cognite.neat.core._data_model.models.entities import (
23
23
  ContainerEntity,
24
+ ContainerIndexEntity,
24
25
  DMSNodeEntity,
25
26
  EdgeEntity,
26
27
  PhysicalUnknownEntity,
@@ -135,7 +136,7 @@ class UnverifiedPhysicalProperty(UnverifiedComponent[PhysicalProperty]):
135
136
  default: str | int | float | bool | dict | None = None
136
137
  container: str | None = None
137
138
  container_property: str | None = None
138
- index: str | list[str] | None = None
139
+ index: str | list[str | ContainerIndexEntity] | ContainerIndexEntity | None = None
139
140
  constraint: str | list[str] | None = None
140
141
  neatId: str | URIRef | None = None
141
142
  conceptual: str | URIRef | None = None
@@ -167,6 +168,26 @@ class UnverifiedPhysicalProperty(UnverifiedComponent[PhysicalProperty]):
167
168
  if self.container
168
169
  else None
169
170
  )
171
+ if isinstance(self.index, ContainerIndexEntity) or (isinstance(self.index, str) and "," not in self.index):
172
+ output["Index"] = [ContainerIndexEntity.load(self.index)]
173
+ elif isinstance(self.index, str) and "," in self.index:
174
+ output["Index"] = [
175
+ ContainerIndexEntity.load(index.strip()) for index in self.index.split(",") if index.strip()
176
+ ]
177
+ elif isinstance(self.index, list):
178
+ index_list: list[ContainerIndexEntity | PhysicalUnknownEntity] = []
179
+ for index in self.index:
180
+ if isinstance(index, ContainerIndexEntity):
181
+ index_list.append(index)
182
+ elif isinstance(index, str) and "," in index:
183
+ index_list.extend(
184
+ [ContainerIndexEntity.load(idx.strip()) for idx in index.split(",") if idx.strip()]
185
+ )
186
+ elif isinstance(index, str):
187
+ index_list.append(ContainerIndexEntity.load(index.strip()))
188
+ else:
189
+ raise TypeError(f"Unexpected type for index: {type(index)}")
190
+ output["Index"] = index_list
170
191
  return output
171
192
 
172
193
  def referenced_view(self, default_space: str, default_version: str) -> ViewEntity:
@@ -391,7 +391,9 @@ class PhysicalValidation:
391
391
  "rows",
392
392
  )
393
393
  )
394
- index_definitions = {",".join(prop.index) for _, prop in properties if prop.index is not None}
394
+ index_definitions = {
395
+ ",".join([index.suffix for index in prop.index]) for _, prop in properties if prop.index is not None
396
+ }
395
397
  if len(index_definitions) > 1:
396
398
  errors.append(
397
399
  PropertyDefinitionDuplicatedError[dm.ContainerId](
@@ -32,7 +32,6 @@ from cognite.neat.core._data_model.models._types import (
32
32
  from cognite.neat.core._data_model.models.data_types import DataType
33
33
  from cognite.neat.core._data_model.models.entities import (
34
34
  ConceptualEntity,
35
- ContainerEntityList,
36
35
  DMSNodeEntity,
37
36
  EdgeEntity,
38
37
  HasDataFilter,
@@ -44,6 +43,7 @@ from cognite.neat.core._data_model.models.entities import (
44
43
  ViewEntity,
45
44
  ViewEntityList,
46
45
  )
46
+ from cognite.neat.core._data_model.models.entities._types import ContainerEntityList, ContainerIndexListType
47
47
  from cognite.neat.core._issues.errors import NeatValueError
48
48
  from cognite.neat.core._issues.warnings._general import NeatValueWarning
49
49
 
@@ -142,7 +142,7 @@ class PhysicalProperty(SheetRow):
142
142
  alias="Container Property",
143
143
  description="Specifies property in the container where the property is stored. Only applies to primitive type.",
144
144
  )
145
- index: StrListType | None = Field(
145
+ index: ContainerIndexListType | None = Field(
146
146
  None,
147
147
  alias="Index",
148
148
  description="The names of the indexes (comma separated) that should be created for the property.",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cognite-neat
3
- Version: 0.122.2
3
+ Version: 0.123.0
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,5 +1,5 @@
1
1
  cognite/neat/__init__.py,sha256=12StS1dzH9_MElqxGvLWrNsxCJl9Hv8A2a9D0E5OD_U,193
2
- cognite/neat/_version.py,sha256=_JrRkMfRe7BY5PWfWWx60wpSBwtlRhSaJ8zbSR9WYtc,46
2
+ cognite/neat/_version.py,sha256=qbLJI7CdcI5fE3rfND9BwqPVn9vL_dxL2ZEGKZdjavA,46
3
3
  cognite/neat/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  cognite/neat/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  cognite/neat/core/_config.py,sha256=WT1BS8uADcFvGoUYOOfwFOVq_VBl472TisdoA3wLick,280
@@ -19,7 +19,7 @@ cognite/neat/core/_client/data_classes/neat_sequence.py,sha256=QZWSfWnwk6KlYJvsI
19
19
  cognite/neat/core/_client/data_classes/schema.py,sha256=SpkBGbC2SUJG38Ixf1vYJINI66i_OZaT03q4XKRtK54,25067
20
20
  cognite/neat/core/_client/data_classes/statistics.py,sha256=GU-u41cOTig0Y5pYhW5KqzCsuAUIX9tOmdizMEveYuw,4487
21
21
  cognite/neat/core/_data_model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- cognite/neat/core/_data_model/_constants.py,sha256=RAQMEt0zuXKlnz6tKlvW97NDaMG6ycwKV929C_fVOAY,6018
22
+ cognite/neat/core/_data_model/_constants.py,sha256=h6jfkE4tr-POO7C_L4SxcffbwHj53mb-CEo08l8RcwY,6058
23
23
  cognite/neat/core/_data_model/_shared.py,sha256=gLEEMofI9prZLRNjHpwQe0uX9WoKd5qUt5pT1i_KAYo,2072
24
24
  cognite/neat/core/_data_model/analysis/__init__.py,sha256=v3hSfz7AEEqcmdjL71I09tP8Hl-gPZYOiDYMp_CW4vg,70
25
25
  cognite/neat/core/_data_model/analysis/_base.py,sha256=baqgY-66zOUxw8s-PA1KGAOs2R1gJDAo2UWWc8LlHGU,24257
@@ -38,7 +38,7 @@ cognite/neat/core/_data_model/importers/__init__.py,sha256=ipImLDSse0vAHX4AWvtPI
38
38
  cognite/neat/core/_data_model/importers/_base.py,sha256=pKe2OK86Wdj6CTj5bUgjY33ejZhRfD2eJbjcCapHD58,2013
39
39
  cognite/neat/core/_data_model/importers/_base_file_reader.py,sha256=m7CwMujEybYMfHWbTQOb7wBvLl2X1TmROkPelJMSaDA,1621
40
40
  cognite/neat/core/_data_model/importers/_dict2data_model.py,sha256=-1zmo8JkxJ9qiWuC7sUH7oSlpnPPKTMxZtm4WrRPO5A,4709
41
- cognite/neat/core/_data_model/importers/_dms2data_model.py,sha256=fbPf1IA5wAZtosSYe8sd4Tnur3w41TTJz2qRbTHX-d0,28306
41
+ cognite/neat/core/_data_model/importers/_dms2data_model.py,sha256=1luEyqEu51rNcFcEh-MjTnUY_5mnQU0761MDVHOuteo,29132
42
42
  cognite/neat/core/_data_model/importers/_spreadsheet2data_model.py,sha256=2QqrxQ9AI3LT9toH_gryIR52UecMsR-v44ljXedDCp4,11972
43
43
  cognite/neat/core/_data_model/importers/_dtdl2data_model/__init__.py,sha256=CNR-sUihs2mnR1bPMKs3j3L4ds3vFTsrl6YycExZTfU,68
44
44
  cognite/neat/core/_data_model/importers/_dtdl2data_model/_unit_lookup.py,sha256=wW4saKva61Q_i17guY0dc4OseJDQfqHy_QZBtm0OD6g,12134
@@ -60,21 +60,21 @@ cognite/neat/core/_data_model/models/conceptual/__init__.py,sha256=9A6myEV8s0-Lq
60
60
  cognite/neat/core/_data_model/models/conceptual/_unverified.py,sha256=apisgtXMb50dOs7rxZ-jcCW4JqxCdAWGtsYtRe3ssfs,6282
61
61
  cognite/neat/core/_data_model/models/conceptual/_validation.py,sha256=I55RJC3EfQjVkRSYzK6M3UK9aFT-TSIsaWD8JAVzwPo,13000
62
62
  cognite/neat/core/_data_model/models/conceptual/_verified.py,sha256=e5Qs7n1np4g6inHQwuLUk2rCwgLf129je54xLnzENpw,13659
63
- cognite/neat/core/_data_model/models/entities/__init__.py,sha256=iQqfJay1j3PgSlZbW4X6nKReGxy3f3BayymqSBQJ6jo,1513
63
+ cognite/neat/core/_data_model/models/entities/__init__.py,sha256=UsW-_6fwd-TW0WcnShPKf40h75l1elVn80VurUwRAic,1567
64
64
  cognite/neat/core/_data_model/models/entities/_constants.py,sha256=GXRzVfArwxF3C67VCkzy0JWTZRkRJUYXBQaaecrqcWc,351
65
65
  cognite/neat/core/_data_model/models/entities/_loaders.py,sha256=PkrVtGlZWYLvAVIRABrgVSgkMvJYpBqdrHBfz-H0Ut8,2783
66
66
  cognite/neat/core/_data_model/models/entities/_multi_value.py,sha256=4507L7dr_CL4vo1En6EyMiHhUDOWPTDVR1aYZns6S38,2792
67
- cognite/neat/core/_data_model/models/entities/_single_value.py,sha256=DRASB2OHj7evMYKNvO1BloKIIfLC2enPjY5PsZ-4ByU,20226
68
- cognite/neat/core/_data_model/models/entities/_types.py,sha256=AJti5ZtK4CUmsNczkqrIECQmPgO0lFVAmZHbVkChIPk,1948
67
+ cognite/neat/core/_data_model/models/entities/_single_value.py,sha256=DO_u8dLLD8xabVZFXilZELv_Fzs6dcMs6msoszw32iY,21034
68
+ cognite/neat/core/_data_model/models/entities/_types.py,sha256=MqrCovqI_nvpMB4UqiUk4eUlKANvr8P7wr8k3y8lXlQ,2183
69
69
  cognite/neat/core/_data_model/models/entities/_wrapped.py,sha256=hOvdyxCNFgv1UdfaasviKnbEN4yN09Iip0ggQiaXgB4,7993
70
70
  cognite/neat/core/_data_model/models/mapping/__init__.py,sha256=T68Hf7rhiXa7b03h4RMwarAmkGnB-Bbhc1H07b2PyC4,100
71
71
  cognite/neat/core/_data_model/models/mapping/_classic2core.py,sha256=FRDpYP_CX-CfptdFCZmfqsbKCYQ9BQPUbKoifTICe30,1415
72
72
  cognite/neat/core/_data_model/models/mapping/_classic2core.yaml,sha256=ei-nuivNWVW9HmvzDBKIPF6ZdgaMq64XHw_rKm0CMxg,22584
73
73
  cognite/neat/core/_data_model/models/physical/__init__.py,sha256=ONE_xLw1cxfw88rICG_RtbjCYUZm8yS2kBQ4Di3EGnA,987
74
- cognite/neat/core/_data_model/models/physical/_exporter.py,sha256=D2g2eXabydUfQCjuDNkQ83ZSijTdynzwIXBDVQVIWdE,29157
75
- cognite/neat/core/_data_model/models/physical/_unverified.py,sha256=vDA6yNl0nwA3EudobqhHbr6e2vQZ13EWCAlyqXG03oA,16971
76
- cognite/neat/core/_data_model/models/physical/_validation.py,sha256=i0YHDE2c09OeuTbICqb8mqNYaEJk2JWvxPnZeYAWdPE,33121
77
- cognite/neat/core/_data_model/models/physical/_verified.py,sha256=UsfzuIyYRsdUPK9wJM9Wxs4VkD4GiGUQAjRjgDCmIHw,24237
74
+ cognite/neat/core/_data_model/models/physical/_exporter.py,sha256=WHYjWyiKpA7GWO2_vPN3AphpDr8OjzxI5JMyO7b3sYQ,30083
75
+ cognite/neat/core/_data_model/models/physical/_unverified.py,sha256=IP6dKJHS4itpOzUd893G6f8oFiTEUnkJc7bx6_RL9A4,18213
76
+ cognite/neat/core/_data_model/models/physical/_validation.py,sha256=uPzbcJmFj0g9ATVq86rUsmSGOfQ0iBeIevoKh1lCu98,33179
77
+ cognite/neat/core/_data_model/models/physical/_verified.py,sha256=Fvy0pOYk03nHDlRz_SECg9ALW3y0LaCZG6XNBduCi9Q,24332
78
78
  cognite/neat/core/_data_model/transformers/__init__.py,sha256=_FPmPh0kA68SXR4arKKNmtWQ8B2-wSwWQeGAWnjoJAQ,1788
79
79
  cognite/neat/core/_data_model/transformers/_base.py,sha256=7adUBJgDkXgRq_h7l1q2VsLQo3lE7-xmzmHdcF4QHq8,3133
80
80
  cognite/neat/core/_data_model/transformers/_converters.py,sha256=OazYC7DgAXXEvxdiaPfJSe2ZNkYn2mRqWhtvtvWK59g,111575
@@ -184,7 +184,7 @@ cognite/neat/session/engine/__init__.py,sha256=D3MxUorEs6-NtgoICqtZ8PISQrjrr4dvc
184
184
  cognite/neat/session/engine/_import.py,sha256=1QxA2_EK613lXYAHKQbZyw2yjo5P9XuiX4Z6_6-WMNQ,169
185
185
  cognite/neat/session/engine/_interface.py,sha256=3W-cYr493c_mW3P5O6MKN1xEQg3cA7NHR_ev3zdF9Vk,533
186
186
  cognite/neat/session/engine/_load.py,sha256=g52uYakQM03VqHt_RDHtpHso1-mFFifH5M4T2ScuH8A,5198
187
- cognite_neat-0.122.2.dist-info/METADATA,sha256=_QX6C2C4GLJTwqISRsJcrNIFpPZbxTXi6OLbwc_hDhg,9171
188
- cognite_neat-0.122.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
189
- cognite_neat-0.122.2.dist-info/licenses/LICENSE,sha256=W8VmvFia4WHa3Gqxq1Ygrq85McUNqIGDVgtdvzT-XqA,11351
190
- cognite_neat-0.122.2.dist-info/RECORD,,
187
+ cognite_neat-0.123.0.dist-info/METADATA,sha256=Vp8U9epVKAtAO58ylJPfHRW2VYeSCWLmNIXPPCaXNh0,9171
188
+ cognite_neat-0.123.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
189
+ cognite_neat-0.123.0.dist-info/licenses/LICENSE,sha256=W8VmvFia4WHa3Gqxq1Ygrq85McUNqIGDVgtdvzT-XqA,11351
190
+ cognite_neat-0.123.0.dist-info/RECORD,,