simulo-interfaces 0.16.0__tar.gz → 0.18.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.16.0/src/simulo_interfaces.egg-info → simulo_interfaces-0.18.0}/PKG-INFO +1 -1
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/pyproject.toml +1 -1
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/__init__.py +15 -17
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/asset_catalog.py +1 -40
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/runs.py +78 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0/src/simulo_interfaces.egg-info}/PKG-INFO +1 -1
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/MANIFEST.in +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/PYPI.md +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/setup.cfg +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/__init__.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/__init__.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/actuator.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/asset.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/entity.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/light.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/materials.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/physics.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/pose.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/primitives.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/prop.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/record.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/robot.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/scene.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/sensor.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/terrain.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/visual.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/world.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/exceptions.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/ids.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/_payload.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/app.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/asset.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/callbacks.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/debug.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/domain.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/enums.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/job_events.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/manifest.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/outputs.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/policy_bundle.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/runtime.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/submit.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/volume.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/py.typed +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/runtime/__init__.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/runtime/anomaly.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/runtime/components.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/runtime/env.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/runtime/player.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/runtime/policy.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/runtime/scenario.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/runtime/task.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/runtime/tensors.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/runtime/trainer.py +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo_interfaces.egg-info/SOURCES.txt +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo_interfaces.egg-info/dependency_links.txt +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo_interfaces.egg-info/requires.txt +0 -0
- {simulo_interfaces-0.16.0 → simulo_interfaces-0.18.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.18.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"
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/__init__.py
RENAMED
|
@@ -9,14 +9,6 @@ implementation-free — concrete behaviour lives in the future
|
|
|
9
9
|
|
|
10
10
|
from simulo.interfaces.platform.asset import AssetProtocol
|
|
11
11
|
from simulo.interfaces.platform.asset_catalog import (
|
|
12
|
-
ADMIN_ASSET_ROUTE_TEMPLATE,
|
|
13
|
-
ADMIN_ASSET_VERSION_BY_NUMBER_ROUTE_TEMPLATE,
|
|
14
|
-
ADMIN_ASSET_VERSION_DEPRECATE_ROUTE_TEMPLATE,
|
|
15
|
-
ADMIN_ASSET_VERSION_ROUTE_TEMPLATE,
|
|
16
|
-
ADMIN_ASSET_VERSION_UPLOAD_COMPLETE_ROUTE_TEMPLATE,
|
|
17
|
-
ADMIN_ASSET_VERSION_UPLOAD_PARTS_ROUTE_TEMPLATE,
|
|
18
|
-
ADMIN_ASSET_VERSION_VALIDATE_ROUTE_TEMPLATE,
|
|
19
|
-
ADMIN_ASSET_VERSIONS_ROUTE_TEMPLATE,
|
|
20
12
|
ASSET_BASE_MODES,
|
|
21
13
|
ASSET_CORRUPT_CODE,
|
|
22
14
|
ASSET_DIGEST_MISMATCH_CODE,
|
|
@@ -205,6 +197,10 @@ from simulo.interfaces.platform.runs import (
|
|
|
205
197
|
JOB_SCOPE_QUERY_PARAM,
|
|
206
198
|
JOBS_API_DEFAULT_PORT,
|
|
207
199
|
JOBS_ROUTE,
|
|
200
|
+
LOG_ARCHIVE_EXPIRED_CODE,
|
|
201
|
+
LOG_ARCHIVE_LOST_CODE,
|
|
202
|
+
LOG_ARCHIVE_READ_FAILED_CODE,
|
|
203
|
+
LOG_ARCHIVE_UNAVAILABLE_CODES,
|
|
208
204
|
LOG_CHUNK_MAX_BYTES,
|
|
209
205
|
LOG_TAIL_MAX_BYTES,
|
|
210
206
|
TERMINAL_JOB_STATUSES,
|
|
@@ -327,6 +323,16 @@ __all__ = [
|
|
|
327
323
|
"JOB_RESULT_ROUTE_TEMPLATE",
|
|
328
324
|
"LOG_CHUNK_MAX_BYTES",
|
|
329
325
|
"LOG_TAIL_MAX_BYTES",
|
|
326
|
+
# unavailable-log contract (issue #1052) — 410 Gone, TERMINAL: the bytes
|
|
327
|
+
# are gone and retrying cannot succeed
|
|
328
|
+
"LOG_ARCHIVE_EXPIRED_CODE",
|
|
329
|
+
"LOG_ARCHIVE_LOST_CODE",
|
|
330
|
+
"LOG_ARCHIVE_UNAVAILABLE_CODES",
|
|
331
|
+
# ...and its RETRYABLE counterpart, deliberately NOT one of the above:
|
|
332
|
+
# 503, the stored log could not be read right now. A client that folds it
|
|
333
|
+
# into the terminal set tells the user their logs are gone because S3 was
|
|
334
|
+
# briefly slow.
|
|
335
|
+
"LOG_ARCHIVE_READ_FAILED_CODE",
|
|
330
336
|
# user scoping (issue #651)
|
|
331
337
|
"JOB_SCOPE_QUERY_PARAM",
|
|
332
338
|
"JOB_SCOPE_MINE",
|
|
@@ -390,15 +396,7 @@ __all__ = [
|
|
|
390
396
|
"ASSET_VERSION_VALIDATE_ROUTE_TEMPLATE",
|
|
391
397
|
"ASSET_VERSION_REPORT_ROUTE_TEMPLATE",
|
|
392
398
|
"ASSET_VERSION_DOWNLOAD_ROUTE_TEMPLATE",
|
|
393
|
-
# asset catalog —
|
|
394
|
-
"ADMIN_ASSET_VERSIONS_ROUTE_TEMPLATE",
|
|
395
|
-
"ADMIN_ASSET_VERSION_UPLOAD_PARTS_ROUTE_TEMPLATE",
|
|
396
|
-
"ADMIN_ASSET_VERSION_UPLOAD_COMPLETE_ROUTE_TEMPLATE",
|
|
397
|
-
"ADMIN_ASSET_VERSION_VALIDATE_ROUTE_TEMPLATE",
|
|
398
|
-
"ADMIN_ASSET_VERSION_DEPRECATE_ROUTE_TEMPLATE",
|
|
399
|
-
"ADMIN_ASSET_VERSION_BY_NUMBER_ROUTE_TEMPLATE",
|
|
400
|
-
"ADMIN_ASSET_ROUTE_TEMPLATE",
|
|
401
|
-
"ADMIN_ASSET_VERSION_ROUTE_TEMPLATE",
|
|
399
|
+
# asset catalog — staff routes
|
|
402
400
|
# asset catalog — worker routes
|
|
403
401
|
"WORKER_JOB_ASSET_VALIDATION_PRESIGN_ROUTE_TEMPLATE",
|
|
404
402
|
"WORKER_JOB_ASSET_VALIDATION_ROUTE_TEMPLATE",
|
|
@@ -4,7 +4,7 @@ This is the **canonical, single source of truth** for the reference grammar, the
|
|
|
4
4
|
route constants, the size caps, the wire dataclasses, and the reserved-word /
|
|
5
5
|
role / verdict enumerations that carry a USD *asset* (a versioned robot, world, or prop
|
|
6
6
|
package) from the laptop client to the cloud catalog and back into a job. It
|
|
7
|
-
lands **before any consumer** — the control plane (customer, ``/
|
|
7
|
+
lands **before any consumer** — the control plane (customer, ``/staff/*`` and
|
|
8
8
|
``/internal/worker/*`` routes), the thin ``simulo`` client (``simulo asset ...``
|
|
9
9
|
+ the ``simulo run`` submit-time pin resolver), the ``simulo-backend`` worker
|
|
10
10
|
(claim → download → validate), and the ``simulo-console`` catalog browser all
|
|
@@ -155,18 +155,6 @@ the two frozensets stay separate constants (identical value today) so a future r
|
|
|
155
155
|
publish role can split them without an API change. A missing role answers one line
|
|
156
156
|
naming the role and who can grant it.
|
|
157
157
|
|
|
158
|
-
## Admin endpoints (``require_admin_key`` — the ONLY producers of global rows)
|
|
159
|
-
|
|
160
|
-
The ``/admin`` mirrors of initiate / parts / complete / validate / deprecate /
|
|
161
|
-
reactivate / delete, plus reads that **include the origin block**. Admin *initiate*
|
|
162
|
-
(:data:`ADMIN_ASSET_VERSIONS_ROUTE_TEMPLATE`) REQUIRES origin:
|
|
163
|
-
``{origin_type, origin_ref, origin_url?, origin_digest?}`` where ``origin_type``
|
|
164
|
-
is one of :data:`ASSET_ORIGIN_TYPES`. Customer serializers exclude origin **by
|
|
165
|
-
construction** — :class:`AssetRecord` / :class:`AssetVersionRecord` carry no
|
|
166
|
-
origin field at all, so ``show --json`` and console payloads can never contain
|
|
167
|
-
it. An org publish records ``origin_type="customer_upload"`` for schema
|
|
168
|
-
symmetry.
|
|
169
|
-
|
|
170
158
|
## Worker endpoints (``require_worker`` + lease header)
|
|
171
159
|
|
|
172
160
|
* The existing claim response
|
|
@@ -504,33 +492,6 @@ ASSET_VERSION_REPORT_ROUTE_TEMPLATE = "/v1/asset-versions/{version_id}/report"
|
|
|
504
492
|
#: :data:`ASSET_NOT_EXPORTABLE_CODE`. ``.format(version_id=...)``.
|
|
505
493
|
ASSET_VERSION_DOWNLOAD_ROUTE_TEMPLATE = "/v1/asset-versions/{version_id}/download"
|
|
506
494
|
|
|
507
|
-
# --------------------------------------------------------------------------
|
|
508
|
-
# Admin routes (require_admin_key; the ONLY producers of global rows)
|
|
509
|
-
# --------------------------------------------------------------------------
|
|
510
|
-
#
|
|
511
|
-
# Mirrors of initiate/parts/complete/validate/deprecate/delete, plus reads that
|
|
512
|
-
# INCLUDE the origin block. Same two path families under /admin.
|
|
513
|
-
|
|
514
|
-
#: ``POST`` — admin initiate (REQUIRES origin). ``.format(kind=..., name=...)``.
|
|
515
|
-
ADMIN_ASSET_VERSIONS_ROUTE_TEMPLATE = "/admin/assets/{kind}/{name}/versions"
|
|
516
|
-
#: ``POST`` — admin batch part presigns. ``.format(version_id=...)``.
|
|
517
|
-
ADMIN_ASSET_VERSION_UPLOAD_PARTS_ROUTE_TEMPLATE = "/admin/asset-versions/{version_id}/upload/parts"
|
|
518
|
-
#: ``POST`` — admin complete multipart upload. ``.format(version_id=...)``.
|
|
519
|
-
ADMIN_ASSET_VERSION_UPLOAD_COMPLETE_ROUTE_TEMPLATE = "/admin/asset-versions/{version_id}/upload/complete"
|
|
520
|
-
#: ``POST`` — admin revalidate. ``.format(version_id=...)``.
|
|
521
|
-
ADMIN_ASSET_VERSION_VALIDATE_ROUTE_TEMPLATE = "/admin/asset-versions/{version_id}/validate"
|
|
522
|
-
#: ``POST`` — admin deprecate by ``vN``. ``.format(kind=..., name=..., version=<int>)``.
|
|
523
|
-
ADMIN_ASSET_VERSION_DEPRECATE_ROUTE_TEMPLATE = "/admin/assets/{kind}/{name}/versions/v{version}/deprecate"
|
|
524
|
-
#: ``POST`` — admin reactivate (un-deprecate) by ``vN`` (global catalog, admin-only).
|
|
525
|
-
#: ``.format(kind=..., name=..., version=<int>)``.
|
|
526
|
-
ADMIN_ASSET_VERSION_REACTIVATE_ROUTE_TEMPLATE = "/admin/assets/{kind}/{name}/versions/v{version}/reactivate"
|
|
527
|
-
#: ``DELETE`` — admin delete by ``vN``. ``.format(kind=..., name=..., version=<int>)``.
|
|
528
|
-
ADMIN_ASSET_VERSION_BY_NUMBER_ROUTE_TEMPLATE = "/admin/assets/{kind}/{name}/versions/v{version}"
|
|
529
|
-
#: ``GET`` — admin asset read (INCLUDES origin). ``.format(kind=..., name=...)``.
|
|
530
|
-
ADMIN_ASSET_ROUTE_TEMPLATE = "/admin/assets/{kind}/{name}"
|
|
531
|
-
#: ``GET`` — admin version read (INCLUDES origin). ``.format(version_id=...)``.
|
|
532
|
-
ADMIN_ASSET_VERSION_ROUTE_TEMPLATE = "/admin/asset-versions/{version_id}"
|
|
533
|
-
|
|
534
495
|
# --------------------------------------------------------------------------
|
|
535
496
|
# Worker routes (bearer = static WORKER_TOKEN; + lease header, see submit.py)
|
|
536
497
|
# --------------------------------------------------------------------------
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/runs.py
RENAMED
|
@@ -74,6 +74,44 @@ HTTP API shape (all responses JSON; all timestamps ISO 8601 UTC, e.g.
|
|
|
74
74
|
sequence; a line-oriented client trims its first partial line client-side
|
|
75
75
|
(``simulo logs --follow`` requests a generous byte window for its line
|
|
76
76
|
count and does exactly that).
|
|
77
|
+
|
|
78
|
+
**Log retention, and the ``410 Gone`` outcome it produces.** A job's logs
|
|
79
|
+
live in the platform's live-tail store while the job runs, and are archived
|
|
80
|
+
to object storage once it reaches a terminal status. That archive is kept
|
|
81
|
+
for a BOUNDED time, and once it is gone the log is gone — there is no
|
|
82
|
+
second copy and no retry brings it back.
|
|
83
|
+
|
|
84
|
+
**The window's LENGTH is deliberately not stated here.** It is a
|
|
85
|
+
per-environment deployment value — an object-store lifecycle rule, mirrored
|
|
86
|
+
by the platform's own retention ceiling — and it differs between production,
|
|
87
|
+
staging, and a local development stack, which a client cannot reliably tell
|
|
88
|
+
apart. Restating a number in this module would publish a copy to PyPI that
|
|
89
|
+
no guard covers and that nobody would update the first time the window
|
|
90
|
+
moved, so a released client would go on stating a figure that had stopped
|
|
91
|
+
being true. Simulo's product documentation (docs.simulo.ai) carries the
|
|
92
|
+
single user-facing statement of the current windows, and the ``simulo``
|
|
93
|
+
CLI's own message names the behaviour rather than the number for exactly
|
|
94
|
+
this reason.
|
|
95
|
+
|
|
96
|
+
What IS contractual here, and does not vary by environment: reading a job's
|
|
97
|
+
logs after that point answers **410 Gone** in the usual
|
|
98
|
+
error envelope, with a machine-readable code naming WHICH of the two
|
|
99
|
+
terminal conditions occurred:
|
|
100
|
+
|
|
101
|
+
* :data:`LOG_ARCHIVE_EXPIRED_CODE` — the archive aged out under the
|
|
102
|
+
retention policy above;
|
|
103
|
+
* :data:`LOG_ARCHIVE_LOST_CODE` — the platform could not archive the bytes
|
|
104
|
+
and, rather than retain them indefinitely, accounted for the loss and
|
|
105
|
+
released them.
|
|
106
|
+
|
|
107
|
+
Both are TERMINAL: retrying the same request cannot succeed, so a client
|
|
108
|
+
must present them as "these logs are no longer available" rather than as an
|
|
109
|
+
empty log or a generic failure. Neither is ``404`` — ``404 job_not_found``
|
|
110
|
+
is this API's deliberately indistinguishable answer for a job the caller
|
|
111
|
+
may not see, so reusing it here could not tell "no such job" apart from
|
|
112
|
+
"your logs expired". A transient storage failure is a separate, RETRYABLE
|
|
113
|
+
``503`` carrying :data:`LOG_ARCHIVE_READ_FAILED_CODE`, and is never one of
|
|
114
|
+
these codes.
|
|
77
115
|
* ``GET /v1/jobs/{job_id}/result`` — the job's result JSON object. 404 (code
|
|
78
116
|
``result_not_available``) until the run stores one. A run stores its result
|
|
79
117
|
when it completes successfully, and in ONE failure case: a run reported
|
|
@@ -222,6 +260,46 @@ LOG_CHUNK_MAX_BYTES = 256 * 1024
|
|
|
222
260
|
#: server's tail scan bounded. Values above this cap answer 422.
|
|
223
261
|
LOG_TAIL_MAX_BYTES = 4 * LOG_CHUNK_MAX_BYTES
|
|
224
262
|
|
|
263
|
+
#: ``410 Gone`` — the job's archived log aged out under the platform's log
|
|
264
|
+
#: retention policy. TERMINAL: the bytes are gone, there is no second copy,
|
|
265
|
+
#: and retrying cannot succeed. The window's length is a per-environment
|
|
266
|
+
#: deployment value and is deliberately not restated here — see the module
|
|
267
|
+
#: docstring's retention section for why a copy in this package would be a
|
|
268
|
+
#: published number nobody maintains.
|
|
269
|
+
LOG_ARCHIVE_EXPIRED_CODE = "log_archive_expired"
|
|
270
|
+
#: ``410 Gone`` — the platform could not archive this job's terminal log
|
|
271
|
+
#: bytes and, rather than retain them indefinitely, accounted for the loss
|
|
272
|
+
#: and released them. Also TERMINAL, and deliberately DISTINCT from
|
|
273
|
+
#: :data:`LOG_ARCHIVE_EXPIRED_CODE`: "your logs aged out under the documented
|
|
274
|
+
#: policy" and "we could not keep your logs" are different statements, and a
|
|
275
|
+
#: client that collapses them makes the retention guarantee above
|
|
276
|
+
#: unverifiable from the outside.
|
|
277
|
+
LOG_ARCHIVE_LOST_CODE = "log_archive_lost"
|
|
278
|
+
#: Both unavailable-log codes. A client that treats "the logs are no longer
|
|
279
|
+
#: available" as ONE user-facing outcome branches on this set; one that
|
|
280
|
+
#: reports which condition occurred uses the two codes individually. Either
|
|
281
|
+
#: way the outcome is terminal — never an empty log, and never a retry loop.
|
|
282
|
+
LOG_ARCHIVE_UNAVAILABLE_CODES = frozenset({LOG_ARCHIVE_EXPIRED_CODE, LOG_ARCHIVE_LOST_CODE})
|
|
283
|
+
|
|
284
|
+
#: ``503 Service Unavailable`` — the stored log could not be READ right now.
|
|
285
|
+
#: The RETRYABLE counterpart of the two codes above, and deliberately a
|
|
286
|
+
#: different status as well as a different code: a throttle, a credential
|
|
287
|
+
#: problem, or a connection reset says nothing about whether the bytes still
|
|
288
|
+
#: exist, so presenting it as "your logs are gone" would be wrong twice — it
|
|
289
|
+
#: tells the user something false and it invites them to stop retrying.
|
|
290
|
+
#:
|
|
291
|
+
#: NOT a member of :data:`LOG_ARCHIVE_UNAVAILABLE_CODES`, and a client MUST
|
|
292
|
+
#: NOT fold it in. It carries the same ``{"error": {"code", "message",
|
|
293
|
+
#: "request_id"}}`` envelope as every other error; a client that recognizes it
|
|
294
|
+
#: should say the logs are temporarily unreadable and suggest retrying.
|
|
295
|
+
#:
|
|
296
|
+
#: THE WIRE VALUE SAYS ``read_failed``, NOT ``unavailable``, on purpose. An
|
|
297
|
+
#: earlier draft of this contract spelled it ``log_archive_unavailable`` —
|
|
298
|
+
#: the one code deliberately EXCLUDED from a set named
|
|
299
|
+
#: ``LOG_ARCHIVE_UNAVAILABLE_CODES``, which is a trap for every reader who
|
|
300
|
+
#: greps for one and finds the other. Do not "align" it back.
|
|
301
|
+
LOG_ARCHIVE_READ_FAILED_CODE = "log_archive_read_failed"
|
|
302
|
+
|
|
225
303
|
#: Statuses after which a job's log stream and record no longer change. A log
|
|
226
304
|
#: follower drains the remaining bytes and stops once the status is terminal.
|
|
227
305
|
TERMINAL_JOB_STATUSES = frozenset({JobStatus.COMPLETED, JobStatus.FAILED, JobStatus.CANCELLED})
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/__init__.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/actuator.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/asset.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/entity.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/light.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/materials.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/physics.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/pose.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/primitives.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/prop.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/record.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/robot.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/scene.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/sensor.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/terrain.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/visual.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/authoring/world.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/_payload.py
RENAMED
|
File without changes
|
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/asset.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/callbacks.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/debug.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/domain.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/enums.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/job_events.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/manifest.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/outputs.py
RENAMED
|
File without changes
|
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/runtime.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/submit.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/platform/volume.py
RENAMED
|
File without changes
|
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/runtime/__init__.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/runtime/anomaly.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/runtime/components.py
RENAMED
|
File without changes
|
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/runtime/player.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/runtime/policy.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/runtime/scenario.py
RENAMED
|
File without changes
|
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/runtime/tensors.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo/interfaces/runtime/trainer.py
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo_interfaces.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo_interfaces.egg-info/requires.txt
RENAMED
|
File without changes
|
{simulo_interfaces-0.16.0 → simulo_interfaces-0.18.0}/src/simulo_interfaces.egg-info/top_level.txt
RENAMED
|
File without changes
|