simulo 0.22.0__tar.gz → 0.23.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.
Files changed (60) hide show
  1. {simulo-0.22.0/src/simulo.egg-info → simulo-0.23.0}/PKG-INFO +6 -4
  2. {simulo-0.22.0 → simulo-0.23.0}/PYPI.md +3 -2
  3. {simulo-0.22.0 → simulo-0.23.0}/pyproject.toml +11 -2
  4. simulo-0.23.0/src/simulo/_client/_secure_downloads.py +889 -0
  5. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/cli.py +276 -34
  6. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/jobs_api.py +12 -0
  7. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/submit_api.py +126 -74
  8. simulo-0.23.0/src/simulo/_client/view_fragment.py +21 -0
  9. {simulo-0.22.0 → simulo-0.23.0/src/simulo.egg-info}/PKG-INFO +6 -4
  10. {simulo-0.22.0 → simulo-0.23.0}/src/simulo.egg-info/SOURCES.txt +2 -0
  11. {simulo-0.22.0 → simulo-0.23.0}/src/simulo.egg-info/requires.txt +2 -1
  12. {simulo-0.22.0 → simulo-0.23.0}/MANIFEST.in +0 -0
  13. {simulo-0.22.0 → simulo-0.23.0}/setup.cfg +0 -0
  14. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/__init__.py +0 -0
  15. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/__init__.py +0 -0
  16. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/_entrypoint.py +0 -0
  17. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/_mounts.py +0 -0
  18. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/_runner.py +0 -0
  19. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/app.py +0 -0
  20. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/asset.py +0 -0
  21. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/asset_api.py +0 -0
  22. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/asset_package.py +0 -0
  23. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/asset_pins.py +0 -0
  24. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/builtin_aliases.py +0 -0
  25. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/bundle.py +0 -0
  26. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/cancel_api.py +0 -0
  27. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/config.py +0 -0
  28. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/credentials.py +0 -0
  29. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/discovery.py +0 -0
  30. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/export_api.py +0 -0
  31. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/export_bundle.py +0 -0
  32. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/facades.py +0 -0
  33. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/http.py +0 -0
  34. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/identity_api.py +0 -0
  35. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/learning.py +0 -0
  36. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/login.py +0 -0
  37. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/mode.py +0 -0
  38. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/outputs.py +0 -0
  39. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/packaging.py +0 -0
  40. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/preflight_api.py +0 -0
  41. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/preflight_render.py +0 -0
  42. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/registry.py +0 -0
  43. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/runtime.py +0 -0
  44. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/runtime_display.py +0 -0
  45. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/seed_ref.py +0 -0
  46. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/stub.py +0 -0
  47. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/templates/__init__.py +0 -0
  48. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/templates/inference/app.py.tmpl +0 -0
  49. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/templates/inference/simuloignore.tmpl +0 -0
  50. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/templates/scenario/app.py.tmpl +0 -0
  51. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/templates/scenario/simuloignore.tmpl +0 -0
  52. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/templates/training/app.py.tmpl +0 -0
  53. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/templates/training/simuloignore.tmpl +0 -0
  54. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/view_session_api.py +0 -0
  55. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/_client/volume.py +0 -0
  56. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/callbacks.py +0 -0
  57. {simulo-0.22.0 → simulo-0.23.0}/src/simulo/py.typed +0 -0
  58. {simulo-0.22.0 → simulo-0.23.0}/src/simulo.egg-info/dependency_links.txt +0 -0
  59. {simulo-0.22.0 → simulo-0.23.0}/src/simulo.egg-info/entry_points.txt +0 -0
  60. {simulo-0.22.0 → simulo-0.23.0}/src/simulo.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: simulo
3
- Version: 0.22.0
3
+ Version: 0.23.0
4
4
  Summary: Simulo SDK and CLI — define robotics simulation and training apps in Python and run them on the Simulo cloud.
5
5
  Author-email: Simulo Team <team@simulo.ai>
6
6
  License: BSD-3-Clause
@@ -15,7 +15,7 @@ Classifier: Programming Language :: Python :: 3.12
15
15
  Classifier: Typing :: Typed
16
16
  Requires-Python: >=3.11
17
17
  Description-Content-Type: text/markdown
18
- Requires-Dist: simulo-interfaces<0.17,>=0.16.0
18
+ Requires-Dist: simulo-interfaces<0.18,>=0.17.0
19
19
  Requires-Dist: mcap<2,>=1.3
20
20
  Requires-Dist: defusedxml>=0.7.1
21
21
  Requires-Dist: usd-core<27,>=25.5
@@ -28,6 +28,7 @@ Requires-Dist: ruff==0.15.21; extra == "dev"
28
28
  Requires-Dist: mypy==2.3.0; extra == "dev"
29
29
  Requires-Dist: types-defusedxml==0.7.0.20260504; extra == "dev"
