simulo 0.24.0__tar.gz → 0.24.1__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.24.0/src/simulo.egg-info → simulo-0.24.1}/PKG-INFO +1 -1
  2. {simulo-0.24.0 → simulo-0.24.1}/pyproject.toml +1 -1
  3. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/cli.py +34 -3
  4. {simulo-0.24.0 → simulo-0.24.1/src/simulo.egg-info}/PKG-INFO +1 -1
  5. {simulo-0.24.0 → simulo-0.24.1}/MANIFEST.in +0 -0
  6. {simulo-0.24.0 → simulo-0.24.1}/PYPI.md +0 -0
  7. {simulo-0.24.0 → simulo-0.24.1}/setup.cfg +0 -0
  8. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/__init__.py +0 -0
  9. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/__init__.py +0 -0
  10. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/_entrypoint.py +0 -0
  11. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/_mounts.py +0 -0
  12. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/_runner.py +0 -0
  13. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/_secure_downloads.py +0 -0
  14. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/app.py +0 -0
  15. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/asset.py +0 -0
  16. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/asset_api.py +0 -0
  17. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/asset_package.py +0 -0
  18. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/asset_pins.py +0 -0
  19. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/builtin_aliases.py +0 -0
  20. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/bundle.py +0 -0
  21. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/cancel_api.py +0 -0
  22. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/config.py +0 -0
  23. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/credentials.py +0 -0
  24. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/discovery.py +0 -0
  25. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/export_api.py +0 -0
  26. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/export_bundle.py +0 -0
  27. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/facades.py +0 -0
  28. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/http.py +0 -0
  29. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/identity_api.py +0 -0
  30. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/jobs_api.py +0 -0
  31. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/learning.py +0 -0
  32. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/login.py +0 -0
  33. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/mode.py +0 -0
  34. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/outputs.py +0 -0
  35. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/packaging.py +0 -0
  36. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/preflight_api.py +0 -0
  37. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/preflight_render.py +0 -0
  38. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/registry.py +0 -0
  39. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/runtime.py +0 -0
  40. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/runtime_display.py +0 -0
  41. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/seed_ref.py +0 -0
  42. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/stub.py +0 -0
  43. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/submit_api.py +0 -0
  44. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/templates/__init__.py +0 -0
  45. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/templates/inference/app.py.tmpl +0 -0
  46. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/templates/inference/simuloignore.tmpl +0 -0
  47. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/templates/scenario/app.py.tmpl +0 -0
  48. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/templates/scenario/simuloignore.tmpl +0 -0
  49. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/templates/training/app.py.tmpl +0 -0
  50. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/templates/training/simuloignore.tmpl +0 -0
  51. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/view_fragment.py +0 -0
  52. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/view_session_api.py +0 -0
  53. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/_client/volume.py +0 -0
  54. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/callbacks.py +0 -0
  55. {simulo-0.24.0 → simulo-0.24.1}/src/simulo/py.typed +0 -0
  56. {simulo-0.24.0 → simulo-0.24.1}/src/simulo.egg-info/SOURCES.txt +0 -0
  57. {simulo-0.24.0 → simulo-0.24.1}/src/simulo.egg-info/dependency_links.txt +0 -0
  58. {simulo-0.24.0 → simulo-0.24.1}/src/simulo.egg-info/entry_points.txt +0 -0
  59. {simulo-0.24.0 → simulo-0.24.1}/src/simulo.egg-info/requires.txt +0 -0
  60. {simulo-0.24.0 → simulo-0.24.1}/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.24.0
3
+ Version: 0.24.1
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "simulo"
7
- version = "0.24.0"
7
+ version = "0.24.1"
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"
@@ -635,6 +635,19 @@ _MACHINE_UUID_RE = re.compile(
635
635
  )
636
636
  _MAX_CLI_ERROR_CHARS = 2048
637
637
 
