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

Files changed (32) hide show
  1. cognite/neat/_constants.py +5 -1
  2. cognite/neat/_graph/loaders/_rdf2dms.py +1 -2
  3. cognite/neat/_graph/queries/_base.py +22 -2
  4. cognite/neat/_graph/queries/_shared.py +4 -4
  5. cognite/neat/_graph/transformers/__init__.py +17 -0
  6. cognite/neat/_graph/transformers/_base.py +1 -1
  7. cognite/neat/_graph/transformers/_iodd.py +9 -4
  8. cognite/neat/_graph/transformers/_prune_graph.py +196 -65
  9. cognite/neat/_rules/exporters/_rules2dms.py +35 -13
  10. cognite/neat/_rules/exporters/_rules2excel.py +7 -2
  11. cognite/neat/_rules/importers/_dms2rules.py +51 -19
  12. cognite/neat/_rules/importers/_rdf/_base.py +2 -2
  13. cognite/neat/_rules/models/_base_rules.py +13 -9
  14. cognite/neat/_rules/models/dms/_rules.py +111 -39
  15. cognite/neat/_rules/models/information/_rules.py +52 -19
  16. cognite/neat/_session/_base.py +18 -0
  17. cognite/neat/_session/_prepare.py +85 -2
  18. cognite/neat/_session/_read.py +3 -3
  19. cognite/neat/_session/_to.py +1 -1
  20. cognite/neat/_session/engine/_load.py +3 -1
  21. cognite/neat/_store/_base.py +23 -2
  22. cognite/neat/_utils/auth.py +6 -4
  23. cognite/neat/_utils/reader/__init__.py +2 -2
  24. cognite/neat/_utils/reader/_base.py +40 -35
  25. cognite/neat/_utils/text.py +12 -0
  26. cognite/neat/_version.py +2 -2
  27. cognite_neat-0.102.0.dist-info/METADATA +113 -0
  28. {cognite_neat-0.100.1.dist-info → cognite_neat-0.102.0.dist-info}/RECORD +31 -31
  29. cognite_neat-0.100.1.dist-info/METADATA +0 -215
  30. {cognite_neat-0.100.1.dist-info → cognite_neat-0.102.0.dist-info}/LICENSE +0 -0
  31. {cognite_neat-0.100.1.dist-info → cognite_neat-0.102.0.dist-info}/WHEEL +0 -0
  32. {cognite_neat-0.100.1.dist-info → cognite_neat-0.102.0.dist-info}/entry_points.txt +0 -0
