wandelbots-api-client 25.11.0.dev12__py3-none-any.whl → 26.1.0.dev62__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 (43) hide show
  1. wandelbots_api_client/__init__.py +1 -1
  2. wandelbots_api_client/api/motion_api.py +3 -3
  3. wandelbots_api_client/api_client.py +1 -1
  4. wandelbots_api_client/configuration.py +1 -1
  5. wandelbots_api_client/models/__init__.py +3 -1
  6. wandelbots_api_client/models/virtual_controller_types.py +4 -4
  7. wandelbots_api_client/v2/__init__.py +1 -1
  8. wandelbots_api_client/v2/api/__init__.py +2 -0
  9. wandelbots_api_client/v2/api/bus_inputs_outputs_api.py +579 -0
  10. wandelbots_api_client/v2/api/jogging_api.py +1 -1
  11. wandelbots_api_client/v2/api/motion_group_models_api.py +795 -2
  12. wandelbots_api_client/v2/api/program_api.py +12 -12
  13. wandelbots_api_client/v2/api/robot_configurations_api.py +291 -0
  14. wandelbots_api_client/v2/api/trajectory_execution_api.py +1 -1
  15. wandelbots_api_client/v2/api_client.py +1 -1
  16. wandelbots_api_client/v2/configuration.py +1 -1
  17. wandelbots_api_client/v2/models/__init__.py +7 -3
  18. wandelbots_api_client/v2/models/blending_auto.py +1 -1
  19. wandelbots_api_client/v2/models/blending_position.py +15 -1
  20. wandelbots_api_client/v2/models/blending_space.py +37 -0
  21. wandelbots_api_client/v2/models/initialize_jogging_request.py +2 -4
  22. wandelbots_api_client/v2/models/inverse_kinematics_request.py +6 -4
  23. wandelbots_api_client/v2/models/kinematic_model.py +110 -0
  24. wandelbots_api_client/v2/models/motion_group_description.py +4 -2
  25. wandelbots_api_client/v2/models/virtual_controller.py +1 -2
  26. wandelbots_api_client/v2/models/virtual_controller_types.py +1 -1
  27. wandelbots_api_client/v2_pydantic/__init__.py +1 -1
  28. wandelbots_api_client/v2_pydantic/api/__init__.py +2 -0
  29. wandelbots_api_client/v2_pydantic/api/bus_inputs_outputs_api.py +585 -0
  30. wandelbots_api_client/v2_pydantic/api/jogging_api.py +1 -1
  31. wandelbots_api_client/v2_pydantic/api/motion_group_models_api.py +804 -2
  32. wandelbots_api_client/v2_pydantic/api/program_api.py +12 -12
  33. wandelbots_api_client/v2_pydantic/api/robot_configurations_api.py +294 -0
  34. wandelbots_api_client/v2_pydantic/api/trajectory_execution_api.py +1 -1
  35. wandelbots_api_client/v2_pydantic/api_client.py +1 -1
  36. wandelbots_api_client/v2_pydantic/configuration.py +1 -1
  37. wandelbots_api_client/v2_pydantic/models.py +471 -527
  38. wandelbots_api_client/v2_pydantic/virtual_controller_types.py +126 -0
  39. {wandelbots_api_client-25.11.0.dev12.dist-info → wandelbots_api_client-26.1.0.dev62.dist-info}/METADATA +2 -2
  40. {wandelbots_api_client-25.11.0.dev12.dist-info → wandelbots_api_client-26.1.0.dev62.dist-info}/RECORD +43 -38
  41. {wandelbots_api_client-25.11.0.dev12.dist-info → wandelbots_api_client-26.1.0.dev62.dist-info}/WHEEL +0 -0
  42. {wandelbots_api_client-25.11.0.dev12.dist-info → wandelbots_api_client-26.1.0.dev62.dist-info}/licenses/LICENSE +0 -0
  43. {wandelbots_api_client-25.11.0.dev12.dist-info → wandelbots_api_client-26.1.0.dev62.dist-info}/top_level.txt +0 -0
@@ -65,7 +65,7 @@ class ProgramApi:
65
65
  ) -> Program:
66
66
  """Get program
67
67
 
68
- Get details of a program.
68
+ <!-- theme: danger --> > **Experimental** Get details of a program.
69
69
 
70
70
  :param cell: Unique identifier addressing a cell in all API calls. (required)
71
71
  :type cell: str
@@ -138,7 +138,7 @@ class ProgramApi:
138
138
  ) -> ApiResponse[Program]:
139
139
  """Get program
140
140
 
141
- Get details of a program.
141
+ <!-- theme: danger --> > **Experimental** Get details of a program.
142
142
 
143
143
  :param cell: Unique identifier addressing a cell in all API calls. (required)
144
144
  :type cell: str
@@ -211,7 +211,7 @@ class ProgramApi:
211
211
  ) -> RESTResponseType:
212
212
  """Get program
213
213
 
214
- Get details of a program.
214
+ <!-- theme: danger --> > **Experimental** Get details of a program.
215
215
 
216
216
  :param cell: Unique identifier addressing a cell in all API calls. (required)
217
217
  :type cell: str
@@ -343,7 +343,7 @@ class ProgramApi:
343
343
  ) -> List[Program]:
344
344
  """List programs
345
345
 
346
- List details of all existing programs.
346
+ <!-- theme: danger --> > **Experimental** List details of all existing programs.
347
347
 
348
348
  :param cell: Unique identifier addressing a cell in all API calls. (required)
349
349
  :type cell: str
@@ -412,7 +412,7 @@ class ProgramApi:
412
412
  ) -> ApiResponse[List[Program]]:
413
413
  """List programs
414
414
 
415
- List details of all existing programs.
415
+ <!-- theme: danger --> > **Experimental** List details of all existing programs.
416
416
 
417
417
  :param cell: Unique identifier addressing a cell in all API calls. (required)
418
418
  :type cell: str
@@ -481,7 +481,7 @@ class ProgramApi:
481
481
  ) -> RESTResponseType:
482
482
  """List programs
483
483
 
484
- List details of all existing programs.
484
+ <!-- theme: danger --> > **Experimental** List details of all existing programs.
485
485
 
486
486
  :param cell: Unique identifier addressing a cell in all API calls. (required)
487
487
  :type cell: str
@@ -609,7 +609,7 @@ class ProgramApi:
609
609
  ) -> ProgramRun:
610
610
  """Start the program
611
611
 
612
- This endpoint starts a new program execution. The program will be executed asynchronously.
612
+ <!-- theme: danger --> > **Experimental** This endpoint starts a new program execution. The program will be executed asynchronously.
613
613
 
614
614
  :param cell: Unique identifier addressing a cell in all API calls. (required)
615
615
  :type cell: str
@@ -691,7 +691,7 @@ class ProgramApi:
691
691
  ) -> ApiResponse[ProgramRun]:
692
692
  """Start the program
693
693
 
694
- This endpoint starts a new program execution. The program will be executed asynchronously.
694
+ <!-- theme: danger --> > **Experimental** This endpoint starts a new program execution. The program will be executed asynchronously.
695
695
 
696
696
  :param cell: Unique identifier addressing a cell in all API calls. (required)
697
697
  :type cell: str
@@ -773,7 +773,7 @@ class ProgramApi:
773
773
  ) -> RESTResponseType:
774
774
  """Start the program
775
775
 
776
- This endpoint starts a new program execution. The program will be executed asynchronously.
776
+ <!-- theme: danger --> > **Experimental** This endpoint starts a new program execution. The program will be executed asynchronously.
777
777
 
778
778
  :param cell: Unique identifier addressing a cell in all API calls. (required)
779
779
  :type cell: str
@@ -930,7 +930,7 @@ class ProgramApi:
930
930
  ) -> None:
931
931
  """Stop program run
