cognite-toolkit 0.7.39__py3-none-any.whl → 0.7.41__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.
Files changed (61) hide show
  1. cognite_toolkit/_cdf_tk/client/_toolkit_client.py +7 -1
  2. cognite_toolkit/_cdf_tk/client/api/assets.py +118 -0
  3. cognite_toolkit/_cdf_tk/client/api/events.py +97 -0
  4. cognite_toolkit/_cdf_tk/client/api/infield.py +3 -3
  5. cognite_toolkit/_cdf_tk/client/api/legacy/extended_functions.py +1 -1
  6. cognite_toolkit/_cdf_tk/client/api/project.py +1 -1
  7. cognite_toolkit/_cdf_tk/client/api/streams.py +2 -2
  8. cognite_toolkit/_cdf_tk/client/api/three_d.py +5 -4
  9. cognite_toolkit/_cdf_tk/client/api/timeseries.py +105 -0
  10. cognite_toolkit/_cdf_tk/client/cdf_client/__init__.py +9 -0
  11. cognite_toolkit/_cdf_tk/client/cdf_client/api.py +220 -0
  12. cognite_toolkit/_cdf_tk/client/{data_classes/api_classes.py → cdf_client/responses.py} +10 -13
  13. cognite_toolkit/_cdf_tk/client/data_classes/agent.py +127 -0
  14. cognite_toolkit/_cdf_tk/client/data_classes/asset.py +54 -0
  15. cognite_toolkit/_cdf_tk/client/data_classes/base.py +117 -22
  16. cognite_toolkit/_cdf_tk/client/data_classes/event.py +43 -0
  17. cognite_toolkit/_cdf_tk/client/data_classes/filemetadata.py +56 -0
  18. cognite_toolkit/_cdf_tk/client/data_classes/identifiers.py +44 -0
  19. cognite_toolkit/_cdf_tk/client/data_classes/instance_api.py +34 -0
  20. cognite_toolkit/_cdf_tk/client/data_classes/raw.py +43 -0
  21. cognite_toolkit/_cdf_tk/client/data_classes/streams.py +3 -2
  22. cognite_toolkit/_cdf_tk/client/data_classes/three_d.py +29 -34
  23. cognite_toolkit/_cdf_tk/client/data_classes/timeseries.py +55 -0
  24. cognite_toolkit/_cdf_tk/{utils → client}/http_client/__init__.py +4 -4
  25. cognite_toolkit/_cdf_tk/{utils → client}/http_client/_client.py +10 -10
  26. cognite_toolkit/_cdf_tk/{utils → client}/http_client/_data_classes.py +2 -2
  27. cognite_toolkit/_cdf_tk/{utils → client}/http_client/_data_classes2.py +10 -33
  28. cognite_toolkit/_cdf_tk/client/testing.py +6 -0
  29. cognite_toolkit/_cdf_tk/commands/_migrate/command.py +1 -1
  30. cognite_toolkit/_cdf_tk/commands/_migrate/conversion.py +6 -7
  31. cognite_toolkit/_cdf_tk/commands/_migrate/data_classes.py +6 -5
  32. cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py +6 -4
  33. cognite_toolkit/_cdf_tk/commands/_migrate/migration_io.py +10 -10
  34. cognite_toolkit/_cdf_tk/commands/_purge.py +7 -7
  35. cognite_toolkit/_cdf_tk/commands/_upload.py +1 -1
  36. cognite_toolkit/_cdf_tk/commands/pull.py +97 -2
  37. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/classic.py +43 -47
  38. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/fieldops.py +11 -4
  39. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/file.py +2 -1
  40. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/location.py +3 -2
  41. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/relationship.py +2 -1
  42. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/streams.py +1 -1
  43. cognite_toolkit/_cdf_tk/cruds/_resource_cruds/timeseries.py +2 -1
  44. cognite_toolkit/_cdf_tk/storageio/_applications.py +1 -1
  45. cognite_toolkit/_cdf_tk/storageio/_asset_centric.py +32 -29
  46. cognite_toolkit/_cdf_tk/storageio/_base.py +1 -1
  47. cognite_toolkit/_cdf_tk/storageio/_datapoints.py +7 -7
  48. cognite_toolkit/_cdf_tk/storageio/_file_content.py +7 -7
  49. cognite_toolkit/_cdf_tk/storageio/_raw.py +1 -1
  50. cognite_toolkit/_cdf_tk/utils/useful_types.py +4 -7
  51. cognite_toolkit/_cdf_tk/utils/useful_types2.py +12 -0
  52. cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml +1 -1
  53. cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml +1 -1
  54. cognite_toolkit/_resources/cdf.toml +1 -1
  55. cognite_toolkit/_version.py +1 -1
  56. {cognite_toolkit-0.7.39.dist-info → cognite_toolkit-0.7.41.dist-info}/METADATA +1 -1
  57. {cognite_toolkit-0.7.39.dist-info → cognite_toolkit-0.7.41.dist-info}/RECORD +61 -48
  58. {cognite_toolkit-0.7.39.dist-info → cognite_toolkit-0.7.41.dist-info}/WHEEL +1 -1
  59. /cognite_toolkit/_cdf_tk/{utils → client}/http_client/_exception.py +0 -0
  60. /cognite_toolkit/_cdf_tk/{utils → client}/http_client/_tracker.py +0 -0
  61. {cognite_toolkit-0.7.39.dist-info → cognite_toolkit-0.7.41.dist-info}/entry_points.txt +0 -0
