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.
- wandelbots_api_client/v2/__init__.py +1 -1
- wandelbots_api_client/v2/api_client.py +1 -1
- wandelbots_api_client/v2/configuration.py +1 -1
- wandelbots_api_client/v2/models/__init__.py +2 -0
- wandelbots_api_client/v2/models/manufacturer.py +1 -0
- wandelbots_api_client/v2/models/robot_controller_configuration.py +32 -9
- wandelbots_api_client/v2/models/techman_controller.py +114 -0
- wandelbots_api_client/v2/models/techman_controller_rtrs.py +91 -0
- wandelbots_api_client/v2_pydantic/__init__.py +1 -1
- wandelbots_api_client/v2_pydantic/api_client.py +1 -1
- wandelbots_api_client/v2_pydantic/configuration.py +1 -1
- wandelbots_api_client/v2_pydantic/models/__init__.py +6 -2
- wandelbots_api_client/v2_pydantic/models/models.py +43 -1
- {wandelbots_api_client-26.6.0.dev136.dist-info → wandelbots_api_client-26.6.0.dev137.dist-info}/METADATA +2 -2
- {wandelbots_api_client-26.6.0.dev136.dist-info → wandelbots_api_client-26.6.0.dev137.dist-info}/RECORD +16 -14
- {wandelbots_api_client-26.6.0.dev136.dist-info → wandelbots_api_client-26.6.0.dev137.dist-info}/WHEEL +0 -0
|
@@ -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.
|
|
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.
|
|
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
|
|
@@ -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
|
-
|
|
63
|
+
oneof_schema_6_validator: Optional[UniversalrobotsController] = None
|
|
60
64
|
# data type: VirtualController
|
|
61
|
-
|
|
65
|
+
oneof_schema_7_validator: Optional[VirtualController] = None
|
|
62
66
|
# data type: YaskawaController
|
|
63
|
-
|
|
67
|
+
oneof_schema_8_validator: Optional[YaskawaController] = None
|
|
64
68
|
# data type: BostondynamicsController
|
|
65
|
-
|
|
69
|
+
oneof_schema_9_validator: Optional[BostondynamicsController] = None
|
|
66
70
|
# data type: UnitreeController
|
|
67
|
-
|
|
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
|
|
@@ -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.
|
|
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.
|
|
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:
|
|
3
|
-
# timestamp: 2026-08-
|
|
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-
|
|
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.
|
|
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.
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
496
|
-
wandelbots_api_client/v2_pydantic/models/models.py,sha256=
|
|
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.
|
|
500
|
-
wandelbots_api_client-26.6.0.
|
|
501
|
-
wandelbots_api_client-26.6.0.
|
|
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,,
|
|
File without changes
|