sequence-base 0.3.9__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.9 → sequence_base-0.3.10}/PKG-INFO +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/pyproject.toml +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/constants/version.py +2 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/contract/deployments.py +5 -4
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/contract/policy.py +4 -2
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/ActionChunk.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/ActionContract.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/ActionStep.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/AdapterTransform.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/Autoscaler.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/BenchmarkConditionSpec.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/BenchmarkRegisterRequest.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/BenchmarkSpec.json +2 -2
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/BenchmarkStatusResponse.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/BootstrapResponse.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/Camera.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/ClampInfo.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/CodeBundle.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/Concurrency.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/Conditions.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/ConnectRequest.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/ConnectResponse.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/DeploymentAccepted.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/DeploymentPolicy.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/DeploymentRequest.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/DeploymentStatusResponse.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/Embodiment.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/ErrorBody.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/Estimate.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/EvalDryRunResponse.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/EvalReport.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/EvalRequest.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/EvalResponse.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/ImageFrame.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/ImageSpec.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/ImageStepApt.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/ImageStepEnv.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/ImageStepRun.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/ImageStepUvPip.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/InferParam.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/Lease.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/LossyTransform.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/MetricAgg.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/Observation.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/ObservationContract.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/PolicyRegistration.json +2 -2
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/PolicySpec.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/Proprioception.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/RenderSpec.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/Resources.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/RolloutResult.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/SecretCreateRequest.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/SecretInfo.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/SecretRef.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/SeqFlags.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/Step.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/SuiteAgg.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/TaskAgg.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/Timeouts.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/UploadTarget.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/UsageReport.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/Variant.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/VolumeAttach.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/VolumeFile.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/VolumeInfo.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/VolumeMount.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/VolumeRef.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/VolumeUploadRequest.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/VolumeUploadResponse.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schemas/WarmingError.json +1 -1
- {sequence_base-0.3.9 → sequence_base-0.3.10}/tests/test_contracts.py +15 -5
- {sequence_base-0.3.9 → sequence_base-0.3.10}/.github/workflows/ci.yml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/.gitignore +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/README.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/README.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/REVIEW.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/START.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/accounts.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/billing.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/build/BUILD_LOG.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/build/goal_sha256.json +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/build/gs-build-wave.js +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/build/gs-spec-goals.js +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/container.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/contracts.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/deploy/PLAN.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/deploy/PROD_REORG.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/deploy/SCHEMA_COMPAT.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/deploy/archive/sequences-gw.genseq-506918.20261001.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/eval.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/gateway.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/A1.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/A2.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/A3.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/C1.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/C2.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/C3.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/C4.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/C5.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/G1.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/G2.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/G3.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/G4.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/G5.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/O1.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/O2.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/O3.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/O4.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/O5.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/R1.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/R2.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/R3.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/S1.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/S2.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/S3.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/S4.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/S5.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/S6.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/V1-storage.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/V2-user-quotas.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/W0.1.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/goals/W0.2.yaml +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/modal/README.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/modal/architecture.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/modal/connect.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/modal/cost.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/modal/custom-domain.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/modal/debugging.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/modal/goals.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/modal/limits.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/modal/plan.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/modal/white-label.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/modal/wiring.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/observability.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/references.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/docs/platform/sdk.md +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/__init__.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/auth.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/codec/__init__.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/codec/image.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/codec/resize.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/constants/__init__.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/constants/env.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/constants/headers.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/contract/__init__.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/contract/accounts.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/contract/act.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/contract/benchmarks.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/contract/connect.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/contract/errors.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/contract/eval.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/contract/flags.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/contract/io.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/contract/volumes.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/errors/__init__.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/errors/transport.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/obs/__init__.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/obs/log.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/obs/rid.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/schema_export.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/telemetry/__init__.py +0 -0
- {sequence_base-0.3.9 → sequence_base-0.3.10}/sequence_base/telemetry/events.py +0 -0
- {sequence_base-0.3.9 → 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,8 @@ 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
|
|
10
11
|
# previous: 0.4.7 # 0.4.6 -> 0.4.7: ActionContract.bounds / max_delta / on_violation (action limits)
|
|
11
12
|
# previous: 0.4.6 # 0.4.5 -> 0.4.6: InferParam + DeploymentPolicy.params; EvalRequest.params / variants / record; BenchmarkRegisterRequest.gpu
|
|
12
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
|
|
@@ -220,22 +220,23 @@ class DeploymentRequest(BaseModel):
|
|
|
220
220
|
|
|
221
221
|
@model_validator(mode="after")
|
|
222
222
|
def _weights_have_an_origin(self) -> "DeploymentRequest":
|
|
223
|
-
"""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
|
|
224
225
|
empty. PolicySpec already enforces this for SDK-authored deploys; this holds it for any POSTed body."""
|
|
225
226
|
uri = self.weights.uri.strip()
|
|
226
227
|
if uri.startswith(VOL_SCHEME):
|
|
227
228
|
parse_vol(uri)
|
|
228
229
|
return self
|
|
229
230
|
if not any(uri.startswith(s) and len(uri) > len(s) for s in _WEIGHTS_SCHEMES):
|
|
230
|
-
raise ValueError("weights.uri must be a gs://bucket/prefix, an
|
|
231
|
-
"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")
|
|
232
233
|
return self
|
|
233
234
|
|
|
234
235
|
|
|
235
236
|
# A deployment name: what `connect(model=...)` and the console address. {DeploymentRequest._name_is_a_slug}
|
|
236
237
|
_NAME = re.compile(r"[A-Za-z0-9][A-Za-z0-9._-]{0,63}")
|
|
237
238
|
# The origins the build knows how to provision weights from.
|
|
238
|
-
_WEIGHTS_SCHEMES = ("gs://", "hf://")
|
|
239
|
+
_WEIGHTS_SCHEMES = ("gs://", "hf://", "s3://", "https://")
|
|
239
240
|
|
|
240
241
|
|
|
241
242
|
class DeploymentAccepted(BaseModel):
|
|
@@ -159,8 +159,10 @@ class PolicySpec(BaseModel):
|
|
|
159
159
|
from sequence_base.contract.volumes import parse_vol
|
|
160
160
|
parse_vol(v)
|
|
161
161
|
return v
|
|
162
|
-
|
|
163
|
-
|
|
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")
|
|
164
166
|
return v
|
|
165
167
|
|
|
166
168
|
|
|
@@ -235,7 +235,7 @@
|
|
|
235
235
|
],
|
|
236
236
|
"title": "SeqFlags",
|
|
237
237
|
"type": "integer",
|
|
238
|
-
"x-contract-version": "0.4.
|
|
238
|
+
"x-contract-version": "0.4.9",
|
|
239
239
|
"x-flag-names": {
|
|
240
240
|
"CHECK": 65536,
|
|
241
241
|
"INFER": 16,
|
|
@@ -425,5 +425,5 @@
|
|
|
425
425
|
],
|
|
426
426
|
"title": "BenchmarkSpec",
|
|
427
427
|
"type": "object",
|
|
428
|
-
"x-contract-version": "0.4.
|
|
428
|
+
"x-contract-version": "0.4.9"
|
|
429
429
|
}
|
|
@@ -548,7 +548,7 @@
|
|
|
548
548
|
],
|
|
549
549
|
"title": "SeqFlags",
|
|
550
550
|
"type": "integer",
|
|
551
|
-
"x-contract-version": "0.4.
|
|
551
|
+
"x-contract-version": "0.4.9",
|
|
552
552
|
"x-flag-names": {
|
|
553
553
|
"CHECK": 65536,
|
|
554
554
|
"INFER": 16,
|
|
@@ -648,5 +648,5 @@
|
|
|
648
648
|
],
|
|
649
649
|
"title": "PolicyRegistration",
|
|
650
650
|
"type": "object",
|
|
651
|
-
"x-contract-version": "0.4.
|
|
651
|
+
"x-contract-version": "0.4.9"
|
|
652
652
|
}
|
|
@@ -319,9 +319,11 @@ def test_policyspec_requires_action():
|
|
|
319
319
|
|
|
320
320
|
|
|
321
321
|
def test_policyspec_weights_scheme_enforced():
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
322
|
+
for uri in ("hf://org/model", "gs://w/", "s3://bkt/ckpt/", "https://example.com/ckpt.tar.gz"):
|
|
323
|
+
PolicySpec(name="p", gpu="L4", image=_IMG, weights=uri, action=_AC)
|
|
324
|
+
for uri in ("http://example.com/ckpt", "ftp://w/", "/local/ckpt"):
|
|
325
|
+
with pytest.raises(ValidationError):
|
|
326
|
+
PolicySpec(name="p", gpu="L4", image=_IMG, weights=uri, action=_AC)
|
|
325
327
|
|
|
326
328
|
|
|
327
329
|
def test_policyspec_gpu_accepts_str_or_list():
|
|
@@ -689,8 +691,9 @@ def test_a_name_with_spaces_slashes_or_schemes_is_refused(name):
|
|
|
689
691
|
DeploymentRequest.model_validate(_deploy_body(name=name))
|
|
690
692
|
|
|
691
693
|
|
|
692
|
-
@pytest.mark.parametrize("uri", ["", " ", "gs://", "hf://", "s3://
|
|
693
|
-
|
|
694
|
+
@pytest.mark.parametrize("uri", ["", " ", "gs://", "hf://", "s3://", "https://", "http://example.com/w",
|
|
695
|
+
"/local/path"])
|
|
696
|
+
def test_weights_need_an_origin_the_build_provisions(uri):
|
|
694
697
|
from sequence_base import DeploymentRequest
|
|
695
698
|
with pytest.raises(ValueError):
|
|
696
699
|
DeploymentRequest.model_validate(_deploy_body(weights={"uri": uri, "mount": "/data"}))
|
|
@@ -804,3 +807,10 @@ def test_build_options_python_version_build_secrets_region_and_a_dockerfile_cont
|
|
|
804
807
|
"control_frequency_hz": 10.0}},
|
|
805
808
|
"image_context": CodeBundle.from_bytes(b"\x1f\x8b context").model_dump()})
|
|
806
809
|
assert req.resources.region == "us-west" and req.image_context.raw() == b"\x1f\x8b context"
|
|
810
|
+
|
|
811
|
+
|
|
812
|
+
@pytest.mark.parametrize("uri", ["s3://bkt/ckpt/", "https://example.com/ckpt.safetensors", "gs://bkt/w/",
|
|
813
|
+
"hf://org/model"])
|
|
814
|
+
def test_weights_from_s3_and_https_are_accepted(uri):
|
|
815
|
+
from sequence_base import DeploymentRequest
|
|
816
|
+
assert DeploymentRequest.model_validate(_deploy_body(weights={"uri": uri, "mount": "/data"})).weights.uri == uri
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|