continuous-labs 0.2.3__tar.gz → 0.2.4__tar.gz

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 (117) hide show
  1. {continuous_labs-0.2.3/src/continuous_labs.egg-info → continuous_labs-0.2.4}/PKG-INFO +2 -1
  2. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/README-PYPI.md +1 -0
  3. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/README.md +1 -0
  4. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/pyproject.toml +1 -1
  5. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/_version.py +2 -2
  6. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/__init__.py +24 -0
  7. continuous_labs-0.2.4/src/continuous/models/clone_simulatorop.py +25 -0
  8. continuous_labs-0.2.4/src/continuous/models/clonesimulatorrequest.py +43 -0
  9. continuous_labs-0.2.4/src/continuous/models/clonesimulatorresponse.py +30 -0
  10. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/specificationwarning.py +0 -1
  11. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/sdk.py +1 -1
  12. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/simulators.py +231 -1
  13. {continuous_labs-0.2.3 → continuous_labs-0.2.4/src/continuous_labs.egg-info}/PKG-INFO +2 -1
  14. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous_labs.egg-info/SOURCES.txt +3 -0
  15. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/LICENSE +0 -0
  16. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/setup.cfg +0 -0
  17. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/__init__.py +0 -0
  18. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/_hooks/__init__.py +0 -0
  19. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/_hooks/registration.py +0 -0
  20. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/_hooks/sdkhooks.py +0 -0
  21. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/_hooks/types.py +0 -0
  22. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/basesdk.py +0 -0
  23. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/errors/__init__.py +0 -0
  24. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/errors/continuousdefaulterror.py +0 -0
  25. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/errors/continuouserror.py +0 -0
  26. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/errors/error.py +0 -0
  27. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/errors/no_response_error.py +0 -0
  28. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/errors/responsevalidationerror.py +0 -0
  29. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/httpclient.py +0 -0
  30. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/advance_simulationop.py +0 -0
  31. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/advance_worldop.py +0 -0
  32. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/advancetimerequest.py +0 -0
  33. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/build_simulatorop.py +0 -0
  34. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/buildsimulatorrequest.py +0 -0
  35. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/buildworldrequest.py +0 -0
  36. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/cancel_simulatorop.py +0 -0
  37. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/cancel_worldop.py +0 -0
  38. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/clockadvance.py +0 -0
  39. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/clockadvancemember.py +0 -0
  40. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/clockevent.py +0 -0
  41. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/create_simulationop.py +0 -0
  42. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/createdsimulation.py +0 -0
  43. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/createsimulationrequest.py +0 -0
  44. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/currentsimulationtoken.py +0 -0
  45. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/delete_simulationop.py +0 -0
  46. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/delete_simulatorop.py +0 -0
  47. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/delete_worldop.py +0 -0
  48. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/fork_simulationop.py +0 -0
  49. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/forksimulationrequest.py +0 -0
  50. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/get_simulation_advanceop.py +0 -0
  51. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/get_simulation_tokenop.py +0 -0
  52. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/get_simulationop.py +0 -0
  53. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/get_simulatorop.py +0 -0
  54. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/get_world_advanceop.py +0 -0
  55. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/get_worldop.py +0 -0
  56. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/limitation.py +0 -0
  57. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/list_simulation_advance_eventsop.py +0 -0
  58. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/list_simulation_stepsop.py +0 -0
  59. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/list_simulationsop.py +0 -0
  60. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/list_simulatorsop.py +0 -0
  61. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/list_worldsop.py +0 -0
  62. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/listclockadvanceeventsresponse.py +0 -0
  63. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/listsimulationsresponse.py +0 -0
  64. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/listsimulationstepsresponse.py +0 -0
  65. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/listsimulatorsresponse.py +0 -0
  66. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/listworldsresponse.py +0 -0
  67. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/regenerate_simulation_tokenop.py +0 -0
  68. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/resourceerror.py +0 -0
  69. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/security.py +0 -0
  70. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/simulation.py +0 -0
  71. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/simulationdetail.py +0 -0
  72. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/simulator.py +0 -0
  73. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/simulatoractor.py +0 -0
  74. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/simulatorbuildprogress.py +0 -0
  75. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/simulatorerror.py +0 -0
  76. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/specificationissue.py +0 -0
  77. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/specificationvalidation.py +0 -0
  78. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/start_simulationop.py +0 -0
  79. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/start_worldop.py +0 -0
  80. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/startworldrequest.py +0 -0
  81. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/step.py +0 -0
  82. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/stop_simulationop.py +0 -0
  83. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/stop_worldop.py +0 -0
  84. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/world.py +0 -0
  85. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/worldbuildprogress.py +0 -0
  86. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/worlddatasummary.py +0 -0
  87. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/worlderror.py +0 -0
  88. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/worldrecordcount.py +0 -0
  89. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/models/worldsimulation.py +0 -0
  90. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/py.typed +0 -0
  91. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/sdkconfiguration.py +0 -0
  92. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/simulations.py +0 -0
  93. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/types/__init__.py +0 -0
  94. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/types/base64fileinput.py +0 -0
  95. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/types/basemodel.py +0 -0
  96. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/utils/__init__.py +0 -0
  97. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/utils/annotations.py +0 -0
  98. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/utils/datetimes.py +0 -0
  99. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/utils/dynamic_imports.py +0 -0
  100. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/utils/enums.py +0 -0
  101. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/utils/eventstreaming.py +0 -0
  102. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/utils/forms.py +0 -0
  103. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/utils/headers.py +0 -0
  104. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/utils/logger.py +0 -0
  105. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/utils/metadata.py +0 -0
  106. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/utils/queryparams.py +0 -0
  107. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/utils/requestbodies.py +0 -0
  108. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/utils/retries.py +0 -0
  109. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/utils/security.py +0 -0
  110. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/utils/serializers.py +0 -0
  111. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/utils/unmarshal_json_response.py +0 -0
  112. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/utils/url.py +0 -0
  113. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/utils/values.py +0 -0
  114. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous/worlds.py +0 -0
  115. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous_labs.egg-info/dependency_links.txt +0 -0
  116. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous_labs.egg-info/requires.txt +0 -0
  117. {continuous_labs-0.2.3 → continuous_labs-0.2.4}/src/continuous_labs.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: continuous-labs
