Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simulators API #2006

Open
wants to merge 128 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
128 commits
Select commit Hold shift + click to select a range
f42cc6c
tmp: happy mypy locally
doctrino Oct 6, 2024
8e936c2
refactor: generated data and api classes
doctrino Oct 6, 2024
67f3680
refactor: remove crud methods
doctrino Oct 6, 2024
2852e9f
refactor: setup shell
doctrino Oct 6, 2024
4fb7728
fix: added forgotten
doctrino Oct 6, 2024
8a96799
add support for integrations and models listing
lpereiracgn Nov 1, 2024
f061996
filtering for simulator integrations
lpereiracgn Nov 1, 2024
2a67cb5
listing revisions
lpereiracgn Nov 5, 2024
966f31d
docstrings
lpereiracgn Nov 5, 2024
947c0c2
routine revisions
lpereiracgn Nov 5, 2024
f25b46d
move filters to its own file
lpereiracgn Nov 5, 2024
741c6a0
filters
lpereiracgn Nov 6, 2024
7c5fc0f
Merge branch 'master' into simulator-resources
lpereiracgn Nov 6, 2024
3460781
retrieve byids
lpereiracgn Nov 6, 2024
7d5e13c
retrieve byids
lpereiracgn Nov 6, 2024
4061ed2
retrieve byids
lpereiracgn Nov 6, 2024
ef47c43
Merge branch 'master' into simulator-resources
lpereiracgn Nov 21, 2024
7de0581
fix ci
lpereiracgn Nov 21, 2024
bd058e4
lint
lpereiracgn Nov 21, 2024
0fd679d
simulator resource - writable
lpereiracgn Nov 24, 2024
76d3c51
simulator integration resource - writeable
lpereiracgn Nov 24, 2024
a70bab1
fix API maturity level
lpereiracgn Nov 27, 2024
74ae117
remove beta header
lpereiracgn Nov 27, 2024
e041dad
Update cognite/client/_api/simulators/simulator_integrations.py
lpereiracgn Nov 28, 2024
c940dbc
Update cognite/client/_api/simulators/simulator_routines.py
lpereiracgn Nov 28, 2024
5a9f01e
Update cognite/client/_api/simulators/simulator_routines.py
lpereiracgn Nov 28, 2024
079075b
Update cognite/client/_api/simulators/simulator_routines.py
lpereiracgn Nov 28, 2024
27fe6bd
Update cognite/client/_api/simulators/simulator_routines.py
lpereiracgn Nov 28, 2024
8e7ae96
Update cognite/client/_api/simulators/simulator_integrations.py
lpereiracgn Nov 28, 2024
2001b37
Update cognite/client/_api/simulators/simulator_routines.py
lpereiracgn Nov 28, 2024
3a5a139
Update cognite/client/_api/simulators/simulators.py
lpereiracgn Nov 28, 2024
75c6189
Update cognite/client/_api/simulators/simulator_integrations.py
lpereiracgn Nov 28, 2024
334bfad
fix docstrings
lpereiracgn Nov 28, 2024
281a669
chane structure for revisions
lpereiracgn Nov 28, 2024
5947ad7
fmt
lpereiracgn Nov 28, 2024
b6672ff
Update cognite/client/_api/simulators/simulation_runs.py
lpereiracgn Nov 28, 2024
5d09fb0
update docstrings
lpereiracgn Dec 2, 2024
016227c
update docstrings
lpereiracgn Dec 2, 2024
7bd1684
add retrieve_multiple method and clean up seed data
lpereiracgn Dec 2, 2024
a3d3a04
Merge branch 'master' into simulator-resources
lpereiracgn Dec 2, 2024
e01cec3
fix docstrings
lpereiracgn Dec 2, 2024
e9bde70
fix docstrings
lpereiracgn Dec 2, 2024
47d33a7
fix docstrings
lpereiracgn Dec 2, 2024
985e1ff
fix docstrings
lpereiracgn Dec 2, 2024
ce5c8f1
fix test
lpereiracgn Dec 2, 2024
0a37df1
fix model revisions to writable class
lpereiracgn Dec 2, 2024
5fff3a4
fix mock
lpereiracgn Dec 2, 2024
6b82751
fix mock
lpereiracgn Dec 2, 2024
774252b
fix spec definition for mock client
lpereiracgn Dec 3, 2024
8991a38
fix meta tests for simulators
lpereiracgn Dec 3, 2024
e4d437e
fix sim runs
lpereiracgn Dec 3, 2024
00e56c6
remove simulationrunwrite
abdullah-cognite Dec 5, 2024
5342df5
use InternalIdTransformerMixin in run
abdullah-cognite Dec 5, 2024
70833ab
fix
lpereiracgn Dec 5, 2024
2a6ae37
Merge branch 'master' into simulator-resources
lpereiracgn Dec 6, 2024
aa7702b
fix tests
lpereiracgn Dec 9, 2024
3473533
add missing dump calls in parent class
abdullah-cognite Dec 9, 2024
2400a67
fix schedule test
lpereiracgn Dec 9, 2024
78d2d79
fix tests
lpereiracgn Dec 9, 2024
cd40c3b
print dataset
lpereiracgn Dec 9, 2024
5e4e0af
disable fixture
lpereiracgn Dec 9, 2024
f0139d0
fix
lpereiracgn Dec 9, 2024
bb51ef6
fix
lpereiracgn Dec 9, 2024
2fb1eef
fix
lpereiracgn Dec 9, 2024
b668282
fix
lpereiracgn Dec 9, 2024
c8527a9
fix
lpereiracgn Dec 9, 2024
9798475
fix
lpereiracgn Dec 9, 2024
c076dc9
fix
lpereiracgn Dec 9, 2024
77d431b
fix
lpereiracgn Dec 9, 2024
e43ce27
fix
lpereiracgn Dec 9, 2024
f49d9fa
fix
lpereiracgn Dec 9, 2024
b683f02
fix dataset
lpereiracgn Dec 9, 2024
b1b5c9d
verify
lpereiracgn Dec 9, 2024
7084a4d
slight change
abdullah-cognite Dec 10, 2024
4d5fa3b
slight change
abdullah-cognite Dec 10, 2024
dbbe91a
slight change
abdullah-cognite Dec 10, 2024
9520e8a
slight change
abdullah-cognite Dec 10, 2024
66f4074
slight change
abdullah-cognite Dec 10, 2024
655d298
slight change
abdullah-cognite Dec 10, 2024
92b3d9a
slight change
abdullah-cognite Dec 10, 2024
c316ce3
slight change
abdullah-cognite Dec 10, 2024
560188b
slight change
abdullah-cognite Dec 10, 2024
7b7d82b
fix
lpereiracgn Dec 10, 2024
5a77f2e
fix filtered check
lpereiracgn Dec 10, 2024
fd3342b
fix lint
lpereiracgn Dec 10, 2024
d7236a8
remove limits from docstrings
lpereiracgn Dec 10, 2024
64cd8b5
fix dataset
lpereiracgn Dec 10, 2024
2a06f98
fix
lpereiracgn Dec 10, 2024
6e795d6
fix
lpereiracgn Dec 10, 2024
3560687
fix
lpereiracgn Dec 10, 2024
48d6195
fix
lpereiracgn Dec 10, 2024
eb024db
fix
lpereiracgn Dec 10, 2024
c75f492
fix
lpereiracgn Dec 10, 2024
c104a3b
fix
lpereiracgn Dec 10, 2024
6718fb4
fix
lpereiracgn Dec 10, 2024
960775a
model tests
lpereiracgn Dec 10, 2024
6bdc7f3
dataset retrigger
lpereiracgn Dec 10, 2024
1cdc8b2
fix
lpereiracgn Dec 10, 2024
9fead1a
fix
lpereiracgn Dec 10, 2024
5d125bd
fix
lpereiracgn Dec 10, 2024
d15226f
fix
lpereiracgn Dec 10, 2024
eef86be
fix test and delete fixture
lpereiracgn Dec 10, 2024
bb04cca
fix test and delete fixture
lpereiracgn Dec 10, 2024
a48b626
remove unknown change
lpereiracgn Dec 10, 2024
c76eab1
Update cognite/client/_api/simulators/simulator_models.py
lpereiracgn Dec 10, 2024
d5600fb
Update cognite/client/_api/simulators/simulators.py
lpereiracgn Dec 10, 2024
f12fb21
Update cognite/client/_api/simulators/simulator_routines.py
lpereiracgn Dec 10, 2024
60c83a0
Update cognite/client/_api/simulators/simulator_routines.py
lpereiracgn Dec 10, 2024
4898f54
Update cognite/client/_api/simulators/simulator_routines.py
lpereiracgn Dec 10, 2024
9945ff8
Update cognite/client/_api/simulators/simulator_models.py
lpereiracgn Dec 10, 2024
c8180cb
Update cognite/client/_api/simulators/simulator_models.py
lpereiracgn Dec 10, 2024
16fe676
Update cognite/client/_api/simulators/simulator_routines.py
lpereiracgn Dec 10, 2024
cd4498c
Update cognite/client/_api/simulators/simulator_models.py
lpereiracgn Dec 10, 2024
1c85b88
Update cognite/client/_api/simulators/simulation_runs.py
lpereiracgn Dec 10, 2024
7def138
Update cognite/client/_api/simulators/simulator_routines.py
lpereiracgn Dec 10, 2024
49ad5fc
Update cognite/client/_api/simulators/simulator_routines.py
lpereiracgn Dec 10, 2024
6e4f8bb
Update cognite/client/_api/simulators/simulator_models.py
lpereiracgn Dec 10, 2024
0a9d007
Update cognite/client/_api/simulators/simulator_integrations.py
lpereiracgn Dec 10, 2024
68bf6a8
Merge branch 'master' into simulator-resources
abdullah-cognite Dec 10, 2024
d79b8ff
Merge branch 'master' into simulator-resources
lpereiracgn Dec 11, 2024
daf3e8a
Update cognite/client/_api/simulators/simulator_routines.py
lpereiracgn Dec 12, 2024
f614c49
Update cognite/client/_api/simulators/simulator_integrations.py
lpereiracgn Dec 12, 2024
88446b4
Update cognite/client/_api/simulators/simulation_runs.py
lpereiracgn Dec 12, 2024
6b31e78
Update cognite/client/_api/simulators/simulator_models.py
lpereiracgn Dec 12, 2024
ebfe644
Apply suggestions from code review
lpereiracgn Dec 12, 2024
433e585
sort
lpereiracgn Dec 12, 2024
9428ecb
tests
lpereiracgn Dec 12, 2024
7401368
fix docstrings
lpereiracgn Dec 13, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
sort
lpereiracgn committed Dec 12, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
commit 433e585cf9a98cd2e5c4e0fcd66ead7d5314950d
15 changes: 13 additions & 2 deletions cognite/client/_api/simulators/simulation_runs.py
Original file line number Diff line number Diff line change
@@ -5,7 +5,7 @@
from cognite.client._api_client import APIClient
from cognite.client._constants import DEFAULT_LIMIT_READ
from cognite.client.data_classes.simulators.filters import SimulationRunsFilter
from cognite.client.data_classes.simulators.simulators import SimulationRun, SimulationRunsList
from cognite.client.data_classes.simulators.simulators import SimulationRun, SimulationRunsList, CreatedTimeSort, SimulationTimeSort
from cognite.client.utils._experimental import FeaturePreviewWarning

