cognite-neat 0.85.8__py3-none-any.whl → 0.85.9__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 +1 @@
1
- __version__ = "0.85.8"
1
+ __version__ = "0.85.9"
@@ -41,7 +41,7 @@ class AssetsExtractor(BaseExtractor):
41
41
  to_type: Callable[[Asset], str | None] | None = None,
42
42
  total: int | None = None,
43
43
  limit: int | None = None,
44
- unpack_metadata: bool = False,
44
+ unpack_metadata: bool = True,
45
45
  ):
46
46
  self.namespace = namespace or DEFAULT_NAMESPACE
47
47
  self.assets = assets
@@ -58,7 +58,7 @@ class AssetsExtractor(BaseExtractor):
58
58
  namespace: Namespace | None = None,
59
59
  to_type: Callable[[Asset], str | None] | None = None,
60
60
  limit: int | None = None,
61
- unpack_metadata: bool = False,
61
+ unpack_metadata: bool = True,
62
62
  ):
63
63
  total = client.assets.aggregate_count(filter=AssetFilter(data_set_ids=[{"externalId": data_set_external_id}]))
64
64
 
@@ -82,7 +82,7 @@ class AssetsExtractor(BaseExtractor):
82
82
  namespace: Namespace | None = None,
83
83
  to_type: Callable[[Asset], str | None] | None = None,
84
84
  limit: int | None = None,
85
- unpack_metadata: bool = False,
85
+ unpack_metadata: bool = True,
86
86
  ):
87
87
  total = client.assets.aggregate_count(
88
88
  filter=AssetFilter(asset_subtree_ids=[{"externalId": root_asset_external_id}])
@@ -107,7 +107,7 @@ class AssetsExtractor(BaseExtractor):
107
107
  namespace: Namespace | None = None,
108
108
  to_type: Callable[[Asset], str] | None = None,
109
109
  limit: int | None = None,
110
- unpack_metadata: bool = False,
110
+ unpack_metadata: bool = True,
111
111
  ):
112
112
  return cls(
113
113
  AssetList.load(Path(file_path).read_text()),
@@ -29,7 +29,7 @@ class EventsExtractor(BaseExtractor):
29
29
  self,
30
30
  events: Iterable[Event],
31
31
  namespace: Namespace | None = None,
32
- unpack_metadata: bool = False,
32
+ unpack_metadata: bool = True,
33
33
  ):
34
34
  self.namespace = namespace or DEFAULT_NAMESPACE
35
35
  self.events = events
@@ -41,7 +41,7 @@ class EventsExtractor(BaseExtractor):
41
41
  client: CogniteClient,
42
42
  data_set_external_id: str,
43
43
  namespace: Namespace | None = None,
44
- unpack_metadata: bool = False,
44
+ unpack_metadata: bool = True,
45
45
  ):
46
46
  return cls(
47
47
  cast(
@@ -57,7 +57,7 @@ class EventsExtractor(BaseExtractor):
57
57
  cls,
58
58
  file_path: str,
59
59
  namespace: Namespace | None = None,
60
- unpack_metadata: bool = False,
60
+ unpack_metadata: bool = True,
61
61
  ):
62
62
  return cls(EventList.load(Path(file_path).read_text()), namespace, unpack_metadata)
63
63
 
@@ -30,7 +30,7 @@ class FilesExtractor(BaseExtractor):
30
30
  self,
31
31
  files_metadata: Iterable[FileMetadata],
32
32
  namespace: Namespace | None = None,
33
- unpack_metadata: bool = False,
33
+ unpack_metadata: bool = True,
34
34
  ):
35
35
  self.namespace = namespace or DEFAULT_NAMESPACE
36
36
  self.files_metadata = files_metadata
@@ -42,7 +42,7 @@ class FilesExtractor(BaseExtractor):
42
42
  client: CogniteClient,
43
43
  data_set_external_id: str,
44
44
  namespace: Namespace | None = None,
45
- unpack_metadata: bool = False,
45
+ unpack_metadata: bool = True,
46
46
  ):
47
47
  return cls(
48
48
  cast(
@@ -58,7 +58,7 @@ class FilesExtractor(BaseExtractor):
58
58
  cls,
59
59
  file_path: str,
60
60
  namespace: Namespace | None = None,
61
- unpack_metadata: bool = False,
61
+ unpack_metadata: bool = True,
62
62
  ):
63
63
  return cls(
64
64
  FileMetadataList.load(Path(file_path).read_text()),
@@ -29,7 +29,7 @@ class SequencesExtractor(BaseExtractor):
29
29
  self,
30
30
  sequence: Iterable[Sequence],
31
31
  namespace: Namespace | None = None,
32
- unpack_metadata: bool = False,
32
+ unpack_metadata: bool = True,
33
33
  ):
34
34
  self.namespace = namespace or DEFAULT_NAMESPACE
35
35
  self.sequence = sequence
@@ -41,7 +41,7 @@ class SequencesExtractor(BaseExtractor):
41
41
  client: CogniteClient,
42
42
  data_set_external_id: str,
43
43
  namespace: Namespace | None = None,
44
- unpack_metadata: bool = False,
44
+ unpack_metadata: bool = True,
45
45
  ):
46
46
  return cls(
47
47
  cast(
@@ -57,7 +57,7 @@ class SequencesExtractor(BaseExtractor):
57
57
  cls,
58
58
  file_path: str,
59
59
  namespace: Namespace | None = None,
60
- unpack_metadata: bool = False,
60
+ unpack_metadata: bool = True,
61
61
  ):
62
62
  return cls(SequenceList.load(Path(file_path).read_text()), namespace, unpack_metadata)
63
63
 
@@ -29,7 +29,7 @@ class TimeSeriesExtractor(BaseExtractor):
29
29
  self,
30
30
  timeseries: Iterable[TimeSeries],
31
31
  namespace: Namespace | None = None,
32
- unpack_metadata: bool = False,
32
+ unpack_metadata: bool = True,
33
33
  ):
34
34
  self.namespace = namespace or DEFAULT_NAMESPACE
35
35
  self.timeseries = timeseries
@@ -41,7 +41,7 @@ class TimeSeriesExtractor(BaseExtractor):
41
41
  client: CogniteClient,
42
42
  data_set_external_id: str,
43
43
  namespace: Namespace | None = None,
44
- unpack_metadata: bool = False,
44
+ unpack_metadata: bool = True,
45
45
  ):
