wandelbots_api_client 26.6.0.dev136__py3-none-any.whl → 26.6.0.dev137__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.
@@ -13,7 +13,7 @@ Generated by OpenAPI Generator (https://openapi-generator.tech)
13
13
  Do not edit the class manually.
14
14
  """ # noqa: E501
15
15
 
16
- __version__ = "26.6.0.dev136"
16
+ __version__ = "26.6.0.dev137"
17
17
 
18
18
  from . import api
19
19
  from . import api_client
@@ -85,7 +85,7 @@ class ApiClient:
85
85
  self.default_headers[header_name] = header_value
86
86
  self.cookie = cookie
87
87
  # Set default User-Agent.
88
- self.user_agent = "Wandelbots-Nova-API-Python-Client/26.6.0.dev136"
88
+ self.user_agent = "Wandelbots-Nova-API-Python-Client/26.6.0.dev137"
89
89
  self.client_side_validation = configuration.client_side_validation
90
90
 
91
91
  async def __aenter__(self):
@@ -512,7 +512,7 @@ class Configuration:
512
512
  "OS: {env}\n"
513
513
  "Python Version: {pyversion}\n"
514
514
  "Version of the API: 2.6.0 dev\n"
515
- "SDK Package Version: 26.6.0.dev136".format(env=sys.platform, pyversion=sys.version)
515
+ "SDK Package Version: 26.6.0.dev137".format(env=sys.platform, pyversion=sys.version)
516
516
  )
517
517
 
518
518
  def get_host_settings(self) -> List[HostSetting]:
@@ -428,6 +428,8 @@ from wandelbots_api_client.v2.models.tcp_offset import TcpOffset
428
428
  from wandelbots_api_client.v2.models.tcp_required_error import TcpRequiredError
429
429
  from wandelbots_api_client.v2.models.tcp_velocity_request import TcpVelocityRequest
430
430
  from wandelbots_api_client.v2.models.tcp_velocity_response import TcpVelocityResponse
431
+ from wandelbots_api_client.v2.models.techman_controller import TechmanController
432
+ from wandelbots_api_client.v2.models.techman_controller_rtrs import TechmanControllerRtrs
431
433
  from wandelbots_api_client.v2.models.tool_value import ToolValue
432
434
  from wandelbots_api_client.v2.models.tool_value_or_key import ToolValueOrKey
433
435
  from wandelbots_api_client.v2.models.torque_exceeded_error import TorqueExceededError
@@ -30,6 +30,7 @@ class Manufacturer(str, Enum):
30
30
  FANUC = "fanuc"
31
31
  KUKA = "kuka"
32
32
  STAUBLI = "staubli"
33
+ TECHMAN = "techman"
33
34
  UNITREE = "unitree"
34
35
  UNIVERSALROBOTS = "universalrobots"
35
36
  YASKAWA = "yaskawa"
@@ -21,6 +21,7 @@ from wandelbots_api_client.v2.models.bostondynamics_controller import Bostondyna
21
21
  from wandelbots_api_client.v2.models.fanuc_controller import FanucController
22
22
  from wandelbots_api_client.v2.models.kuka_controller import KukaController
23
23
  from wandelbots_api_client.v2.models.staubli_controller import StaubliController
24
+ from wandelbots_api_client.v2.models.techman_controller import TechmanController
24
25
  from wandelbots_api_client.v2.models.unitree_controller import UnitreeController
25
26
  from wandelbots_api_client.v2.models.universalrobots_controller import UniversalrobotsController
26
27
  from wandelbots_api_client.v2.models.virtual_controller import VirtualController
@@ -35,6 +36,7 @@ ROBOTCONTROLLERCONFIGURATION_ONE_OF_SCHEMAS = [
35
36
  "FanucController",
36
37
  "KukaController",
37
38
  "StaubliController",
39
+ "TechmanController",
38
40
  "UnitreeController",
39
41
  "UniversalrobotsController",
40
42
  "VirtualController",
@@ -55,16 +57,18 @@ class RobotControllerConfiguration(BaseModel):
55
57
  oneof_schema_3_validator: Optional[KukaController] = None
56
58
  # data type: StaubliController
57
59
  oneof_schema_4_validator: Optional[StaubliController] = None
60
+ # data type: TechmanController
61
+ oneof_schema_5_validator: Optional[TechmanController] = None
58
62
  # data type: UniversalrobotsController
59
- oneof_schema_5_validator: Optional[UniversalrobotsController] = None
63
+ oneof_schema_6_validator: Optional[UniversalrobotsController] = None
60
64
  # data type: VirtualController
61
- oneof_schema_6_validator: Optional[VirtualController] = None
65
+ oneof_schema_7_validator: Optional[VirtualController] = None
62
66
  # data type: YaskawaController
63
- oneof_schema_7_validator: Optional[YaskawaController] = None
67
+ oneof_schema_8_validator: Optional[YaskawaController] = None
64
68
  # data type: BostondynamicsController
65
- oneof_schema_8_validator: Optional[BostondynamicsController] = None
69
+ oneof_schema_9_validator: Optional[BostondynamicsController] = None
66
70
  # data type: UnitreeController
67
- oneof_schema_9_validator: Optional[UnitreeController] = None
71
+ oneof_schema_10_validator: Optional[UnitreeController] = None
68
72
  actual_instance: Optional[
69
73
  Union[
70
74
  AbbController,
@@ -72,6 +76,7 @@ class RobotControllerConfiguration(BaseModel):
72
76
  FanucController,
73
77
  KukaController,
74
78
  StaubliController,
79
+ TechmanController,
75
80
  UnitreeController,
76
81
  UniversalrobotsController,
77
82
  VirtualController,
@@ -84,6 +89,7 @@ class RobotControllerConfiguration(BaseModel):
84
89
  "FanucController",
85
90
  "KukaController",
86
91
  "StaubliController",
92
+ "TechmanController",
87
93
  "UnitreeController",
88
94
  "UniversalrobotsController",
89
95
  "VirtualController",
@@ -132,6 +138,11 @@ class RobotControllerConfiguration(BaseModel):
132
138
  error_messages.append(f"Error! Input type `{type(v)}` is not `StaubliController`")
133
139
  else:
134
140
  match += 1
141
+ # validate data type: TechmanController
142
+ if not isinstance(v, TechmanController):
143
+ error_messages.append(f"Error! Input type `{type(v)}` is not `TechmanController`")
144
+ else:
145
+ match += 1
135
146
  # validate data type: UniversalrobotsController
136
147
  if not isinstance(v, UniversalrobotsController):
137
148
  error_messages.append(f"Error! Input type `{type(v)}` is not `UniversalrobotsController`")
@@ -160,13 +171,13 @@ class RobotControllerConfiguration(BaseModel):
160
171
  if match > 1:
161
172
  # more than 1 match
162
173
  raise ValueError(
163
- "Multiple matches found when setting `actual_instance` in RobotControllerConfiguration with oneOf schemas: AbbController, BostondynamicsController, FanucController, KukaController, StaubliController, UnitreeController, UniversalrobotsController, VirtualController, YaskawaController. Details: "
174
+ "Multiple matches found when setting `actual_instance` in RobotControllerConfiguration with oneOf schemas: AbbController, BostondynamicsController, FanucController, KukaController, StaubliController, TechmanController, UnitreeController, UniversalrobotsController, VirtualController, YaskawaController. Details: "
164
175
  + ", ".join(error_messages)
165
176
  )
166
177
  elif match == 0:
167
178
  # no match
168
179
  raise ValueError(
169
- "No match found when setting `actual_instance` in RobotControllerConfiguration with oneOf schemas: AbbController, BostondynamicsController, FanucController, KukaController, StaubliController, UnitreeController, UniversalrobotsController, VirtualController, YaskawaController. Details: "
180
+ "No match found when setting `actual_instance` in RobotControllerConfiguration with oneOf schemas: AbbController, BostondynamicsController, FanucController, KukaController, StaubliController, TechmanController, UnitreeController, UniversalrobotsController, VirtualController, YaskawaController. Details: "
170
181
  + ", ".join(error_messages)
171
182
  )
172
183
  else:
@@ -213,6 +224,11 @@ class RobotControllerConfiguration(BaseModel):
213
224
  instance.actual_instance = StaubliController.from_json(json_str)
214
225
  return instance
215
226
 
227
+ # check if data type is `TechmanController`
228
+ if _data_type == "TechmanController":
229
+ instance.actual_instance = TechmanController.from_json(json_str)
230
+ return instance
231
+
216
232
  # check if data type is `UnitreeController`
217
233
  if _data_type == "UnitreeController":
218
234
  instance.actual_instance = UnitreeController.from_json(json_str)
@@ -257,6 +273,12 @@ class RobotControllerConfiguration(BaseModel):
257
273
  match += 1
258
274
  except (ValidationError, ValueError) as e:
259
275
  error_messages.append(str(e))
276
+ # deserialize data into TechmanController
277
+ try:
278
+ instance.actual_instance = TechmanController.from_json(json_str)
279
+ match += 1
280
+ except (ValidationError, ValueError) as e:
281
+ error_messages.append(str(e))
260
282
  # deserialize data into UniversalrobotsController
261
283
  try:
262
284
  instance.actual_instance = UniversalrobotsController.from_json(json_str)
@@ -291,13 +313,13 @@ class RobotControllerConfiguration(BaseModel):
291
313
  if match > 1:
292
314
  # more than 1 match
293
315
  raise ValueError(
294
- "Multiple matches found when deserializing the JSON string into RobotControllerConfiguration with oneOf schemas: AbbController, BostondynamicsController, FanucController, KukaController, StaubliController, UnitreeController, UniversalrobotsController, VirtualController, YaskawaController. Details: "
316
+ "Multiple matches found when deserializing the JSON string into RobotControllerConfiguration with oneOf schemas: AbbController, BostondynamicsController, FanucController, KukaController, StaubliController, TechmanController, UnitreeController, UniversalrobotsController, VirtualController, YaskawaController. Details: "
295
317
  + ", ".join(error_messages)
296
318
  )
297
319
  elif match == 0:
298
320
  # no match
299
321
  raise ValueError(
300
- "No match found when deserializing the JSON string into RobotControllerConfiguration with oneOf schemas: AbbController, BostondynamicsController, FanucController, KukaController, StaubliController, UnitreeController, UniversalrobotsController, VirtualController, YaskawaController. Details: "
322
+ "No match found when deserializing the JSON string into RobotControllerConfiguration with oneOf schemas: AbbController, BostondynamicsController, FanucController, KukaController, StaubliController, TechmanController, UnitreeController, UniversalrobotsController, VirtualController, YaskawaController. Details: "
301
323
  + ", ".join(error_messages)
302
324
  )
303
325
  else:
@@ -323,6 +345,7 @@ class RobotControllerConfiguration(BaseModel):
323
345
  FanucController,
324
346
  KukaController,
325
347
  StaubliController,
348
+ TechmanController,
326
349
  UnitreeController,
327
350
  UniversalrobotsController,
328
351
  VirtualController,
@@ -0,0 +1,114 @@
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.6.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 __future__ import annotations
15
+ import pprint
16
+ import re # noqa: F401
17
+ import json
18
+
19
+ from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr, field_validator
20
+ from typing import Any, ClassVar, Dict, List, Optional
21
+ from wandelbots_api_client.v2.models.controller_network_interface import ControllerNetworkInterface
22
+ from wandelbots_api_client.v2.models.techman_controller_rtrs import TechmanControllerRtrs
23
+ from typing import Optional, Set
24
+ from typing_extensions import Self
25
+ from pydantic_core import to_jsonable_python
26
+
27
+
28
+ class TechmanController(BaseModel):
29
+ """
30
+ The configuration of a physical Techman robot controller has to contain an IP address. Additionally an RTRS server configuration has to be specified in order to obtain state from the robot.
31
+ """ # noqa: E501
32
+
33
+ kind: StrictStr
34
+ controller_ip: StrictStr
35
+ network_interface: Optional[ControllerNetworkInterface] = None
36
+ tmsvr_port: Optional[StrictInt] = Field(default=5891, description="TCP port for the TMSVR channel on the robot controller.")
37
+ tmsct_port: Optional[StrictInt] = Field(default=5890, description="TCP port for the TMSCT channel on the robot controller.")
38
+ rtrs: TechmanControllerRtrs
39
+ __properties: ClassVar[List[str]] = ["kind", "controller_ip", "network_interface", "tmsvr_port", "tmsct_port", "rtrs"]
40
+
41
+ @field_validator("kind")
42
+ def kind_validate_enum(cls, value):
43
+ """Validates the enum"""
44
+ if value not in set(["TechmanController"]):
45
+ raise ValueError("must be one of enum values ('TechmanController')")
46
+ return value
47
+
48
+ model_config = ConfigDict(
49
+ validate_by_name=True,
50
+ validate_by_alias=True,
51
+ validate_assignment=True,
52
+ protected_namespaces=(),
53
+ )
54
+
55
+ def to_str(self) -> str:
56
+ """Returns the string representation of the model using alias"""
57
+ return pprint.pformat(self.model_dump(by_alias=True))
58
+
59
+ def to_json(self) -> str:
60
+ """Returns the JSON representation of the model using alias"""
61
+ return json.dumps(to_jsonable_python(self.to_dict()))
62
+
63
+ @classmethod
64
+ def from_json(cls, json_str: str) -> Optional[Self]:
65
+ """Create an instance of TechmanController from a JSON string"""
66
+ return cls.from_dict(json.loads(json_str))
67
+
68
+ def to_dict(self) -> Dict[str, Any]:
69
+ """Return the dictionary representation of the model using alias.
70
+
71
+ This has the following differences from calling pydantic's
72
+ `self.model_dump(by_alias=True)`:
73
+
74
+ * `None` is only added to the output dict for nullable fields that
75
+ were set at model initialization. Other fields with value `None`
76
+ are ignored.
77
+ """
78
+ excluded_fields: Set[str] = set([])
79
+
80
+ _dict = self.model_dump(
81
+ by_alias=True,
82
+ exclude=excluded_fields,
83
+ exclude_none=True,
84
+ )
85
+ # override the default output from pydantic by calling `to_dict()` of network_interface
86
+ if self.network_interface:
87
+ _dict["network_interface"] = self.network_interface.to_dict()
88
+ # override the default output from pydantic by calling `to_dict()` of rtrs
89
+ if self.rtrs:
90
+ _dict["rtrs"] = self.rtrs.to_dict()
91
+ return _dict
92
+
93
+ @classmethod
94
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
95
+ """Create an instance of TechmanController from a dict"""
96
+ if obj is None:
97
+ return None
98
+
99
+ if not isinstance(obj, dict):
100
+ return cls.model_validate(obj)
101
+
102
+ _obj = cls.model_validate(
103
+ {
104
+ "kind": obj.get("kind"),
105
+ "controller_ip": obj.get("controller_ip"),
106
+ "network_interface": ControllerNetworkInterface.from_dict(obj["network_interface"])
107
+ if obj.get("network_interface") is not None
108
+ else None,
109
+ "tmsvr_port": obj.get("tmsvr_port") if obj.get("tmsvr_port") is not None else 5891,
110
+ "tmsct_port": obj.get("tmsct_port") if obj.get("tmsct_port") is not None else 5890,
111
+ "rtrs": TechmanControllerRtrs.from_dict(obj["rtrs"]) if obj.get("rtrs") is not None else None,
112
+ }
113
+ )
114
+ return _obj
@@ -0,0 +1,91 @@
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.6.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 __future__ import annotations
15
+ import pprint
16
+ import re # noqa: F401
17
+ import json
18
+
19
+ from pydantic import BaseModel, ConfigDict, Field, StrictInt, StrictStr
20
+ from typing import Any, ClassVar, Dict, List, Optional
21
+ from typing import Optional, Set
22
+ from typing_extensions import Self
23
+ from pydantic_core import to_jsonable_python
24
+
25
+
26
+ class TechmanControllerRtrs(BaseModel):
27
+ """
28
+ The RTRS server configuration for real-time communication.
29
+ """ # noqa: E501
30
+
31
+ ip: StrictStr
32
+ tmrts_port: Optional[StrictInt] = Field(default=5895, description="TCP port for the TMRTS state reporting channel.")
33
+ tmrtc_port: Optional[StrictInt] = Field(default=5896, description="TCP port for the TMRTC real-time control channel.")
34
+ __properties: ClassVar[List[str]] = ["ip", "tmrts_port", "tmrtc_port"]
35
+
36
+ model_config = ConfigDict(
37
+ validate_by_name=True,
38
+ validate_by_alias=True,
39
+ validate_assignment=True,
40
+ protected_namespaces=(),
41
+ )
42
+
43
+ def to_str(self) -> str:
44
+ """Returns the string representation of the model using alias"""
45
+ return pprint.pformat(self.model_dump(by_alias=True))
46
+
47
+ def to_json(self) -> str:
48
+ """Returns the JSON representation of the model using alias"""
49
+ return json.dumps(to_jsonable_python(self.to_dict()))
50
+
51
+ @classmethod
52
+ def from_json(cls, json_str: str) -> Optional[Self]:
53
+ """Create an instance of TechmanControllerRtrs from a JSON string"""
54
+ return cls.from_dict(json.loads(json_str))
55
+
56
+ def to_dict(self) -> Dict[str, Any]:
57
+ """Return the dictionary representation of the model using alias.
58
+
59
+ This has the following differences from calling pydantic's
60
+ `self.model_dump(by_alias=True)`:
61
+
62
+ * `None` is only added to the output dict for nullable fields that
63
+ were set at model initialization. Other fields with value `None`
64
+ are ignored.
65
+ """
66
+ excluded_fields: Set[str] = set([])
67
+
68
+ _dict = self.model_dump(
69
+ by_alias=True,
70
+ exclude=excluded_fields,
71
+ exclude_none=True,
72
+ )
73
+ return _dict
74
+
75
+ @classmethod
76
+ def from_dict(cls, obj: Optional[Dict[str, Any]]) -> Optional[Self]:
77
+ """Create an instance of TechmanControllerRtrs from a dict"""
78
+ if obj is None:
79
+ return None
80
+
81
+ if not isinstance(obj, dict):
82
+ return cls.model_validate(obj)
83
+
84
+ _obj = cls.model_validate(
85
+ {
86
+ "ip": obj.get("ip"),
87
+ "tmrts_port": obj.get("tmrts_port") if obj.get("tmrts_port") is not None else 5895,
88
+ "tmrtc_port": obj.get("tmrtc_port") if obj.get("tmrtc_port") is not None else 5896,
89
+ }
90
+ )
91
+ return _obj
@@ -13,7 +13,7 @@ Generated by OpenAPI Generator (https://openapi-generator.tech)
13
13
  Do not edit the class manually.
14
14
  """ # noqa: E501
15
15
 
16
- __version__ = "26.6.0.dev136"
16
+ __version__ = "26.6.0.dev137"
17
17
 
18
18
  from . import api
19
19
  from . import api_client
@@ -85,7 +85,7 @@ class ApiClient:
85
85
  self.default_headers[header_name] = header_value
86
86
  self.cookie = cookie
87
87
  # Set default User-Agent.
88
- self.user_agent = "Wandelbots-Nova-API-Python-Client/26.6.0.dev136"
88
+ self.user_agent = "Wandelbots-Nova-API-Python-Client/26.6.0.dev137"
89
89
  self.client_side_validation = configuration.client_side_validation
90
90
 
91
91
  async def __aenter__(self):
@@ -512,7 +512,7 @@ class Configuration:
512
512
  "OS: {env}\n"
513
513
  "Python Version: {pyversion}\n"
514
514
  "Version of the API: 2.6.0 dev\n"
515
- "SDK Package Version: 26.6.0.dev136".format(env=sys.platform, pyversion=sys.version)
515
+ "SDK Package Version: 26.6.0.dev137".format(env=sys.platform, pyversion=sys.version)
516
516
  )
517
517
 
518
518
  def get_host_settings(self) -> List[HostSetting]:
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
- # filename: tmpcsf2eaks
3
- # timestamp: 2026-08-05T14:22:36+00:00
2
+ # filename: tmp6z6on8ts
3
+ # timestamp: 2026-08-06T11:55:35+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
 
@@ -387,6 +387,7 @@ from .models import (
387
387
  RotationVector,
388
388
  RsiServer,
389
389
  RtiServer,
390
+ Rtrs,
390
391
  SafetyGeometry,
391
392
  SafetyGeometryBox,
392
393
  SafetyGeometryCapsule,
@@ -430,6 +431,7 @@ from .models import (
430
431
  TcpRequiredError,
431
432
  TcpVelocityRequest,
432
433
  TcpVelocityResponse,
434
+ TechmanController,
433
435
  Tool,
434
436
  ToolValue,
435
437
  ToolValueOrKey,
@@ -846,6 +848,7 @@ __all__ = [
846
848
  "RotationVector",
847
849
  "RsiServer",
848
850
  "RtiServer",
851
+ "Rtrs",
849
852
  "SafetyGeometry",
850
853
  "SafetyGeometryBox",
851
854
  "SafetyGeometryCapsule",
@@ -889,6 +892,7 @@ __all__ = [
889
892
  "TcpRequiredError",
890
893
  "TcpVelocityRequest",
891
894
  "TcpVelocityResponse",
895
+ "TechmanController",
892
896
  "Tool",
893
897
  "ToolValue",
894
898
  "ToolValueOrKey",
@@ -1,6 +1,6 @@
1
1
  # generated by datamodel-codegen:
2
2
  # filename: models.yaml
3
- # timestamp: 2026-08-05T14:22:36+00:00
3
+ # timestamp: 2026-08-06T11:55:35+00:00
4
4
 
5
5
  from __future__ import annotations
6
6
  from pydantic import AnyUrl, AwareDatetime, BaseModel, ConfigDict, EmailStr, Field, RootModel
@@ -205,6 +205,46 @@ class StaubliController(BaseModel):
205
205
  """
206
206
 
207
207
 
208
+ class Rtrs(BaseModel):
209
+ """
210
+ The RTRS server configuration for real-time communication.
211
+ """
212
+
213
+ ip: str
214
+ tmrts_port: int = 5895
215
+ """
216
+ TCP port for the TMRTS state reporting channel.
217
+ """
218
+ tmrtc_port: int = 5896
219
+ """
220
+ TCP port for the TMRTC real-time control channel.
221
+ """
222
+
223
+
224
+ class TechmanController(BaseModel):
225
+ """
226
+ The configuration of a physical Techman robot controller has to contain an IP address.
227
+ Additionally an RTRS server configuration has to be specified in order to obtain state from the robot.
228
+
229
+ """
230
+
231
+ kind: Literal["TechmanController"] = "TechmanController"
232
+ controller_ip: str
233
+ network_interface: ControllerNetworkInterface | None = None
234
+ tmsvr_port: int = 5891
235
+ """
236
+ TCP port for the TMSVR channel on the robot controller.
237
+ """
238
+ tmsct_port: int = 5890
239
+ """
240
+ TCP port for the TMSCT channel on the robot controller.
241
+ """
242
+ rtrs: Rtrs
243
+ """
244
+ The RTRS server configuration for real-time communication.
245
+ """
246
+
247
+
208
248
  class UniversalrobotsController(BaseModel):
209
249
  """
210
250
  The configuration of a physical Universal Robots controller has to contain IP address of the controller.
@@ -221,6 +261,7 @@ class Manufacturer(Enum):
221
261
  FANUC = "fanuc"
222
262
  KUKA = "kuka"
223
263
  STAUBLI = "staubli"
264
+ TECHMAN = "techman"
224
265
  UNITREE = "unitree"
225
266
  UNIVERSALROBOTS = "universalrobots"
226
267
  YASKAWA = "yaskawa"
@@ -467,6 +508,7 @@ class RobotController(BaseModel):
467
508
  | FanucController
468
509
  | KukaController
469
510
  | StaubliController
511
+ | TechmanController
470
512
  | UniversalrobotsController
471
513
  | VirtualController
472
514
  | YaskawaController
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wandelbots_api_client
3
- Version: 26.6.0.dev136
3
+ Version: 26.6.0.dev137
4
4
  Summary: Wandelbots Python Client: Interact with robots in an easy and intuitive way.
5
5
  Author: Copyright (c) 2025 Wandelbots GmbH
6
6
  Author-email: Copyright (c) 2025 Wandelbots GmbH <contact@wandelbots.com>
@@ -31,7 +31,7 @@ Description-Content-Type: text/markdown
31
31
  Interact with robots in an easy and intuitive way.
32
32
 
33
33
  - Compatible API version: 2.6.0 dev (can be found at the home screen of your instance -> API)
34
- - Package version: 26.6.0.dev136
34
+ - Package version: 26.6.0.dev137
35
35
 
36
36
  ## Requirements.
37
37
  Python >=3.9, Python < 4.0
@@ -1,6 +1,6 @@
1
1
  wandelbots_api_client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  wandelbots_api_client/authorization.py,sha256=QNd828qdNPI-ctZ2hteyFgqLnd7zpIfEehxbfxJ75-U,7979
3
- wandelbots_api_client/v2/__init__.py,sha256=IuIYfpDaGBGJb_g6WHwaIskno3Mtg6uY4tBTCc75wAs,1033
3
+ wandelbots_api_client/v2/__init__.py,sha256=Mri0CCGebWBQaF5hZbKjlVdrpcICYBq6o_NOa2SLejI,1033
4
4
  wandelbots_api_client/v2/api/__init__.py,sha256=RYqReFakxJcLWV6rGAFTXFqBK0wdHN4G-90X9-uPv4g,2062
5
5
  wandelbots_api_client/v2/api/action_chunk_streaming_api.py,sha256=h3ma-LUwQ_8cgp0qoI_G4498bB4G7PzgFu6kl-ZW6xo,7795
6
6
  wandelbots_api_client/v2/api/application_api.py,sha256=nVY1ZFCeazTJOou0UKhtAaFURbixCIFAl-AIAFvn4-8,69559
@@ -28,11 +28,11 @@ wandelbots_api_client/v2/api/version_api.py,sha256=1dAhtFz73CmB6F8fMOgsLGjCWq4w6
28
28
  wandelbots_api_client/v2/api/virtual_controller_api.py,sha256=nQ_rkwRufKGKGHB3QIjm7i771tqKRJGlt8nGxWupMPI,291431
29
29
  wandelbots_api_client/v2/api/virtual_controller_behavior_api.py,sha256=ByeJFFto88jrhAu8LpXAuHosXXIKpks5rSY8ZOWUdG4,41046
30
30
  wandelbots_api_client/v2/api/virtual_controller_inputs_outputs_api.py,sha256=OcQg8mxoQqZLHpByvSY3iqWNLia8rsxlvdpwlc02wb0,42027
31
- wandelbots_api_client/v2/api_client.py,sha256=8IhQGU8zb6blntb1bb2j7NSyUokZf1_yGyvdLZOO0uo,27804
31
+ wandelbots_api_client/v2/api_client.py,sha256=IEomjiFozhE7GIbTJ0FF4RDGneJ1bGXwoOQDL8I7cE8,27804
32
32
  wandelbots_api_client/v2/api_response.py,sha256=WhxwYDSMm6wPixp9CegO8dJzjFxDz3JF1yCq9s0ZqKE,639
33
- wandelbots_api_client/v2/configuration.py,sha256=tlSTjIrnD-jddZaTpRw2pHootmSAsDccSJAozsorf4w,18048
33
+ wandelbots_api_client/v2/configuration.py,sha256=gupYQk73-iSaTjYza-aHT58-DqCkE9WYIkDNUtwoZGA,18048
34
34
  wandelbots_api_client/v2/exceptions.py,sha256=7XIPwMCrxI3N-TgSYabwGXMOROXRQdrJA2wOpyaRC1A,6393
35
- wandelbots_api_client/v2/models/__init__.py,sha256=iIe3qBEDmu1sa1PiXdFGqZkrNMFqTb8Vo8qPLWb79CQ,38810
35
+ wandelbots_api_client/v2/models/__init__.py,sha256=7nhxburIMk1jO2ObGhf0B0O-kcvSccihTil5tn6DgJ0,38981
36
36
  wandelbots_api_client/v2/models/abb_confdata.py,sha256=lXK9rOsDRyCc2urbmVISftopF5LEbANjZ1R-1jXeLNg,3378
37
37
  wandelbots_api_client/v2/models/abb_configured_pose.py,sha256=Lg-eaUD80RzyQRshY3vm5BIq3_qFPZdz3kQk0ue9w_w,3144
38
38
  wandelbots_api_client/v2/models/abb_controller.py,sha256=-hJPIA1rQieR13d5z5-Mr78IyBAe8-EV5SFM1oL_kzE,4331
@@ -267,7 +267,7 @@ wandelbots_api_client/v2/models/link_chain_value.py,sha256=RJCt4rBgWRoeYIqKhlzbU
267
267
  wandelbots_api_client/v2/models/link_chain_value_or_key.py,sha256=FNaj9KXNS2dXNsxVxhcbAHWI4ePclmHSpgw6Vqco7s4,6185
268
268
  wandelbots_api_client/v2/models/list_trajectories_response.py,sha256=aeEAu2_w-44m92_slu90xovE_-MxaF37vyTgAN0rTg0,2815
269
269
  wandelbots_api_client/v2/models/location1_inner.py,sha256=py-T-cAq-8_k7mw8XO7APVBJtnZL2d2p68INpO-FfHY,5350
270
- wandelbots_api_client/v2/models/manufacturer.py,sha256=zjIYcCeEA6UxD-6f5dVXA1MXahiQquSwUSZe1SaOLLA,846
270
+ wandelbots_api_client/v2/models/manufacturer.py,sha256=D_9F35ofQKYTrWdqCEcxENm3H3rSKiXbzNqy42s25Pw,870
271
271
  wandelbots_api_client/v2/models/merge_trajectories422_response.py,sha256=6pLEFWukYAOL4fjh2STT20hMHoxKjIsLMkcorOXCOR0,3116
272
272
  wandelbots_api_client/v2/models/merge_trajectories_error.py,sha256=H0xQZubCeEobmuiy8OscQL1JEw-4X095pvz9nPpuVU8,3576
273
273
  wandelbots_api_client/v2/models/merge_trajectories_error_error_feedback.py,sha256=X9v_T8Yq0no0WcKWM5GPIc6q4uzHFYdRgTVqAZJ9eos,8864
@@ -375,7 +375,7 @@ wandelbots_api_client/v2/models/rectangle.py,sha256=GS65qBcAXe2zIS1U4UcFh07w3sg8
375
375
  wandelbots_api_client/v2/models/rectangular_capsule.py,sha256=1Y72g8xb4Ea5ZCk2bsexyLHo-efi8qo1sB3triR7BDs,3644
376
376
  wandelbots_api_client/v2/models/release_channel.py,sha256=iuTK-yo81IbWC_oD9JfORx5MTi2uXaxTaIlEu0PgBFw,817
377
377
  wandelbots_api_client/v2/models/robot_controller.py,sha256=KmD8ZbQyD3COuFklhnT2FNeMQNVdzJ-wX33-5R_q9CY,3657
378
- wandelbots_api_client/v2/models/robot_controller_configuration.py,sha256=7qJtO6zNP2Xs_GjJNoJsDh9kpAvFg6TP_0PXpSod7xQ,14081
378
+ wandelbots_api_client/v2/models/robot_controller_configuration.py,sha256=015_9UM54L-gFoAOj_VQgLg_akzCFwXTnNNGM6qRFyI,15144
379
379
  wandelbots_api_client/v2/models/robot_controller_configuration_request.py,sha256=CED_CG1S9g-d5wKM_LJLkADkGIHD8JokaryH3PRh018,3445
380
380
  wandelbots_api_client/v2/models/robot_controller_state.py,sha256=MKnpYcK8JytbkwG6WEm5Yec6QybMSkmAhMpKqIR1mT8,5982
381
381
  wandelbots_api_client/v2/models/robot_system_mode.py,sha256=U74kQ5eo3gLuf8NxS8rMoSm8PZhldaUZqDwzncoFkbo,2150
@@ -424,6 +424,8 @@ wandelbots_api_client/v2/models/tcp_offset.py,sha256=IvH_HT6np3kaS0Xz8jyzsczumnq
424
424
  wandelbots_api_client/v2/models/tcp_required_error.py,sha256=rgdTnqBr4N1AGwAvmzSA2Nx_f1bwRpMAKdl36HqHd60,3027
425
425
  wandelbots_api_client/v2/models/tcp_velocity_request.py,sha256=P6qxnZ9eZXsraX0r5kRtyffzchciYRs4dnWkB5d6Pl8,4213
426
426
  wandelbots_api_client/v2/models/tcp_velocity_response.py,sha256=eLZPF05b4U7hOlPKAPqWQgoxWJr6TwgCLg91KcUgOoM,2888
427
+ wandelbots_api_client/v2/models/techman_controller.py,sha256=lGx1KbidvK4bw9eD8Wd9iFc6xgEb1o8L0oSBZknFgUA,4488
428
+ wandelbots_api_client/v2/models/techman_controller_rtrs.py,sha256=i-21E6dl7vpjkmCMAFCSlS334Ys3rNSMAnsk2JaqGqs,2994
427
429
  wandelbots_api_client/v2/models/tool_value.py,sha256=ixonaBfSP8dtVbDbp0IVWcuXn0guLqww1CQ0ixcX6OQ,3449
428
430
  wandelbots_api_client/v2/models/tool_value_or_key.py,sha256=Xl7QXWx2cc09uBUhjZ6rSc2cAfUUWbKbx91Z2e9SN74,6051
429
431
  wandelbots_api_client/v2/models/torque_exceeded_error.py,sha256=9B30dLvGvQ-JY2TSjscWASt9sjszClLtBX24vSG_IJs,3337
@@ -460,7 +462,7 @@ wandelbots_api_client/v2/models/zod_validation_error_error_details_inner.py,sha2
460
462
  wandelbots_api_client/v2/models/zod_validation_error_error_details_inner_path_inner.py,sha256=BJFV1ZqYKcQauiUfZ10UhbRxVhOL0DjQyHzHhlQ-hUA,5652
461
463
  wandelbots_api_client/v2/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
462
464
  wandelbots_api_client/v2/rest.py,sha256=pzalGbo_80nNBxbupQKYjZjOpOgPbYrEJtCfm236vL4,7253
463
- wandelbots_api_client/v2_pydantic/__init__.py,sha256=uqbMe0xBWAPYKBli7qrSPnBVbqzia-CanUIHQnfmtxQ,1042
465
+ wandelbots_api_client/v2_pydantic/__init__.py,sha256=mbXkFARAtqNqbVBpDqrZ0hMdqSwn7mrARt2R45AaHSg,1042
464
466
  wandelbots_api_client/v2_pydantic/api/__init__.py,sha256=RYqReFakxJcLWV6rGAFTXFqBK0wdHN4G-90X9-uPv4g,2062
465
467
  wandelbots_api_client/v2_pydantic/api/action_chunk_streaming_api.py,sha256=9PR-qvUvgPu2nl6oKxKIUkZBcOsEu39Aud1U6BRLFtQ,7779
466
468
  wandelbots_api_client/v2_pydantic/api/application_api.py,sha256=vU-xA4SdVSJuXu7EAO7tTK9yJjSkMR1Y5_76RZdBp-E,69591
@@ -488,14 +490,14 @@ wandelbots_api_client/v2_pydantic/api/version_api.py,sha256=TTJwo3cWTBgxpeDO2S-S
488
490
  wandelbots_api_client/v2_pydantic/api/virtual_controller_api.py,sha256=rdrD4YOLnKKg_ILuzc37Ku_VMMJh2MUsR2a8frZraXc,291365
489
491
  wandelbots_api_client/v2_pydantic/api/virtual_controller_behavior_api.py,sha256=3mNzqQUb8JM_E7iZ4MJGg7rnEGdL9VFFqjLlrMa6bss,41027
490
492
  wandelbots_api_client/v2_pydantic/api/virtual_controller_inputs_outputs_api.py,sha256=LItWYQPUCu8mh2XAA9gOudhYTNMzIjtzY1ijXoV4w2E,42039
491
- wandelbots_api_client/v2_pydantic/api_client.py,sha256=OhvqjpyM5fPLAb66HlrCYvzaE1ZYDQkOQV_OETX2poU,27858
493
+ wandelbots_api_client/v2_pydantic/api_client.py,sha256=JwlYM6Oo_0uvcVIwv1hT7v1daxaLnbhdmTbYE86UVf0,27858
492
494
  wandelbots_api_client/v2_pydantic/api_response.py,sha256=WhxwYDSMm6wPixp9CegO8dJzjFxDz3JF1yCq9s0ZqKE,639
493
- wandelbots_api_client/v2_pydantic/configuration.py,sha256=qLdjIj6PUhCACgWV9GCmSMExZ3AUutTcwjY_1aSl9f4,18057
495
+ wandelbots_api_client/v2_pydantic/configuration.py,sha256=CHszaKpS8En5J-cebrHZEwdvIVrkdNbzivuvmo7l1ys,18057
494
496
  wandelbots_api_client/v2_pydantic/exceptions.py,sha256=7XIPwMCrxI3N-TgSYabwGXMOROXRQdrJA2wOpyaRC1A,6393
495
- wandelbots_api_client/v2_pydantic/models/__init__.py,sha256=87mBKSf7ELvw5-55u-JgNlEI2LvlTu65g-A3Y7McBCA,23739
496
- wandelbots_api_client/v2_pydantic/models/models.py,sha256=TSysqLmcPXB7esvOkE3045BqK6vp6OlqFcivXeoEH2I,219961
497
+ wandelbots_api_client/v2_pydantic/models/__init__.py,sha256=q6UCjSoGhRCfP7tmaKR-1_LNcu1dKN0w8vBFeDLJY3U,23809
498
+ wandelbots_api_client/v2_pydantic/models/models.py,sha256=NsTecAn7CdHJwG6SeZgsDYnrxvazU9i-6FaVvuGVUu4,221024
497
499
  wandelbots_api_client/v2_pydantic/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
498
500
  wandelbots_api_client/v2_pydantic/rest.py,sha256=EDM0lK-GKehCIR2PgMyO_5a5MGlOHws5c7Ue3j0FeSc,7262
499
- wandelbots_api_client-26.6.0.dev136.dist-info/WHEEL,sha256=WvwXFgRajeoYkfRVmDhkP4Qlqo31Mk687zIO2QQoFmw,80
500
- wandelbots_api_client-26.6.0.dev136.dist-info/METADATA,sha256=Cuxf_cqbPLj-SwvzIU0YZctp_V3BaSAJR7vbov2yDAI,1413
501
- wandelbots_api_client-26.6.0.dev136.dist-info/RECORD,,
501
+ wandelbots_api_client-26.6.0.dev137.dist-info/WHEEL,sha256=WvwXFgRajeoYkfRVmDhkP4Qlqo31Mk687zIO2QQoFmw,80
502
+ wandelbots_api_client-26.6.0.dev137.dist-info/METADATA,sha256=eF4AMAQ-ywHLm5lFB2dPFo8BcjHGPdpk4RoqIN1HUSE,1413
503
+ wandelbots_api_client-26.6.0.dev137.dist-info/RECORD,,