if TYPE_CHECKING:
@@ -22,7 +22,10 @@ def __init__(self, config: ClientConfig, api_version: str | None, cognite_client
)

def list(
self, limit: int = DEFAULT_LIMIT_READ, filter: SimulationRunsFilter | dict[str, Any] | None = None
self,
limit: int = DEFAULT_LIMIT_READ,
filter: SimulationRunsFilter | dict[str, Any] | None = None,
sort: CreatedTimeSort | SimulationTimeSort | None = None,
) -> SimulationRunsList:
"""`Filter simulation runs <https://developer.cognite.com/api#tag/Simulation-Runs/operation/filter_simulation_runs_simulators_runs_list_post>`_

@@ -44,13 +47,21 @@ def list(
>>> res = client.simulators.runs.list()

"""

sort_by = None
if isinstance(sort, CreatedTimeSort):
sort_by = [CreatedTimeSort.load(sort).dump()]
elif isinstance(sort, SimulationTimeSort):
sort_by = [SimulationTimeSort.load(sort).dump()]
Comment on lines +58 to +61
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be enough? Also see my other comment regarding these sort-classes.

Suggested change
if isinstance(sort, CreatedTimeSort):
sort_by = [CreatedTimeSort.load(sort).dump()]
elif isinstance(sort, SimulationTimeSort):
sort_by = [SimulationTimeSort.load(sort).dump()]
if isinstance(sort, CreatedTimeSort | SimulationTimeSort):
sort_by = [sort.dump(camel_case=True)]