46
46
  return cls(
47
47
  cast(
@@ -57,7 +57,7 @@ class TimeSeriesExtractor(BaseExtractor):
57
57
  cls,
58
58
  file_path: str,
59
59
  namespace: Namespace | None = None,
60
- unpack_metadata: bool = False,
60
+ unpack_metadata: bool = True,
61
61
  ):
62
62
  return cls(TimeSeriesList.load(Path(file_path).read_text()), namespace, unpack_metadata)
63
63
 
@@ -17,7 +17,11 @@ from cognite.neat.rules.models.information import (
17
17
  InformationMetadata,
18
18
  InformationRulesInput,
19
19
  )
20
- from cognite.neat.utils.utils import get_namespace, remove_namespace_from_uri, uri_to_short_form
20
+ from cognite.neat.utils.utils import (
21
+ get_namespace,
22
+ remove_namespace_from_uri,
23
+ uri_to_short_form,
24
+ )
21
25
 
22
26
  ORDERED_CLASSES_QUERY = """SELECT ?class (count(?s) as ?instances )
23
27
  WHERE { ?s a ?class . }
@@ -25,9 +29,21 @@ ORDERED_CLASSES_QUERY = """SELECT ?class (count(?s) as ?instances )
25
29
 
26
30
  INSTANCES_OF_CLASS_QUERY = """SELECT ?s WHERE { ?s a <class> . }"""
27
31
 
32
+ INSTANCE_PROPERTIES_JSON_DEFINITION = """SELECT ?property (count(?property) as ?occurrence) ?dataType ?objectType
33
+ WHERE {<instance_id> ?property ?value .
34
+
35
+ BIND(IF(REGEX(?value, "^\u007b(.*)\u007d$"),
36
+ <http://www.w3.org/2001/XMLSchema#json>,
37
+ datatype(?value)) AS ?dataType)
38
+
39
+ OPTIONAL {?value rdf:type ?objectType .}}
40
+ GROUP BY ?property ?dataType ?objectType"""
41
+
28
42
  INSTANCE_PROPERTIES_DEFINITION = """SELECT ?property (count(?property) as ?occurrence) ?dataType ?objectType
29
43
  WHERE {<instance_id> ?property ?value .
44
+
30
45
  BIND(datatype(?value) AS ?dataType)
46
+
31
47
  OPTIONAL {?value rdf:type ?objectType .}}
32
48
  GROUP BY ?property ?dataType ?objectType"""
33
49
 
@@ -44,27 +60,48 @@ class InferenceImporter(BaseImporter):
44
60
  graph: Knowledge graph
45
61
  max_number_of_instance: Maximum number of instances to be used in inference
46
62
  prefix: Prefix to be used for the inferred model
63
+ check_for_json_string: Check if values are JSON strings
47
64
  """
48
65
 
49
66
  def __init__(
50
- self, issue_list: IssueList, graph: Graph, max_number_of_instance: int = -1, prefix: str = "inferred"
67
+ self,
68
+ issue_list: IssueList,
69
+ graph: Graph,
70
+ max_number_of_instance: int = -1,
71
+ prefix: str = "inferred",
72
+ check_for_json_string: bool = False,
51
73
  ) -> None:
52
74
  self.issue_list = issue_list
53
75
  self.graph = graph
54
76
  self.max_number_of_instance = max_number_of_instance
55
77
  self.prefix = prefix
78
+ self.check_for_json_string = check_for_json_string
56
79
 
57
80
  @classmethod
58
81
  def from_graph_store(
59
- cls, store: NeatGraphStore, max_number_of_instance: int = -1, prefix: str = "inferred"
82
+ cls,
83
+ store: NeatGraphStore,
84
+ max_number_of_instance: int = -1,
85
+ prefix: str = "inferred",
86
+ check_for_json_string: bool = False,
60
87
  ) -> "InferenceImporter":
61
88
  issue_list = IssueList(title="Inferred from graph store")
62
89
 
63
- return cls(issue_list, store.graph, max_number_of_instance=max_number_of_instance, prefix=prefix)
90
+ return cls(
91
+ issue_list,
92
+ store.graph,
93
+ max_number_of_instance=max_number_of_instance,
94
+ prefix=prefix,
95
+ check_for_json_string=check_for_json_string,
96
+ )
64
97
 
65
98
  @classmethod
66
99
  def from_rdf_file(
67
- cls, filepath: Path, max_number_of_instance: int = -1, prefix: str = "inferred"
100
+ cls,
101
+ filepath: Path,
102
+ max_number_of_instance: int = -1,
103
+ prefix: str = "inferred",
104
+ check_for_json_string: bool = False,
68
105
  ) -> "InferenceImporter":
69
106
  issue_list = IssueList(title=f"'{filepath.name}'")
70
107
 
@@ -74,23 +111,41 @@ class InferenceImporter(BaseImporter):
74
111
  except Exception:
75
112
  issue_list.append(issues.fileread.FileReadError(filepath))
76
113
 
77
- return cls(issue_list, graph, max_number_of_instance=max_number_of_instance, prefix=prefix)
114
+ return cls(
115
+ issue_list,
116
+ graph,
117
+ max_number_of_instance=max_number_of_instance,
118
+ prefix=prefix,
119
+ check_for_json_string=check_for_json_string,
120
+ )
78
121
 
79
122
  @classmethod
80
123
  def from_json_file(
81
- cls, filepath: Path, max_number_of_instance: int = -1, prefix: str = "inferred"
124
+ cls,
125
+ filepath: Path,
126
+ max_number_of_instance: int = -1,
127
+ prefix: str = "inferred",
128
+ check_for_json_string: bool = False,
82
129
  ) -> "InferenceImporter":
83
130
  raise NotImplementedError("JSON file format is not supported yet.")
84
131
 
85
132
  @classmethod
86
133
  def from_yaml_file(
87
- cls, filepath: Path, max_number_of_instance: int = -1, prefix: str = "inferred"
134
+ cls,
135
+ filepath: Path,
136
+ max_number_of_instance: int = -1,
137
+ prefix: str = "inferred",
138
+ check_for_json_string: bool = False,
88
139
  ) -> "InferenceImporter":
89
140
  raise NotImplementedError("YAML file format is not supported yet.")
90
141
 
91
142
  @classmethod
92
143
  def from_xml_file(
93
- cls, filepath: Path, max_number_of_instance: int = -1, prefix: str = "inferred"
144
+ cls,
145
+ filepath: Path,
146
+ max_number_of_instance: int = -1,
147
+ prefix: str = "inferred",
148
+ check_for_json_string: bool = False,
94
149
  ) -> "InferenceImporter":
95
150
  raise NotImplementedError("JSON file format is not supported yet.")
96
151
 
@@ -149,6 +204,7 @@ class InferenceImporter(BaseImporter):
149
204
  properties: dict[str, dict] = {}
150
205
  prefixes: dict[str, Namespace] = PREFIXES.copy()
151
206
 
207
+ query = INSTANCE_PROPERTIES_JSON_DEFINITION if self.check_for_json_string else INSTANCE_PROPERTIES_DEFINITION
152
208
  # Adds default namespace to prefixes
153
209
  prefixes[self._default_metadata().prefix] = self._default_metadata().namespace
154
210
 
@@ -176,7 +232,7 @@ class InferenceImporter(BaseImporter):
176
232
  + f" LIMIT {self.max_number_of_instance}"
177
233
  ):
178
234
  for property_uri, occurrence, data_type_uri, object_type_uri in self.graph.query( # type: ignore[misc]
179
- INSTANCE_PROPERTIES_DEFINITION.replace("instance_id", instance)
235
+ query.replace("instance_id", instance)
180
236
  ): # type: ignore[misc]
181
237
  property_id = remove_namespace_from_uri(property_uri)
182
238
  self._add_uri_namespace_to_prefixes(cast(URIRef, property_uri), prefixes)
@@ -267,7 +267,7 @@ class Json(DataType):
267
267
  python = dms.Json
268
268
  dms = dms.Json
269
269
  graphql = "Json"
270
- xsd = "string"
270
+ xsd = "json"
271
271
  sql = "STRING"
272
272
 
273
273
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: cognite-neat
3
- Version: 0.85.8
3
+ Version: 0.85.9
4
4
  Summary: Knowledge graph transformation
5
5
  Home-page: https://cognite-neat.readthedocs-hosted.com/
6
6
  License: Apache-2.0
@@ -1,6 +1,6 @@
1
1
  cognite/neat/__init__.py,sha256=AiexNcHdAHFbrrbo9c65gtil1dqx_SGraDH1PSsXjKE,126
2
2
  cognite/neat/_shared.py,sha256=RSaHm2eJceTlvb-hMMe4nHgoHdPYDfN3XcxDXo24k3A,1530
3
- cognite/neat/_version.py,sha256=XNxvWbbG3Du3rtKNhMT-MnhnUVoPrUHeH989x6qqhYo,23
3
+ cognite/neat/_version.py,sha256=JP9pWIPLDxMPiu0_QxO-aYb83pueDfD_SMEnM6AHb9Q,23
4
4
  cognite/neat/app/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  cognite/neat/app/api/asgi/metrics.py,sha256=nxFy7L5cChTI0a-zkCiJ59Aq8yLuIJp5c9Dg0wRXtV0,152
6
6
  cognite/neat/app/api/configuration.py,sha256=2U5M6M252swvQPQyooA1EBzFUZNtcTmuSaywfJDgckM,4232
@@ -57,13 +57,13 @@ cognite/neat/graph/exceptions.py,sha256=R6pyOH774n9w2x_X_nrUr8OMAdjJMf_XPIqAvxIQ
57
57
  cognite/neat/graph/extractors/__init__.py,sha256=nXcNp6i3-1HteIkr8Ujxk4b09W5jk27Q3eWuwjcnGnM,1647
58
58
  cognite/neat/graph/extractors/_base.py,sha256=8IWygpkQTwo0UOmbbwWVI7540_klTVdUVX2JjVPFRIs,498
59
59
  cognite/neat/graph/extractors/_classic_cdf/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
- cognite/neat/graph/extractors/_classic_cdf/_assets.py,sha256=ZLLiHlN0RB4Drx0b0uBLLiV8gowlMleamRBSKUrCgyI,7854
61
- cognite/neat/graph/extractors/_classic_cdf/_events.py,sha256=UiysU7AGlWMQuEMObaJN1JvMNWWtXmjBzFsk3SLg8V4,5112
62
- cognite/neat/graph/extractors/_classic_cdf/_files.py,sha256=TPjDF6VfRImhrJlfFNne3Plm6NmrGwtaGKqP_vZ8s6Y,6289
60
+ cognite/neat/graph/extractors/_classic_cdf/_assets.py,sha256=6lz1AfElB6eURmyRSFKNU7KQcSUS5tYBP_KsB3D79JQ,7850
61
+ cognite/neat/graph/extractors/_classic_cdf/_events.py,sha256=wjbavqqz4_0D2Xpcof9lxgQ_RHNHK-gd4PHpKxoHgJM,5109
62
+ cognite/neat/graph/extractors/_classic_cdf/_files.py,sha256=Vic90IsZN1N7woZ5-F9625Vdij42dgX9vaspBUJ7nN8,6286
63
63
  cognite/neat/graph/extractors/_classic_cdf/_labels.py,sha256=9DQ1hblU3gbLTbWuthKLWkSL_eNH69izitzMSQ1FdD8,3011
64
64
  cognite/neat/graph/extractors/_classic_cdf/_relationships.py,sha256=GzxnvIflmHVnWdlNFoLrnxJjM8c2YuMzzMC7IL7Q4cg,6040
65
- cognite/neat/graph/extractors/_classic_cdf/_sequences.py,sha256=3L2c7z1I4LQZYgA8CScsOGfvamIdCc19I5ZIzPVVgsM,4680
66
- cognite/neat/graph/extractors/_classic_cdf/_timeseries.py,sha256=HCUjTTLqj9rTxb7xemyxNXYRqsKVUzRAXi0BLyo2Ctc,6125
65
+ cognite/neat/graph/extractors/_classic_cdf/_sequences.py,sha256=rhMEPY5PCxLnErwPPzdHH02c9o7rn0whLtnvcrLDjr8,4677
66
+ cognite/neat/graph/extractors/_classic_cdf/_timeseries.py,sha256=rxhAe7BcJFg2-eFgBSTb6Trkw53XgZfU5-wLrjqZHEQ,6122
67
67
  cognite/neat/graph/extractors/_dexpi.py,sha256=xIw3kSaQ17k_bAuecvrVRic70PUhFHtcyy-ReLt36Q4,9385
68
68
  cognite/neat/graph/extractors/_mock_graph_generator.py,sha256=w6lIgwvVwkvK725S9MLFZU8lLxjxXt_621_nChupAkQ,14791
69
69
  cognite/neat/graph/extractors/_rdf_file.py,sha256=ialMCLv9WH5k6v1YMfozfcmAYhz8OVo9jVhsKMyQkDA,763
@@ -203,7 +203,7 @@ cognite/neat/rules/importers/_dtdl2rules/_unit_lookup.py,sha256=wW4saKva61Q_i17g
203
203
  cognite/neat/rules/importers/_dtdl2rules/dtdl_converter.py,sha256=ysmWUxZ0npwrTB0uiH5jA0v37sfCwowGaYk17IyxPUU,12663
204
204
  cognite/neat/rules/importers/_dtdl2rules/dtdl_importer.py,sha256=Psj3C2jembY_Wu7WWJIFIwrMawvjISjeqfBnoRy_csw,6740
205
205
  cognite/neat/rules/importers/_dtdl2rules/spec.py,sha256=tim_MfN1J0F3Oeqk3BMgIA82d_MZvhRuRMsLK3B4PYc,11897
206
- cognite/neat/rules/importers/_inference2rules.py,sha256=S_U2M8z5oZaFD3yPDSG__xUJSCmFkQyrKleHixrzYlU,12204
206
+ cognite/neat/rules/importers/_inference2rules.py,sha256=U2fNqBtN_NMtFAm7uSiejfxNFWIvUjHv5JriOEI5Z3I,13704
207
207
  cognite/neat/rules/importers/_owl2rules/__init__.py,sha256=tdGcrgtozdQyST-pTlxIa4cLBNTLvtk1nNYR4vOdFSw,63
208
208
  cognite/neat/rules/importers/_owl2rules/_owl2classes.py,sha256=dACjYeCa_OhpQgqccI4w478dEINbISUMzpVkCOoRRL8,7384
209
209
  cognite/neat/rules/importers/_owl2rules/_owl2metadata.py,sha256=nwnUaBNAAYMoBre2UmsnkJXUuaqGEpR3U3txDrH2w6g,7527
@@ -232,7 +232,7 @@ cognite/neat/rules/models/asset/_rules.py,sha256=fYp1pMJtioUtT747fo5NX69lgvPiPtH
232
232
  cognite/neat/rules/models/asset/_rules_input.py,sha256=LiT-85CVgDz2ng65CtrRa77r4rnmg3E4Q6DC7-gv0dE,6257
233
233
  cognite/neat/rules/models/asset/_serializer.py,sha256=ixqRf9qEzvChgysRaDX4g_vHVDtRBCsPYC9sOn0-ShE,3365
234
234
  cognite/neat/rules/models/asset/_validation.py,sha256=86ymEgMZpG1eWu53PviUyUFnQBUJmYDZggUDXufBYLI,148
235
- cognite/neat/rules/models/data_types.py,sha256=lanwkhwG8iHKfjYfia4v2SBTJrMeXOsqaVkVEP2QMXs,6078
235
+ cognite/neat/rules/models/data_types.py,sha256=xAjm8UVEQlSylfkUJWiWP2NaK6dLYRDABF9g8CNWLTc,6076
236
236
  cognite/neat/rules/models/dms/__init__.py,sha256=Wzyqzz2ZIjpUbDg04CMuuIAw-f2A02DayNeqO9R-2Hw,491
237
237
  cognite/neat/rules/models/dms/_converter.py,sha256=QaJT0z0Yo4gkG9tHPZkU8idF8PK7c-tDahbyIT-WJQU,5959
238
238
  cognite/neat/rules/models/dms/_exporter.py,sha256=DRL5ahcBEdBltHLA2rzLyUfqG5SZkqINkqmYGDkQVg0,24785
@@ -310,8 +310,8 @@ cognite/neat/workflows/steps_registry.py,sha256=fkTX14ZA7_gkUYfWIlx7A1XbCidvqR23
310
310
  cognite/neat/workflows/tasks.py,sha256=dqlJwKAb0jlkl7abbY8RRz3m7MT4SK8-7cntMWkOYjw,788
311
311
  cognite/neat/workflows/triggers.py,sha256=_BLNplzoz0iic367u1mhHMHiUrCwP-SLK6_CZzfODX0,7071
312
312
  cognite/neat/workflows/utils.py,sha256=gKdy3RLG7ctRhbCRwaDIWpL9Mi98zm56-d4jfHDqP1E,453
313
- cognite_neat-0.85.8.dist-info/LICENSE,sha256=W8VmvFia4WHa3Gqxq1Ygrq85McUNqIGDVgtdvzT-XqA,11351
314
- cognite_neat-0.85.8.dist-info/METADATA,sha256=LMGF9Z866Ni01TGc12LHk09EjNbbSxjiZS-gzMtvGsY,9493
315
- cognite_neat-0.85.8.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
316
- cognite_neat-0.85.8.dist-info/entry_points.txt,sha256=61FPqiWb25vbqB0KI7znG8nsg_ibLHBvTjYnkPvNFso,50
317
- cognite_neat-0.85.8.dist-info/RECORD,,
313
+ cognite_neat-0.85.9.dist-info/LICENSE,sha256=W8VmvFia4WHa3Gqxq1Ygrq85McUNqIGDVgtdvzT-XqA,11351
314
+ cognite_neat-0.85.9.dist-info/METADATA,sha256=5qSjm9GMnwHMFSr2a2ECKRoei-cwE8esuk529j16nYM,9493
315
+ cognite_neat-0.85.9.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
316
+ cognite_neat-0.85.9.dist-info/entry_points.txt,sha256=61FPqiWb25vbqB0KI7znG8nsg_ibLHBvTjYnkPvNFso,50
317
+ cognite_neat-0.85.9.dist-info/RECORD,,