30
30
  Requires-Dist: pytest>=8.2; extra == "dev"
31
+ Requires-Dist: pytest-timeout==2.4.0; extra == "dev"
31
32
  Requires-Dist: build>=1.2; extra == "dev"
32
33
  Requires-Dist: twine>=5.1; extra == "dev"
33
34
  Requires-Dist: setuptools>=68; extra == "dev"
@@ -103,8 +104,9 @@ Without logging in, `simulo run` packages the app locally without submitting it.
103
104
 
104
105
  Every cloud submit is fresh — running the same command twice trains twice, never a silent
105
106
  no-op. To continue training from an earlier job's checkpoint instead, pass
106
- `--from <job-ref>[:best|:latest]`. Job ids, and their unambiguous prefixes (`>=4` characters),
107
- work anywhere the CLI takes a job id.
107
+ `--from <job-ref>[:best|:latest]`. `<job-ref>` is a full job id, matched by exact equality;
108
+ an unambiguous prefix (`>=4` characters, Git-style) works too, but only for the legacy UUID
109
+ form some jobs from before friendly identifiers still carry.
108
110
 
109
111
  ## Monitor jobs and retrieve results
110
112
 
@@ -64,8 +64,9 @@ Without logging in, `simulo run` packages the app locally without submitting it.
64
64
 
65
65
  Every cloud submit is fresh — running the same command twice trains twice, never a silent
66
66
  no-op. To continue training from an earlier job's checkpoint instead, pass
67
- `--from <job-ref>[:best|:latest]`. Job ids, and their unambiguous prefixes (`>=4` characters),
68
- work anywhere the CLI takes a job id.
67
+ `--from <job-ref>[:best|:latest]`. `<job-ref>` is a full job id, matched by exact equality;
68
+ an unambiguous prefix (`>=4` characters, Git-style) works too, but only for the legacy UUID
69
+ form some jobs from before friendly identifiers still carry.
69
70
 
70
71
  ## Monitor jobs and retrieve results
71
72
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "simulo"
7
- version = "0.22.0"
7
+ version = "0.23.0"
8
8
  description = "Simulo SDK and CLI — define robotics simulation and training apps in Python and run them on the Simulo cloud."
9
9
  readme = "PYPI.md"
10
10
  requires-python = ">=3.11"
@@ -26,7 +26,7 @@ classifiers = [
26
26
  # mcap: used by `simulo recordings` to read back a downloaded recording and
27
27
  # verify it (message count) — MIT-licensed, deps only lz4+zstandard.
28
28
  dependencies = [
29
- "simulo-interfaces>=0.16.0,<0.17",
29
+ "simulo-interfaces>=0.17.0,<0.18",
30
30
  "mcap>=1.3,<2",
31
31
  # Hardened XML parsing for URDF ingestion (USD Asset Catalogs, PR-12 fix
32
32
  # loop 2, security NIT): stdlib xml.etree.ElementTree relies on
@@ -68,6 +68,8 @@ assets = ["usd-core>=25.5,<27"]
68
68
  # declared RUNTIME dependency of this package (asset_package.py parses URDF with
69
69
  # it), so without the stubs mypy reported `Library stubs not installed` and —
70
70
  # worse — silently skipped type-checking every call into it.
71
+ # `pytest-timeout` is pinned EXACT because it enforces the suite's hang bound;
72
+ # changing the plugin under an unchanged timeout would change that guard's behavior.
71
73
  dev = [
72
74
  "black==26.5.1",
73
75
  "isort==8.0.1",
@@ -75,6 +77,7 @@ dev = [
75
77
  "mypy==2.3.0",
76
78
  "types-defusedxml==0.7.0.20260504",
77
79
  "pytest>=8.2",
80
+ "pytest-timeout==2.4.0",
78
81
  "build>=1.2",
79
82
  "twine>=5.1",
80
83
  # setuptools/wheel: `tests/test_create_wheel_packaging.py` builds a real wheel with
@@ -140,6 +143,12 @@ ignore_missing_imports = true
140
143
  [tool.pytest.ini_options]
141
144
  testpaths = ["tests"]
142
145
  addopts = "--import-mode=importlib"
146
+ # A healthy hosted leg spent 36s before pytest and 63s in pytest, leaving roughly
147
+ # 864s of its 15-minute job budget. Fourteen 60s hangs added to the healthy suite
148
+ # would exhaust that budget and turn a red failure back into a cancelled job; the
149
+ # observed race hung two tests, so 60s bounds it with room. Do not raise this value
150
+ # without recomputing the job-budget ceiling from current hosted timings.
151
+ timeout = 60
143
152
  markers = [
144
153
  "isaac: requires NVIDIA Isaac Sim / IsaacLab (skipped on dev machines and in PR CI)",
145
154
  "gpu: requires a CUDA GPU (skipped on dev machines and in PR CI)",