self._warning.warn()
return self._list(
method="POST",
limit=limit,
url_path="/simulators/runs/list",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not needed as this follows the API design guidelines

Suggested change
url_path="/simulators/runs/list",

resource_cls=SimulationRun,
list_cls=SimulationRunsList,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This list class needs to be renamed:

Suggested change
list_cls=SimulationRunsList,
list_cls=SimulationRunList,

sort=sort_by,
filter=filter.dump()
if isinstance(filter, SimulationRunsFilter)
else filter
22 changes: 13 additions & 9 deletions cognite/client/_api/simulators/simulator_models.py
Original file line number Diff line number Diff line change
@@ -11,6 +11,7 @@
SimulatorModelList,
SimulatorModelRevision,
SimulatorModelRevisionList,
CreatedTimeSort
)
from cognite.client.utils._experimental import FeaturePreviewWarning
from cognite.client.utils._identifier import IdentifierSequence
@@ -30,7 +31,10 @@ def __init__(self, config: ClientConfig, api_version: str | None, cognite_client
)

def list(
lpereiracgn marked this conversation as resolved.
Show resolved Hide resolved
self, limit: int = DEFAULT_LIMIT_READ, filter: SimulatorModelRevisionsFilter | dict[str, Any] | None = None
self,
limit: int = DEFAULT_LIMIT_READ,
sort: CreatedTimeSort | None = None,
filter: SimulatorModelRevisionsFilter | dict[str, Any] | None = None
) -> SimulatorModelRevisionList:
"""`Filter simulator model revisions <https://developer.cognite.com/api#tag/Simulator-Models/operation/filter_simulator_model_revisions_simulators_models_revisions_list_post>`_

@@ -58,6 +62,7 @@ def list(
url_path="/simulators/models/revisions/list",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
url_path="/simulators/models/revisions/list",

resource_cls=SimulatorModelRevision,
list_cls=SimulatorModelRevisionList,
sort=[CreatedTimeSort.load(sort).dump()] if sort else None,
filter=filter.dump()
if isinstance(filter, SimulatorModelRevisionsFilter)
else filter
@@ -100,7 +105,6 @@ def retrieve_multiple(
self,
ids: Sequence[int] | None = None,
external_ids: SequenceNotStr[str] | None = None,
ignore_unknown_ids: bool = False,
) -> SimulatorModelRevisionList:
"""`Retrieve simulator model revisions <https://developer.cognite.com/api#tag/Simulator-Models/operation/retrieve_simulator_model_revisions_simulators_models_revisions_byids_post>`_

