diff --git a/cognite/pygen/_core/templates/_api_client_multi_model.py.jinja b/cognite/pygen/_core/templates/_api_client_multi_model.py.jinja index 0aba0da61..574b1f7c4 100644 --- a/cognite/pygen/_core/templates/_api_client_multi_model.py.jinja +++ b/cognite/pygen/_core/templates/_api_client_multi_model.py.jinja @@ -5,7 +5,7 @@ from pathlib import Path from typing import Any, Sequence from cognite.client import ClientConfig, CogniteClient, data_modeling as dm -from cognite.client.data_classes import TimeSeriesList +from cognite.client.data_classes import TimeSeriesList, FileMetadataList, SequenceList from cognite.client.credentials import OAuthClientCredentials from ._api import ({% for api in api_classes %}{% if not api.data_class.is_edge_class %} @@ -79,6 +79,8 @@ class {{ client_name }}: ) -> data_classes.ResourcesWriteResult: """Add or update (upsert) items. + This method will create the nodes, edges, timeseries, files and sequences of the supplied items. + Args: items: One or more instances of the pygen generated data classes. replace (bool): How do we behave when a property value exists? Do we replace all matching and existing values with the supplied values (true)? @@ -103,8 +105,17 @@ class {{ client_name }}: time_series = TimeSeriesList([]) if instances.time_series: time_series = self._client.time_series.upsert(instances.time_series, mode="patch") + files = FileMetadataList([]) + if instances.files: + for file in instances.files: + created, _ = self._client.files.create(file, overwrite=True) + files.append(created) + + sequences = SequenceList([]) + if instances.sequences: + sequences = self._client.sequences.upsert(instances.sequences, mode="patch") - return data_classes.ResourcesWriteResult(result.nodes, result.edges, TimeSeriesList(time_series)) + return data_classes.ResourcesWriteResult(result.nodes, result.edges, time_series, files, sequences) def _create_instances( self, @@ -133,7 +144,7 @@ class {{ client_name }}: replace: bool = False, write_none: bool = False, ) -> data_classes.ResourcesWriteResult: - """Add or update (upsert) items. + """[DEPRECATED] Add or update (upsert) items. Args: items: One or more instances of the pygen generated data classes. diff --git a/cognite/pygen/_core/templates/_api_client_single_model.py.jinja b/cognite/pygen/_core/templates/_api_client_single_model.py.jinja index deff6945e..d10e0332b 100644 --- a/cognite/pygen/_core/templates/_api_client_single_model.py.jinja +++ b/cognite/pygen/_core/templates/_api_client_single_model.py.jinja @@ -5,7 +5,7 @@ from pathlib import Path from typing import Any, Sequence from cognite.client import ClientConfig, CogniteClient, data_modeling as dm -from cognite.client.data_classes import TimeSeriesList +from cognite.client.data_classes import TimeSeriesList, FileMetadataList, SequenceList from cognite.client.credentials import OAuthClientCredentials from ._api import ({% for api in api_classes %}{% if not api.data_class.is_edge_class %} @@ -54,6 +54,8 @@ class {{ client_name }}: ) -> data_classes.ResourcesWriteResult: """Add or update (upsert) items. + This method will create the nodes, edges, timeseries, files and sequences of the supplied items. + Args: items: One or more instances of the pygen generated data classes. replace (bool): How do we behave when a property value exists? Do we replace all matching and existing values with the supplied values (true)? @@ -78,8 +80,17 @@ class {{ client_name }}: time_series = TimeSeriesList([]) if instances.time_series: time_series = self._client.time_series.upsert(instances.time_series, mode="patch") + files = FileMetadataList([]) + if instances.files: + for file in instances.files: + created, _ = self._client.files.create(file, overwrite=True) + files.append(created) + + sequences = SequenceList([]) + if instances.sequences: + sequences = self._client.sequences.upsert(instances.sequences, mode="patch") - return data_classes.ResourcesWriteResult(result.nodes, result.edges, TimeSeriesList(time_series)) + return data_classes.ResourcesWriteResult(result.nodes, result.edges, time_series, files, sequences) def _create_instances( self, @@ -108,7 +119,7 @@ class {{ client_name }}: replace: bool = False, write_none: bool = False, ) -> data_classes.ResourcesWriteResult: - """Add or update (upsert) items. + """[DEPRECATED] Add or update (upsert) items. Args: items: One or more instances of the pygen generated data classes. diff --git a/examples/omni/_api_client.py b/examples/omni/_api_client.py index 966f3e66c..0bcf11e90 100644 --- a/examples/omni/_api_client.py +++ b/examples/omni/_api_client.py @@ -7,7 +7,6 @@ from cognite.client import ClientConfig, CogniteClient, data_modeling as dm from cognite.client.data_classes import TimeSeriesList, FileMetadataList, SequenceList from cognite.client.credentials import OAuthClientCredentials -from cognite.client.exceptions import CogniteAPIError from ._api import ( CDFExternalReferencesAPI,