simulo-interfaces 0.11.0__tar.gz → 0.12.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {simulo_interfaces-0.11.0/src/simulo_interfaces.egg-info → simulo_interfaces-0.12.0}/PKG-INFO +1 -1
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/pyproject.toml +6 -3
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/__init__.py +6 -4
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/pose.py +2 -3
- simulo_interfaces-0.12.0/src/simulo/interfaces/authoring/prop.py +210 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/__init__.py +1 -14
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/runtime/__init__.py +1 -2
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0/src/simulo_interfaces.egg-info}/PKG-INFO +1 -1
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo_interfaces.egg-info/SOURCES.txt +1 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/MANIFEST.in +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/PYPI.md +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/setup.cfg +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/__init__.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/actuator.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/asset.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/entity.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/light.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/materials.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/physics.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/primitives.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/record.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/robot.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/scene.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/sensor.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/terrain.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/visual.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/world.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/exceptions.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/ids.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/app.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/artifacts.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/asset.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/asset_catalog.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/callbacks.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/debug.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/domain.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/enums.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/manifest.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/runs.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/runtime.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/submit.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/volume.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/py.typed +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/runtime/anomaly.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/runtime/components.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/runtime/env.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/runtime/player.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/runtime/policy.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/runtime/scenario.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/runtime/task.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/runtime/tensors.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/runtime/trainer.py +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo_interfaces.egg-info/dependency_links.txt +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo_interfaces.egg-info/requires.txt +0 -0
- {simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo_interfaces.egg-info/top_level.txt +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "simulo-interfaces"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.12.0"
|
|
8
8
|
description = "Type contracts for the Simulo SDK. Installed automatically as a dependency of the simulo package."
|
|
9
9
|
readme = "PYPI.md"
|
|
10
10
|
requires-python = ">=3.11"
|
|
@@ -26,8 +26,11 @@ classifiers = [
|
|
|
26
26
|
dependencies = []
|
|
27
27
|
|
|
28
28
|
[project.optional-dependencies]
|
|
29
|
-
# black/isort/ruff/mypy pinned EXACT, not >=:
|
|
30
|
-
#
|
|
29
|
+
# black/isort/ruff/mypy pinned EXACT, not >=: these are rule-set tools whose
|
|
30
|
+
# defaults change between releases, so an unbounded lower bound lets CI silently
|
|
31
|
+
# resolve a newer release than a developer's environment has — "clean locally" and
|
|
32
|
+
# "hundreds of errors in CI" both true of one commit (2026-08-01: ruff 0.15.21 ->
|
|
33
|
+
# 0.16.1 flagged 1088 findings from new default rules, zero of them real).
|
|
31
34
|
# Keep in lockstep with `.github/workflows/simulo-interfaces-ci.yml`'s
|
|
32
35
|
# `ruff`/`black`/`isort`/`mypy` steps, which resolve their versions from THIS extra
|
|
33
36
|
# (`pip install -e ".[dev]"`).
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/__init__.py
RENAMED
|
@@ -106,10 +106,11 @@ from simulo.interfaces.authoring.primitives import (
|
|
|
106
106
|
Sphere,
|
|
107
107
|
Transform,
|
|
108
108
|
)
|
|
109
|
+
from simulo.interfaces.authoring.prop import PropProtocol, PropStateProtocol
|
|
109
110
|
from simulo.interfaces.authoring.record import RecordConfig
|
|
110
111
|
from simulo.interfaces.authoring.robot import RobotProtocol, RobotStateProtocol
|
|
111
112
|
from simulo.interfaces.authoring.scene import SceneGroupProtocol, SceneProtocol
|
|
112
|
-
from simulo.interfaces.authoring.sensor import CameraProtocol
|
|
113
|
+
from simulo.interfaces.authoring.sensor import CameraProtocol
|
|
113
114
|
from simulo.interfaces.authoring.terrain import (
|
|
114
115
|
GroundPlane,
|
|
115
116
|
RoughTerrain,
|
|
@@ -180,11 +181,12 @@ __all__ = [
|
|
|
180
181
|
# scene (MIRROR — the concrete classes live in the backend package)
|
|
181
182
|
"SceneProtocol",
|
|
182
183
|
"SceneGroupProtocol",
|
|
183
|
-
# robot / sensor / actuator (MIRROR — the concrete classes live in
|
|
184
|
-
# backend package and explicitly inherit these Protocols)
|
|
184
|
+
# robot / prop / sensor / actuator (MIRROR — the concrete classes live in
|
|
185
|
+
# the backend package and explicitly inherit these Protocols)
|
|
185
186
|
"RobotProtocol",
|
|
186
187
|
"RobotStateProtocol",
|
|
187
|
-
"
|
|
188
|
+
"PropProtocol",
|
|
189
|
+
"PropStateProtocol",
|
|
188
190
|
"CameraProtocol",
|
|
189
191
|
"ActuatorProtocol",
|
|
190
192
|
]
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/pose.py
RENAMED
|
@@ -17,8 +17,8 @@ class Pose:
|
|
|
17
17
|
xyz: Position as (x, y, z)
|
|
18
18
|
quat_wxyz: Orientation as quaternion (w, x, y, z)
|
|
19
19
|
|
|
20
|
-
Example
|
|
21
|
-
|
|
20
|
+
Example::
|
|
21
|
+
|
|
22
22
|
# Using named arguments
|
|
23
23
|
pose = Pose(position=[0.5, 0.3, 0.7], orientation=[1, 0, 0, 0])
|
|
24
24
|
|
|
@@ -27,7 +27,6 @@ class Pose:
|
|
|
27
27
|
|
|
28
28
|
# Position only (identity rotation)
|
|
29
29
|
pose = Pose.from_xyz(0.5, 0.3, 0.7)
|
|
30
|
-
```
|
|
31
30
|
"""
|
|
32
31
|
|
|
33
32
|
xyz: Tuple[float, float, float] = (0.0, 0.0, 0.0)
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
"""``PropProtocol`` — the declared contract for a movable scene prop.
|
|
2
|
+
|
|
3
|
+
A MIRROR, not a relocation (the same mechanism as the Robot and Scene
|
|
4
|
+
contracts in this package): the concrete ``Prop`` implementation stays in the
|
|
5
|
+
backend package, because reading and writing a prop's pose reaches through a
|
|
6
|
+
live engine handle and cannot exist in a zero-dependency package. What CAN
|
|
7
|
+
live here is the declared public surface — what a prop is constructed from,
|
|
8
|
+
how its live state is read, and how its pose is written.
|
|
9
|
+
|
|
10
|
+
Why this contract exists at all
|
|
11
|
+
-------------------------------
|
|
12
|
+
|
|
13
|
+
A scene holds two kinds of movable thing: robots, which the simulation drives
|
|
14
|
+
through joints, and *props* — the block on the table, the crate to push, the
|
|
15
|
+
ball to catch. Robots have carried a full pose surface since the beginning
|
|
16
|
+
(``robot.state.pose``, ``set_root_pose``, ``reset``). Props carried none: a
|
|
17
|
+
shape handed to ``scene.add(...)`` is pure authoring data, so the only way to
|
|
18
|
+
reach the spawned body's pose was the engine-private scene index.
|
|
19
|
+
|
|
20
|
+
That gap is what kept manipulation demos *scripted*. An episodic task must
|
|
21
|
+
re-randomise its object at the start of every episode and read the object's
|
|
22
|
+
height back to score the lift — both of which are prop pose access. This
|
|
23
|
+
contract closes it.
|
|
24
|
+
|
|
25
|
+
``PrimitiveShape``, not every entity
|
|
26
|
+
------------------------------------
|
|
27
|
+
|
|
28
|
+
A prop is built from a :class:`~simulo.interfaces.authoring.primitives.PrimitiveShape`
|
|
29
|
+
carrying **rigid** physics. That restriction is the honest one rather than a
|
|
30
|
+
convenience: a pose that can be read and written is the simulation's own
|
|
31
|
+
rigid-body state, and only a rigid body has one. A visual-only shape (no
|
|
32
|
+
physics) and a deformable one have no rigid-body pose to write, so the
|
|
33
|
+
implementation refuses them at construction, naming the prop — rather than
|
|
34
|
+
accepting them and silently doing nothing at reset time, which would surface
|
|
35
|
+
much later as "my object never moves".
|
|
36
|
+
|
|
37
|
+
A shape that only needs to be *visible* does not need a prop at all: hand it
|
|
38
|
+
straight to ``scene.add(shape, at=...)`` exactly as before. ``Prop`` is
|
|
39
|
+
strictly the opt-in for "I also need to read or write where this thing is".
|
|
40
|
+
|
|
41
|
+
Tensors, not ``Pose``
|
|
42
|
+
---------------------
|
|
43
|
+
|
|
44
|
+
Every batched member here is ``TensorLike`` with the environment count as its
|
|
45
|
+
leading dimension, and the write methods take the same. ``Pose`` remains the
|
|
46
|
+
*authoring* type — where the prop spawns, written once as
|
|
47
|
+
``Cuboid(pose=Pose.from_xyz(...))``. It is deliberately NOT the runtime type:
|
|
48
|
+
a ``Pose`` is one pose, and the entire purpose of this surface is giving each
|
|
49
|
+
of thousands of environments a *different* pose on the same call. See
|
|
50
|
+
``PropProtocol.set_pose`` for the full reasoning.
|
|
51
|
+
|
|
52
|
+
Enforcement is the standard four layers for a mirror — the type checker alone
|
|
53
|
+
is NOT sufficient (measured on the Scene mirror): mypy catches signature
|
|
54
|
+
*shape* divergence at the backend definition site but is silent on parameter
|
|
55
|
+
renames and on a property degrading to a plain attribute. Those are caught by
|
|
56
|
+
the signature-conformance test in the backend package's suite (per-member,
|
|
57
|
+
both directions, plus member-set equality with a pinned omissions allowlist),
|
|
58
|
+
and the constructor is pinned separately by a ``__call__``-Protocol in the
|
|
59
|
+
backend's static conformance checks (type checkers exempt ``__init__`` from
|
|
60
|
+
override checks). The Protocol stays structural for any other implementer.
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
from typing import Optional, Protocol, runtime_checkable
|
|
64
|
+
|
|
65
|
+
from simulo.interfaces.authoring.primitives import PrimitiveShape
|
|
66
|
+
from simulo.interfaces.runtime.tensors import TensorLike
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
@runtime_checkable
|
|
70
|
+
class PropStateProtocol(Protocol):
|
|
71
|
+
"""The live prop-state contract — batched, read-only, zero-copy.
|
|
72
|
+
|
|
73
|
+
Obtained from a prop as ``prop.state``; never constructed directly. The
|
|
74
|
+
three members are exactly the rigid-body half of
|
|
75
|
+
:class:`~simulo.interfaces.authoring.robot.RobotStateProtocol` and carry
|
|
76
|
+
the same names for the same quantities — a prop has no joints, so the
|
|
77
|
+
three joint members simply do not appear. Code that reads
|
|
78
|
+
``robot.state.pose`` reads ``prop.state.pose`` identically.
|
|
79
|
+
|
|
80
|
+
Each member is a live view of the simulation's own state buffers: reading
|
|
81
|
+
one returns the current values without copying, at the same cost inside a
|
|
82
|
+
training loop's hot path as anywhere else. All members carry the
|
|
83
|
+
environment batch as their leading dimension (the scene's ``num_envs``).
|
|
84
|
+
|
|
85
|
+
**Read a member each time you need it — do not hold the returned tensor
|
|
86
|
+
across steps, and do not write into it.** The tensor IS the simulation's
|
|
87
|
+
own memory: the engine refreshes these buffers by rebinding them to new
|
|
88
|
+
tensors, so a tensor held across a step can silently serve stale values,
|
|
89
|
+
and writing into one writes into the simulation. The accessor
|
|
90
|
+
(``prop.state`` itself) may be held freely.
|
|
91
|
+
|
|
92
|
+
Members raise ``RuntimeError`` until the simulation runtime has attached
|
|
93
|
+
the prop — read them from ``on_start`` onward. The ``state`` accessor
|
|
94
|
+
itself is always available and is the same object on every access.
|
|
95
|
+
"""
|
|
96
|
+
|
|
97
|
+
@property
|
|
98
|
+
def pose(self) -> TensorLike:
|
|
99
|
+
"""Pose in the world frame, shape ``(num_envs, 7)``:
|
|
100
|
+
``[x, y, z, qw, qx, qy, qz]`` (position + w-first quaternion)."""
|
|
101
|
+
...
|
|
102
|
+
|
|
103
|
+
@property
|
|
104
|
+
def linear_velocity(self) -> TensorLike:
|
|
105
|
+
"""Linear velocity in the world frame, shape ``(num_envs, 3)``:
|
|
106
|
+
``[vx, vy, vz]``."""
|
|
107
|
+
...
|
|
108
|
+
|
|
109
|
+
@property
|
|
110
|
+
def angular_velocity(self) -> TensorLike:
|
|
111
|
+
"""Angular velocity in the world frame, shape ``(num_envs, 3)``:
|
|
112
|
+
``[wx, wy, wz]``."""
|
|
113
|
+
...
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
@runtime_checkable
|
|
117
|
+
class PropProtocol(Protocol):
|
|
118
|
+
"""The prop authoring contract — a rigid body whose pose you can read and write.
|
|
119
|
+
|
|
120
|
+
This is the surface authoring code may rely on when it creates a prop,
|
|
121
|
+
adds it to a scene, and moves it: the shape it was built from, its
|
|
122
|
+
identity in the scene, its live state, its spawn pose, and the pose /
|
|
123
|
+
velocity writes an episodic reset needs.
|
|
124
|
+
"""
|
|
125
|
+
|
|
126
|
+
# -- Construction-time configuration ----------------------------------
|
|
127
|
+
|
|
128
|
+
shape: PrimitiveShape
|
|
129
|
+
"""The primitive shape this prop spawns, carrying its size, material, and
|
|
130
|
+
rigid physics. The shape's own ``pose`` is where the prop spawns."""
|
|
131
|
+
|
|
132
|
+
# -- Identity and attachment ------------------------------------------
|
|
133
|
+
|
|
134
|
+
@property
|
|
135
|
+
def name(self) -> Optional[str]:
|
|
136
|
+
"""Prop name — taken from the shape, or set by the scene when added."""
|
|
137
|
+
...
|
|
138
|
+
|
|
139
|
+
@property
|
|
140
|
+
def path(self) -> Optional[str]:
|
|
141
|
+
"""Scene path — set by the scene when the prop is added."""
|
|
142
|
+
...
|
|
143
|
+
|
|
144
|
+
@property
|
|
145
|
+
def state(self) -> PropStateProtocol:
|
|
146
|
+
"""The grouped live prop state — the supported, typed state surface.
|
|
147
|
+
|
|
148
|
+
Always available (the accessor is the same object on every access);
|
|
149
|
+
its members read straight through to the simulation's state buffers
|
|
150
|
+
and raise ``RuntimeError`` until the simulation runtime has attached
|
|
151
|
+
the prop — read them from ``on_start`` onward.
|
|
152
|
+
"""
|
|
153
|
+
...
|
|
154
|
+
|
|
155
|
+
@property
|
|
156
|
+
def default_pose(self) -> TensorLike:
|
|
157
|
+
"""The prop's spawn pose in the **world** frame, ``(num_envs, 7)``.
|
|
158
|
+
|
|
159
|
+
The pose the prop was authored at, already offset by each
|
|
160
|
+
environment's own origin — so it is directly comparable with
|
|
161
|
+
``state.pose`` and directly usable as the base for a randomised
|
|
162
|
+
reset. Index it with the environments being reset
|
|
163
|
+
(``prop.default_pose[env_ids]``), perturb, and write it back with
|
|
164
|
+
:meth:`set_pose`.
|
|
165
|
+
|
|
166
|
+
Raises ``RuntimeError`` until the simulation runtime has attached the
|
|
167
|
+
prop.
|
|
168
|
+
"""
|
|
169
|
+
...
|
|
170
|
+
|
|
171
|
+
# -- Pose writes ------------------------------------------------------
|
|
172
|
+
|
|
173
|
+
def set_pose(self, pose: TensorLike, env_ids: Optional[TensorLike] = ...) -> None:
|
|
174
|
+
"""Write the prop's pose directly (teleport, not control), world frame.
|
|
175
|
+
|
|
176
|
+
Args:
|
|
177
|
+
pose: ``(num_envs, 7)`` — or ``(len(env_ids), 7)`` when ``env_ids``
|
|
178
|
+
is given — as ``[x, y, z, qw, qx, qy, qz]``.
|
|
179
|
+
env_ids: Environment indices to write; ``None`` writes every
|
|
180
|
+
environment. Passing the subset being reset is what makes a
|
|
181
|
+
partial episodic reset possible: the environments that did not
|
|
182
|
+
finish keep the pose they had.
|
|
183
|
+
"""
|
|
184
|
+
...
|
|
185
|
+
|
|
186
|
+
def set_velocity(self, velocity: TensorLike, env_ids: Optional[TensorLike] = ...) -> None:
|
|
187
|
+
"""Write the prop's velocity directly (teleport, not control), world frame.
|
|
188
|
+
|
|
189
|
+
Args:
|
|
190
|
+
velocity: ``(num_envs, 6)`` — or ``(len(env_ids), 6)`` when
|
|
191
|
+
``env_ids`` is given — as ``[vx, vy, vz, wx, wy, wz]``.
|
|
192
|
+
env_ids: Environment indices to write; ``None`` writes every
|
|
193
|
+
environment.
|
|
194
|
+
|
|
195
|
+
A reset that moves a prop should zero its velocity too, or the body
|
|
196
|
+
arrives at its new pose still carrying the momentum it had at the end
|
|
197
|
+
of the previous episode.
|
|
198
|
+
"""
|
|
199
|
+
...
|
|
200
|
+
|
|
201
|
+
# -- Lifecycle --------------------------------------------------------
|
|
202
|
+
|
|
203
|
+
def reset(self, env_ids: Optional[TensorLike] = ...) -> None:
|
|
204
|
+
"""Return the prop to its spawn pose with zero velocity.
|
|
205
|
+
|
|
206
|
+
Args:
|
|
207
|
+
env_ids: Environment indices to reset; ``None`` resets every
|
|
208
|
+
environment.
|
|
209
|
+
"""
|
|
210
|
+
...
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/__init__.py
RENAMED
|
@@ -7,7 +7,6 @@ implementation-free — concrete behaviour lives in the future
|
|
|
7
7
|
``simulo`` client and the ``simulo-backend`` SDK.
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
|
-
from simulo.interfaces.platform.app import AppProtocol, JobFunctionProtocol, Mount
|
|
11
10
|
from simulo.interfaces.platform.artifacts import (
|
|
12
11
|
DECLARED_OUTPUT_MISSING_CODE,
|
|
13
12
|
JOB_ARTIFACT_DOWNLOAD_ROUTE_TEMPLATE,
|
|
@@ -97,7 +96,7 @@ from simulo.interfaces.platform.asset_catalog import (
|
|
|
97
96
|
from simulo.interfaces.platform.callbacks import JobCallbackProtocol
|
|
98
97
|
from simulo.interfaces.platform.debug import DebugSessionProtocol, ReplaySessionProtocol, VisualizationSessionProtocol
|
|
99
98
|
from simulo.interfaces.platform.domain import Checkpoint, Job, Package, Project, Resource, Tag, TrainedModel
|
|
100
|
-
from simulo.interfaces.platform.enums import ArtifactKind
|
|
99
|
+
from simulo.interfaces.platform.enums import ArtifactKind
|
|
101
100
|
from simulo.interfaces.platform.manifest import (
|
|
102
101
|
FINDING_CLASSIFICATIONS,
|
|
103
102
|
MAX_PREFLIGHT_BODY_BYTES,
|
|
@@ -124,7 +123,6 @@ from simulo.interfaces.platform.runs import (
|
|
|
124
123
|
LOG_CHUNK_MAX_BYTES,
|
|
125
124
|
LOG_TAIL_MAX_BYTES,
|
|
126
125
|
TERMINAL_JOB_STATUSES,
|
|
127
|
-
JobRecord,
|
|
128
126
|
)
|
|
129
127
|
from simulo.interfaces.platform.runtime import RuntimeProtocol
|
|
130
128
|
from simulo.interfaces.platform.submit import (
|
|
@@ -158,8 +156,6 @@ from simulo.interfaces.platform.submit import (
|
|
|
158
156
|
WORKER_JOB_RECORDINGS_PRESIGN_ROUTE_TEMPLATE,
|
|
159
157
|
WORKER_JOB_RECORDINGS_ROUTE_TEMPLATE,
|
|
160
158
|
WORKER_LEASE_HEADER,
|
|
161
|
-
ModelRecord,
|
|
162
|
-
RecordingRecord,
|
|
163
159
|
canonical_pypi_name,
|
|
164
160
|
is_platform_pinned,
|
|
165
161
|
)
|
|
@@ -167,9 +163,6 @@ from simulo.interfaces.platform.volume import VolumeProtocol
|
|
|
167
163
|
|
|
168
164
|
__all__ = [
|
|
169
165
|
# enums
|
|
170
|
-
"JobStatus",
|
|
171
|
-
"ResumePolicy",
|
|
172
|
-
"ResourceKind",
|
|
173
166
|
"ArtifactKind",
|
|
174
167
|
# domain dataclasses
|
|
175
168
|
"Tag",
|
|
@@ -210,7 +203,6 @@ __all__ = [
|
|
|
210
203
|
"OUTPUT_FLAG_ANOMALY",
|
|
211
204
|
"DECLARED_OUTPUT_MISSING_CODE",
|
|
212
205
|
# job-run contract (run record schema + jobs HTTP API shape)
|
|
213
|
-
"JobRecord",
|
|
214
206
|
"TERMINAL_JOB_STATUSES",
|
|
215
207
|
"JOBS_API_DEFAULT_PORT",
|
|
216
208
|
"JOBS_ROUTE",
|
|
@@ -249,8 +241,6 @@ __all__ = [
|
|
|
249
241
|
"MAX_COMPLETE_MESSAGE_CHARS",
|
|
250
242
|
"MAX_COMPLETE_REASON_CODE_CHARS",
|
|
251
243
|
"MODEL_KINDS",
|
|
252
|
-
"ModelRecord",
|
|
253
|
-
"RecordingRecord",
|
|
254
244
|
"RESERVED_RUNTIME_ENV_KEYS",
|
|
255
245
|
"RESERVED_RUNTIME_ENV_PREFIXES",
|
|
256
246
|
"PLATFORM_PINNED_PACKAGES",
|
|
@@ -337,9 +327,6 @@ __all__ = [
|
|
|
337
327
|
"AssetProtocol",
|
|
338
328
|
"VolumeProtocol",
|
|
339
329
|
"JobCallbackProtocol",
|
|
340
|
-
"JobFunctionProtocol",
|
|
341
|
-
"AppProtocol",
|
|
342
|
-
"Mount",
|
|
343
330
|
"DebugSessionProtocol",
|
|
344
331
|
"ReplaySessionProtocol",
|
|
345
332
|
"VisualizationSessionProtocol",
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/runtime/__init__.py
RENAMED
|
@@ -28,14 +28,13 @@ from simulo.interfaces.runtime.policy import PolicyProtocol
|
|
|
28
28
|
from simulo.interfaces.runtime.scenario import ScenarioProtocol
|
|
29
29
|
from simulo.interfaces.runtime.task import TaskProtocol
|
|
30
30
|
from simulo.interfaces.runtime.tensors import TensorLike
|
|
31
|
-
from simulo.interfaces.runtime.trainer import
|
|
31
|
+
from simulo.interfaces.runtime.trainer import TrainerProtocol
|
|
32
32
|
|
|
33
33
|
__all__ = [
|
|
34
34
|
"TensorLike",
|
|
35
35
|
"TaskProtocol",
|
|
36
36
|
"PolicyProtocol",
|
|
37
37
|
"TrainerProtocol",
|
|
38
|
-
"PolicyExporterProtocol",
|
|
39
38
|
"PlayerProtocol",
|
|
40
39
|
"LearningEnvProtocol",
|
|
41
40
|
"ScenarioProtocol",
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo_interfaces.egg-info/SOURCES.txt
RENAMED
|
@@ -14,6 +14,7 @@ src/simulo/interfaces/authoring/materials.py
|
|
|
14
14
|
src/simulo/interfaces/authoring/physics.py
|
|
15
15
|
src/simulo/interfaces/authoring/pose.py
|
|
16
16
|
src/simulo/interfaces/authoring/primitives.py
|
|
17
|
+
src/simulo/interfaces/authoring/prop.py
|
|
17
18
|
src/simulo/interfaces/authoring/record.py
|
|
18
19
|
src/simulo/interfaces/authoring/robot.py
|
|
19
20
|
src/simulo/interfaces/authoring/scene.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/actuator.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/asset.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/entity.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/light.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/materials.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/physics.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/primitives.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/record.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/robot.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/scene.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/sensor.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/terrain.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/visual.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/authoring/world.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/artifacts.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/asset.py
RENAMED
|
File without changes
|
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/callbacks.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/debug.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/domain.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/enums.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/manifest.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/runs.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/runtime.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/submit.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/platform/volume.py
RENAMED
|
File without changes
|
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/runtime/anomaly.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/runtime/components.py
RENAMED
|
File without changes
|
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/runtime/player.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/runtime/policy.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/runtime/scenario.py
RENAMED
|
File without changes
|
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/runtime/tensors.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo/interfaces/runtime/trainer.py
RENAMED
|
File without changes
|
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo_interfaces.egg-info/requires.txt
RENAMED
|
File without changes
|
{simulo_interfaces-0.11.0 → simulo_interfaces-0.12.0}/src/simulo_interfaces.egg-info/top_level.txt
RENAMED
|
File without changes
|