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.
- cognite_toolkit/_cdf_tk/client/_toolkit_client.py +7 -1
- cognite_toolkit/_cdf_tk/client/api/assets.py +118 -0
- cognite_toolkit/_cdf_tk/client/api/events.py +97 -0
- cognite_toolkit/_cdf_tk/client/api/infield.py +3 -3
- cognite_toolkit/_cdf_tk/client/api/legacy/extended_functions.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/project.py +1 -1
- cognite_toolkit/_cdf_tk/client/api/streams.py +2 -2
- cognite_toolkit/_cdf_tk/client/api/three_d.py +5 -4
- cognite_toolkit/_cdf_tk/client/api/timeseries.py +105 -0
- cognite_toolkit/_cdf_tk/client/cdf_client/__init__.py +9 -0
- cognite_toolkit/_cdf_tk/client/cdf_client/api.py +220 -0
- cognite_toolkit/_cdf_tk/client/{data_classes/api_classes.py → cdf_client/responses.py} +10 -13
- cognite_toolkit/_cdf_tk/client/data_classes/agent.py +127 -0
- cognite_toolkit/_cdf_tk/client/data_classes/asset.py +54 -0
- cognite_toolkit/_cdf_tk/client/data_classes/base.py +117 -22
- cognite_toolkit/_cdf_tk/client/data_classes/event.py +43 -0
- cognite_toolkit/_cdf_tk/client/data_classes/filemetadata.py +56 -0
- cognite_toolkit/_cdf_tk/client/data_classes/identifiers.py +44 -0
- cognite_toolkit/_cdf_tk/client/data_classes/instance_api.py +34 -0
- cognite_toolkit/_cdf_tk/client/data_classes/raw.py +43 -0
- cognite_toolkit/_cdf_tk/client/data_classes/streams.py +3 -2
- cognite_toolkit/_cdf_tk/client/data_classes/three_d.py +29 -34
- cognite_toolkit/_cdf_tk/client/data_classes/timeseries.py +55 -0
- cognite_toolkit/_cdf_tk/{utils → client}/http_client/__init__.py +4 -4
- cognite_toolkit/_cdf_tk/{utils → client}/http_client/_client.py +10 -10
- cognite_toolkit/_cdf_tk/{utils → client}/http_client/_data_classes.py +2 -2
- cognite_toolkit/_cdf_tk/{utils → client}/http_client/_data_classes2.py +10 -33
- cognite_toolkit/_cdf_tk/client/testing.py +6 -0
- cognite_toolkit/_cdf_tk/commands/_migrate/command.py +1 -1
- cognite_toolkit/_cdf_tk/commands/_migrate/conversion.py +6 -7
- cognite_toolkit/_cdf_tk/commands/_migrate/data_classes.py +6 -5
- cognite_toolkit/_cdf_tk/commands/_migrate/data_mapper.py +6 -4
- cognite_toolkit/_cdf_tk/commands/_migrate/migration_io.py +10 -10
- cognite_toolkit/_cdf_tk/commands/_purge.py +7 -7
- cognite_toolkit/_cdf_tk/commands/_upload.py +1 -1
- cognite_toolkit/_cdf_tk/commands/pull.py +97 -2
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/classic.py +43 -47
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/fieldops.py +11 -4
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/file.py +2 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/location.py +3 -2
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/relationship.py +2 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/streams.py +1 -1
- cognite_toolkit/_cdf_tk/cruds/_resource_cruds/timeseries.py +2 -1
- cognite_toolkit/_cdf_tk/storageio/_applications.py +1 -1
- cognite_toolkit/_cdf_tk/storageio/_asset_centric.py +32 -29
- cognite_toolkit/_cdf_tk/storageio/_base.py +1 -1
- cognite_toolkit/_cdf_tk/storageio/_datapoints.py +7 -7
- cognite_toolkit/_cdf_tk/storageio/_file_content.py +7 -7
- cognite_toolkit/_cdf_tk/storageio/_raw.py +1 -1
- cognite_toolkit/_cdf_tk/utils/useful_types.py +4 -7
- cognite_toolkit/_cdf_tk/utils/useful_types2.py +12 -0
- cognite_toolkit/_repo_files/GitHub/.github/workflows/deploy.yaml +1 -1
- cognite_toolkit/_repo_files/GitHub/.github/workflows/dry-run.yaml +1 -1
- cognite_toolkit/_resources/cdf.toml +1 -1
- cognite_toolkit/_version.py +1 -1
- {cognite_toolkit-0.7.39.dist-info → cognite_toolkit-0.7.41.dist-info}/METADATA +1 -1
- {cognite_toolkit-0.7.39.dist-info → cognite_toolkit-0.7.41.dist-info}/RECORD +61 -48
- {cognite_toolkit-0.7.39.dist-info → cognite_toolkit-0.7.41.dist-info}/WHEEL +1 -1
- /cognite_toolkit/_cdf_tk/{utils → client}/http_client/_exception.py +0 -0
- /cognite_toolkit/_cdf_tk/{utils → client}/http_client/_tracker.py +0 -0
- {cognite_toolkit-0.7.39.dist-info → cognite_toolkit-0.7.41.dist-info}/entry_points.txt +0 -0
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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) ->
|
|
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) ->
|
|
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
|
-
|
|
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) ->
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
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
|
-
"
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
11
|
-
from cognite_toolkit._cdf_tk.
|
|
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
|
|
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.
|
|
14
|
-
from cognite_toolkit._cdf_tk.
|
|
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
|
-
|
|
17
|
+
pass
|
|
19
18
|
else:
|
|
20
|
-
|
|
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[
|
|
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[
|
|
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] = {
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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) ->
|
|
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) ->
|
|
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.
|
|
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
|
-
|
|
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
|