@@ -1,14 +1,16 @@
1
- from collections.abc import Hashable
1
+ import sys
2
2
  from typing import Literal
3
3
 
4
4
  from pydantic import Field
5
5
 
6
- from .base import BaseModelObject, RequestResource, ResponseResource
6
+ from .base import BaseModelObject, Identifier, RequestResource, ResponseResource
7
+ from .identifiers import NameId
8
+ from .instance_api import NodeReference
7
9
 
8
-
9
- class NodeReference(BaseModelObject):
10
- space: str
11
- external_id: str
10
+ if sys.version_info >= (3, 11):
11
+ from typing import Self
12
+ else:
13
+ from typing_extensions import Self
12
14
 
13
15
 
14
16
  class RevisionStatus(BaseModelObject):
@@ -22,17 +24,14 @@ class RevisionStatus(BaseModelObject):
22
24
  class ThreeDModelRequest(RequestResource):
23
25
  name: str
24
26
 
25
- def as_id(self) -> str:
26
- return self.name
27
+ def as_id(self) -> NameId:
28
+ return NameId(name=self.name)
27
29
 
28
30
 
29
31
  class ThreeDModelClassicRequest(ThreeDModelRequest):
30
32
  data_set_id: int | None = None
31
33
  metadata: dict[str, str] | None = None
32
34
 
33
- def as_id(self) -> str:
34
- return self.name
35
-
36
35
 
37
36
  class ThreeDModelDMSRequest(ThreeDModelRequest):
38
37
  space: str
@@ -56,24 +55,21 @@ class ThreeDModelResponse(ResponseResource[ThreeDModelRequest]):
56
55
  return ThreeDModelDMSRequest._load(self.dump())
57
56
 
58
57
 
59
- class AssetMappingDMRequest(RequestResource):
58
+ class AssetMappingDMRequest(RequestResource, Identifier):
60
59
  node_id: int
61
60
  asset_instance_id: NodeReference
62
61
  # These fields are part of the path request and not the body schema.
63
62
  model_id: int = Field(exclude=True)
64
63
  revision_id: int = Field(exclude=True)
65
64
 
66
- def as_id(self) -> Hashable:
67
- return (
68
- self.model_id,
69
- self.revision_id,
70
- self.node_id,
71
- self.asset_instance_id.space,
72
- self.asset_instance_id.external_id,
73
- )
65
+ def as_id(self) -> Self:
66
+ return self
74
67
 
68
+ def __str__(self) -> str:
69
+ return f"{self.model_id}_{self.revision_id}_{self.node_id}_{self.asset_instance_id.space}_{self.asset_instance_id.external_id}"
75
70
 
76
- class AssetMappingClassicRequest(RequestResource):
71
+
72
+ class AssetMappingClassicRequest(RequestResource, Identifier):
77
73
  node_id: int
78
74
  asset_id: int | None = None
79
75
  asset_instance_id: NodeReference | None = None
@@ -81,19 +77,18 @@ class AssetMappingClassicRequest(RequestResource):
81
77
  model_id: int = Field(exclude=True)
82
78
  revision_id: int = Field(exclude=True)
83
79
 
84
- def as_id(self) -> Hashable:
85
- if self.asset_id:
86
- return self.model_id, self.revision_id, self.node_id, self.asset_id
87
- elif self.asset_instance_id:
88
- return (
89
- self.model_id,
90
- self.revision_id,
91
- self.node_id,
92
- self.asset_instance_id.space,
93
- self.asset_instance_id.external_id,
94
- )
95
- else:
96
- raise AttributeError("asset_id or asset_instance_id is required")
80
+ def as_id(self) -> Self:
81
+ return self
82
+
83
+ def __str__(self) -> str:
84
+ asset_part = (
85
+ f"assetId:{self.asset_id}"
86
+ if self.asset_id is not None
87
+ else f"assetInstance:{self.asset_instance_id.space}_{self.asset_instance_id.external_id}"
88
+ if self.asset_instance_id is not None
89
+ else "noAsset"
90
+ )
91
+ return f"{self.model_id}_{self.revision_id}_{self.node_id}_{asset_part}"
97
92
 
98
93
 
99
94
  class AssetMappingResponse(ResponseResource[AssetMappingClassicRequest]):
@@ -0,0 +1,55 @@
1
+ from typing import Any, ClassVar, Literal
2
+
3
+ from cognite_toolkit._cdf_tk.client.data_classes.base import RequestUpdateable, ResponseResource
4
+
5
+ from .identifiers import ExternalId, InternalOrExternalId
6
+ from .instance_api import NodeReference
7
+
8
+
9
+ class TimeSeriesRequest(RequestUpdateable):
10
+ container_fields: ClassVar[frozenset[str]] = frozenset({"metadata", "security_categories"})
11
+ non_nullable_fields: ClassVar[frozenset[str]] = frozenset({"is_step"})
12
+ external_id: str | None = None
13
+ name: str | None = None
14
+ is_string: bool = False
15
+ metadata: dict[str, str] | None = None
16
+ unit: str | None = None
17
+ unit_external_id: str | None = None
18
+ asset_id: int | None = None
19
+ is_step: bool = False
20
+ description: str | None = None
21
+ security_categories: list[int] | None = None
22
+ data_set_id: int | None = None
23
+
24
+ def as_id(self) -> InternalOrExternalId:
25
+ if self.external_id is None:
26
+ raise ValueError("Cannot convert TimeSeriesRequest to ExternalId when external_id is None")
27
+ return ExternalId(external_id=self.external_id)
28
+
29
+ def as_update(self, mode: Literal["patch", "replace"]) -> dict[str, Any]:
30
+ dumped = super().as_update(mode)
31
+ # isString is immutable in CDF, so we remove it from update payloads
32
+ dumped.pop("isString", None)
33
+ return dumped
34
+
35
+
36
+ class TimeSeriesResponse(ResponseResource[TimeSeriesRequest]):
37
+ id: int
38
+ instance_id: NodeReference | None = None
39
+ external_id: str | None = None
40
+ name: str | None = None
41
+ is_string: bool
42
+ metadata: dict[str, str] | None = None
43
+ unit: str | None = None
44
+ type: str
45
+ unit_external_id: str | None = None
46
+ asset_id: int | None = None
47
+ is_step: bool
48
+ description: str | None = None
49
+ security_categories: list[int] | None = None
50
+ data_set_id: int | None = None
51
+ created_time: int
52
+ last_updated_time: int
53
+
54
+ def as_request_resource(self) -> TimeSeriesRequest:
55
+ return TimeSeriesRequest.model_validate(self.dump())
@@ -1,5 +1,6 @@
1
1
  from ._client import HTTPClient