lpereiracgn marked this conversation as resolved.
Show resolved Hide resolved
@@ -129,7 +133,6 @@ def retrieve_multiple(
list_cls=SimulatorModelRevisionList,
resource_cls=SimulatorModelRevision,
identifiers=identifiers,
ignore_unknown_ids=ignore_unknown_ids,
)


@@ -144,7 +147,10 @@ def __init__(self, config: ClientConfig, api_version: str | None, cognite_client
)

def list(
lpereiracgn marked this conversation as resolved.
Show resolved Hide resolved
self, limit: int = DEFAULT_LIMIT_READ, filter: SimulatorModelsFilter | dict[str, Any] | None = None
self,
limit: int = DEFAULT_LIMIT_READ,
filter: SimulatorModelsFilter | dict[str, Any] | None = None,
sort: CreatedTimeSort | None = None,
) -> SimulatorModelList:
"""`Filter simulator models <https://developer.cognite.com/api#tag/Simulator-Models/operation/filter_simulator_models_simulators_models_list_post>`_

@@ -173,6 +179,7 @@ def list(
url_path="/simulators/models/list",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
url_path="/simulators/models/list",

resource_cls=SimulatorModel,
list_cls=SimulatorModelList,
sort=[CreatedTimeSort.load(sort).dump()] if sort else None,
filter=filter.dump()
if isinstance(filter, SimulatorModelsFilter)
else filter
@@ -194,15 +201,12 @@ def retrieve(self, id: int | None = None, external_id: str | None = None) -> Sim

Examples:

List simulator models:
Retrieve simulator model by id:
>>> from cognite.client import CogniteClient
>>> client = CogniteClient()
>>> res = client.simulators.models.list()

Get simulator model by id:
>>> res = client.simulators.models.retrieve(id=1)

Get simulator model by external id:
Retrieve simulator model by external id:
>>> res = client.simulators.models.retrieve(external_id="1")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please avoid using numbers when illustrating usage of external ID 😄

Suggested change
>>> res = client.simulators.models.retrieve(external_id="1")
>>> res = client.simulators.models.retrieve(external_id="foo")


"""
17 changes: 13 additions & 4 deletions cognite/client/_api/simulators/simulator_routines.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from __future__ import annotations

from collections.abc import Sequence
from typing import TYPE_CHECKING, Any
from typing import TYPE_CHECKING, Any, Literal

from cognite.client._api_client import APIClient
from cognite.client._constants import DEFAULT_LIMIT_READ
@@ -11,6 +11,7 @@
SimulatorRoutineList,
SimulatorRoutineRevision,
SimulatorRoutineRevisionsList,
CreatedTimeSort,
)
from cognite.client.utils._experimental import FeaturePreviewWarning
from cognite.client.utils._identifier import IdentifierSequence
@@ -19,7 +20,6 @@
if TYPE_CHECKING:
from cognite.client import ClientConfig, CogniteClient


class SimulatorRoutineRevisionsAPI(APIClient):
_RESOURCE_PATH = "/simulators/routines/revisions"

@@ -30,7 +30,11 @@ def __init__(self, config: ClientConfig, api_version: str | None, cognite_client
)

def list(
lpereiracgn marked this conversation as resolved.
Show resolved Hide resolved
self, limit: int = DEFAULT_LIMIT_READ, filter: SimulatorRoutineRevisionsFilter | dict[str, Any] | None = None
self,
limit: int = 20, # the maximum number of revisions to return is limited to 20 items.
sort: CreatedTimeSort | None = None,
filter: SimulatorRoutineRevisionsFilter | dict[str, Any] | None = None,
includeAllFields: bool = False,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🐍

Suggested change
includeAllFields: bool = False,
include_all_fields: bool = False,

) -> SimulatorRoutineRevisionsList:
"""`Filter simulator routine revisions <https://developer.cognite.com/api#tag/Simulator-Routines/operation/filter_simulator_routine_revisions_simulators_routines_revisions_list_post>`_

@@ -63,6 +67,8 @@ def list(
else filter
if isinstance(filter, dict)
else None,
sort=[CreatedTimeSort.load(sort).dump()] if sort else None,
other_params={"includeAllFields": includeAllFields},
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
other_params={"includeAllFields": includeAllFields},
other_params={"includeAllFields": include_all_fields},

)

def retrieve(self, id: int | None = None, external_id: str | None = None) -> SimulatorRoutineRevision | None:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same comment here as above, merge retrieve_multiple into retrieve.

Remember to set self._RETRIEVE_LIMIT = 20 (or whatever the correct number is)

@@ -143,7 +149,9 @@ def __init__(self, config: ClientConfig, api_version: str | None, cognite_client
)

def list(
lpereiracgn marked this conversation as resolved.
Show resolved Hide resolved
self, limit: int = DEFAULT_LIMIT_READ, filter: SimulatorRoutinesFilter | dict[str, Any] | None = None
self,
limit: int = DEFAULT_LIMIT_READ, filter: SimulatorRoutinesFilter | dict[str, Any] | None = None,
sort: CreatedTimeSort | None = None,
) -> SimulatorRoutineList:
"""`Filter simulator routines <https://developer.cognite.com/api#tag/Simulator-Routines/operation/filter_simulator_routines_simulators_routines_list_post>`_

@@ -172,6 +180,7 @@ def list(
url_path="/simulators/routines/list",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
url_path="/simulators/routines/list",

resource_cls=SimulatorRoutine,
list_cls=SimulatorRoutineList,
sort=[CreatedTimeSort.load(sort).dump()] if sort else None,
filter=filter.dump()
if isinstance(filter, SimulatorRoutinesFilter)
else filter
28 changes: 27 additions & 1 deletion cognite/client/data_classes/simulators/simulators.py
Original file line number Diff line number Diff line change
@@ -3,7 +3,8 @@
from abc import ABC
from collections.abc import Sequence
from dataclasses import dataclass
from typing import TYPE_CHECKING, Any
from enum import auto
from typing import TYPE_CHECKING, Any, Literal, TypeAlias

from typing_extensions import Self

@@ -16,6 +17,8 @@
InternalIdTransformerMixin,
WriteableCogniteResource,
WriteableCogniteResourceList,
EnumProperty,
CogniteSort
)
from cognite.client.utils.useful_types import SequenceNotStr

@@ -1526,6 +1529,29 @@ def __hash__(self) -> int:
return hash(self.external_id)


class PropertySort(CogniteSort):

def dump(self, camel_case: bool = True) -> dict[str, Any]:
dumped = super().dump(camel_case=camel_case)
dumped["property"] = self.property
return dumped

class CreatedTimeSort(PropertySort):
def __init__(
self,
property: Literal["createdTime"] = "createdTime",
order: Literal["asc", "desc"] = "asc",
):
super().__init__(property, order)

class SimulationTimeSort(PropertySort):
def __init__(
self,
property: Literal["simulationTime"] = "simulationTime",
order: Literal["asc", "desc"] = "asc",
):
super().__init__(property, order)

class SimulatorRoutineRevisionWriteList(CogniteResourceList[SimulatorRoutineRevisionWrite], ExternalIDTransformerMixin):
_RESOURCE = SimulatorRoutineRevisionWrite