@@ -41,8 +41,10 @@ def load_neat_engine(client: CogniteClient | None, location: Literal["newest", "
41
41
 
42
42
  if location == "newest" or not candidates:
43
43
  # Loading in reverse order of priority
44
- # 3. Downloads folder
44
+ # 4. Downloads folder
45
45
  candidates = _load_from_path(Path.home() / "Downloads", pattern, lower_bound, upper_bound)
46
+ # 3. Current working directory
47
+ candidates.update(_load_from_path(Path.cwd(), pattern, lower_bound, upper_bound))
46
48
  # 2. CDF
47
49
  if client:
48
50
  candidates.update(_load_from_cdf(client, pattern, lower_bound, upper_bound, cache_dir))
@@ -195,8 +195,13 @@ class NeatGraphStore:
195
195
  self, class_neat_id: URIRef, property_link_pairs: dict[str, URIRef] | None
196
196
  ) -> Iterable[tuple[str, dict[str | InstanceType, list[str]]]]:
197
197
  if self.rules is None:
198
- warnings.warn("Rules not found in graph store!", stacklevel=2)
198
+ warnings.warn("Rules not found in graph store! Aborting!", stacklevel=2)
199
199
  return
200
+ if self.multi_type_instances:
201
+ warnings.warn(
202
+ "Multi typed instances detected, issues with loading can occur!",
203
+ stacklevel=2,
204
+ )
200
205
 
201
206
  if cls := InformationAnalysis(self.rules).classes_by_neat_id.get(class_neat_id):
202
207
  if property_link_pairs:
@@ -225,6 +230,11 @@ class NeatGraphStore:
225
230
  if self.rules is None:
226
231
  warnings.warn("Rules not found in graph store!", stacklevel=2)
227
232
  return
233
+ if self.multi_type_instances:
234
+ warnings.warn(
235
+ "Multi typed instances detected, issues with loading can occur!",
236
+ stacklevel=2,
237
+ )
228
238
 
229
239
  if class_entity not in [definition.class_ for definition in self.rules.classes]:
230
240
  warnings.warn("Desired type not found in graph!", stacklevel=2)
@@ -267,7 +277,6 @@ class NeatGraphStore:
267
277
 
268
278
  # get property types to guide process of removing or not namespaces from results
269
279
  property_types = InformationAnalysis(self.rules).property_types(class_entity)
270
-
271
280
  for instance_id in instance_ids:
272
281
  if res := self.queries.describe(
273
282
  instance_id=instance_id,
@@ -292,6 +301,11 @@ class NeatGraphStore:
292
301
  if not self.rules:
293
302
  warnings.warn("Rules not found in graph store!", stacklevel=2)
294
303
  return
304
+ if self.multi_type_instances:
305
+ warnings.warn(
306
+ "Multi typed instances detected, issues with loading can occur!",
307
+ stacklevel=2,
308
+ )
295
309
 
296
310
  class_entity = ClassEntity(prefix=self.rules.metadata.prefix, suffix=class_)
297
311
 
@@ -390,6 +404,10 @@ class NeatGraphStore:
390
404
  def summary(self) -> pd.DataFrame:
391
405
  return pd.DataFrame(self.queries.summarize_instances(), columns=["Type", "Occurrence"])
392
406
 
407
+ @property
408
+ def multi_type_instances(self) -> dict[str, list[str]]:
409
+ return self.queries.multi_type_instances()
410
+
393
411
  def _repr_html_(self) -> str:
394
412
  provenance = self.provenance._repr_html_()
395
413
  summary: pd.DataFrame = self.summary
@@ -404,6 +422,9 @@ class NeatGraphStore:
404
422
  f"{cast(pd.DataFrame, self._shorten_summary(summary))._repr_html_()}" # type: ignore[operator]
405
423
  )
406
424
 
425
+ if self.multi_type_instances:
426
+ summary_text += "<br><strong>Multi value instances detected! Loading could have issues!</strong></br>" # type: ignore
427
+
407
428
  return f"{summary_text}" f"{provenance}"
408
429
 
409
430
  def _shorten_summary(self, summary: pd.DataFrame) -> pd.DataFrame:
@@ -32,10 +32,7 @@ def get_cognite_client(env_file_name: str) -> CogniteClient:
32
32
  """
33
33
  if not env_file_name.endswith(".env"):
34
34
  raise ValueError("env_file_name must end with '.env'")
35
- with suppress(KeyError):
36
- variables = EnvironmentVariables.create_from_environ()
37
- return variables.get_client()
38
-
35
+ # First try to load from .env file in repository root
39
36
  repo_root = _repo_root()
40
37
  if repo_root:
41
38
  with suppress(KeyError, FileNotFoundError, TypeError):
@@ -43,6 +40,11 @@ def get_cognite_client(env_file_name: str) -> CogniteClient:
43
40
  client = variables.get_client()
44
41
  print(f"Found {env_file_name} file in repository root. Loaded variables from {env_file_name} file.")
45
42
  return client
43
+ # Then try to load from environment variables
44
+ with suppress(KeyError):
45
+ variables = EnvironmentVariables.create_from_environ()
46
+ return variables.get_client()
47
+ # If not found, prompt the user
46
48
  variables = _prompt_user()
47
49
  if repo_root and _env_in_gitignore(repo_root, env_file_name):
48
50
  local_import("rich", "jupyter")
@@ -1,3 +1,3 @@
1
- from ._base import GitHubReader, NeatReader, PathReader
1
+ from ._base import GitHubReader, HttpFileReader, NeatReader, PathReader
2
2
 
3
- __all__ = ["NeatReader", "PathReader", "GitHubReader"]
3
+ __all__ = ["NeatReader", "PathReader", "GitHubReader", "HttpFileReader"]
@@ -17,6 +17,8 @@ class NeatReader(ABC):
17
17
  url = urlparse(io)
18
18
  if url.scheme == "https" and url.netloc.endswith("github.com"):
19
19
  return GitHubReader(io)
20
+ elif url.scheme == "https":
21
+ return HttpFileReader(io, url.path)
20
22
 
21
23
  if isinstance(io, str | Path):
22
24
  return PathReader(Path(io))
@@ -94,12 +96,10 @@ class PathReader(NeatReader):
94
96
  return self.path.exists()
95
97
 
96
98
 
97
- class GitHubReader(NeatReader):
98
- raw_url = "https://raw.githubusercontent.com/"
99
-
100
- def __init__(self, raw: str):
101
- self.raw = raw
102
- self.repo, self.path = self._parse_url(raw)
99
+ class HttpFileReader(NeatReader):
100
+ def __init__(self, url: str, path: str):
101
+ self._url = url
102
+ self.path = path
103
103
 
104
104
  @property
105
105
  def name(self) -> str:
@@ -107,9 +107,40 @@ class GitHubReader(NeatReader):
107
107
  return self.path.rsplit("/", maxsplit=1)[-1]
108
108
  return self.path
109
109
 
110
- @property
111
- def _full_url(self) -> str:
112
- return f"{self.raw_url}{self.repo}/main/{self.path}"
110
+ def read_text(self) -> str:
111
+ response = requests.get(self._url)
112
+ response.raise_for_status()
113
+ return response.text
114
+
115
+ def size(self) -> int:
116
+ response = requests.head(self._url)
117
+ response.raise_for_status()
118
+ return int(response.headers["Content-Length"])
119
+
120
+ def iterate(self, chunk_size: int) -> Iterable[str]:
121
+ with requests.get(self._url, stream=True) as response:
122
+ response.raise_for_status()
123
+ for chunk in response.iter_content(chunk_size):
124
+ yield chunk.decode("utf-8")
125
+
126
+ def __enter__(self) -> IO:
127
+ return StringIO(self.read_text())
128
+
129
+ def __str__(self) -> str:
130
+ return self._url
131
+
132
+ def exists(self) -> bool:
133
+ response = requests.head(self._url)
134
+ return 200 <= response.status_code < 400
135
+
136
+
137
+ class GitHubReader(HttpFileReader):
138
+ raw_url = "https://raw.githubusercontent.com/"
139
+
140
+ def __init__(self, raw: str):
141
+ self.raw = raw
142
+ self.repo, path = self._parse_url(raw)
143
+ super().__init__(f"{self.raw_url}{self.repo}/main/{path}", path)
113
144
 
114
145
  @staticmethod
115
146
  def _parse_url(url: str) -> tuple[str, str]:
@@ -134,29 +165,3 @@ class GitHubReader(NeatReader):
134
165
 
135
166
  def __str__(self) -> str:
136
167
  return self.raw
137
-
138
- def read_text(self) -> str:
139
- response = requests.get(self._full_url)
140
- response.raise_for_status()
141
- return response.text
142
-
143
- def size(self) -> int:
144
- response = requests.head(self._full_url)
145
- response.raise_for_status()
146
- return int(response.headers["Content-Length"])
147
-
148
- def iterate(self, chunk_size: int) -> Iterable[str]:
149
- with requests.get(self._full_url, stream=True) as response:
150
- response.raise_for_status()
151
- for chunk in response.iter_content(chunk_size):
152
- yield chunk.decode("utf-8")
153
-
154
- def __enter__(self) -> IO:
155
- return StringIO(self.read_text())
156
-
157
- def __exit__(self, exc_type, exc_value, traceback) -> None:
158
- pass
159
-
160
- def exists(self) -> bool:
161
- response = requests.head(self._full_url)
162
- return 200 <= response.status_code < 400
@@ -106,6 +106,18 @@ def to_snake(string: str) -> str:
106
106
  return "_".join(map(str.lower, words))
107
107
 
108
108
 
109
+ def sentence_or_string_to_camel(string: str) -> str:
110
+ # Could be a combination of kebab and pascal/camel case
111
+ if " " in string:
112
+ parts = string.split(" ")
113
+ try:
114
+ return parts[0].casefold() + "".join(word.capitalize() for word in parts[1:])
115
+ except IndexError:
116
+ return ""
117
+ else:
118
+ return to_camel(string)
119
+
120
+
109
121
  def replace_non_alphanumeric_with_underscore(text: str) -> str:
110
122
  return re.sub(r"\W+", "_", text)
111
123
 
cognite/neat/_version.py CHANGED
@@ -1,2 +1,2 @@
1
- __version__ = "0.100.1"
2
- __engine__ = "^2.0.1"
1
+ __version__ = "0.102.0"
2
+ __engine__ = "^2.0.2"
@@ -0,0 +1,113 @@
1
+ Metadata-Version: 2.1
2
+ Name: cognite-neat
3
+ Version: 0.102.0
4
+ Summary: Knowledge graph transformation
5
+ Home-page: https://cognite-neat.readthedocs-hosted.com/
6
+ License: Apache-2.0
7
+ Author: Nikola Vasiljevic
8
+ Author-email: nikola.vasiljevic@cognite.com
9
+ Requires-Python: >=3.10,<4.0
10
+ Classifier: License :: OSI Approved :: Apache Software License
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Classifier: Programming Language :: Python :: 3.13
16
+ Provides-Extra: all
17
+ Provides-Extra: docs
18
+ Provides-Extra: google
19
+ Provides-Extra: oxi
20
+ Provides-Extra: service
21
+ Requires-Dist: PyYAML
22
+ Requires-Dist: backports.strenum (>=1.2,<2.0) ; python_version < "3.11"
23
+ Requires-Dist: cognite-sdk (>=7.54.6,<8.0.0)
24
+ Requires-Dist: elementpath (>=4.0.0,<5.0.0)
25
+ 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
+ Requires-Dist: google-api-python-client ; extra == "google"
28
+ Requires-Dist: google-auth-oauthlib ; extra == "google"
29
+ Requires-Dist: gspread ; extra == "google"
30
+ Requires-Dist: jsonpath-python (>=1.0.6,<2.0.0)
31
+ Requires-Dist: lxml (>=5.3.0,<6.0.0) ; extra == "all"
32
+ Requires-Dist: mixpanel (>=4.10.1,<5.0.0)
33
+ Requires-Dist: mkdocs ; extra == "docs"
34
+ Requires-Dist: mkdocs-autorefs (>=0.5.0,<0.6.0) ; extra == "docs"
35
+ Requires-Dist: mkdocs-git-authors-plugin ; extra == "docs"
36
+ Requires-Dist: mkdocs-git-revision-date-localized-plugin ; extra == "docs"
37
+ Requires-Dist: mkdocs-gitbook ; extra == "docs"
38
+ Requires-Dist: mkdocs-glightbox ; extra == "docs"
39
+ Requires-Dist: mkdocs-jupyter ; extra == "docs"
40
+ Requires-Dist: mkdocs-material-extensions ; extra == "docs"
41
+ Requires-Dist: mkdocstrings[python] ; extra == "docs"
42
+ Requires-Dist: networkx (>=3.4.2,<4.0.0)
43
+ Requires-Dist: openpyxl
44
+ Requires-Dist: oxrdflib[oxigraph] (>=0.4.0,<0.5.0) ; extra == "oxi" or extra == "all"
45
+ Requires-Dist: packaging (>=22.0,<25.0)
46
+ Requires-Dist: pandas
47
+ Requires-Dist: prometheus-client (>=0,<1) ; extra == "service" or extra == "all"
48
+ Requires-Dist: pydantic (>=2,<3)
49
+ Requires-Dist: pymdown-extensions ; extra == "docs"
50
+ Requires-Dist: pyoxigraph (==0.4.3) ; extra == "oxi" or extra == "all"
51
+ Requires-Dist: python-multipart (==0.0.9) ; extra == "service" or extra == "all"
52
+ Requires-Dist: pyvis (>=0.3.2,<0.4.0)
53
+ Requires-Dist: rdflib
54
+ Requires-Dist: requests
55
+ Requires-Dist: rich[jupyter] (>=13.7.1,<14.0.0)
56
+ Requires-Dist: schedule (>=1,<2) ; extra == "service" or extra == "all"
57
+ Requires-Dist: tomli (>=2.0.1,<3.0.0) ; python_version < "3.11"
58
+ Requires-Dist: typing_extensions (>=4.8,<5.0) ; python_version < "3.11"
59
+ Requires-Dist: urllib3 (>=2,<3)
60
+ Requires-Dist: uvicorn[standard] (>=0,<1) ; extra == "service" or extra == "all"
61
+ Project-URL: Documentation, https://cognite-neat.readthedocs-hosted.com/
62
+ Project-URL: Repository, https://github.com/cognitedata/neat
63
+ Description-Content-Type: text/markdown
64
+
65
+ # kNowlEdge grAph Transformer (NEAT)
66
+
67
+ [![release](https://img.shields.io/github/actions/workflow/status/cognitedata/neat/release.yaml?style=for-the-badge)](https://github.com/cognitedata/neat/actions/workflows/release.yaml)
68
+ [![Documentation Status](https://readthedocs.com/projects/cognite-neat/badge/?version=latest&style=for-the-badge)](https://cognite-neat.readthedocs-hosted.com/en/latest/?badge=latest)
69
+ [![Github](https://shields.io/badge/github-cognite/neat-green?logo=github&style=for-the-badge)](https://github.com/cognitedata/neat)
70
+ [![PyPI](https://img.shields.io/pypi/v/cognite-neat?style=for-the-badge)](https://pypi.org/project/cognite-neat/)
71
+ [![Downloads](https://img.shields.io/pypi/dm/cognite-neat?style=for-the-badge)](https://pypistats.org/packages/cognite-neat)
72
+ [![Docker Pulls](https://img.shields.io/docker/pulls/cognite/neat?style=for-the-badge)](https://hub.docker.com/r/cognite/neat)
73
+ [![GitHub](https://img.shields.io/github/license/cognitedata/neat?style=for-the-badge)](https://github.com/cognitedata/neat/blob/master/LICENSE)
74
+ [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg?style=for-the-badge)](https://github.com/ambv/black)
75
+ [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json&style=for-the-badge)](https://github.com/astral-sh/ruff)
76
+ [![mypy](https://img.shields.io/badge/mypy-checked-000000.svg?style=for-the-badge&color=blue)](http://mypy-lang.org)
77
+
78
+ NEAT is a domain expert centric and developer friendly solution for rapid:
79
+
80
+ - semantic data modeling
81
+ - creation, transformation and enrichment of knowledge graphs
82
+ - and ingestion of the models and graphs into [Cognite Data Fusion](https://www.cognite.com/en/product/cognite_data_fusion_industrial_dataops_platform)
83
+
84
+ NEAT is using open and globally recognized standards maintained by the [World Wide Web Consortium (W3C)](https://www.w3.org/RDF/).
85
+ NEAT represents an essential tool for creation of standardized, machine-actionable, linked and semantic (meta)data.
86
+
87
+ > NEAT is an acronym derived from k**N**owl**Ed**ge gr**A**ph **T**ransformer hallucinated by GenAI.
88
+
89
+ ## Installation
90
+
91
+ ```bash
92
+ pip install cognite-neat
93
+ ```
94
+
95
+ ## Usage
96
+
97
+ The user interface for `NEAT` is a notebook-based environment. Once you have set up your notebook
98
+ environment, you start by creating a `CogniteClient` and instantiate a `NeatSession` object.
99
+
100
+ ```python
101
+ from cognite.neat import NeatSession, get_cognite_client
102
+
103
+ client = get_cognite_client(".env")
104
+
105
+ neat = NeatSession(client)
106
+
107
+ neat.read.cdf.data_model(("my_space", "MyDataModel", "v1"))
108
+ ```
109
+
110
+ ## Documentation
111
+
112
+ For more information, see the [documentation](https://cognite-neat.readthedocs-hosted.com/en/latest/)
113
+
@@ -80,7 +80,7 @@ cognite/neat/_client/data_classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeR
80
80
  cognite/neat/_client/data_classes/data_modeling.py,sha256=RvpUp9ygd-yffQFJ7O2mQqMLDPIa-dmip5zPb8QVIiw,6672
81
81
  cognite/neat/_client/data_classes/schema.py,sha256=hYKcrxXf90tA2NIqwBOzw9_hb4OanF9dwwPnur6MEfg,22904
82
82
  cognite/neat/_config.py,sha256=f9Py4SEHwYYquIg-k1rC7MbXBLENXQauoZtLyUbWvJQ,10118
83
- cognite/neat/_constants.py,sha256=KtAU74aQUy6FpmejwxDaXP5UwsqA8DJy-MTEoFw1UHg,2621
83
+ cognite/neat/_constants.py,sha256=ksyp8NKHEmjxz-773EUXfFZHsvjNOVrCpUXx85aStZo,2882
84
84
  cognite/neat/_graph/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
85
85
  cognite/neat/_graph/_shared.py,sha256=g7XFITbVxdDyGZ6mlgFUv5cBycrU7QbPktRikdUVkks,863
86
86
  cognite/neat/_graph/_tracking/__init__.py,sha256=pYj7c-YAUIP4hvN-4mlWnwaeZFerzL9_gM-oZhex7cE,91
@@ -110,16 +110,16 @@ cognite/neat/_graph/extractors/_mock_graph_generator.py,sha256=yEqQdbnRQjBXVQIEV
110
110
  cognite/neat/_graph/extractors/_rdf_file.py,sha256=YgPZN4Ayk6UlbwFFjdWn4Yo3P74D8KeNUb3slXg6Ox8,1604
111
111
  cognite/neat/_graph/loaders/__init__.py,sha256=1eam_rG1BXTUJ8iDm8_IYZldEe177vn2GmHihDBi8qk,718
112
112
  cognite/neat/_graph/loaders/_base.py,sha256=tjplRd-vbWhWyys0Ll3KgHR3F3ETlP_dXJ3e8F8w15M,3984
113
- cognite/neat/_graph/loaders/_rdf2dms.py,sha256=KMe0T5jvGbgdo3RQijDtTSeWpU_ovGXWBGR1dZ_IjEM,17472
113
+ cognite/neat/_graph/loaders/_rdf2dms.py,sha256=N_6PH9PLpa5H2u2tJwgnJR21HuXnFIwiRj7g_ursdVI,17425
114
114
  cognite/neat/_graph/queries/__init__.py,sha256=BgDd-037kvtWwAoGAy8eORVNMiZ5-E9sIV0txIpeaN4,50
115
- cognite/neat/_graph/queries/_base.py,sha256=dKEk8TDYUxIc71peqD9TfHHoILG9cKzjkFp7CAkbF78,14246
115
+ cognite/neat/_graph/queries/_base.py,sha256=Y3Amuave6xdQsDE5ZXCrYLUgOMIH8BXa4n5Pc9czAF0,14926
116
116
  cognite/neat/_graph/queries/_construct.py,sha256=CW8uHtXXACUXDj1AcEjROXtvoiuyx0CTgZ0bURY5Neo,7213
117
- cognite/neat/_graph/queries/_shared.py,sha256=K3svLkvw-DWPZUwIwpJRjPKg5UIRKFCn5jBLpuJjiHc,5330
118
- cognite/neat/_graph/transformers/__init__.py,sha256=SJtcfzztdy6f_D1X5OowLO4Huv4HO_wRKizSY3orrV0,978
119
- cognite/neat/_graph/transformers/_base.py,sha256=b37Ek-9njuM5pTR_3XhnxCMrg_ip_2BMwM7ZhKpAAlw,328
117
+ cognite/neat/_graph/queries/_shared.py,sha256=uhw-nY4jJvivgtj1msdCRrfTWgauU7ybSHUqqUaFOUU,5390
118
+ cognite/neat/_graph/transformers/__init__.py,sha256=8nN901mwxtNMvX9xAtWVuaU6jDjJ5yiXDfc-oYGzYfE,1425
119
+ cognite/neat/_graph/transformers/_base.py,sha256=3AJogynIiuTcXtGj70xU1Iz7l7HO3MJD4dTVvx2zqEk,336
120
120
  cognite/neat/_graph/transformers/_classic_cdf.py,sha256=8vzvoHH2YJMg2mMTEH_ASGWn1Maars1N1RZ9jWhLTkY,19291
121
- cognite/neat/_graph/transformers/_iodd.py,sha256=yH-BvVQUswM8RmV2VvOPQAgwudhBJdxDLHW1RKxuuAY,729
122
- cognite/neat/_graph/transformers/_prune_graph.py,sha256=jmmnihEr8ONEgLye_81hyIzrY_TdtDIbMZNrfZQ7zGA,5270
121
+ cognite/neat/_graph/transformers/_iodd.py,sha256=KNz1fPdKK40UaHgPMECzNZgSeU5PdPRyLdaRYdq1iug,866
122
+ cognite/neat/_graph/transformers/_prune_graph.py,sha256=ZW_UHFAPjYiAm_B32utdxR6Dl1aq9C4ODmmmW8WrkUo,10616
123
123
  cognite/neat/_graph/transformers/_rdfpath.py,sha256=0ZH7d62kfdCyWGrCyY2oJSnGEPsHQd0sMrZAsTibCCI,4155
124
124
  cognite/neat/_graph/transformers/_value_type.py,sha256=JorH-AgDXVZUkG_GCcwn51Mw0M2WIOV834t0kF_Nwvo,2614
125
125
  cognite/neat/_issues/__init__.py,sha256=IEZBpvL88hdghX7JgndhxcZcxreZowuoQFIXuSeIKDs,556
@@ -149,22 +149,22 @@ cognite/neat/_rules/catalog/__init__.py,sha256=dzx-DYYJDc861aFiOI5o1FsySD9F1agY8
149
149
  cognite/neat/_rules/catalog/info-rules-imf.xlsx,sha256=7odm5CoAU72-VTZk_z1u7GbycIb-X-8Yy3mtBGLjhE4,55511
150
150
  cognite/neat/_rules/exporters/__init__.py,sha256=jCwXAeyZJv7GNJ3hGG-80gb8LAidozsyFMzdNIsGt_Y,1204
151
151
  cognite/neat/_rules/exporters/_base.py,sha256=vadYWb5hVbjiPIhVIzlY6ARisoqhtJa6Ce0ysNHPXQc,1328
152
- cognite/neat/_rules/exporters/_rules2dms.py,sha256=csaFRdebr8WzqjUcUpjnKkTfbPctk_5D-w-G0p_WtsA,15812
153
- cognite/neat/_rules/exporters/_rules2excel.py,sha256=puFgIf_dolxv38Lkgzl9lDDREWDPdTApqgYCu9H-hf4,11689
152
+ cognite/neat/_rules/exporters/_rules2dms.py,sha256=pwqy0wzLpSh-BNukLOOB12gTVNeCHEPefX5idtTp2sI,17198
153
+ cognite/neat/_rules/exporters/_rules2excel.py,sha256=d_UwE1tL2JaFcmdLtnRTu_dzNatUsHsVFYLsndPGaaY,11777
154
154
  cognite/neat/_rules/exporters/_rules2instance_template.py,sha256=8HM1SkzcucaEYpQi96ncMnL8STArX9Oe09JBhJJAN4I,5810
155
155
  cognite/neat/_rules/exporters/_rules2ontology.py,sha256=ioMi1GUhnbvcfVOPb3Z0a24mIEe74AfxySETWMDS9Lc,21776
156
156
  cognite/neat/_rules/exporters/_rules2yaml.py,sha256=O9vnzDHf1ep1Qu0po0GVjgu945HNx3-zRmhxv65sv6I,3052
157
157
  cognite/neat/_rules/exporters/_validation.py,sha256=DVJGdNNU2WtAFgUg0h4SWVhveRErEPOcYdT65y5toV0,682
158
158
  cognite/neat/_rules/importers/__init__.py,sha256=DZN_MIy_rQwyudvdAYtLPOVPB3YytmDoIfKGgT55StQ,1316
159
159
  cognite/neat/_rules/importers/_base.py,sha256=P5bksMf7MNfLDX0SVQxjmK3Y-psoe0HcI_sWFoQJbFs,3264
160
- cognite/neat/_rules/importers/_dms2rules.py,sha256=177CYuhO1w3IvEN5eiQWaxHjyRsDGagrTkEhBf1994E,20297
160
+ cognite/neat/_rules/importers/_dms2rules.py,sha256=u-zWfunrEXJEstgVfh3PVd33eJLz_s4hvFu2ayGmCME,21802
161
161
  cognite/neat/_rules/importers/_dtdl2rules/__init__.py,sha256=CNR-sUihs2mnR1bPMKs3j3L4ds3vFTsrl6YycExZTfU,68
162
162
  cognite/neat/_rules/importers/_dtdl2rules/_unit_lookup.py,sha256=wW4saKva61Q_i17guY0dc4OseJDQfqHy_QZBtm0OD6g,12134
163
163
  cognite/neat/_rules/importers/_dtdl2rules/dtdl_converter.py,sha256=j38U0um1ZWI-yRvEUR3z33vOvMCYXJxSO9L_B7m9xDE,11707
164
164
  cognite/neat/_rules/importers/_dtdl2rules/dtdl_importer.py,sha256=y3UMwrBysT3pl_wXJj-qKYKYbJDKa424AAfn6e8489k,5955
165
165
  cognite/neat/_rules/importers/_dtdl2rules/spec.py,sha256=u__f08rAiYG0FIRiWoecBN83bVN3GEy--Lvm7463Q68,12166
166
166
  cognite/neat/_rules/importers/_rdf/__init__.py,sha256=F0x60kVLtJ9H8Md8_aMeKMBkhPCMiljyxt2_YmQfnMU,183
167
- cognite/neat/_rules/importers/_rdf/_base.py,sha256=V-Y5NNP_ang3sXLJNx4AZZZPv1akzZWIRwVLafY3aac,5419
167
+ cognite/neat/_rules/importers/_rdf/_base.py,sha256=03YUWpcxjTrmYoVmZYxQKlMo4v54VJFfe_qx0fc8AGA,5449
168
168
  cognite/neat/_rules/importers/_rdf/_imf2rules.py,sha256=xemIv5G6JXJJ6Jn_1P5UldwEDNsgMIGiDF28DnOTtjU,3597
169
169
  cognite/neat/_rules/importers/_rdf/_inference2rules.py,sha256=Zu6GTsG8A48PQs8F7H8iskTj9zu2R-l4NlWejCwSwqo,12518
170
170
  cognite/neat/_rules/importers/_rdf/_owl2rules.py,sha256=KhQAM9ai2ckhpB7ohfRi0n8ztRwbPADfNMFed8f-5V8,3267
@@ -173,13 +173,13 @@ cognite/neat/_rules/importers/_spreadsheet2rules.py,sha256=TI92l_qddRW2JWk3Jbmsv
173
173
  cognite/neat/_rules/importers/_yaml2rules.py,sha256=5DsEMYo6JVHC_mBOaaR3J6on1rXSpk82plCsrOq5_l8,3144
174
174
  cognite/neat/_rules/models/__init__.py,sha256=z1LoPY2X-M8Og8bKcjae2JwQB9yW8Y_ASnkL3Tjwqyg,1024
175
175
  cognite/neat/_rules/models/_base_input.py,sha256=qJrxobZLqpc28adEUJTKdJ8hDUZ67SVDFkUJnGjcPOc,6647
176
- cognite/neat/_rules/models/_base_rules.py,sha256=JZkpV3l7gWGmDMluIFtc3qFBOc6edtSTfBMErj_ZzR4,14453
176
+ cognite/neat/_rules/models/_base_rules.py,sha256=4JP9jnJFP93kQ1otJSop-xIljTpHmZgNX9RfsQvEBfY,14820
177
177
  cognite/neat/_rules/models/_rdfpath.py,sha256=hqUMZCMeI8ESdJltu7FifuUhna5JNN_Heup2aYkV56Y,11882
178
178
  cognite/neat/_rules/models/_types.py,sha256=7rh4PVaqI58OTXtoIgZKitmwa5hZlVtk8uX4czlSGFY,5261
179
179
  cognite/neat/_rules/models/data_types.py,sha256=LJuWUbStlZM4hUJGExOJIJXmAA4uiA0tvO9zKqLUrQg,9805
180
180
  cognite/neat/_rules/models/dms/__init__.py,sha256=r2XGwAjTsAZs-n-oimg40hLUKVpqFGVuAPmfEUCwwRs,695
181
181
  cognite/neat/_rules/models/dms/_exporter.py,sha256=eB5uDX06XYkQkON96eykSk7ZCegb9a5dCxTmTIr252c,28020
182
- cognite/neat/_rules/models/dms/_rules.py,sha256=4Nstw6iVKil7oz4VkYM6q07-O7Gjrw8oT9ktZnqw5pI,16842
182
+ cognite/neat/_rules/models/dms/_rules.py,sha256=xQ8NoSE9D4tMjcEwKn4z7HdF9l_3OR-1xRlH3uamQPM,20186
183
183
  cognite/neat/_rules/models/dms/_rules_input.py,sha256=mVW-gHrjjlqFuq82qTkxIaMZ7OlzQFxjopxdlwQergY,12949
184
184
  cognite/neat/_rules/models/dms/_validation.py,sha256=TAgNg1rur3PRVPcsm4-BXKV9AHX8AtahN0OhRx3PgyM,27262
185
185
  cognite/neat/_rules/models/entities/__init__.py,sha256=QD-h79HhjqCsgscNU5kuf1ieRCE94dOfpujLuzYbtHk,1469
@@ -190,7 +190,7 @@ cognite/neat/_rules/models/entities/_single_value.py,sha256=dVfqIx3_Agi_LddhsqPO
190
190
  cognite/neat/_rules/models/entities/_types.py,sha256=df9rnXJJKciv2Bp-Ve2q4xdEJt6WWniq12Z0hW2d6sk,1917
191
191
  cognite/neat/_rules/models/entities/_wrapped.py,sha256=FxC8HztW_tUUtuArAOwxyFfkdJnSEB4bgZoNmmmfiPk,7137
192
192
  cognite/neat/_rules/models/information/__init__.py,sha256=ex9JOyiZYXefFl9oi1VaHhyUOtYjXWytSmwuq4pqKqc,556
193
- cognite/neat/_rules/models/information/_rules.py,sha256=miQpNmKS6bUfP1zI6GrmuUiKHGe13dW-QA96LqG38hY,10062
193
+ cognite/neat/_rules/models/information/_rules.py,sha256=c_vS0GM9hv2ESanuso5H5x5vR1aBVtG5rwzjQhHij_k,11798
194
194
  cognite/neat/_rules/models/information/_rules_input.py,sha256=PdXTPN0QfO4vxN5M4xzaaDwHEQo53RbY_jIr5TfBszY,5443
195
195
  cognite/neat/_rules/models/information/_validation.py,sha256=HbaLShj6uumu-t9I3FUI_iKQfUDiwEkuFENHgWIPfrk,10202
196
196
  cognite/neat/_rules/models/mapping/__init__.py,sha256=T68Hf7rhiXa7b03h4RMwarAmkGnB-Bbhc1H07b2PyC4,100
@@ -203,40 +203,40 @@ cognite/neat/_rules/transformers/_mapping.py,sha256=gMkLHeMWTvQJZV-YLMQm0pirnd2a
203
203
  cognite/neat/_rules/transformers/_pipelines.py,sha256=2y786LkNMedmxoozUyvtd-2bfqf6wkX2H8On-m2Ucsw,2618
204
204
  cognite/neat/_rules/transformers/_verification.py,sha256=M4-Cr3vTm3PZyHSjW-odbOqbY5g0hiRjERDjvLgYbxU,3907
205
205
  cognite/neat/_session/__init__.py,sha256=fxQ5URVlUnmEGYyB8Baw7IDq-uYacqkigbc4b-Pr9Fw,58
206
- cognite/neat/_session/_base.py,sha256=FjQBIk1Td2RWu58Ktd88k6ySzmNr9MVLt0hxgA8Eahg,10502
206
+ cognite/neat/_session/_base.py,sha256=93FJAYYdXvg2cpzL-rVCFdIivFIafb2OtMhr5zrkcyE,11696
207
207
  cognite/neat/_session/_collector.py,sha256=zS5JxLIYnAWV-dBzF6WgUfo662iYSzEyDhtnMv-Zibs,4002
208
208
  cognite/neat/_session/_drop.py,sha256=XlEaKb_HpqI5EQuUuUFjcf3Qx6BfcBBWdqqGdwkGhmE,1137
209
209
  cognite/neat/_session/_inspect.py,sha256=s3R6vz8HbqZSdknyXTSkmA3JvvInlQF5yNKECTA-I1w,7264
210
210
  cognite/neat/_session/_mapping.py,sha256=MZ_xRhapc2mVwM-W3tda2zZGaPncj_ZqnzuasvY05po,6109
211
- cognite/neat/_session/_prepare.py,sha256=_jU0TJWLcg727wKh8NK3a-5duVnRkGJrnkNxLO_D83Q,21883
212
- cognite/neat/_session/_read.py,sha256=4G34X_7hNs5V0gCLHPR1ktva6-fyGmwVc1Qu7T5yQdA,15102
211
+ cognite/neat/_session/_prepare.py,sha256=saGqkQUxdclU840d2IUMSeYltSoVn0b9ZkC2ntfOuu0,24994
212
+ cognite/neat/_session/_read.py,sha256=Kfq1RAT5soXSI7vgxY-HN-GjMzAW5RZQD9E7JiuKBmU,15152
213
213
  cognite/neat/_session/_set.py,sha256=NY0Vz8xD_a-UA8qWE1GFxHdmBl1BkT1KHQehQVKUorI,1914
214
214
  cognite/neat/_session/_show.py,sha256=_ev_Z41rkW4nlvhLf69PmttggKksnkCchOow7CmICyU,14124
215
215
  cognite/neat/_session/_state.py,sha256=rqKHkikagO1pf_fKpY-LZI1X5R_v6AyYpV72_3eSduM,5783
216
- cognite/neat/_session/_to.py,sha256=_NJn8tGTEcAoWpuCI6stquKNBuD8CqHqXLpSKkeT_1g,7365
216
+ cognite/neat/_session/_to.py,sha256=PjS3avL0a4SmarMgfxJrsjAA45gMZ_1wX9RcKSSvKXk,7413
217
217
  cognite/neat/_session/_wizard.py,sha256=O8d0FA87RIoiTOD2KLyTVsxwA2-ewAG2By4JfxXSL84,1474
218
218
  cognite/neat/_session/engine/__init__.py,sha256=aeI5pzljU5n1B-SVu3LwjYVsN1tSVhnJj-4ddflEo4U,120
219
219
  cognite/neat/_session/engine/_import.py,sha256=1QxA2_EK613lXYAHKQbZyw2yjo5P9XuiX4Z6_6-WMNQ,169
220
220
  cognite/neat/_session/engine/_interface.py,sha256=ItJ1VMrPt-pKKvpSpglD9n9yFC6ehF9xV2DUVCyfQB0,533
221
- cognite/neat/_session/engine/_load.py,sha256=HAzrAiR3FQz881ZMbaK6EIvMNRxHUK8VbSoD2Obd-4g,5064
221
+ cognite/neat/_session/engine/_load.py,sha256=LcoYVthQyCzLWKzRE_75_nElS-n_eMWSPAgNJBnh5dA,5193
222
222
  cognite/neat/_session/exceptions.py,sha256=dvhwF7d8AADxqEI13nZreLCPBPN_7A3KiAqlWjkpuqc,2303
223
223
  cognite/neat/_shared.py,sha256=JXebp3LREqBq9TPNXb7QCHwF7_nbWo622WAzllxSaaU,1671
224
224
  cognite/neat/_store/__init__.py,sha256=G-VG_YwfRt1kuPao07PDJyZ3w_0-eguzLUM13n-Z_RA,64
225
- cognite/neat/_store/_base.py,sha256=X77CkrCLEg9g_qpcqTIIid-1KZZ7NCU1wbrQqVR6Prc,16265
225
+ cognite/neat/_store/_base.py,sha256=WfVFynBRbhY-DgzpA0cApLUpaPMfiyolzVOycDgnm7c,17143
226
226
  cognite/neat/_store/_provenance.py,sha256=BiVOuwl65qWZBaBlPYbVv0Dy_Ibg7U3tLpXt8H7KRuw,8722
227
227
  cognite/neat/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
228
- cognite/neat/_utils/auth.py,sha256=UbFNq4BIqxc1459xJtI1FZz91K5XEMkfY5cfpBHyUHU,13301
228
+ cognite/neat/_utils/auth.py,sha256=YRzvkjT9lAYSJd3wsPov2wtmGVCtt1wOlmp84RRTEXw,13444
229
229
  cognite/neat/_utils/auxiliary.py,sha256=WFOycFgoYipvDmtGvn6ZNH3H8iNZmHamrfe2kXRb8lM,6667
230
230
  cognite/neat/_utils/collection_.py,sha256=Q_LN1qypr0SeAV3dAR5KLD1szHNohSdYxyA8hr3n4T8,1433
231
231
  cognite/neat/_utils/rdf_.py,sha256=_nmZqo6_Ef7Aep0kXR_uoiRxGQR2u5lMK4g5mxWneeY,8586
232
- cognite/neat/_utils/reader/__init__.py,sha256=KOdEuGd9n9tyqZY7HCTnBKAXk2PUn4n_l7O3ZguSp-w,112
233
- cognite/neat/_utils/reader/_base.py,sha256=PECrAlJqKDlyFzAlBBLfKjyOEyJSgN0sUfjbK-2qWf4,4537
232
+ cognite/neat/_utils/reader/__init__.py,sha256=bTYNMnlcCDSFWAcbj7j_r1pU3CnFM7lXeXXfo6acokA,146
233
+ cognite/neat/_utils/reader/_base.py,sha256=mk_kZDnfg5LcvYJr5IiBosYwbF82mLWo1p1Wq3K2p_Y,4681
234
234
  cognite/neat/_utils/spreadsheet.py,sha256=LI0c7dlW0zXHkHw0NvB-gg6Df6cDcE3FbiaHBYLXdzQ,2714
235
- cognite/neat/_utils/text.py,sha256=PvTEsEjaTu8SE8yYaKUrce4msboMj933dK7-0Eey_rE,3652
235
+ cognite/neat/_utils/text.py,sha256=0IffvBIAmeGh92F4T6xiEdd-vv3B7FOGEMbfuTktO5Y,4017
236
236
  cognite/neat/_utils/time_.py,sha256=O30LUiDH9TdOYz8_a9pFqTtJdg8vEjC3qHCk8xZblG8,345
237
237
  cognite/neat/_utils/upload.py,sha256=iWKmsQgw4EHLv-11NjYu7zAj5LtqTAfNa87a1kWeuaU,5727
238
238
  cognite/neat/_utils/xml_.py,sha256=FQkq84u35MUsnKcL6nTMJ9ajtG9D5i1u4VBnhGqP2DQ,1710
239
- cognite/neat/_version.py,sha256=nA_YK6_YjwJqujTlS_0t_IcLFjNgqEIsI8sSheyAdKI,46
239
+ cognite/neat/_version.py,sha256=vjgGQ3RZK2Kvz8gvZ9ElmNuxvNfbYPv4p9coXriN5Ic,46
240
240
  cognite/neat/_workflows/__init__.py,sha256=S0fZq7kvoqDKodHu1UIPsqcpdvXoefUWRPt1lqeQkQs,420
241
241
  cognite/neat/_workflows/base.py,sha256=O1pcmfbme2gIVF2eOGrKZSUDmhZc8L9rI8UfvLN2YAM,26839
242
242
  cognite/neat/_workflows/cdf_store.py,sha256=3pebnATPo6In4-1srpa3wzstynTOi3T6hwFX5uaie4c,18050
@@ -265,8 +265,8 @@ cognite/neat/_workflows/tasks.py,sha256=dr2xuIb8P5e5e9p_fjzRlvDbKsre2xGYrkc3wnRx
265
265
  cognite/neat/_workflows/triggers.py,sha256=u69xOsaTtM8_WD6ZeIIBB-XKwvlZmPHAsZQh_TnyHcM,7073
266
266
  cognite/neat/_workflows/utils.py,sha256=gKdy3RLG7ctRhbCRwaDIWpL9Mi98zm56-d4jfHDqP1E,453
267
267
  cognite/neat/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
268
- cognite_neat-0.100.1.dist-info/LICENSE,sha256=W8VmvFia4WHa3Gqxq1Ygrq85McUNqIGDVgtdvzT-XqA,11351
269
- cognite_neat-0.100.1.dist-info/METADATA,sha256=_uca35iR6CWYhSThIO4TX9xD6alAHLmNcjr9Jwda7UE,9699
270
- cognite_neat-0.100.1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
271
- cognite_neat-0.100.1.dist-info/entry_points.txt,sha256=SsQlnl8SNMSSjE3acBI835JYFtsIinLSbVmHmMEXv6E,51
272
- cognite_neat-0.100.1.dist-info/RECORD,,
268
+ cognite_neat-0.102.0.dist-info/LICENSE,sha256=W8VmvFia4WHa3Gqxq1Ygrq85McUNqIGDVgtdvzT-XqA,11351
269
+ cognite_neat-0.102.0.dist-info/METADATA,sha256=7qilQkBii0rF3dUUBQGeuEf74Yr4VaUyKQ6DgyOPQM4,5708
270
+ cognite_neat-0.102.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
271
+ cognite_neat-0.102.0.dist-info/entry_points.txt,sha256=SsQlnl8SNMSSjE3acBI835JYFtsIinLSbVmHmMEXv6E,51
272
+ cognite_neat-0.102.0.dist-info/RECORD,,