3
- Version: 0.2.3
3
+ Version: 0.2.4
4
4
  Summary: Python SDK for the Continuous Simulation API.
5
5
  Author: Continuous Labs
6
6
  License: MIT
@@ -227,6 +227,7 @@ with Continuous(
227
227
  * [delete_simulator](https://github.com/continuous-labs-ai/continuous-python/blob/master/docs/sdks/simulators/README.md#delete_simulator) - Delete Simulator
228
228
  * [get_simulator](https://github.com/continuous-labs-ai/continuous-python/blob/master/docs/sdks/simulators/README.md#get_simulator) - Get Simulator
229
229
  * [cancel_simulator](https://github.com/continuous-labs-ai/continuous-python/blob/master/docs/sdks/simulators/README.md#cancel_simulator) - Cancel Simulator Build
230
+ * [clone_simulator](https://github.com/continuous-labs-ai/continuous-python/blob/master/docs/sdks/simulators/README.md#clone_simulator) - Clone Simulator
230
231
 
231
232
  ### [Worlds](https://github.com/continuous-labs-ai/continuous-python/blob/master/docs/sdks/worlds/README.md)
232
233
 
@@ -212,6 +212,7 @@ with Continuous(
212
212
  * [delete_simulator](https://github.com/continuous-labs-ai/continuous-python/blob/master/docs/sdks/simulators/README.md#delete_simulator) - Delete Simulator
213
213
  * [get_simulator](https://github.com/continuous-labs-ai/continuous-python/blob/master/docs/sdks/simulators/README.md#get_simulator) - Get Simulator
214
214
  * [cancel_simulator](https://github.com/continuous-labs-ai/continuous-python/blob/master/docs/sdks/simulators/README.md#cancel_simulator) - Cancel Simulator Build
215
+ * [clone_simulator](https://github.com/continuous-labs-ai/continuous-python/blob/master/docs/sdks/simulators/README.md#clone_simulator) - Clone Simulator
215
216
 
216
217
  ### [Worlds](https://github.com/continuous-labs-ai/continuous-python/blob/master/docs/sdks/worlds/README.md)
217
218
 
@@ -212,6 +212,7 @@ with Continuous(
212
212
  * [delete_simulator](docs/sdks/simulators/README.md#delete_simulator) - Delete Simulator
213
213
  * [get_simulator](docs/sdks/simulators/README.md#get_simulator) - Get Simulator
214
214
  * [cancel_simulator](docs/sdks/simulators/README.md#cancel_simulator) - Cancel Simulator Build
215
+ * [clone_simulator](docs/sdks/simulators/README.md#clone_simulator) - Clone Simulator
215
216
 
216
217
  ### [Worlds](docs/sdks/worlds/README.md)
217
218
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "continuous-labs"
3
- version = "0.2.3"
3
+ version = "0.2.4"
4
4
  description = "Python SDK for the Continuous Simulation API."
5
5
  authors = [{ name = "Continuous Labs" },]
6
6
  readme = "README-PYPI.md"
@@ -3,10 +3,10 @@
3
3
  import importlib.metadata
4
4
 
5
5
  __title__: str = "continuous-labs"
6
- __version__: str = "0.2.3"
6
+ __version__: str = "0.2.4"
7
7
  __openapi_doc_version__: str = "v1"
8
8
  __gen_version__: str = "2.935.1"
9
- __user_agent__: str = "speakeasy-sdk/python 0.2.3 2.935.1 v1 continuous-labs"
9
+ __user_agent__: str = "speakeasy-sdk/python 0.2.4 2.935.1 v1 continuous-labs"
10
10
 
11
11
  try:
12
12
  if __package__ is not None:
@@ -42,6 +42,18 @@ if TYPE_CHECKING:
42
42
  ClockAdvanceMemberTypedDict,
43
43
  )
44
44
  from .clockevent import ClockEvent, ClockEventTypedDict
45
+ from .clone_simulatorop import (
46
+ CloneSimulatorRequestRequest,
47
+ CloneSimulatorRequestRequestTypedDict,
48
+ )
49
+ from .clonesimulatorrequest import (
50
+ CloneSimulatorRequest,
51
+ CloneSimulatorRequestTypedDict,
52
+ )
53
+ from .clonesimulatorresponse import (
54
+ CloneSimulatorResponse,
55
+ CloneSimulatorResponseTypedDict,
56
+ )
45
57
  from .create_simulationop import (
46
58
  CreateSimulationResponse,
47
59
  CreateSimulationResponseTypedDict,
@@ -247,6 +259,12 @@ __all__ = [
247
259
  "ClockAdvanceTypedDict",
248
260
  "ClockEvent",
249
261
  "ClockEventTypedDict",
262
+ "CloneSimulatorRequest",
263
+ "CloneSimulatorRequestRequest",
264
+ "CloneSimulatorRequestRequestTypedDict",
265
+ "CloneSimulatorRequestTypedDict",
266
+ "CloneSimulatorResponse",
267
+ "CloneSimulatorResponseTypedDict",
250
268
  "CreateSimulationRequest",
251
269
  "CreateSimulationRequestTypedDict",
252
270
  "CreateSimulationResponse",
@@ -418,6 +436,12 @@ _dynamic_imports: dict[str, str] = {
418
436
  "ClockAdvanceMemberTypedDict": ".clockadvancemember",
419
437
  "ClockEvent": ".clockevent",
420
438
  "ClockEventTypedDict": ".clockevent",
439
+ "CloneSimulatorRequestRequest": ".clone_simulatorop",
440
+ "CloneSimulatorRequestRequestTypedDict": ".clone_simulatorop",
441
+ "CloneSimulatorRequest": ".clonesimulatorrequest",
442
+ "CloneSimulatorRequestTypedDict": ".clonesimulatorrequest",
443
+ "CloneSimulatorResponse": ".clonesimulatorresponse",
444
+ "CloneSimulatorResponseTypedDict": ".clonesimulatorresponse",
421
445
  "CreateSimulationResponse": ".create_simulationop",
422
446
  "CreateSimulationResponseTypedDict": ".create_simulationop",
423
447
  "CreatedSimulation": ".createdsimulation",
@@ -0,0 +1,25 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .clonesimulatorrequest import CloneSimulatorRequest, CloneSimulatorRequestTypedDict
5
+ from continuous.types import BaseModel
6
+ from continuous.utils import FieldMetadata, PathParamMetadata, RequestMetadata
7
+ from typing_extensions import Annotated, TypedDict
8
+
9
+
10
+ class CloneSimulatorRequestRequestTypedDict(TypedDict):
11
+ id: str
12
+ r"""Source Simulator ID."""
13
+ body: CloneSimulatorRequestTypedDict
14
+
15
+
16
+ class CloneSimulatorRequestRequest(BaseModel):
17
+ id: Annotated[
18
+ str, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
19
+ ]
20
+ r"""Source Simulator ID."""
21
+
22
+ body: Annotated[
23
+ CloneSimulatorRequest,
24
+ FieldMetadata(request=RequestMetadata(media_type="application/json")),
25
+ ]
@@ -0,0 +1,43 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from continuous.types import BaseModel, UNSET_SENTINEL
5
+ from pydantic import model_serializer
6
+ from typing import Optional
7
+ from typing_extensions import NotRequired, TypedDict
8
+
9
+
10
+ class CloneSimulatorRequestTypedDict(TypedDict):
11
+ idempotency_key: str
12
+ r"""Stable key for retrying this clone into the target workspace."""
13
+ target_workspace_id: str
14
+ r"""Workspace that receives the clone. It must differ from the source workspace."""
15
+ name: NotRequired[str]
16
+ r"""Display name for the clone. Defaults to the source Simulator's name."""
17
+
18
+
19
+ class CloneSimulatorRequest(BaseModel):
20
+ idempotency_key: str
21
+ r"""Stable key for retrying this clone into the target workspace."""
22
+
23
+ target_workspace_id: str
24
+ r"""Workspace that receives the clone. It must differ from the source workspace."""
25
+
26
+ name: Optional[str] = None
27
+ r"""Display name for the clone. Defaults to the source Simulator's name."""
28
+
29
+ @model_serializer(mode="wrap")
30
+ def serialize_model(self, handler):
31
+ optional_fields = set(["name"])
32
+ serialized = handler(self)
33
+ m = {}
34
+
35
+ for n, f in type(self).model_fields.items():
36
+ k = f.alias or n
37
+ val = serialized.get(k, serialized.get(n))
38
+
39
+ if val != UNSET_SENTINEL:
40
+ if val is not None or k not in optional_fields:
41
+ m[k] = val
42
+
43
+ return m
@@ -0,0 +1,30 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from continuous.types import BaseModel
5
+ from typing_extensions import TypedDict
6
+
7
+
8
+ class CloneSimulatorResponseTypedDict(TypedDict):
9
+ digest: str
10
+ r"""OCI manifest digest, unchanged from the source."""
11
+ id: str
12
+ r"""New Simulator ID in the target workspace, or the same ID on an idempotent retry."""
13
+ name: str
14
+ r"""Display name of the clone."""
15
+ workspace_id: str
16
+ r"""Target workspace."""
17
+
18
+
19
+ class CloneSimulatorResponse(BaseModel):
20
+ digest: str
21
+ r"""OCI manifest digest, unchanged from the source."""
22
+
23
+ id: str
24
+ r"""New Simulator ID in the target workspace, or the same ID on an idempotent retry."""
25
+
26
+ name: str
27
+ r"""Display name of the clone."""
28
+
29
+ workspace_id: str
30
+ r"""Target workspace."""
@@ -14,7 +14,6 @@ SpecificationWarningCode = Union[
14
14
  "spec.response_untyped",
15
15
  "spec.schema_limit",
16
16
  "spec.operation_unservable",
17
- "spec.version_ambiguous",
18
17
  "spec.example_null",
19
18
  ],
20
19
  UnrecognizedStr,
@@ -26,7 +26,7 @@ class Continuous(BaseSDK):
26
26
  simulations: "Simulations"
27
27
  r"""Create Simulations from ready Simulators, then fork, stop, start, and delete them."""
28
28
  simulators: "Simulators"
29
- r"""Build Simulators from OpenAPI or WSDL documents, check or cancel a build, and delete Simulators."""
29
+ r"""Build Simulators from OpenAPI or WSDL documents, check or cancel a build, clone Simulators into other workspaces, and delete Simulators."""
30
30
  worlds: "Worlds"
31
31
  r"""Build Worlds from one or more Simulators and start or stop their Simulations together."""
32
32
  _sub_sdk_map = {
@@ -10,7 +10,7 @@ from typing import Any, Mapping, Optional, Union
10
10
 
11
11
 
12
12
  class Simulators(BaseSDK):
13
- r"""Build Simulators from OpenAPI or WSDL documents, check or cancel a build, and delete Simulators."""
13
+ r"""Build Simulators from OpenAPI or WSDL documents, check or cancel a build, clone Simulators into other workspaces, and delete Simulators."""
14
14
 
15
15
  def list_simulators(
16
16
  self,
@@ -1057,3 +1057,233 @@ class Simulators(BaseSDK):
1057
1057
  )
1058
1058
 
1059
1059
  raise errors.ContinuousDefaultError("Unexpected response received", http_res)
1060
+
1061
+ def clone_simulator(
1062
+ self,
1063
+ *,
1064
+ id: str,
1065
+ idempotency_key: str,
1066
+ target_workspace_id: str,
1067
+ name: Optional[str] = None,
1068
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
1069
+ server_url: Optional[str] = None,
1070
+ timeout_ms: Optional[int] = None,
1071
+ http_headers: Optional[Mapping[str, str]] = None,
1072
+ ) -> models.CloneSimulatorResponse:
1073
+ r"""Clone Simulator
1074
+
1075
+ Creates a ready copy of a ready Simulator in another workspace. The clone has a new ID and the source's image digest; the source is unchanged. The source is the caller's workspace: an API key's own workspace, or X-Workspace-Id for a session. An API key may clone into any other workspace of its organization.
1076
+
1077
+ :param id: Source Simulator ID.
1078
+ :param idempotency_key: Stable key for retrying this clone into the target workspace.
1079
+ :param target_workspace_id: Workspace that receives the clone. It must differ from the source workspace.
1080
+ :param name: Display name for the clone. Defaults to the source Simulator's name.
1081
+ :param retries: Override the default retry configuration for this method
1082
+ :param server_url: Override the default server URL for this method
1083
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
1084
+ :param http_headers: Additional headers to set or replace on requests.
1085
+ """
1086
+ base_url = None
1087
+ url_variables = None
1088
+ if timeout_ms is None:
1089
+ timeout_ms = self.sdk_configuration.timeout_ms
1090
+
1091
+ if server_url is not None:
1092
+ base_url = server_url
1093
+ else:
1094
+ base_url = self._get_url(base_url, url_variables)
1095
+
1096
+ request = models.CloneSimulatorRequestRequest(
1097
+ id=id,
1098
+ body=models.CloneSimulatorRequest(
1099
+ idempotency_key=idempotency_key,
1100
+ name=name,
1101
+ target_workspace_id=target_workspace_id,
1102
+ ),
1103
+ )
1104
+
1105
+ req = self._build_request(
1106
+ method="POST",
1107
+ path="/v1/simulators/{id}/clone",
1108
+ base_url=base_url,
1109
+ url_variables=url_variables,
1110
+ request=request,
1111
+ request_body_required=True,
1112
+ request_has_path_params=True,
1113
+ request_has_query_params=True,
1114
+ user_agent_header="user-agent",
1115
+ accept_header_value="application/json",
1116
+ http_headers=http_headers,
1117
+ security=self.sdk_configuration.security,
1118
+ get_serialized_body=lambda: utils.serialize_request_body(
1119
+ request.body, False, False, "json", models.CloneSimulatorRequest
1120
+ ),
1121
+ allow_empty_value=None,
1122
+ timeout_ms=timeout_ms,
1123
+ )
1124
+
1125
+ if retries == UNSET:
1126
+ if self.sdk_configuration.retry_config is not UNSET:
1127
+ retries = self.sdk_configuration.retry_config
1128
+
1129
+ retry_config = None
1130
+ if isinstance(retries, utils.RetryConfig):
1131
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
1132
+
1133
+ http_res = self.do_request(
1134
+ hook_ctx=HookContext(
1135
+ config=self.sdk_configuration,
1136
+ base_url=base_url or "",
1137
+ operation_id="clone-simulator",
1138
+ oauth2_scopes=None,
1139
+ security_source=get_security_from_env(
1140
+ self.sdk_configuration.security, models.Security
1141
+ ),
1142
+ tags=["simulators"],
1143
+ extensions=None,
1144
+ ),
1145
+ request=req,
1146
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
1147
+ retry_config=retry_config,
1148
+ )
1149
+
1150
+ response_data: Any = None
1151
+ if utils.match_response(http_res, "201", "application/json"):
1152
+ return unmarshal_json_response(models.CloneSimulatorResponse, http_res)
1153
+ if utils.match_response(
1154
+ http_res,
1155
+ ["400", "401", "403", "404", "408", "409", "413", "415", "422"],
1156
+ "application/problem+json",
1157
+ ):
1158
+ response_data = unmarshal_json_response(errors.ErrorData, http_res)
1159
+ raise errors.Error(response_data, http_res)
1160
+ if utils.match_response(http_res, ["500", "503"], "application/problem+json"):
1161
+ response_data = unmarshal_json_response(errors.ErrorData, http_res)
1162
+ raise errors.Error(response_data, http_res)
1163
+ if utils.match_response(http_res, "4XX", "*"):
1164
+ http_res_text = utils.stream_to_text(http_res)
1165
+ raise errors.ContinuousDefaultError(
1166
+ "API error occurred", http_res, http_res_text
1167
+ )
1168
+ if utils.match_response(http_res, "5XX", "*"):
1169
+ http_res_text = utils.stream_to_text(http_res)
1170
+ raise errors.ContinuousDefaultError(
1171
+ "API error occurred", http_res, http_res_text
1172
+ )
1173
+
1174
+ raise errors.ContinuousDefaultError("Unexpected response received", http_res)
1175
+
1176
+ async def clone_simulator_async(
1177
+ self,
1178
+ *,
1179
+ id: str,
1180
+ idempotency_key: str,
1181
+ target_workspace_id: str,
1182
+ name: Optional[str] = None,
1183
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
1184
+ server_url: Optional[str] = None,
1185
+ timeout_ms: Optional[int] = None,
1186
+ http_headers: Optional[Mapping[str, str]] = None,
1187
+ ) -> models.CloneSimulatorResponse:
1188
+ r"""Clone Simulator
1189
+
1190
+ Creates a ready copy of a ready Simulator in another workspace. The clone has a new ID and the source's image digest; the source is unchanged. The source is the caller's workspace: an API key's own workspace, or X-Workspace-Id for a session. An API key may clone into any other workspace of its organization.
1191
+
1192
+ :param id: Source Simulator ID.
1193
+ :param idempotency_key: Stable key for retrying this clone into the target workspace.
1194
+ :param target_workspace_id: Workspace that receives the clone. It must differ from the source workspace.
1195
+ :param name: Display name for the clone. Defaults to the source Simulator's name.
1196
+ :param retries: Override the default retry configuration for this method
1197
+ :param server_url: Override the default server URL for this method
1198
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
1199
+ :param http_headers: Additional headers to set or replace on requests.
1200
+ """
1201
+ base_url = None
1202
+ url_variables = None
1203
+ if timeout_ms is None:
1204
+ timeout_ms = self.sdk_configuration.timeout_ms
1205
+
1206
+ if server_url is not None:
1207
+ base_url = server_url
1208
+ else:
1209
+ base_url = self._get_url(base_url, url_variables)
1210
+
1211
+ request = models.CloneSimulatorRequestRequest(
1212
+ id=id,
1213
+ body=models.CloneSimulatorRequest(
1214
+ idempotency_key=idempotency_key,
1215
+ name=name,
1216
+ target_workspace_id=target_workspace_id,
1217
+ ),
1218
+ )
1219
+
1220
+ req = self._build_request_async(
1221
+ method="POST",
1222
+ path="/v1/simulators/{id}/clone",
1223
+ base_url=base_url,
1224
+ url_variables=url_variables,
1225
+ request=request,
1226
+ request_body_required=True,
1227
+ request_has_path_params=True,
1228
+ request_has_query_params=True,
1229
+ user_agent_header="user-agent",
1230
+ accept_header_value="application/json",
1231
+ http_headers=http_headers,
1232
+ security=self.sdk_configuration.security,
1233
+ get_serialized_body=lambda: utils.serialize_request_body(
1234
+ request.body, False, False, "json", models.CloneSimulatorRequest
1235
+ ),
1236
+ allow_empty_value=None,
1237
+ timeout_ms=timeout_ms,
1238
+ )
1239
+
1240
+ if retries == UNSET:
1241
+ if self.sdk_configuration.retry_config is not UNSET:
1242
+ retries = self.sdk_configuration.retry_config
1243
+
1244
+ retry_config = None
1245
+ if isinstance(retries, utils.RetryConfig):
1246
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
1247
+
1248
+ http_res = await self.do_request_async(
1249
+ hook_ctx=HookContext(
1250
+ config=self.sdk_configuration,
1251
+ base_url=base_url or "",
1252
+ operation_id="clone-simulator",
1253
+ oauth2_scopes=None,
1254
+ security_source=get_security_from_env(
1255
+ self.sdk_configuration.security, models.Security
1256
+ ),
1257
+ tags=["simulators"],
1258
+ extensions=None,
1259
+ ),
1260
+ request=req,
1261
+ is_error_status_code=lambda c: utils.match_status_codes(["4XX", "5XX"], c),
1262
+ retry_config=retry_config,
1263
+ )
1264
+
1265
+ response_data: Any = None
1266
+ if utils.match_response(http_res, "201", "application/json"):
1267
+ return unmarshal_json_response(models.CloneSimulatorResponse, http_res)
1268
+ if utils.match_response(
1269
+ http_res,
1270
+ ["400", "401", "403", "404", "408", "409", "413", "415", "422"],
1271
+ "application/problem+json",
1272
+ ):
1273
+ response_data = unmarshal_json_response(errors.ErrorData, http_res)
1274
+ raise errors.Error(response_data, http_res)
1275
+ if utils.match_response(http_res, ["500", "503"], "application/problem+json"):
1276
+ response_data = unmarshal_json_response(errors.ErrorData, http_res)
1277
+ raise errors.Error(response_data, http_res)
1278
+ if utils.match_response(http_res, "4XX", "*"):
1279
+ http_res_text = await utils.stream_to_text_async(http_res)
1280
+ raise errors.ContinuousDefaultError(
1281
+ "API error occurred", http_res, http_res_text
1282
+ )
1283
+ if utils.match_response(http_res, "5XX", "*"):
1284
+ http_res_text = await utils.stream_to_text_async(http_res)
1285
+ raise errors.ContinuousDefaultError(
1286
+ "API error occurred", http_res, http_res_text
1287
+ )
1288
+
1289
+ raise errors.ContinuousDefaultError("Unexpected response received", http_res)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: continuous-labs
3
- Version: 0.2.3
3
+ Version: 0.2.4
4
4
  Summary: Python SDK for the Continuous Simulation API.
5
5
  Author: Continuous Labs
6
6
  License: MIT
@@ -227,6 +227,7 @@ with Continuous(
227
227
  * [delete_simulator](https://github.com/continuous-labs-ai/continuous-python/blob/master/docs/sdks/simulators/README.md#delete_simulator) - Delete Simulator
228
228
  * [get_simulator](https://github.com/continuous-labs-ai/continuous-python/blob/master/docs/sdks/simulators/README.md#get_simulator) - Get Simulator
229
229
  * [cancel_simulator](https://github.com/continuous-labs-ai/continuous-python/blob/master/docs/sdks/simulators/README.md#cancel_simulator) - Cancel Simulator Build
230
+ * [clone_simulator](https://github.com/continuous-labs-ai/continuous-python/blob/master/docs/sdks/simulators/README.md#clone_simulator) - Clone Simulator
230
231
 
231
232
  ### [Worlds](https://github.com/continuous-labs-ai/continuous-python/blob/master/docs/sdks/worlds/README.md)
232
233
 
@@ -34,6 +34,9 @@ src/continuous/models/cancel_worldop.py
34
34
  src/continuous/models/clockadvance.py
35
35
  src/continuous/models/clockadvancemember.py
36
36
  src/continuous/models/clockevent.py
37
+ src/continuous/models/clone_simulatorop.py
38
+ src/continuous/models/clonesimulatorrequest.py
39
+ src/continuous/models/clonesimulatorresponse.py
37
40
  src/continuous/models/create_simulationop.py
38
41
  src/continuous/models/createdsimulation.py
39
42
  src/continuous/models/createsimulationrequest.py
File without changes