2
2
  from ._data_classes import (
3
+ T_COVARIANT_ID,
3
4
  DataBodyRequest,
4
5
  ErrorDetails,
5
6
  FailedRequestItems,
@@ -10,6 +11,7 @@ from ._data_classes import (
10
11
  ItemMessage,
11
12
  ItemsRequest,
12
13
  ParamRequest,
14
+ RequestItem,
13
15
  RequestMessage,
14
16
  ResponseList,
15
17
  ResponseMessage,
@@ -18,7 +20,6 @@ from ._data_classes import (
18
20
  SuccessResponseItems,
19
21
  )
20
22
  from ._data_classes2 import (
21
- BaseModelObject,
22
23
  ErrorDetails2,
23
24
  FailedRequest2,
24
25
  FailedResponse2,
@@ -29,13 +30,12 @@ from ._data_classes2 import (
29
30
  ItemsResultMessage2,
30
31
  ItemsSuccessResponse2,
31
32
  RequestMessage2,
32
- RequestResource,
33
33
  SuccessResponse2,
34
34
  )
35
35
  from ._exception import ToolkitAPIError
36
36
 
37
37
  __all__ = [
38
- "BaseModelObject",
38
+ "T_COVARIANT_ID",
39
39
  "DataBodyRequest",
40
40
  "ErrorDetails",
41
41
  "ErrorDetails2",
@@ -56,9 +56,9 @@ __all__ = [
56
56
  "ItemsResultMessage2",
57
57
  "ItemsSuccessResponse2",
58
58
  "ParamRequest",
59
+ "RequestItem",
59
60
  "RequestMessage",
60
61
  "RequestMessage2",
61
- "RequestResource",
62
62
  "ResponseList",
63
63
  "ResponseMessage",
64
64
  "SimpleBodyRequest",
@@ -10,9 +10,7 @@ import httpx
10
10
  from cognite.client import global_config
11
11
  from rich.console import Console
12
12
 
13
- from cognite_toolkit._cdf_tk.tk_warnings import HighSeverityWarning
14
- from cognite_toolkit._cdf_tk.utils.auxiliary import get_current_toolkit_version, get_user_agent
15
- from cognite_toolkit._cdf_tk.utils.http_client._data_classes import (
13
+ from cognite_toolkit._cdf_tk.client.http_client._data_classes import (
16
14
  BodyRequest,
17
15
  DataBodyRequest,
18
16
  FailedRequestMessage,
@@ -23,7 +21,7 @@ from cognite_toolkit._cdf_tk.utils.http_client._data_classes import (
23
21
  ResponseList,
24
22
  ResponseMessage,
25
23
  )
26
- from cognite_toolkit._cdf_tk.utils.http_client._data_classes2 import (
24
+ from cognite_toolkit._cdf_tk.client.http_client._data_classes2 import (
27
25
  BaseRequestMessage,
28
26
  ErrorDetails2,
29
27
  FailedRequest2,
@@ -38,6 +36,8 @@ from cognite_toolkit._cdf_tk.utils.http_client._data_classes2 import (
38
36
  RequestMessage2,
39
37
  SuccessResponse2,
40
38
  )
39
+ from cognite_toolkit._cdf_tk.tk_warnings import HighSeverityWarning
40
+ from cognite_toolkit._cdf_tk.utils.auxiliary import get_current_toolkit_version, get_user_agent
41
41
  from cognite_toolkit._cdf_tk.utils.useful_types import PrimitiveType
42
42
 
43
43
  if sys.version_info >= (3, 11):
@@ -414,7 +414,7 @@ class HTTPClient:
414
414
  if message.tracker and message.tracker.limit_reached():
415
415
  return [
416
416
  ItemsFailedRequest2(
417
- ids=[item.as_id() for item in message.items],
417
+ ids=[str(item) for item in message.items],
418
418
  error_message=f"Aborting further splitting of requests after {message.tracker.failed_split_count} failed attempts.",
419
419
  )
420
420
  ]
@@ -464,7 +464,7 @@ class HTTPClient:
464
464
  if 200 <= response.status_code < 300:
465
465
  return [
466
466
  ItemsSuccessResponse2(
467
- ids=[item.as_id() for item in request.items],
467
+ ids=[str(item) for item in request.items],
468
468
  status_code=response.status_code,
469
469
  body=response.text,
470
470
  content=response.content,
@@ -480,7 +480,7 @@ class HTTPClient:
480
480
  if splits[0].tracker and splits[0].tracker.limit_reached():
481
481
  return [
482
482
  ItemsFailedResponse2(
483
- ids=[item.as_id() for item in request.items],
483
+ ids=[str(item) for item in request.items],
484
484
  status_code=response.status_code,
485
485
  body=response.text,
486
486
  error=ErrorDetails2.from_response(response),
@@ -494,7 +494,7 @@ class HTTPClient:
494
494
  # Permanent failure
495
495
  return [
496
496
  ItemsFailedResponse2(
497
- ids=[item.as_id() for item in request.items],
497
+ ids=[str(item) for item in request.items],
498
498
  status_code=response.status_code,
499
499
  body=response.text,
500
500
  error=ErrorDetails2.from_response(response),
@@ -516,7 +516,7 @@ class HTTPClient:
516
516
  error_msg = f"Unexpected exception: {e!s}"
517
517
  return [
518
518
  ItemsFailedRequest2(
519
- ids=[item.as_id() for item in request.items],
519
+ ids=[str(item) for item in request.items],
520
520
  error_message=error_msg,
521
521
  )
522
522
  ]
@@ -530,7 +530,7 @@ class HTTPClient:
530
530
 
531
531
  return [
532
532
  ItemsFailedRequest2(
533
- ids=[item.as_id() for item in request.items],
533
+ ids=[str(item) for item in request.items],
534
534
  error_message=error_msg,
535
535
  )
536
536
  ]
@@ -7,8 +7,8 @@ from typing import Generic, Literal, Protocol, TypeAlias, TypeVar
7
7
  import httpx
8
8
  from cognite.client.utils import _json
9
9
 
10
- from cognite_toolkit._cdf_tk.utils.http_client._exception import ToolkitAPIError
11
- from cognite_toolkit._cdf_tk.utils.http_client._tracker import ItemsRequestTracker
10
+ from cognite_toolkit._cdf_tk.client.http_client._exception import ToolkitAPIError
11
+ from cognite_toolkit._cdf_tk.client.http_client._tracker import ItemsRequestTracker
12
12
  from cognite_toolkit._cdf_tk.utils.useful_types import JsonVal, PrimitiveType
13
13
 
14
14
  StatusCode: TypeAlias = int
@@ -2,22 +2,21 @@ import gzip
2
2
  import sys
3
3
  from abc import ABC, abstractmethod
4
4
  from collections import UserList
5
- from collections.abc import Hashable, Sequence
5
+ from collections.abc import Sequence
6
6
  from typing import Any, Literal
7
7
 
8
8
  import httpx
9
9
  from cognite.client import global_config
10
10
  from pydantic import BaseModel, ConfigDict, Field, JsonValue, TypeAdapter, model_validator
11
- from pydantic.alias_generators import to_camel
12
11
 
13
- from cognite_toolkit._cdf_tk.utils.http_client._exception import ToolkitAPIError
14
- from cognite_toolkit._cdf_tk.utils.http_client._tracker import ItemsRequestTracker
12
+ from cognite_toolkit._cdf_tk.client.http_client._exception import ToolkitAPIError
13
+ from cognite_toolkit._cdf_tk.client.http_client._tracker import ItemsRequestTracker
15
14
  from cognite_toolkit._cdf_tk.utils.useful_types import PrimitiveType
16
15
 
17
16
  if sys.version_info >= (3, 11):
18
- from typing import Self
17
+ pass
19
18
  else:
20
- from typing_extensions import Self
19
+ pass
21
20
 
22
21
 
23
22
  class HTTPResult2(BaseModel):
@@ -124,7 +123,7 @@ _BODY_SERIALIZER = TypeAdapter(dict[str, JsonValue])
124
123
 
125
124
 
126
125
  class ItemsResultMessage2(BaseModel):
127
- ids: list[Hashable]
126
+ ids: list[str]
128
127
 
129
128
 
130
129
  class ItemsFailedRequest2(ItemsResultMessage2):
@@ -143,30 +142,6 @@ class ItemsFailedResponse2(ItemsResultMessage2):
143
142
  body: str
144
143
 
145
144
 
146
- class BaseModelObject(BaseModel):
147
- """Base class for all object. This includes resources and nested objects."""
148
-
149
- # We allow extra fields to support forward compatibility.
150
- model_config = ConfigDict(alias_generator=to_camel, extra="allow")
151
-
152
- def dump(self, camel_case: bool = True) -> dict[str, Any]:
153
- """Dump the resource to a dictionary.
154
-
155
- This is the default serialization method for request resources.
156
- """
157
- return self.model_dump(mode="json", by_alias=camel_case, exclude_unset=True)
158
-
159
- @classmethod
160
- def _load(cls, resource: dict[str, Any]) -> "Self":
161
- """Load method to match CogniteResource signature."""
162
- return cls.model_validate(resource)
163
-
164
-
165
- class RequestResource(BaseModelObject, ABC):
166
- @abstractmethod
167
- def as_id(self) -> Hashable: ...
168
-
169
-
170
145
  def _set_default_tracker(data: dict[str, Any]) -> ItemsRequestTracker:
171
146
  if "tracker" not in data or data["tracker"] is None:
172
147
  return ItemsRequestTracker(data.get("max_failures_before_abort", 50))
@@ -175,14 +150,16 @@ def _set_default_tracker(data: dict[str, Any]) -> ItemsRequestTracker:
175
150
 
176
151
  class ItemsRequest2(BaseRequestMessage):
177
152
  model_config = ConfigDict(arbitrary_types_allowed=True)
178
- items: Sequence[RequestResource]
153
+ items: Sequence[BaseModel]
179
154
  extra_body_fields: dict[str, JsonValue] | None = None
180
155
  max_failures_before_abort: int = 50
181
156
  tracker: ItemsRequestTracker = Field(init=False, default_factory=_set_default_tracker, exclude=True)
182
157
 
183
158
  @property
184
159
  def content(self) -> str | bytes | None:
185
- body: dict[str, JsonValue] = {"items": [item.dump() for item in self.items]}
160
+ body: dict[str, JsonValue] = {
161
+ "items": [item.model_dump(mode="json", by_alias=True, exclude_unset=True) for item in self.items]
162
+ }
186
163
  if self.extra_body_fields:
187
164
  body.update(self.extra_body_fields)
188
165
  res = _BODY_SERIALIZER.dump_json(body)
@@ -12,6 +12,7 @@ from cognite.client.testing import CogniteClientMock
12
12
  from rich.console import Console
13
13
 
14
14
  from cognite_toolkit._cdf_tk.client._toolkit_client import ToolkitClient
15
+ from cognite_toolkit._cdf_tk.client.api.assets import AssetsAPI
15
16
  from cognite_toolkit._cdf_tk.client.api.legacy.canvas import CanvasAPI, IndustrialCanvasAPI
16
17
  from cognite_toolkit._cdf_tk.client.api.legacy.charts import ChartsAPI
17
18
  from cognite_toolkit._cdf_tk.client.api.legacy.dml import DMLAPI
@@ -32,6 +33,7 @@ from cognite_toolkit._cdf_tk.client.api.legacy.robotics import LocationsAPI as R
32
33
  from cognite_toolkit._cdf_tk.client.api.legacy.search_config import SearchConfigurationsAPI
33
34
 
34
35
  from ._toolkit_client import ToolAPI
36
+ from .api.events import EventsAPI
35
37
  from .api.infield import InfieldAPI, InFieldCDMConfigAPI, InfieldConfigAPI
36
38
  from .api.lookup import (
37
39
  AssetLookUpAPI,
@@ -57,6 +59,7 @@ from .api.project import ProjectAPI
57
59
  from .api.search import SearchAPI
58
60
  from .api.streams import StreamsAPI
59
61
  from .api.three_d import ThreeDAPI, ThreeDModelAPI
62
+ from .api.timeseries import TimeSeriesAPI
60
63
  from .api.token import TokenAPI
61
64
  from .api.verify import VerifyAPI
62
65
 
@@ -138,6 +141,9 @@ class ToolkitClientMock(CogniteClientMock):
138
141
  self.tool = MagicMock(spec=ToolAPI)
139
142
  self.tool.three_d = MagicMock(spec=ThreeDAPI)
140
143
  self.tool.three_d.models = MagicMock(spec_set=ThreeDModelAPI)
144
+ self.tool.assets = MagicMock(spec_set=AssetsAPI)
145
+ self.tool.time_series = MagicMock(spec_set=TimeSeriesAPI)
146
+ self.tool.events = MagicMock(spec_set=EventsAPI)
141
147
 
142
148
  self.streams = MagicMock(spec=StreamsAPI)
143
149
 
@@ -7,6 +7,7 @@ from rich.console import Console
7
7
  from rich.table import Table
8
8
 
9
9
  from cognite_toolkit._cdf_tk.client import ToolkitClient
10
+ from cognite_toolkit._cdf_tk.client.http_client import HTTPClient, HTTPMessage, ItemMessage, SuccessResponseItems
10
11
  from cognite_toolkit._cdf_tk.commands._base import ToolkitCommand
11
12
  from cognite_toolkit._cdf_tk.commands._migrate.creators import MigrationCreator
12
13
  from cognite_toolkit._cdf_tk.commands._migrate.data_mapper import DataMapper
@@ -24,7 +25,6 @@ from cognite_toolkit._cdf_tk.storageio import T_Selector, UploadableStorageIO, U
24
25
  from cognite_toolkit._cdf_tk.utils import humanize_collection, safe_write, sanitize_filename
25
26
  from cognite_toolkit._cdf_tk.utils.file import yaml_safe_dump
26
27
  from cognite_toolkit._cdf_tk.utils.fileio import Chunk, CSVWriter, NDJsonWriter, SchemaColumn, Uncompressed
27
- from cognite_toolkit._cdf_tk.utils.http_client import HTTPClient, HTTPMessage, ItemMessage, SuccessResponseItems
28
28
  from cognite_toolkit._cdf_tk.utils.producer_worker import ProducerWorkerExecutor
29
29
  from cognite_toolkit._cdf_tk.utils.progress_tracker import AVAILABLE_STATUS, ProgressTracker, Status
30
30
 
@@ -1,7 +1,7 @@
1
1
  from collections.abc import Iterable, Mapping, Set
2
2
  from typing import Any, ClassVar, cast
3
3
 
4
- from cognite.client.data_classes import Annotation, Asset, Event, FileMetadata, TimeSeries
4
+ from cognite.client.data_classes import Annotation, Event, FileMetadata, TimeSeries
5
5
  from cognite.client.data_classes.data_modeling import (
6
6
  DirectRelation,
7
7
  DirectRelationReference,
@@ -16,6 +16,7 @@ from cognite.client.data_classes.data_modeling.views import ViewProperty
16
16
  from cognite.client.utils._identifier import InstanceId
17
17
 
18
18
  from cognite_toolkit._cdf_tk.client import ToolkitClient
19
+ from cognite_toolkit._cdf_tk.client.data_classes.asset import AssetResponse
19
20
  from cognite_toolkit._cdf_tk.client.data_classes.legacy.migration import (
20
21
  AssetCentricId,
21
22
  ResourceViewMappingApply,
@@ -25,10 +26,8 @@ from cognite_toolkit._cdf_tk.utils.dtype_conversion import (
25
26
  asset_centric_convert_to_primary_property,
26
27
  convert_to_primary_property,
27
28
  )
28
- from cognite_toolkit._cdf_tk.utils.useful_types import (
29
- AssetCentricResourceExtended,
30
- AssetCentricTypeExtended,
31
- )
29
+ from cognite_toolkit._cdf_tk.utils.useful_types import AssetCentricTypeExtended
30
+ from cognite_toolkit._cdf_tk.utils.useful_types2 import AssetCentricResourceExtended
32
31
 
33
32
  from .data_model import COGNITE_MIGRATION_SPACE_ID, INSTANCE_SOURCE_VIEW_ID
34
33
  from .issues import ConversionIssue, FailedConversion, InvalidPropertyDataType
@@ -111,7 +110,7 @@ class DirectRelationCache:
111
110
  file_ids.add(file_id)
112
111
  if isinstance(file_external_id := file_ref.get("externalId"), str):
113
112
  file_external_ids.add(file_external_id)
114
- elif isinstance(resource, Asset):
113
+ elif isinstance(resource, AssetResponse):
115
114
  if resource.source:
116
115
  source_ids.add(resource.source)
117
116
  if resource.parent_id is not None:
@@ -245,7 +244,7 @@ def asset_centric_to_dm(
245
244
 
246
245
 
247
246
  def _lookup_resource_type(resource_type: AssetCentricResourceExtended) -> AssetCentricTypeExtended:
248
- if isinstance(resource_type, Asset):
247
+ if isinstance(resource_type, AssetResponse):
249
248
  return "asset"
250
249
  elif isinstance(resource_type, FileMetadata):
251
250
  return "file"
@@ -12,6 +12,7 @@ from cognite.client.utils._text import to_camel_case
12
12
  from pydantic import BaseModel, BeforeValidator, Field, field_validator, model_validator
13
13
 
14
14
  from cognite_toolkit._cdf_tk.client.data_classes.base import BaseModelObject, RequestResource
15
+ from cognite_toolkit._cdf_tk.client.data_classes.identifiers import InternalId
15
16
  from cognite_toolkit._cdf_tk.client.data_classes.instance_api import InstanceIdentifier
16
17
  from cognite_toolkit._cdf_tk.client.data_classes.legacy.instances import InstanceApplyList
17
18
  from cognite_toolkit._cdf_tk.client.data_classes.legacy.migration import AssetCentricId
@@ -26,8 +27,8 @@ from cognite_toolkit._cdf_tk.storageio._data_classes import ModelList
26
27
  from cognite_toolkit._cdf_tk.utils.useful_types import (
27
28
  AssetCentricKindExtended,
28
29
  JsonVal,
29
- T_AssetCentricResourceExtended,
30
30
  )
31
+ from cognite_toolkit._cdf_tk.utils.useful_types2 import T_AssetCentricResourceExtended
31
32
 
32
33
 
33
34
  class MigrationMapping(BaseModel, alias_generator=to_camel_case, extra="ignore", populate_by_name=True):
@@ -279,8 +280,8 @@ class ThreeDRevisionMigrationRequest(RequestResource):
279
280
  revision_id: int
280
281
  model: Model
281
282
 
282
- def as_id(self) -> int:
283
- return self.revision_id
283
+ def as_id(self) -> InternalId:
284
+ return InternalId(id=self.revision_id)
284
285
 
285
286
 
286
287
  class ThreeDMigrationRequest(RequestResource):
@@ -290,5 +291,5 @@ class ThreeDMigrationRequest(RequestResource):
290
291
  thumbnail: Thumbnail | None = None
291
292
  revision: ThreeDRevisionMigrationRequest = Field(exclude=True)
292
293
 
293
- def as_id(self) -> int:
294
- return self.model_id
294
+ def as_id(self) -> InternalId:
295
+ return InternalId(id=self.model_id)
@@ -20,7 +20,7 @@ from cognite_toolkit._cdf_tk.client.data_classes.charts_data import (
20
20
  ChartSource,
21
21
  ChartTimeseries,
22
22
  )
23
- from cognite_toolkit._cdf_tk.client.data_classes.instance_api import InstanceIdentifier
23
+ from cognite_toolkit._cdf_tk.client.data_classes.instance_api import InstanceIdentifier, NodeReference
24
24
  from cognite_toolkit._cdf_tk.client.data_classes.legacy.canvas import (
25
25
  ContainerReferenceApply,
26
26
  FdmInstanceContainerReferenceApply,
@@ -32,7 +32,6 @@ from cognite_toolkit._cdf_tk.client.data_classes.legacy.migration import Resourc
32
32
  from cognite_toolkit._cdf_tk.client.data_classes.three_d import (
33
33
  AssetMappingDMRequest,
34
34
  AssetMappingResponse,
35
- NodeReference,
36
35
  RevisionStatus,
37
36
  ThreeDModelResponse,
38
37
  )
@@ -56,7 +55,7 @@ from cognite_toolkit._cdf_tk.protocols import T_ResourceRequest, T_ResourceRespo
56
55
  from cognite_toolkit._cdf_tk.storageio._base import T_Selector
57
56
  from cognite_toolkit._cdf_tk.storageio.selectors import CanvasSelector, ChartSelector, ThreeDSelector
58
57
  from cognite_toolkit._cdf_tk.utils import humanize_collection
59
- from cognite_toolkit._cdf_tk.utils.useful_types import T_AssetCentricResourceExtended
58
+ from cognite_toolkit._cdf_tk.utils.useful_types2 import T_AssetCentricResourceExtended
60
59
 
61
60
  from .data_classes import AssetCentricMapping
62
61
  from .selectors import AssetCentricMigrationSelector
@@ -515,6 +514,9 @@ class ThreeDAssetMapper(DataMapper[ThreeDSelector, AssetMappingResponse, AssetMa
515
514
  issue.error_message.append("Neither assetInstanceId nor assetId provided for mapping.")
516
515
  return None, issue
517
516
  mapped_request = AssetMappingDMRequest(
518
- modelId=item.model_id, revisionId=item.revision_id, nodeId=item.node_id, assetInstanceId=asset_instance_id
517
+ model_id=item.model_id,
518
+ revision_id=item.revision_id,
519
+ node_id=item.node_id,
520
+ asset_instance_id=asset_instance_id,
519
521
  )
520
522
  return mapped_request, issue
@@ -11,6 +11,15 @@ from cognite_toolkit._cdf_tk.client.data_classes.three_d import (
11
11
  AssetMappingResponse,
12
12
  ThreeDModelResponse,
13
13
  )
14
+ from cognite_toolkit._cdf_tk.client.http_client import (
15
+ FailedResponse,
16
+ HTTPClient,
17
+ HTTPMessage,
18
+ ItemsRequest,
19
+ SimpleBodyRequest,
20
+ SuccessResponseItems,
21
+ ToolkitAPIError,
22
+ )
14
23
  from cognite_toolkit._cdf_tk.commands._migrate.data_classes import ThreeDMigrationRequest
15
24
  from cognite_toolkit._cdf_tk.constants import MISSING_EXTERNAL_ID, MISSING_INSTANCE_SPACE
16
25
  from cognite_toolkit._cdf_tk.exceptions import ToolkitNotImplementedError, ToolkitValueError
@@ -29,21 +38,12 @@ from cognite_toolkit._cdf_tk.storageio.selectors import (
29
38
  )
30
39
  from cognite_toolkit._cdf_tk.tk_warnings import MediumSeverityWarning
31
40
  from cognite_toolkit._cdf_tk.utils.collection import chunker_sequence
32
- from cognite_toolkit._cdf_tk.utils.http_client import (
33
- FailedResponse,
34
- HTTPClient,
35
- HTTPMessage,
36
- ItemsRequest,
37
- SimpleBodyRequest,
38
- SuccessResponseItems,
39
- ToolkitAPIError,
40
- )
41
41
  from cognite_toolkit._cdf_tk.utils.useful_types import (
42
42
  AssetCentricKindExtended,
43
43
  AssetCentricType,
44
44
  JsonVal,
45
- T_AssetCentricResource,
46
45
  )
46
+ from cognite_toolkit._cdf_tk.utils.useful_types2 import T_AssetCentricResource
47
47
 
48
48
  from .data_classes import (
49
49
  AnnotationMapping,
@@ -17,6 +17,13 @@ from rich.panel import Panel
17
17
 
18
18
  from cognite_toolkit._cdf_tk.client import ToolkitClient
19
19
  from cognite_toolkit._cdf_tk.client.data_classes.instance_api import TypedInstanceIdentifier
20
+ from cognite_toolkit._cdf_tk.client.http_client import (
21
+ HTTPClient,
22
+ ItemsRequest,
23
+ ItemsRequest2,
24
+ ItemsSuccessResponse2,
25
+ SuccessResponseItems,
26
+ )
20
27
  from cognite_toolkit._cdf_tk.cruds import (
21
28
  AssetCRUD,
22
29
  ContainerCRUD,
@@ -59,13 +66,6 @@ from cognite_toolkit._cdf_tk.utils.aggregators import (
59
66
  SequenceAggregator,
60
67
  TimeSeriesAggregator,
61
68
  )
62
- from cognite_toolkit._cdf_tk.utils.http_client import (
63
- HTTPClient,
64
- ItemsRequest,
65
- ItemsRequest2,
66
- ItemsSuccessResponse2,
67
- SuccessResponseItems,
68
- )
69
69
  from cognite_toolkit._cdf_tk.utils.producer_worker import ProducerWorkerExecutor
70
70
  from cognite_toolkit._cdf_tk.utils.useful_types import JsonVal
71
71
  from cognite_toolkit._cdf_tk.utils.validate_access import ValidateAccess
@@ -9,6 +9,7 @@ from cognite.client.data_classes.data_modeling import (
9
9
  from rich.console import Console
10
10
 
11
11
  from cognite_toolkit._cdf_tk.client import ToolkitClient
12
+ from cognite_toolkit._cdf_tk.client.http_client import HTTPClient, ItemMessage, SuccessResponseItems
12
13
  from cognite_toolkit._cdf_tk.constants import DATA_MANIFEST_SUFFIX, DATA_RESOURCE_DIR
13
14
  from cognite_toolkit._cdf_tk.cruds import ViewCRUD
14
15
  from cognite_toolkit._cdf_tk.exceptions import ToolkitValueError
@@ -24,7 +25,6 @@ from cognite_toolkit._cdf_tk.storageio.selectors._instances import InstanceSpace
24
25
  from cognite_toolkit._cdf_tk.tk_warnings import HighSeverityWarning, MediumSeverityWarning, ToolkitWarning
25
26
  from cognite_toolkit._cdf_tk.utils.auth import EnvironmentVariables
26
27
  from cognite_toolkit._cdf_tk.utils.fileio import MultiFileReader
27
- from cognite_toolkit._cdf_tk.utils.http_client import HTTPClient, ItemMessage, SuccessResponseItems
28
28
  from cognite_toolkit._cdf_tk.utils.producer_worker import ProducerWorkerExecutor
29
29
  from cognite_toolkit._cdf_tk.utils.progress_tracker import ProgressTracker
30
30
  from cognite_toolkit._cdf_tk.utils.useful_types import JsonVal