sequence-base 0.3.8__tar.gz → 0.3.10__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.
- {sequence_base-0.3.8 → sequence_base-0.3.10}/PKG-INFO +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/pyproject.toml +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/constants/version.py +3 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/contract/benchmarks.py +2 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/contract/deployments.py +11 -4
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/contract/policy.py +10 -2
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/ActionChunk.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/ActionContract.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/ActionStep.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/AdapterTransform.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/Autoscaler.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/BenchmarkConditionSpec.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/BenchmarkRegisterRequest.json +40 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/BenchmarkSpec.json +30 -2
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/BenchmarkStatusResponse.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/BootstrapResponse.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/Camera.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/ClampInfo.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/CodeBundle.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/Concurrency.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/Conditions.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/ConnectRequest.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/ConnectResponse.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/DeploymentAccepted.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/DeploymentPolicy.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/DeploymentRequest.json +53 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/DeploymentStatusResponse.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/Embodiment.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/ErrorBody.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/Estimate.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/EvalDryRunResponse.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/EvalReport.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/EvalRequest.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/EvalResponse.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/ImageFrame.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/ImageSpec.json +44 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/ImageStepApt.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/ImageStepEnv.json +1 -1
- sequence_base-0.3.10/sequence_base/schemas/ImageStepRun.json +50 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/ImageStepUvPip.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/InferParam.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/Lease.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/LossyTransform.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/MetricAgg.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/Observation.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/ObservationContract.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/PolicyRegistration.json +30 -2
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/PolicySpec.json +29 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/Proprioception.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/RenderSpec.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/Resources.json +14 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/RolloutResult.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/SecretCreateRequest.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/SecretInfo.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/SecretRef.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/SeqFlags.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/Step.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/SuiteAgg.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/TaskAgg.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/Timeouts.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/UploadTarget.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/UsageReport.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/Variant.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/VolumeAttach.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/VolumeFile.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/VolumeInfo.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/VolumeMount.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/VolumeRef.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/VolumeUploadRequest.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/VolumeUploadResponse.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/WarmingError.json +1 -1
- {sequence_base-0.3.8 → sequence_base-0.3.10}/tests/test_contracts.py +39 -5
- sequence_base-0.3.8/sequence_base/schemas/ImageStepRun.json +0 -18
- {sequence_base-0.3.8 → sequence_base-0.3.10}/.github/workflows/ci.yml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/.gitignore +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/README.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/README.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/REVIEW.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/START.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/accounts.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/billing.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/build/BUILD_LOG.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/build/goal_sha256.json +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/build/gs-build-wave.js +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/build/gs-spec-goals.js +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/container.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/contracts.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/deploy/PLAN.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/deploy/PROD_REORG.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/deploy/SCHEMA_COMPAT.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/deploy/archive/sequences-gw.genseq-506918.20261001.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/eval.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/gateway.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/A1.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/A2.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/A3.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/C1.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/C2.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/C3.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/C4.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/C5.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/G1.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/G2.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/G3.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/G4.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/G5.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/O1.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/O2.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/O3.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/O4.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/O5.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/R1.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/R2.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/R3.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/S1.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/S2.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/S3.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/S4.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/S5.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/S6.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/V1-storage.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/V2-user-quotas.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/W0.1.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/goals/W0.2.yaml +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/modal/README.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/modal/architecture.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/modal/connect.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/modal/cost.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/modal/custom-domain.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/modal/debugging.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/modal/goals.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/modal/limits.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/modal/plan.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/modal/white-label.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/modal/wiring.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/observability.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/references.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/docs/platform/sdk.md +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/__init__.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/auth.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/codec/__init__.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/codec/image.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/codec/resize.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/constants/__init__.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/constants/env.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/constants/headers.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/contract/__init__.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/contract/accounts.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/contract/act.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/contract/connect.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/contract/errors.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/contract/eval.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/contract/flags.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/contract/io.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/contract/volumes.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/errors/__init__.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/errors/transport.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/obs/__init__.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/obs/log.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/obs/rid.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schema_export.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/telemetry/__init__.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/telemetry/events.py +0 -0
- {sequence_base-0.3.8 → sequence_base-0.3.10}/tests/test_codec_roundtrip.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sequence-base
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.10
|
|
4
4
|
Summary: Shared foundation for the Sequences platform — wire contract, correlation, error taxonomy, constants. Used by the robot SDK, gateway, and container harness.
|
|
5
5
|
Requires-Python: >=3.11
|
|
6
6
|
Requires-Dist: pydantic>=2.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "sequence-base"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.10"
|
|
4
4
|
description = "Shared foundation for the Sequences platform — wire contract, correlation, error taxonomy, constants. Used by the robot SDK, gateway, and container harness."
|
|
5
5
|
requires-python = ">=3.11"
|
|
6
6
|
dependencies = ["pydantic>=2.0"]
|
|
@@ -6,7 +6,9 @@ PROTOCOL_VERSION = "1"
|
|
|
6
6
|
# across deployments / repos can tell which version of a shape it is validating against. MUST change
|
|
7
7
|
# whenever any shared wire shape changes (a field added / removed / retyped) — that is what makes
|
|
8
8
|
# contract evolution mechanically detectable instead of eyeballed. Bump on any shape change.
|
|
9
|
-
CONTRACT_VERSION = "0.4.
|
|
9
|
+
CONTRACT_VERSION = "0.4.9" # 0.4.8 -> 0.4.9: weights may be s3:// or https://
|
|
10
|
+
# previous: 0.4.8 # 0.4.7 -> 0.4.8: ImageSpec.python, ImageStepRun.secrets, Resources.region, DeploymentRequest/BenchmarkRegisterRequest.image_context
|
|
11
|
+
# previous: 0.4.7 # 0.4.6 -> 0.4.7: ActionContract.bounds / max_delta / on_violation (action limits)
|
|
10
12
|
# previous: 0.4.6 # 0.4.5 -> 0.4.6: InferParam + DeploymentPolicy.params; EvalRequest.params / variants / record; BenchmarkRegisterRequest.gpu
|
|
11
13
|
# previous: 0.4.5 # 0.4.4 -> 0.4.5: BenchmarkRegisterRequest.condition_list / timeout_s / default_adapter_ref (+ BenchmarkConditionSpec); EvalRequest.tasks / max_usd / rerun_of
|
|
12
14
|
# previous: 0.4.4 # 0.4.3 -> 0.4.4: BenchmarkRegisterRequest.secrets (by name) + score (has @seq.score)
|
|
@@ -168,6 +168,8 @@ class BenchmarkRegisterRequest(BaseModel):
|
|
|
168
168
|
default_adapter_ref: str | None = None
|
|
169
169
|
# A GPU for each sim sandbox (a renderer or a GPU physics engine): a card name the platform offers. None: CPU.
|
|
170
170
|
gpu: str | None = Field(default=None, max_length=32)
|
|
171
|
+
# The Dockerfile's build context, as for a deployment.
|
|
172
|
+
image_context: CodeBundle | None = None
|
|
171
173
|
|
|
172
174
|
|
|
173
175
|
class BenchmarkStatusResponse(BaseModel):
|
|
@@ -53,6 +53,9 @@ class Resources(BaseModel):
|
|
|
53
53
|
gpu: list[str]
|
|
54
54
|
cpu: int
|
|
55
55
|
memory_gb: int
|
|
56
|
+
# Where the workers run (near the robots): one of the regions the platform offers. None: the platform picks.
|
|
57
|
+
# {gs-plans/customization/policy.md "区域"}
|
|
58
|
+
region: str | None = Field(default=None, max_length=32)
|
|
56
59
|
|
|
57
60
|
|
|
58
61
|
class Autoscaler(BaseModel):
|
|
@@ -190,6 +193,9 @@ class DeploymentRequest(BaseModel):
|
|
|
190
193
|
# The handler's source. None only when `handler_ref` is importable from the image itself (a package the
|
|
191
194
|
# ImageSpec installs); otherwise the worker has nothing to import and the build fails.
|
|
192
195
|
code: CodeBundle | None = None
|
|
196
|
+
# The Dockerfile's build context (the directory its COPY / ADD read), shipped like the code. Only with
|
|
197
|
+
# image.dockerfile. {gs-plans/customization/policy.md "DOCKERFILE 的 BUILD CONTEXT"}
|
|
198
|
+
image_context: CodeBundle | None = None
|
|
193
199
|
# Non-weights volumes the policy declares (goal 7). List, not dict, so a mount is never duplicated as
|
|
194
200
|
# both key and value; the gateway only stores the dump, no consumer needs dict lookup.
|
|
195
201
|
volumes: list[VolumeAttach] = Field(default_factory=list)
|
|
@@ -214,22 +220,23 @@ class DeploymentRequest(BaseModel):
|
|
|
214
220
|
|
|
215
221
|
@model_validator(mode="after")
|
|
216
222
|
def _weights_have_an_origin(self) -> "DeploymentRequest":
|
|
217
|
-
"""The checkpoint the build provisions: a gs:// prefix, an hf:// repo or an uploaded
|
|
223
|
+
"""The checkpoint the build provisions: a gs:// or s3:// prefix, an https:// file, an hf:// repo or an uploaded
|
|
224
|
+
vol:// volume, never
|
|
218
225
|
empty. PolicySpec already enforces this for SDK-authored deploys; this holds it for any POSTed body."""
|
|
219
226
|
uri = self.weights.uri.strip()
|
|
220
227
|
if uri.startswith(VOL_SCHEME):
|
|
221
228
|
parse_vol(uri)
|
|
222
229
|
return self
|
|
223
230
|
if not any(uri.startswith(s) and len(uri) > len(s) for s in _WEIGHTS_SCHEMES):
|
|
224
|
-
raise ValueError("weights.uri must be a gs://bucket/prefix, an
|
|
225
|
-
"vol://<name> volume")
|
|
231
|
+
raise ValueError("weights.uri must be a gs://bucket/prefix, an s3://bucket/prefix, an https:// URL, an "
|
|
232
|
+
"hf://org/model repo or a vol://<name> volume")
|
|
226
233
|
return self
|
|
227
234
|
|
|
228
235
|
|
|
229
236
|
# A deployment name: what `connect(model=...)` and the console address. {DeploymentRequest._name_is_a_slug}
|
|
230
237
|
_NAME = re.compile(r"[A-Za-z0-9][A-Za-z0-9._-]{0,63}")
|
|
231
238
|
# The origins the build knows how to provision weights from.
|
|
232
|
-
_WEIGHTS_SCHEMES = ("gs://", "hf://")
|
|
239
|
+
_WEIGHTS_SCHEMES = ("gs://", "hf://", "s3://", "https://")
|
|
233
240
|
|
|
234
241
|
|
|
235
242
|
class DeploymentAccepted(BaseModel):
|
|
@@ -62,6 +62,9 @@ class ImageStepEnv(BaseModel):
|
|
|
62
62
|
class ImageStepRun(BaseModel):
|
|
63
63
|
model_config = ConfigDict(extra="forbid")
|
|
64
64
|
run_commands: list[str]
|
|
65
|
+
# Credentials only these commands see while the image builds (a private git or package index), by name; they
|
|
66
|
+
# are not left in any image layer. {gs-plans/customization/policy.md "私有依赖 … BUILD SECRETS"}
|
|
67
|
+
secrets: list[SecretRef] | None = None
|
|
65
68
|
|
|
66
69
|
|
|
67
70
|
ImageStep = ImageStepUvPip | ImageStepApt | ImageStepEnv | ImageStepRun
|
|
@@ -79,6 +82,9 @@ class ImageSpec(BaseModel):
|
|
|
79
82
|
base: str | None = None
|
|
80
83
|
dockerfile: str | None = None
|
|
81
84
|
steps: list[ImageStep] = Field(default_factory=list)
|
|
85
|
+
# The Python the image runs: "3.11" … "3.13" (the worker runs on 3.11 or later), or "image" to use the one the
|
|
86
|
+
# base image already has. None: the platform's default (3.11). {gs-plans/customization/policy.md "PYTHON 版本"}
|
|
87
|
+
python: str | None = Field(default=None, pattern=r"^(3\.(11|12|13)|image)$")
|
|
82
88
|
|
|
83
89
|
@model_validator(mode="after")
|
|
84
90
|
def _base_xor_dockerfile(self) -> "ImageSpec":
|
|
@@ -153,8 +159,10 @@ class PolicySpec(BaseModel):
|
|
|
153
159
|
from sequence_base.contract.volumes import parse_vol
|
|
154
160
|
parse_vol(v)
|
|
155
161
|
return v
|
|
156
|
-
|
|
157
|
-
|
|
162
|
+
# s3:// (the author's own bucket, or any S3-compatible store) and https:// (one file or archive at a URL):
|
|
163
|
+
# {gs-plans/customization/README.md P2 "S3:// / HTTPS:// 权重"}
|
|
164
|
+
if not v.startswith(("gs://", "hf://", "s3://", "https://")):
|
|
165
|
+
raise ValueError("weights must be a gs://, s3://, https://, hf:// or vol:// URI")
|
|
158
166
|
return v
|
|
159
167
|
|
|
160
168
|
|
{sequence_base-0.3.8 → sequence_base-0.3.10}/sequence_base/schemas/BenchmarkRegisterRequest.json
RENAMED
|
@@ -252,6 +252,19 @@
|
|
|
252
252
|
"default": null,
|
|
253
253
|
"title": "Dockerfile"
|
|
254
254
|
},
|
|
255
|
+
"python": {
|
|
256
|
+
"anyOf": [
|
|
257
|
+
{
|
|
258
|
+
"pattern": "^(3\\.(11|12|13)|image)$",
|
|
259
|
+
"type": "string"
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"type": "null"
|
|
263
|
+
}
|
|
264
|
+
],
|
|
265
|
+
"default": null,
|
|
266
|
+
"title": "Python"
|
|
267
|
+
},
|
|
255
268
|
"steps": {
|
|
256
269
|
"items": {
|
|
257
270
|
"anyOf": [
|
|
@@ -319,6 +332,21 @@
|
|
|
319
332
|
},
|
|
320
333
|
"title": "Run Commands",
|
|
321
334
|
"type": "array"
|
|
335
|
+
},
|
|
336
|
+
"secrets": {
|
|
337
|
+
"anyOf": [
|
|
338
|
+
{
|
|
339
|
+
"items": {
|
|
340
|
+
"$ref": "#/$defs/SecretRef"
|
|
341
|
+
},
|
|
342
|
+
"type": "array"
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
"type": "null"
|
|
346
|
+
}
|
|
347
|
+
],
|
|
348
|
+
"default": null,
|
|
349
|
+
"title": "Secrets"
|
|
322
350
|
}
|
|
323
351
|
},
|
|
324
352
|
"required": [
|
|
@@ -526,6 +554,17 @@
|
|
|
526
554
|
"image": {
|
|
527
555
|
"$ref": "#/$defs/ImageSpec"
|
|
528
556
|
},
|
|
557
|
+
"image_context": {
|
|
558
|
+
"anyOf": [
|
|
559
|
+
{
|
|
560
|
+
"$ref": "#/$defs/CodeBundle"
|
|
561
|
+
},
|
|
562
|
+
{
|
|
563
|
+
"type": "null"
|
|
564
|
+
}
|
|
565
|
+
],
|
|
566
|
+
"default": null
|
|
567
|
+
},
|
|
529
568
|
"max_steps": {
|
|
530
569
|
"title": "Max Steps",
|
|
531
570
|
"type": "integer"
|
|
@@ -599,5 +638,5 @@
|
|
|
599
638
|
],
|
|
600
639
|
"title": "BenchmarkRegisterRequest",
|
|
601
640
|
"type": "object",
|
|
602
|
-
"x-contract-version": "0.4.
|
|
641
|
+
"x-contract-version": "0.4.9"
|
|
603
642
|
}
|
|
@@ -61,6 +61,19 @@
|
|
|
61
61
|
"default": null,
|
|
62
62
|
"title": "Dockerfile"
|
|
63
63
|
},
|
|
64
|
+
"python": {
|
|
65
|
+
"anyOf": [
|
|
66
|
+
{
|
|
67
|
+
"pattern": "^(3\\.(11|12|13)|image)$",
|
|
68
|
+
"type": "string"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"type": "null"
|
|
72
|
+
}
|
|
73
|
+
],
|
|
74
|
+
"default": null,
|
|
75
|
+
"title": "Python"
|
|
76
|
+
},
|
|
64
77
|
"steps": {
|
|
65
78
|
"items": {
|
|
66
79
|
"anyOf": [
|
|
@@ -128,6 +141,21 @@
|
|
|
128
141
|
},
|
|
129
142
|
"title": "Run Commands",
|
|
130
143
|
"type": "array"
|
|
144
|
+
},
|
|
145
|
+
"secrets": {
|
|
146
|
+
"anyOf": [
|
|
147
|
+
{
|
|
148
|
+
"items": {
|
|
149
|
+
"$ref": "#/$defs/SecretRef"
|
|
150
|
+
},
|
|
151
|
+
"type": "array"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"type": "null"
|
|
155
|
+
}
|
|
156
|
+
],
|
|
157
|
+
"default": null,
|
|
158
|
+
"title": "Secrets"
|
|
131
159
|
}
|
|
132
160
|
},
|
|
133
161
|
"required": [
|
|
@@ -207,7 +235,7 @@
|
|
|
207
235
|
],
|
|
208
236
|
"title": "SeqFlags",
|
|
209
237
|
"type": "integer",
|
|
210
|
-
"x-contract-version": "0.4.
|
|
238
|
+
"x-contract-version": "0.4.9",
|
|
211
239
|
"x-flag-names": {
|
|
212
240
|
"CHECK": 65536,
|
|
213
241
|
"INFER": 16,
|
|
@@ -397,5 +425,5 @@
|
|
|
397
425
|
],
|
|
398
426
|
"title": "BenchmarkSpec",
|
|
399
427
|
"type": "object",
|
|
400
|
-
"x-contract-version": "0.4.
|
|
428
|
+
"x-contract-version": "0.4.9"
|
|
401
429
|
}
|
|
@@ -367,6 +367,19 @@
|
|
|
367
367
|
"default": null,
|
|
368
368
|
"title": "Dockerfile"
|
|
369
369
|
},
|
|
370
|
+
"python": {
|
|
371
|
+
"anyOf": [
|
|
372
|
+
{
|
|
373
|
+
"pattern": "^(3\\.(11|12|13)|image)$",
|
|
374
|
+
"type": "string"
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
"type": "null"
|
|
378
|
+
}
|
|
379
|
+
],
|
|
380
|
+
"default": null,
|
|
381
|
+
"title": "Python"
|
|
382
|
+
},
|
|
370
383
|
"steps": {
|
|
371
384
|
"items": {
|
|
372
385
|
"anyOf": [
|
|
@@ -434,6 +447,21 @@
|
|
|
434
447
|
},
|
|
435
448
|
"title": "Run Commands",
|
|
436
449
|
"type": "array"
|
|
450
|
+
},
|
|
451
|
+
"secrets": {
|
|
452
|
+
"anyOf": [
|
|
453
|
+
{
|
|
454
|
+
"items": {
|
|
455
|
+
"$ref": "#/$defs/SecretRef"
|
|
456
|
+
},
|
|
457
|
+
"type": "array"
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
"type": "null"
|
|
461
|
+
}
|
|
462
|
+
],
|
|
463
|
+
"default": null,
|
|
464
|
+
"title": "Secrets"
|
|
437
465
|
}
|
|
438
466
|
},
|
|
439
467
|
"required": [
|
|
@@ -565,6 +593,19 @@
|
|
|
565
593
|
"memory_gb": {
|
|
566
594
|
"title": "Memory Gb",
|
|
567
595
|
"type": "integer"
|
|
596
|
+
},
|
|
597
|
+
"region": {
|
|
598
|
+
"anyOf": [
|
|
599
|
+
{
|
|
600
|
+
"maxLength": 32,
|
|
601
|
+
"type": "string"
|
|
602
|
+
},
|
|
603
|
+
{
|
|
604
|
+
"type": "null"
|
|
605
|
+
}
|
|
606
|
+
],
|
|
607
|
+
"default": null,
|
|
608
|
+
"title": "Region"
|
|
568
609
|
}
|
|
569
610
|
},
|
|
570
611
|
"required": [
|
|
@@ -678,6 +719,17 @@
|
|
|
678
719
|
"image": {
|
|
679
720
|
"$ref": "#/$defs/ImageSpec"
|
|
680
721
|
},
|
|
722
|
+
"image_context": {
|
|
723
|
+
"anyOf": [
|
|
724
|
+
{
|
|
725
|
+
"$ref": "#/$defs/CodeBundle"
|
|
726
|
+
},
|
|
727
|
+
{
|
|
728
|
+
"type": "null"
|
|
729
|
+
}
|
|
730
|
+
],
|
|
731
|
+
"default": null
|
|
732
|
+
},
|
|
681
733
|
"name": {
|
|
682
734
|
"title": "Name",
|
|
683
735
|
"type": "string"
|
|
@@ -719,5 +771,5 @@
|
|
|
719
771
|
],
|
|
720
772
|
"title": "DeploymentRequest",
|
|
721
773
|
"type": "object",
|
|
722
|
-
"x-contract-version": "0.4.
|
|
774
|
+
"x-contract-version": "0.4.9"
|
|
723
775
|
}
|
|
@@ -43,6 +43,21 @@
|
|
|
43
43
|
},
|
|
44
44
|
"title": "Run Commands",
|
|
45
45
|
"type": "array"
|
|
46
|
+
},
|
|
47
|
+
"secrets": {
|
|
48
|
+
"anyOf": [
|
|
49
|
+
{
|
|
50
|
+
"items": {
|
|
51
|
+
"$ref": "#/$defs/SecretRef"
|
|
52
|
+
},
|
|
53
|
+
"type": "array"
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"type": "null"
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"default": null,
|
|
60
|
+
"title": "Secrets"
|
|
46
61
|
}
|
|
47
62
|
},
|
|
48
63
|
"required": [
|
|
@@ -67,6 +82,21 @@
|
|
|
67
82
|
],
|
|
68
83
|
"title": "ImageStepUvPip",
|
|
69
84
|
"type": "object"
|
|
85
|
+
},
|
|
86
|
+
"SecretRef": {
|
|
87
|
+
"additionalProperties": false,
|
|
88
|
+
"description": "A by-name reference to a secret (PolicySpec.secrets / BenchmarkSpec.secrets). Name only — the\nvalue lives in Secret Manager and is injected at worker bootstrap. Never carries a value.",
|
|
89
|
+
"properties": {
|
|
90
|
+
"name": {
|
|
91
|
+
"title": "Name",
|
|
92
|
+
"type": "string"
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"required": [
|
|
96
|
+
"name"
|
|
97
|
+
],
|
|
98
|
+
"title": "SecretRef",
|
|
99
|
+
"type": "object"
|
|
70
100
|
}
|
|
71
101
|
},
|
|
72
102
|
"additionalProperties": false,
|
|
@@ -96,6 +126,19 @@
|
|
|
96
126
|
"default": null,
|
|
97
127
|
"title": "Dockerfile"
|
|
98
128
|
},
|
|
129
|
+
"python": {
|
|
130
|
+
"anyOf": [
|
|
131
|
+
{
|
|
132
|
+
"pattern": "^(3\\.(11|12|13)|image)$",
|
|
133
|
+
"type": "string"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"type": "null"
|
|
137
|
+
}
|
|
138
|
+
],
|
|
139
|
+
"default": null,
|
|
140
|
+
"title": "Python"
|
|
141
|
+
},
|
|
99
142
|
"steps": {
|
|
100
143
|
"items": {
|
|
101
144
|
"anyOf": [
|
|
@@ -119,5 +162,5 @@
|
|
|
119
162
|
},
|
|
120
163
|
"title": "ImageSpec",
|
|
121
164
|
"type": "object",
|
|
122
|
-
"x-contract-version": "0.4.
|
|
165
|
+
"x-contract-version": "0.4.9"
|
|
123
166
|
}
|