638
+ #: Clean, human-worded renderings for account/organization state error codes
639
+ #: that reach the CLI verbatim from the wire (``code: message``) otherwise.
640
+ #: Shared between ``_safe_cli_error_text`` (the general path: ``jobs``,
641
+ #: ``cancel``, ``view``, ``run``, ``whoami``, ...) and ``_friendly_asset_error``
642
+ #: (the asset-catalog surface, which wraps errors in its own ``AssetApiHTTPError``
643
+ #: rather than ``http.HttpHTTPError``, so it cannot share the first function's
644
+ #: isinstance check) so a person sees the identical message regardless of which
645
+ #: command surfaced the error.
646
+ _ACCOUNT_SUSPENDED_MESSAGE = "Your Simulo account has been suspended. Contact Simulo support to restore access."
647
+ _ORGANIZATION_DEACTIVATED_MESSAGE = (
648
+ "This organization has been deactivated. Its owner can reactivate it from organization settings."
649
+ )
650
+
638
651
 
639
652
  def _canonical_uuid_text(value: Any) -> Optional[str]:
640
653
  """Return one exact legacy UUID in canonical form, or ``None``."""
@@ -682,7 +695,13 @@ def _safe_cli_error_text(value: Any) -> str:
682
695
  if (isinstance(value, http.HttpHTTPError) and value.code == "account_suspended") or (
683
696
  isinstance(value, credentials.TokenRefreshError) and value.code == "account_suspended"
684
697
  ):
685
- text = "Your Simulo account has been suspended. Contact Simulo support to restore access."
698
+ text = _ACCOUNT_SUSPENDED_MESSAGE
699
+ elif isinstance(value, http.HttpHTTPError) and value.code == "organization_deactivated":
700
+ # Unlike suspension, deactivation never disables Cognito: a stale
701
+ # credential still refreshes fine, and it's the org-scoped API call
702
+ # that returns this 403. There is deliberately no
703
+ # ``credentials.TokenRefreshError`` counterpart here.
704
+ text = _ORGANIZATION_DEACTIVATED_MESSAGE
686
705
  else:
687
706
  text = str(value)
688
707
  # A legacy UUID-prefix ambiguity is the one named compatibility exception
@@ -5729,9 +5748,21 @@ def _friendly_asset_error(exc: AssetApiHTTPError) -> str:
5729
5748
  The server's message leads (it already speaks user language); the quota
5730
5749
  case appends the catalog's required "two ways out" (delete or
5731
5750
  upgrade). Unrecognized codes render as the standard ``code: message``.
5732
- Every matched code is a shared interfaces constant, so a control-plane rename cannot
5733
- silently degrade this copy by drifting from a hand-typed literal here.
5751
+ Every matched ``ASSET_*`` code is a shared interfaces constant, so a
5752
+ control-plane rename cannot silently degrade this copy by drifting from a
5753
+ hand-typed literal here. ``account_suspended`` and
5754
+ ``organization_deactivated`` are the two exceptions: they are account/org
5755
+ states, not asset-catalog concepts, so they have no shared constant here
5756
+ either (``_safe_cli_error_text`` matches them the same way) — every asset
5757
+ command reaches ``AssetApiHTTPError`` instead of ``http.HttpHTTPError``
5758
+ (see ``asset_api._translate``), so it cannot share that function's
5759
+ isinstance-gated branches and needs its own. Render the identical
5760
+ hand-worded message either function would produce, not the raw code.
5734
5761
  """
5762
+ if exc.code == "account_suspended":
5763
+ return _ACCOUNT_SUSPENDED_MESSAGE
5764
+ if exc.code == "organization_deactivated":
5765
+ return _ORGANIZATION_DEACTIVATED_MESSAGE
5735
5766
  if exc.code == ASSET_STORAGE_QUOTA_EXCEEDED_CODE:
5736
5767
  return (
5737
5768
  f"{exc.message}\n"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: simulo
3
- Version: 0.24.0
3
+ Version: 0.24.1
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
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes