antioch-py 2.1.0__tar.gz → 2.2.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.

Potentially problematic release.


This version of antioch-py might be problematic. Click here for more details.

Files changed (92) hide show
  1. {antioch_py-2.1.0/antioch_py.egg-info → antioch_py-2.2.1}/PKG-INFO +1 -1
  2. {antioch_py-2.1.0 → antioch_py-2.2.1}/README.md +19 -0
  3. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/objects/basis_curve.py +32 -2
  4. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/scene.py +33 -0
  5. {antioch_py-2.1.0 → antioch_py-2.2.1/antioch_py.egg-info}/PKG-INFO +1 -1
  6. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/ark/ark.py +2 -0
  7. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/constants.py +16 -2
  8. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/core/auth.py +1 -3
  9. {antioch_py-2.1.0 → antioch_py-2.2.1}/pyproject.toml +1 -1
  10. {antioch_py-2.1.0 → antioch_py-2.2.1}/MANIFEST.in +0 -0
  11. {antioch_py-2.1.0 → antioch_py-2.2.1}/README.pypi.md +0 -0
  12. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/__init__.py +0 -0
  13. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/message.py +0 -0
  14. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/module/__init__.py +0 -0
  15. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/module/clock.py +0 -0
  16. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/module/execution.py +0 -0
  17. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/module/input.py +0 -0
  18. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/module/module.py +0 -0
  19. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/module/node.py +0 -0
  20. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/module/token.py +0 -0
  21. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/__init__.py +0 -0
  22. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/ark.py +0 -0
  23. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/asset.py +0 -0
  24. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/error.py +0 -0
  25. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/objects/__init__.py +0 -0
  26. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/objects/animation.py +0 -0
  27. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/objects/articulation.py +0 -0
  28. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/objects/camera.py +0 -0
  29. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/objects/collision.py +0 -0
  30. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/objects/geometry.py +0 -0
  31. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/objects/ground_plane.py +0 -0
  32. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/objects/imu.py +0 -0
  33. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/objects/joint.py +0 -0
  34. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/objects/light.py +0 -0
  35. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/objects/pir_sensor.py +0 -0
  36. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/objects/radar.py +0 -0
  37. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/objects/rigid_body.py +0 -0
  38. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/objects/xform.py +0 -0
  39. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/record.py +0 -0
  40. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/session.py +0 -0
  41. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch/session/task.py +0 -0
  42. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch_py.egg-info/SOURCES.txt +0 -0
  43. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch_py.egg-info/dependency_links.txt +0 -0
  44. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch_py.egg-info/entry_points.txt +0 -0
  45. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch_py.egg-info/requires.txt +0 -0
  46. {antioch_py-2.1.0 → antioch_py-2.2.1}/antioch_py.egg-info/top_level.txt +0 -0
  47. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/__init__.py +0 -0
  48. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/ark/__init__.py +0 -0
  49. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/ark/hardware.py +0 -0
  50. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/ark/kinematics.py +0 -0
  51. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/ark/module.py +0 -0
  52. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/ark/node.py +0 -0
  53. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/ark/scheduler.py +0 -0
  54. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/ark/sim.py +0 -0
  55. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/assets/__init__.py +0 -0
  56. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/core/__init__.py +0 -0
  57. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/core/agent.py +0 -0
  58. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/core/registry.py +0 -0
  59. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/core/task.py +0 -0
  60. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/__init__.py +0 -0
  61. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/annotation.py +0 -0
  62. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/array.py +0 -0
  63. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/base.py +0 -0
  64. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/camera.py +0 -0
  65. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/color.py +0 -0
  66. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/frame.py +0 -0
  67. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/image.py +0 -0
  68. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/imu.py +0 -0
  69. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/joint.py +0 -0
  70. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/log.py +0 -0
  71. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/pir.py +0 -0
  72. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/point.py +0 -0
  73. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/point_cloud.py +0 -0
  74. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/pose.py +0 -0
  75. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/quaternion.py +0 -0
  76. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/radar.py +0 -0
  77. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/types.py +0 -0
  78. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/vector.py +0 -0
  79. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/message/velocity.py +0 -0
  80. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/rome/__init__.py +0 -0
  81. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/rome/client.py +0 -0
  82. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/rome/error.py +0 -0
  83. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/session/__init__.py +0 -0
  84. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/session/config.py +0 -0
  85. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/session/environment.py +0 -0
  86. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/session/sim.py +0 -0
  87. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/utils/__init__.py +0 -0
  88. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/utils/comms.py +0 -0
  89. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/utils/logger.py +0 -0
  90. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/utils/time.py +0 -0
  91. {antioch_py-2.1.0 → antioch_py-2.2.1}/common/utils/usd.py +0 -0
  92. {antioch_py-2.1.0 → antioch_py-2.2.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: antioch-py
3
- Version: 2.1.0
3
+ Version: 2.2.1
4
4
  Summary: The Antioch Python SDK
5
5
  Author-email: Antioch Robotics <support@antioch.dev>
6
6
  License-Expression: MIT
@@ -2,6 +2,25 @@
2
2
 
3
3
  Python client library for the Antioch middleware platform.
4
4
 
5
+ ## Environment Configuration
6
+
7
+ The library supports both staging and production environments. Set `ANTIOCH_ENV` to control which environment to use:
8
+
9
+ ```bash
10
+ # Use staging environment (for internal development)
11
+ export ANTIOCH_ENV=staging
12
+
13
+ # Use production environment (default if not set)
14
+ export ANTIOCH_ENV=prod
15
+ ```
16
+
17
+ This affects:
18
+ - **API endpoints**: `staging.api.antioch.com` vs `api.antioch.com`
19
+ - **Auth domain**: `staging.auth.antioch.com` vs `auth.antioch.com`
20
+ - **Local data directory**: `~/.antioch/staging/` vs `~/.antioch/prod/`
21
+
22
+ Auth credentials are stored separately per environment.
23
+
5
24
  ## Installation
6
25
 
7
26
  Authenticate your local environment with GCP via the Google Cloud CLI:
@@ -54,6 +54,9 @@ class BasisCurve(SessionContainer):
54
54
  radius: float = 1.0,
55
55
  min_angle_deg: float = 0.0,
56
56
  max_angle_deg: float = 180.0,
57
+ guide: bool = False,
58
+ color: Vector3 | None = None,
59
+ width: float = 0.005,
57
60
  ) -> "BasisCurve":
58
61
  """
59
62
  Add a semi-circle basis curve to the scene.
@@ -63,12 +66,24 @@ class BasisCurve(SessionContainer):
63
66
  :param radius: Radius of the basis curve.
64
67
  :param min_angle_deg: Minimum angle of the basis curve in degrees.
65
68
  :param max_angle_deg: Maximum angle of the basis curve in degrees.
69
+ :param guide: If True, mark as guide purpose (invisible to cameras). If False, default purpose.
70
+ :param color: Optional RGB color [0-1].
71
+ :param width: Width of the curve.
66
72
  :return: The basis curve instance.
67
73
  """
68
74
 
69
75
  Session.get_current().query_sim_rpc(
70
76
  endpoint="basis_curve/add_semi_circle",
71
- payload={"path": path, "center": center, "radius": radius, "min_angle_deg": min_angle_deg, "max_angle_deg": max_angle_deg},
77
+ payload={
78
+ "path": path,
79
+ "center": center,
80
+ "radius": radius,
81
+ "min_angle_deg": min_angle_deg,
82
+ "max_angle_deg": max_angle_deg,
83
+ "guide": guide,
84
+ "color": color,
85
+ "width": width,
86
+ },
72
87
  )
73
88
  return cls(path)
74
89
 
@@ -80,6 +95,9 @@ class BasisCurve(SessionContainer):
80
95
  end: Vector3 | None = None,
81
96
  angle_deg: float | None = None,
82
97
  length: float | None = None,
98
+ guide: bool = False,
99
+ color: Vector3 | None = None,
100
+ width: float = 0.005,
83
101
  ) -> "BasisCurve":
84
102
  """
85
103
  Add a line basis curve to the scene.
@@ -93,13 +111,25 @@ class BasisCurve(SessionContainer):
93
111
  :param end: End point of the line (Cartesian mode).
94
112
  :param angle_deg: Angle in degrees from +X axis in XY plane (polar mode).
95
113
  :param length: Length of the line (polar mode).
114
+ :param guide: If True, mark as guide purpose (invisible to cameras). If False, default purpose.
115
+ :param color: Optional RGB color [0-1].
116
+ :param width: Width of the curve.
96
117
  :return: The basis curve instance.
97
118
  :raises ValueError: If both modes are specified or neither mode is complete.
98
119
  """
99
120
 
100
121
  Session.get_current().query_sim_rpc(
101
122
  endpoint="basis_curve/add_line",
102
- payload={"path": path, "start": start, "end": end, "angle_deg": angle_deg, "length": length},
123
+ payload={
124
+ "path": path,
125
+ "start": start,
126
+ "end": end,
127
+ "angle_deg": angle_deg,
128
+ "length": length,
129
+ "guide": guide,
130
+ "color": color,
131
+ "width": width,
132
+ },
103
133
  )
104
134
  return cls(path)
105
135
 
@@ -415,6 +415,15 @@ class Scene(SessionContainer):
415
415
  payload={"root_path": root_path, "target": target},
416
416
  )
417
417
 
418
+ def delete_prim(self, path: str) -> None:
419
+ """
420
+ Delete a prim from the scene.
421
+
422
+ :param path: USD path for the prim to delete.
423
+ """
424
+
425
+ self._session.query_sim_rpc(endpoint="scene/delete_prim", payload={"path": path})
426
+
418
427
  def add_asset(
419
428
  self,
420
429
  path: str,
@@ -1150,6 +1159,9 @@ class Scene(SessionContainer):
1150
1159
  radius: float = 1.0,
1151
1160
  min_angle_deg: float = 0.0,
1152
1161
  max_angle_deg: float = 180.0,
1162
+ guide: bool = False,
1163
+ color: Vector3 | list[float] | tuple[float, float, float] | None = None,
1164
+ width: float = 0.005,
1153
1165
  ) -> BasisCurve:
1154
1166
  """
1155
1167
  Add a basis curve semi-circle to the scene.
@@ -1159,6 +1171,9 @@ class Scene(SessionContainer):
1159
1171
  :param radius: Radius of the basis curve.
1160
1172
  :param min_angle_deg: Minimum angle of the basis curve in degrees.
1161
1173
  :param max_angle_deg: Maximum angle of the basis curve in degrees.
1174
+ :param guide: If True, mark as guide purpose (invisible to cameras). If False, default purpose.
1175
+ :param color: Optional RGB color [0-1].
1176
+ :param width: Width of the curve.
1162
1177
  :return: The basis curve instance.
1163
1178
  """
1164
1179
 
@@ -1168,6 +1183,9 @@ class Scene(SessionContainer):
1168
1183
  radius=radius,
1169
1184
  min_angle_deg=min_angle_deg,
1170
1185
  max_angle_deg=max_angle_deg,
1186
+ guide=guide,
1187
+ color=Vector3.from_any(color) if color is not None else None,
1188
+ width=width,
1171
1189
  )
1172
1190
 
1173
1191
  @overload
@@ -1177,6 +1195,9 @@ class Scene(SessionContainer):
1177
1195
  *,
1178
1196
  start: Vector3 | list[float] | tuple[float, float, float],
1179
1197
  end: Vector3 | list[float] | tuple[float, float, float],
1198
+ guide: bool = False,
1199
+ color: Vector3 | list[float] | tuple[float, float, float] | None = None,
1200
+ width: float = 0.005,
1180
1201
  ) -> BasisCurve: ...
1181
1202
 
1182
1203
  @overload
@@ -1187,6 +1208,9 @@ class Scene(SessionContainer):
1187
1208
  start: Vector3 | list[float] | tuple[float, float, float],
1188
1209
  angle_deg: float,
1189
1210
  length: float,
1211
+ guide: bool = False,
1212
+ color: Vector3 | list[float] | tuple[float, float, float] | None = None,
1213
+ width: float = 0.005,
1190
1214
  ) -> BasisCurve: ...
1191
1215
 
1192
1216
  def add_basis_curve_line(
@@ -1197,6 +1221,9 @@ class Scene(SessionContainer):
1197
1221
  end: Vector3 | list[float] | tuple[float, float, float] | None = None,
1198
1222
  angle_deg: float | None = None,
1199
1223
  length: float | None = None,
1224
+ guide: bool = False,
1225
+ color: Vector3 | list[float] | tuple[float, float, float] | None = None,
1226
+ width: float = 0.005,
1200
1227
  ) -> BasisCurve:
1201
1228
  """
1202
1229
  Add a basis curve line to the scene.
@@ -1226,6 +1253,9 @@ class Scene(SessionContainer):
1226
1253
  :param end: End point of the line (Cartesian mode).
1227
1254
  :param angle_deg: Angle in degrees from +X axis in XY plane (polar mode).
1228
1255
  :param length: Length of the line (polar mode).
1256
+ :param guide: If True, mark as guide purpose (invisible to cameras). If False, default purpose.
1257
+ :param color: Optional RGB color [0-1].
1258
+ :param width: Width of the curve.
1229
1259
  :return: The basis curve instance.
1230
1260
  :raises ValueError: If both modes are specified or neither mode is complete.
1231
1261
  """
@@ -1244,6 +1274,9 @@ class Scene(SessionContainer):
1244
1274
  end=Vector3.from_any(end) if end is not None else None,
1245
1275
  angle_deg=angle_deg,
1246
1276
  length=length,
1277
+ guide=guide,
1278
+ color=Vector3.from_any(color) if color is not None else None,
1279
+ width=width,
1247
1280
  )
1248
1281
 
1249
1282
  def get_basis_curve(self, path: str) -> BasisCurve:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: antioch-py
3
- Version: 2.1.0
3
+ Version: 2.2.1
4
4
  Summary: The Antioch Python SDK
5
5
  Author-email: Antioch Robotics <support@antioch.dev>
6
6
  License-Expression: MIT
@@ -65,6 +65,7 @@ class ArkVersionReference(Message):
65
65
  size_bytes: int
66
66
  asset_path: str | None = None
67
67
  asset_size_bytes: int | None = None
68
+ metadata: dict[str, str] = {}
68
69
 
69
70
 
70
71
  class ArkReference(Message):
@@ -88,6 +89,7 @@ class AssetVersionReference(Message):
88
89
  size_bytes: int
89
90
  created_at: str
90
91
  updated_at: str
92
+ metadata: dict[str, str] = {}
91
93
 
92
94
 
93
95
  class AssetReference(Message):
@@ -1,8 +1,22 @@
1
1
  import os
2
2
  from pathlib import Path
3
3
 
4
- ANTIOCH_API_URL = os.environ.get("ANTIOCH_API_URL", "https://staging.api.antioch.com")
5
- ANTIOCH_DIR = os.environ.get("ANTIOCH_DIR", str(Path.home() / ".antioch"))
4
+ ANTIOCH_ENV = os.environ.get("ANTIOCH_ENV", "prod").lower()
5
+ if ANTIOCH_ENV not in ("prod", "staging"):
6
+ raise ValueError(f"Invalid ANTIOCH_ENV: {ANTIOCH_ENV}")
7
+
8
+ if ANTIOCH_ENV == "staging":
9
+ ANTIOCH_API_URL = "https://staging.api.antioch.com"
10
+ AUTH_DOMAIN = "https://staging.auth.antioch.com"
11
+ AUTH_CLIENT_ID = "x0aOquV43Xe76ehqAm6Zir80O0MWpqTV"
12
+ else:
13
+ ANTIOCH_API_URL = "https://api.antioch.com"
14
+ AUTH_DOMAIN = "https://auth.antioch.com"
15
+ AUTH_CLIENT_ID = "8RLoPEgMP3ih10sfJsGPkwbUWGilsoyX"
16
+
17
+ ANTIOCH_API_URL = os.environ.get("ANTIOCH_API_URL", ANTIOCH_API_URL)
18
+ AUTH_DOMAIN = os.environ.get("AUTH_DOMAIN", AUTH_DOMAIN)
19
+ ANTIOCH_DIR = os.environ.get("ANTIOCH_DIR", str(Path.home() / ".antioch" / ANTIOCH_ENV))
6
20
 
7
21
 
8
22
  def get_auth_dir() -> Path:
@@ -7,15 +7,13 @@ from pathlib import Path
7
7
  import requests
8
8
  from pydantic import BaseModel
9
9
 
10
- from common.constants import get_auth_dir
10
+ from common.constants import AUTH_CLIENT_ID, AUTH_DOMAIN, get_auth_dir
11
11
 
12
12
  # Authentication routes
13
- AUTH_DOMAIN = os.environ.get("AUTH_DOMAIN", "https://staging.auth.antioch.com")
14
13
  AUTH_TOKEN_URL = f"{AUTH_DOMAIN}/oauth/token"
15
14
  DEVICE_CODE_URL = f"{AUTH_DOMAIN}/oauth/device/code"
16
15
 
17
16
  # Authentication constants
18
- AUTH_CLIENT_ID = "x0aOquV43Xe76ehqAm6Zir80O0MWpqTV"
19
17
  ALGORITHMS = ["RS256"]
20
18
  AUDIENCE = "https://sessions.antioch.com"
21
19
  AUTH_SCOPE = "openid profile email"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "antioch-py"
3
- version = "2.1.0"
3
+ version = "2.2.1"
4
4
  description = "The Antioch Python SDK"
5
5
  readme = "README.pypi.md"
6
6
  license = "MIT"
File without changes
File without changes
File without changes
File without changes