kscale 0.3.12__py3-none-any.whl → 0.3.13__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.
- kscale/__init__.py +1 -1
- kscale/web/clients/robot_class.py +9 -1
- kscale/web/gen/api.py +41 -1
- {kscale-0.3.12.dist-info → kscale-0.3.13.dist-info}/METADATA +2 -2
- {kscale-0.3.12.dist-info → kscale-0.3.13.dist-info}/RECORD +9 -9
- {kscale-0.3.12.dist-info → kscale-0.3.13.dist-info}/WHEEL +1 -1
- {kscale-0.3.12.dist-info → kscale-0.3.13.dist-info}/entry_points.txt +0 -0
- {kscale-0.3.12.dist-info → kscale-0.3.13.dist-info}/licenses/LICENSE +0 -0
- {kscale-0.3.12.dist-info → kscale-0.3.13.dist-info}/top_level.txt +0 -0
kscale/__init__.py
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
import hashlib
|
4
4
|
import json
|
5
5
|
import logging
|
6
|
+
import shutil
|
6
7
|
import tarfile
|
7
8
|
from pathlib import Path
|
8
9
|
from typing import Any
|
@@ -171,9 +172,16 @@ class RobotClassClient(BaseClient):
|
|
171
172
|
|
172
173
|
# Unpacks the file if requested.
|
173
174
|
unpack_path = cache_path.parent / "robot"
|
174
|
-
unpack_path.mkdir(parents=True, exist_ok=True)
|
175
175
|
unpacked_path_info = unpack_path / INFO_FILE_NAME
|
176
176
|
|
177
|
+
if not cache:
|
178
|
+
# If not using cache, remove the existing unpacked directory.
|
179
|
+
if unpack_path.exists():
|
180
|
+
logger.info("Removing existing unpacked directory")
|
181
|
+
shutil.rmtree(unpack_path)
|
182
|
+
|
183
|
+
unpack_path.mkdir(parents=True, exist_ok=True)
|
184
|
+
|
177
185
|
# If the file has already been unpacked, return the path.
|
178
186
|
if unpacked_path_info.exists():
|
179
187
|
with open(unpacked_path_info, "r") as f:
|
kscale/web/gen/api.py
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# generated by datamodel-codegen:
|
4
4
|
# filename: openapi.json
|
5
|
-
# timestamp: 2025-05-
|
5
|
+
# timestamp: 2025-05-04T22:45:26+00:00
|
6
6
|
|
7
7
|
from __future__ import annotations
|
8
8
|
|
@@ -19,6 +19,40 @@ class APIKeyResponse(BaseModel):
|
|
19
19
|
api_key: str = Field(..., title="Api Key")
|
20
20
|
|
21
21
|
|
22
|
+
class ActuatorMetadataInput(BaseModel):
|
23
|
+
actuator_type: Optional[str] = Field(None, title="Actuator Type")
|
24
|
+
sysid: Optional[str] = Field(None, title="Sysid")
|
25
|
+
max_torque: Optional[Union[float, str]] = Field(None, title="Max Torque")
|
26
|
+
armature: Optional[Union[float, str]] = Field(None, title="Armature")
|
27
|
+
damping: Optional[Union[float, str]] = Field(None, title="Damping")
|
28
|
+
frictionloss: Optional[Union[float, str]] = Field(None, title="Frictionloss")
|
29
|
+
vin: Optional[Union[float, str]] = Field(None, title="Vin")
|
30
|
+
kt: Optional[Union[float, str]] = Field(None, title="Kt")
|
31
|
+
R: Optional[Union[float, str]] = Field(None, title="R")
|
32
|
+
vmax: Optional[Union[float, str]] = Field(None, title="Vmax")
|
33
|
+
amax: Optional[Union[float, str]] = Field(None, title="Amax")
|
34
|
+
max_velocity: Optional[Union[float, str]] = Field(None, title="Max Velocity")
|
35
|
+
max_pwm: Optional[Union[float, str]] = Field(None, title="Max Pwm")
|
36
|
+
error_gain: Optional[Union[float, str]] = Field(None, title="Error Gain")
|
37
|
+
|
38
|
+
|
39
|
+
class ActuatorMetadataOutput(BaseModel):
|
40
|
+
actuator_type: Optional[str] = Field(None, title="Actuator Type")
|
41
|
+
sysid: Optional[str] = Field(None, title="Sysid")
|
42
|
+
max_torque: Optional[str] = Field(None, title="Max Torque")
|
43
|
+
armature: Optional[str] = Field(None, title="Armature")
|
44
|
+
damping: Optional[str] = Field(None, title="Damping")
|
45
|
+
frictionloss: Optional[str] = Field(None, title="Frictionloss")
|
46
|
+
vin: Optional[str] = Field(None, title="Vin")
|
47
|
+
kt: Optional[str] = Field(None, title="Kt")
|
48
|
+
R: Optional[str] = Field(None, title="R")
|
49
|
+
vmax: Optional[str] = Field(None, title="Vmax")
|
50
|
+
amax: Optional[str] = Field(None, title="Amax")
|
51
|
+
max_velocity: Optional[str] = Field(None, title="Max Velocity")
|
52
|
+
max_pwm: Optional[str] = Field(None, title="Max Pwm")
|
53
|
+
error_gain: Optional[str] = Field(None, title="Error Gain")
|
54
|
+
|
55
|
+
|
22
56
|
class AddRobotClassRequest(BaseModel):
|
23
57
|
description: Optional[str] = Field(None, title="Description")
|
24
58
|
|
@@ -82,11 +116,17 @@ class RobotResponse(BaseModel):
|
|
82
116
|
|
83
117
|
class RobotURDFMetadataInput(BaseModel):
|
84
118
|
joint_name_to_metadata: Optional[Dict[str, JointMetadataInput]] = Field(None, title="Joint Name To Metadata")
|
119
|
+
actuator_type_to_metadata: Optional[Dict[str, ActuatorMetadataInput]] = Field(
|
120
|
+
None, title="Actuator Type To Metadata"
|
121
|
+
)
|
85
122
|
control_frequency: Optional[Union[float, str]] = Field(None, title="Control Frequency")
|
86
123
|
|
87
124
|
|
88
125
|
class RobotURDFMetadataOutput(BaseModel):
|
89
126
|
joint_name_to_metadata: Optional[Dict[str, JointMetadataOutput]] = Field(None, title="Joint Name To Metadata")
|
127
|
+
actuator_type_to_metadata: Optional[Dict[str, ActuatorMetadataOutput]] = Field(
|
128
|
+
None, title="Actuator Type To Metadata"
|
129
|
+
)
|
90
130
|
control_frequency: Optional[str] = Field(None, title="Control Frequency")
|
91
131
|
|
92
132
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: kscale
|
3
|
-
Version: 0.3.
|
3
|
+
Version: 0.3.13
|
4
4
|
Summary: The kscale project
|
5
5
|
Home-page: https://github.com/kscalelabs/kscale
|
6
6
|
Author: Benjamin Bolte
|
@@ -55,7 +55,7 @@ Dynamic: summary
|
|
55
55
|
|
56
56
|
# K-Scale Command Line Interface
|
57
57
|
|
58
|
-
This is a command line tool for interacting with various services provided by K-Scale Labs. For more information, see the [documentation](https://docs.kscale.dev/
|
58
|
+
This is a command line tool for interacting with various services provided by K-Scale Labs. For more information, see the [documentation](https://docs.kscale.dev/docs/k-scale-api).
|
59
59
|
|
60
60
|
## Installation
|
61
61
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
kscale/__init__.py,sha256=
|
1
|
+
kscale/__init__.py,sha256=blW9DBfEkhee_kJYnE9wcIWBY9iWvKHkO1_CoKimPU8,201
|
2
2
|
kscale/cli.py,sha256=JvaPtmWvF7s0D4I3K98eZAItf3oOi2ULsn5aPGxDcu4,795
|
3
3
|
kscale/conf.py,sha256=dm35XSnzJp93St-ixVtYN4Nvqvb5upPGBrWkSI6Yb-4,1743
|
4
4
|
kscale/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -21,13 +21,13 @@ kscale/web/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
|
|
21
21
|
kscale/web/clients/base.py,sha256=P5AZdoawNpocgx_8j5v0eauowG5suUf8SnnD7q1_gx0,16213
|
22
22
|
kscale/web/clients/client.py,sha256=rzW2s8T7bKVuybOSQ65-ghl02rcXBoOxnx_nUDwgEPw,362
|
23
23
|
kscale/web/clients/robot.py,sha256=PI8HHkU-4Re9I5rLpp6dGbekRE-rBNVfXZxR_mO2MqE,1485
|
24
|
-
kscale/web/clients/robot_class.py,sha256=
|
24
|
+
kscale/web/clients/robot_class.py,sha256=LCKje6nNsDBeKDxZAGCO9vQXdyOwtx0woMmB5vDoUmE,7230
|
25
25
|
kscale/web/clients/user.py,sha256=jsa1_s6qXRM-AGBbHlPhd1NierUtynjY9tVAPNr6_Os,568
|
26
26
|
kscale/web/gen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
27
|
-
kscale/web/gen/api.py,sha256=
|
28
|
-
kscale-0.3.
|
29
|
-
kscale-0.3.
|
30
|
-
kscale-0.3.
|
31
|
-
kscale-0.3.
|
32
|
-
kscale-0.3.
|
33
|
-
kscale-0.3.
|
27
|
+
kscale/web/gen/api.py,sha256=QwyayqHVz7FFgDQO7IJFMN9MxtKpJPemiTMAk6aCEQE,7299
|
28
|
+
kscale-0.3.13.dist-info/licenses/LICENSE,sha256=HCN2bImAzUOXldAZZI7JZ9PYq6OwMlDAP_PpX1HnuN0,1071
|
29
|
+
kscale-0.3.13.dist-info/METADATA,sha256=MBCGy62OjZbOcDo-culQK6K62vtR1kIDshurzWkp768,2350
|
30
|
+
kscale-0.3.13.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
|
31
|
+
kscale-0.3.13.dist-info/entry_points.txt,sha256=N_0pCpPnwGDYVzOeuaSOrbJkS5L3lS9d8CxpJF1f8UI,62
|
32
|
+
kscale-0.3.13.dist-info/top_level.txt,sha256=C2ynjYwopg6YjgttnI2dJjasyq3EKNmYp-IfQg9Xms4,7
|
33
|
+
kscale-0.3.13.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|