932
932
 
933
- Stop a specific program run.
933
+ <!-- theme: danger --> > **Experimental** Stop a specific program run.
934
934
 
935
935
  :param cell: Unique identifier addressing a cell in all API calls. (required)
936
936
  :type cell: str
@@ -1004,7 +1004,7 @@ class ProgramApi:
1004
1004
  ) -> ApiResponse[None]:
1005
1005
  """Stop program run
1006
1006
 
1007
- Stop a specific program run.
1007
+ <!-- theme: danger --> > **Experimental** Stop a specific program run.
1008
1008
 
1009
1009
  :param cell: Unique identifier addressing a cell in all API calls. (required)
1010
1010
  :type cell: str
@@ -1078,7 +1078,7 @@ class ProgramApi:
1078
1078
  ) -> RESTResponseType:
1079
1079
  """Stop program run
1080
1080
 
1081
- Stop a specific program run.
1081
+ <!-- theme: danger --> > **Experimental** Stop a specific program run.
1082
1082
 
1083
1083
  :param cell: Unique identifier addressing a cell in all API calls. (required)
1084
1084
  :type cell: str
@@ -0,0 +1,294 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Wandelbots NOVA API
5
+
6
+ Interact with robots in an easy and intuitive way.
7
+
8
+ The version of the OpenAPI document: 2.1.0 dev
9
+ Generated by OpenAPI Generator (https://openapi-generator.tech)
10
+
11
+ Do not edit the class manually.
12
+ """ # noqa: E501
13
+
14
+ from furl import furl
15
+ import json
16
+ import humps
17
+ import re
18
+ import warnings
19
+ import websockets
20
+ from pydantic import validate_call, Field, StrictFloat, StrictStr, StrictInt
21
+ from typing import Any, AsyncGenerator, Callable, Dict, List, Optional, Tuple, Union
22
+ from typing_extensions import Annotated
23
+ from urllib.parse import quote
24
+
25
+ from pydantic import StrictStr
26
+ from typing import List
27
+
28
+ from wandelbots_api_client.v2_pydantic.api_client import ApiClient, RequestSerialized
29
+ from wandelbots_api_client.v2_pydantic.api_response import ApiResponse
30
+ from wandelbots_api_client.v2_pydantic.rest import RESTResponseType
31
+
32
+ class RobotConfigurationsApi:
33
+ """NOTE: This class is auto generated by OpenAPI Generator
34
+ Ref: https://openapi-generator.tech
35
+
36
+ Do not edit the class manually.
37
+ """
38
+
39
+ def __init__(self, api_client=None) -> None:
40
+ if api_client is None:
41
+ api_client = ApiClient.get_default()
42
+ self.api_client = api_client
43
+
44
+ @validate_call
45
+ async def get_robot_configurations(
46
+ self,
47
+ _request_timeout: Union[
48
+ None,
49
+ Annotated[StrictFloat, Field(gt=0)],
50
+ Tuple[
51
+ Annotated[StrictFloat, Field(gt=0)],
52
+ Annotated[StrictFloat, Field(gt=0)]
53
+ ]
54
+ ] = None,
55
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
56
+ _content_type: Optional[StrictStr] = None,
57
+ _headers: Optional[Dict[StrictStr, Any]] = None,
58
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
59
+ ) -> List[str]:
60
+ """List Robot Configurations
61
+
62
+ Returns the identifiers of available robot configurations. A robot configuration represents a robot controller with one or more attached motion groups.
63
+
64
+ :param _request_timeout: timeout setting for this request. If one
65
+ number provided, it will be total request
66
+ timeout. It can also be a pair (tuple) of
67
+ (connection, read) timeouts.
68
+ :type _request_timeout: int, tuple(int, int), optional
69
+ :param _request_auth: set to override the auth_settings for an a single
70
+ request; this effectively ignores the
71
+ authentication in the spec for a single request.
72
+ :type _request_auth: dict, optional
73
+ :param _content_type: force content-type for the request.
74
+ :type _content_type: str, Optional
75
+ :param _headers: set to override the headers for a single
76
+ request; this effectively ignores the headers
77
+ in the spec for a single request.
78
+ :type _headers: dict, optional
79
+ :param _host_index: set to override the host_index for a single
80
+ request; this effectively ignores the host_index
81
+ in the spec for a single request.
82
+ :type _host_index: int, optional
83
+ :return: Returns the result object.
84
+ """ # noqa: E501
85
+
86
+ _param = self._get_robot_configurations_serialize(
87
+ _request_auth=_request_auth,
88
+ _content_type=_content_type,
89
+ _headers=_headers,
90
+ _host_index=_host_index
91
+ )
92
+
93
+ _response_types_map: Dict[str, Optional[str]] = {
94
+ '200': "List[str]",
95
+ '404': None,
96
+ '500': None,
97
+ }
98
+
99
+ response_data = await self.api_client.call_api(
100
+ *_param,
101
+ _request_timeout=_request_timeout
102
+ )
103
+ await response_data.read()
104
+ return self.api_client.response_deserialize(
105
+ response_data=response_data,
106
+ response_types_map=_response_types_map,
107
+ ).data
108
+
109
+
110
+ @validate_call
111
+ async def get_robot_configurations_with_http_info(
112
+ self,
113
+ _request_timeout: Union[
114
+ None,
115
+ Annotated[StrictFloat, Field(gt=0)],
116
+ Tuple[
117
+ Annotated[StrictFloat, Field(gt=0)],
118
+ Annotated[StrictFloat, Field(gt=0)]
119
+ ]
120
+ ] = None,
121
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
122
+ _content_type: Optional[StrictStr] = None,
123
+ _headers: Optional[Dict[StrictStr, Any]] = None,
124
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
125
+ ) -> ApiResponse[List[str]]:
126
+ """List Robot Configurations
127
+
128
+ Returns the identifiers of available robot configurations. A robot configuration represents a robot controller with one or more attached motion groups.
129
+
130
+ :param _request_timeout: timeout setting for this request. If one
131
+ number provided, it will be total request
132
+ timeout. It can also be a pair (tuple) of
133
+ (connection, read) timeouts.
134
+ :type _request_timeout: int, tuple(int, int), optional
135
+ :param _request_auth: set to override the auth_settings for an a single
136
+ request; this effectively ignores the
137
+ authentication in the spec for a single request.
138
+ :type _request_auth: dict, optional
139
+ :param _content_type: force content-type for the request.
140
+ :type _content_type: str, Optional
141
+ :param _headers: set to override the headers for a single
142
+ request; this effectively ignores the headers
143
+ in the spec for a single request.
144
+ :type _headers: dict, optional
145
+ :param _host_index: set to override the host_index for a single
146
+ request; this effectively ignores the host_index
147
+ in the spec for a single request.
148
+ :type _host_index: int, optional
149
+ :return: Returns the result object.
150
+ """ # noqa: E501
151
+
152
+ _param = self._get_robot_configurations_serialize(
153
+ _request_auth=_request_auth,
154
+ _content_type=_content_type,
155
+ _headers=_headers,
156
+ _host_index=_host_index
157
+ )
158
+
159
+ _response_types_map: Dict[str, Optional[str]] = {
160
+ '200': "List[str]",
161
+ '404': None,
162
+ '500': None,
163
+ }
164
+
165
+ response_data = await self.api_client.call_api(
166
+ *_param,
167
+ _request_timeout=_request_timeout
168
+ )
169
+ await response_data.read()
170
+ return self.api_client.response_deserialize(
171
+ response_data=response_data,
172
+ response_types_map=_response_types_map,
173
+ )
174
+
175
+
176
+ @validate_call
177
+ async def get_robot_configurations_without_preload_content(
178
+ self,
179
+ _request_timeout: Union[
180
+ None,
181
+ Annotated[StrictFloat, Field(gt=0)],
182
+ Tuple[
183
+ Annotated[StrictFloat, Field(gt=0)],
184
+ Annotated[StrictFloat, Field(gt=0)]
185
+ ]
186
+ ] = None,
187
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
188
+ _content_type: Optional[StrictStr] = None,
189
+ _headers: Optional[Dict[StrictStr, Any]] = None,
190
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
191
+ ) -> RESTResponseType:
192
+ """List Robot Configurations
193
+
194
+ Returns the identifiers of available robot configurations. A robot configuration represents a robot controller with one or more attached motion groups.
195
+
196
+ :param _request_timeout: timeout setting for this request. If one
197
+ number provided, it will be total request
198
+ timeout. It can also be a pair (tuple) of
199
+ (connection, read) timeouts.
200
+ :type _request_timeout: int, tuple(int, int), optional
201
+ :param _request_auth: set to override the auth_settings for an a single
202
+ request; this effectively ignores the
203
+ authentication in the spec for a single request.
204
+ :type _request_auth: dict, optional
205
+ :param _content_type: force content-type for the request.
206
+ :type _content_type: str, Optional
207
+ :param _headers: set to override the headers for a single
208
+ request; this effectively ignores the headers
209
+ in the spec for a single request.
210
+ :type _headers: dict, optional
211
+ :param _host_index: set to override the host_index for a single
212
+ request; this effectively ignores the host_index
213
+ in the spec for a single request.
214
+ :type _host_index: int, optional
215
+ :return: Returns the result object.
216
+ """ # noqa: E501
217
+
218
+ _param = self._get_robot_configurations_serialize(
219
+ _request_auth=_request_auth,
220
+ _content_type=_content_type,
221
+ _headers=_headers,
222
+ _host_index=_host_index
223
+ )
224
+
225
+ _response_types_map: Dict[str, Optional[str]] = {
226
+ '200': "List[str]",
227
+ '404': None,
228
+ '500': None,
229
+ }
230
+
231
+ response_data = await self.api_client.call_api(
232
+ *_param,
233
+ _request_timeout=_request_timeout
234
+ )
235
+ return response_data.response
236
+
237
+
238
+ def _get_robot_configurations_serialize(
239
+ self,
240
+ _request_auth,
241
+ _content_type,
242
+ _headers,
243
+ _host_index,
244
+ ) -> RequestSerialized:
245
+
246
+ _host = None
247
+
248
+ _collection_formats: Dict[str, str] = {
249
+ }
250
+
251
+ _path_params: Dict[str, str] = {}
252
+ _query_params: List[Tuple[str, str]] = []
253
+ _header_params: Dict[str, Optional[str]] = _headers or {}
254
+ _form_params: List[Tuple[str, str]] = []
255
+ _files: Dict[str, Union[str, bytes]] = {}
256
+ _body_params: Optional[bytes] = None
257
+
258
+ # process the path parameters
259
+ # process the query parameters
260
+ # process the header parameters
261
+ # process the form parameters
262
+ # process the body parameter
263
+
264
+
265
+ # set the HTTP header `Accept`
266
+ _header_params['Accept'] = self.api_client.select_header_accept(
267
+ [
268
+ 'application/json'
269
+ ]
270
+ )
271
+
272
+
273
+ # authentication setting
274
+ _auth_settings: List[str] = [
275
+ 'BasicAuth',
276
+ 'BearerAuth'
277
+ ]
278
+
279
+ return self.api_client.param_serialize(
280
+ method='GET',
281
+ resource_path='/robot-configurations',
282
+ path_params=_path_params,
283
+ query_params=_query_params,
284
+ header_params=_header_params,
285
+ body=_body_params,
286
+ post_params=_form_params,
287
+ files=_files,
288
+ auth_settings=_auth_settings,
289
+ collection_formats=_collection_formats,
290
+ _host=_host,
291
+ _request_auth=_request_auth
292
+ )
293
+
294
+
@@ -47,7 +47,7 @@ class TrajectoryExecutionApi:
47
47
  async def execute_trajectory(self, cell: Annotated[StrictStr, Field(description="Unique identifier addressing a cell in all API calls. ")], controller: Annotated[StrictStr, Field(description="Unique identifier to address a controller in the cell.")], client_request_generator: Callable[[AsyncGenerator[ExecuteTrajectoryResponse, None]], AsyncGenerator[ExecuteTrajectoryRequest, None]]) -> None: # noqa: E501
48
48
  """Execute Trajectory # noqa: E501
49
49
 
50
- <!-- theme: success --> > Websocket endpoint Provides execution control over a previously [planned trajectory](planTrajectory). Enables the caller to attach input/output actions to the trajectory. ### Movement behavior | Virtual controller | Physical controller | |------------------|-------------------| | Desired joint configurations are commanded to each motion group and **applied immediately** | Move to desired **actual joint configuration**, **if possible** | ### Concept of location - The location or path parameter specifies the exact position along a trajectory. - The location is a scalar value that ranges from 0 to `n`, where `n` denotes the number of motion commands, or trajectory segments, e.g., line, p2p, etc. See [planTrajectory](planTrajectory). - Each integer value of the location corresponds to one motion command, e.g., 3.0 to 3.999 could be a line. ### Preconditions - The motion group's control mode is not claimed by any other endpoint. - The motion group's joint position are at start location specified with `InitializeMovementRequest`. - Use [executeToTrajectory](executeToTrajectory) to move the robot to the start location. ### Requests #### 1. Send `InitializeMovementRequest` to lock the trajectory to this connection The following actions are executed: - Sets robot controller mode to control mode, - Sets start location of the execution Keep in mind that only a single trajectory can be locked to a websocket connection at a time and not unlocked anymore. To execute another trajectory, a new connection must be established. #### 2. Send `StartMovementRequest` to start the movement Sets direction of movement, default is forward. #### **Optional** - To pause, send `PauseMovementRequest` before the movement has reached its end location. - Change the movement's velocity with `PlaybackSpeedRequest` after initializing the movement with `InitializeMovementRequest`. ### Responses - `InitializeMovementResponse` is sent to signal the success or failure of the `InitializeMovementRequest`. - Movement responses are streamed after a `StartMovementRequest` successfully started the movement. Movement responses are streamed in a rate that is defined as the multiple of the controller step-rate closest to but not exceeding the rate configured by `InitializeMovementRequest`. - Standstill response is sent once the movement has finished or has come to a standstill due to a pause. - `PauseMovementResponse` is sent to signal the success of the `PauseMovementRequest`. It does not signal the end of the movement. End of movement is signaled by Standstill response. - `PlaybackSpeedResponse` is sent to signal the success of the `PlaybackSpeedRequest`. - `MovementError` with error details is sent in case of an unexpected error, e.g., controller disconnects during movement. ### Tips and Tricks - A movement can be paused and resumed by sending `PauseMovementRequest` and `StartMovementRequest`. - Send `PlaybackSpeedRequest` before `StartMovementRequest` to reduce the velocity of the movement before it starts. - Send `PlaybackSpeedRequest` repeatedly to implement a slider. The velocity of the motion group can be adjusted with each controller step. Therefore, if your app needs a slider-like UI to alter the velocity of a currently running movement, you can send `PlaybackSpeedRequest` with different speed values repeatedly during the movement. - A closed trajectory (end and start joint position are equal) can be repeated by sending `StartMovementRequest` after the movement has finished. # noqa: E501
50
+ <!-- theme: success --> > Websocket endpoint Provides execution control over a previously [planned trajectory](planTrajectory). Enables the caller to attach input/output actions to the trajectory. ### Movement behavior | Virtual controller | Physical controller | |------------------|-------------------| | Desired joint configurations are commanded to each motion group and **applied immediately** | Move to desired **actual joint configuration**, **if possible** | ### Concept of location - The location or path parameter specifies the exact position along a trajectory. - The location is a scalar value that ranges from 0 to `n`, where `n` denotes the number of motion commands, or trajectory segments, e.g., line, p2p, etc. See [planTrajectory](planTrajectory). - Each integer value of the location corresponds to one motion command, e.g., 3.0 to 3.999 could be a line. ### Preconditions - The motion group's control mode is not claimed by any other endpoint. - The motion group's joint position are at start location specified with `InitializeMovementRequest`. - Use [executeToTrajectory](executeToTrajectory) to move the robot to the start location. ### Requests #### 1. Send `InitializeMovementRequest` to lock the trajectory to this connection The following actions are executed: - Sets robot controller mode to control mode, - Sets start location of the execution Keep in mind that only a single trajectory can be locked to a websocket connection at a time. Pausing the current movement enables you to send another `InitializeMovementRequest` to execute another trajectory on the same connection. #### 2. Send `StartMovementRequest` to start the movement Sets direction of movement, default is forward. #### **Optional** - To pause, send `PauseMovementRequest` before the movement has reached its end location. - Change the movement's velocity with `PlaybackSpeedRequest` after initializing the movement with `InitializeMovementRequest`. ### Responses To monitor the state of the movement, listen to the [state stream](streamMotionGroupState). The state is published via nats as well. Field `execute` in the `MotionGroupState` indicates whether a movement is ongoing and carries execution details. Each request has a corresponding acknowledgment response. They signal success or failure of the request. Especially for `PauseMovementResponse`, it does not signal the end of the movement. Additionally, `MovementError` messages can be sent in case of unexpected errors during the execution, e.g., controller disconnects during movement. ### Tips and Tricks - A movement can be paused and resumed by sending `PauseMovementRequest` and `StartMovementRequest`. - Send `PlaybackSpeedRequest` before `StartMovementRequest` to reduce the velocity of the movement before it starts. - Send `PlaybackSpeedRequest` repeatedly to implement a slider. The velocity of the motion group can be adjusted with each controller step. Therefore, if your app needs a slider-like UI to alter the velocity of a currently running movement, you can send `PlaybackSpeedRequest` with different speed values repeatedly during the movement. - A closed trajectory (end and start joint position are equal) can be repeated by sending `StartMovementRequest` after the movement has finished. # noqa: E501
51
51
  :param client_request_generator: An AsyncGenerator that yields request of type ExecuteTrajectoryRequest and takes an AsyncGenerator of ExecuteTrajectoryResponse as an input argument (required)
52
52
  :info All responses from the server will be yielded to client_request_generator through the (AsyncGenerator[ExecuteTrajectoryResponse, None])
53
53
  :type AsyncGenerator[ExecuteTrajectoryRequest, None]
@@ -91,7 +91,7 @@ class ApiClient:
91
91
  self.default_headers[header_name] = header_value
92
92
  self.cookie = cookie
93
93
  # Set default User-Agent.
94
- self.user_agent = 'Wandelbots-Nova-API-Python-Client/25.11.0.dev12'
94
+ self.user_agent = 'Wandelbots-Nova-API-Python-Client/26.1.0.dev62'
95
95
  self.client_side_validation = configuration.client_side_validation
96
96
 
97
97
  async def __aenter__(self):
@@ -535,7 +535,7 @@ conf = wandelbots_api_client.v2_pydantic.Configuration(
535
535
  "OS: {env}\n"\
536
536
  "Python Version: {pyversion}\n"\
537
537
  "Version of the API: 2.1.0 dev\n"\
538
- "SDK Package Version: 25.11.0.dev12".\
538
+ "SDK Package Version: 26.1.0.dev62".\
539
539
  format(env=sys.platform, pyversion=sys.version)
540
540
 
541
541
  def get_host_settings(self) -> List[HostSetting]: