gridlinegpu 0.1.6__tar.gz → 0.1.7__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.
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/PKG-INFO +2 -2
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/README.md +1 -1
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/pyproject.toml +1 -1
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_contract.py +3 -3
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu.egg-info/PKG-INFO +2 -2
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_contract.py +10 -4
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_curated_run.py +3 -2
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/setup.cfg +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/UNICODE-LICENSE.txt +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/__init__.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/__main__.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_admission.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_capture.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_casefold.json +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_credits.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_errors.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_history.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_interfaces.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_job.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_outputs.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_public.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_release.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_results.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_run.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_submission.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_transfer.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/cli.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/cli_auth.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/client.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/errors.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu.egg-info/SOURCES.txt +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu.egg-info/dependency_links.txt +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu.egg-info/entry_points.txt +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu.egg-info/requires.txt +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu.egg-info/top_level.txt +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_cli.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_cli_auth.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_client.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_client_source.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_admission.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_canary.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_capture.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_capture_gaps.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_credits.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_errors.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_history.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_job.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_job_results.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_release.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_results.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_run.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_submission.py +0 -0
- {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_transfer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gridlinegpu
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.7
|
|
4
4
|
Summary: Python client for Gridline YAML workload routing
|
|
5
5
|
Author: Gridline GPU
|
|
6
6
|
License: Proprietary
|
|
@@ -140,7 +140,7 @@ top-up or payment step in the SDK. Install the source extra and turn the beta on
|
|
|
140
140
|
shell:
|
|
141
141
|
|
|
142
142
|
```sh
|
|
143
|
-
python -m pip install 'gridlinegpu[source-contract]>=0.1.
|
|
143
|
+
python -m pip install 'gridlinegpu[source-contract]>=0.1.7,<0.2'
|
|
144
144
|
export GRIDLINE_SOURCE_SDK_ENABLED=true
|
|
145
145
|
gridline setup --apply # once: saves a private, scoped token file
|
|
146
146
|
```
|
|
@@ -122,7 +122,7 @@ top-up or payment step in the SDK. Install the source extra and turn the beta on
|
|
|
122
122
|
shell:
|
|
123
123
|
|
|
124
124
|
```sh
|
|
125
|
-
python -m pip install 'gridlinegpu[source-contract]>=0.1.
|
|
125
|
+
python -m pip install 'gridlinegpu[source-contract]>=0.1.7,<0.2'
|
|
126
126
|
export GRIDLINE_SOURCE_SDK_ENABLED=true
|
|
127
127
|
gridline setup --apply # once: saves a private, scoped token file
|
|
128
128
|
```
|
|
@@ -253,7 +253,7 @@ SOURCE_CURATED_ACTIVATION_PRECONDITIONS = MappingProxyType({
|
|
|
253
253
|
# The models: capability word; off by default (a code constant), as in versions.ts. Off, the
|
|
254
254
|
# registry is the v2.1 and v2.3 tuples and every check answers as before.
|
|
255
255
|
SOURCE_MODELS_CAPABILITY = "models_hf_v1"
|
|
256
|
-
SOURCE_MODELS_HF_V1_ENABLED =
|
|
256
|
+
SOURCE_MODELS_HF_V1_ENABLED = True
|
|
257
257
|
# versions.ts SOURCE_MODELS_ACTIVATION_PRECONDITIONS: blocking 2h-2 items, each false until landed
|
|
258
258
|
# (capture and frame refuse captured files under models/ first, compared case-folded).
|
|
259
259
|
SOURCE_MODELS_ACTIVATION_PRECONDITIONS = MappingProxyType({
|
|
@@ -271,11 +271,11 @@ SOURCE_MODELS_ACTIVATION_PRECONDITIONS = MappingProxyType({
|
|
|
271
271
|
"registerPublished": True,
|
|
272
272
|
# MR-1: the manifest ledger, quota, retention and purge (source_runtime_manifests).
|
|
273
273
|
"manifestRetention": True,
|
|
274
|
-
"hubContractRecorded":
|
|
274
|
+
"hubContractRecorded": True, "imageAllowanceRegistered": True,
|
|
275
275
|
# AR-1: the supervisor refuses app_root_unsafe for a payload-writable app root (models staged).
|
|
276
276
|
"appRootOwnership": True,
|
|
277
277
|
# Command (MA-2 ruling 1): launcher.ts SOURCE_LAUNCHER_HUB_CDN_HOSTS_ENABLED (off).
|
|
278
|
-
"hubCdnHostsEnabled":
|
|
278
|
+
"hubCdnHostsEnabled": True,
|
|
279
279
|
})
|
|
280
280
|
# versions.ts SOURCE_MODELS_HARDENING_ITEMS (Command, MA-2): tracked, never gating activation.
|
|
281
281
|
SOURCE_MODELS_HARDENING_ITEMS = MappingProxyType({"executionReadOnlyMount": False})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gridlinegpu
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.7
|
|
4
4
|
Summary: Python client for Gridline YAML workload routing
|
|
5
5
|
Author: Gridline GPU
|
|
6
6
|
License: Proprietary
|
|
@@ -140,7 +140,7 @@ top-up or payment step in the SDK. Install the source extra and turn the beta on
|
|
|
140
140
|
shell:
|
|
141
141
|
|
|
142
142
|
```sh
|
|
143
|
-
python -m pip install 'gridlinegpu[source-contract]>=0.1.
|
|
143
|
+
python -m pip install 'gridlinegpu[source-contract]>=0.1.7,<0.2'
|
|
144
144
|
export GRIDLINE_SOURCE_SDK_ENABLED=true
|
|
145
145
|
gridline setup --apply # once: saves a private, scoped token file
|
|
146
146
|
```
|
|
@@ -1011,7 +1011,8 @@ class SourceInterfaceTests(unittest.TestCase):
|
|
|
1011
1011
|
self.assertEqual(source_models_activation_missing(), missing)
|
|
1012
1012
|
# The activation checker: off passes; on passes only with every precondition true.
|
|
1013
1013
|
self.assertTrue(source_models_activation_allowed(False))
|
|
1014
|
-
|
|
1014
|
+
# On passes exactly when every precondition has landed (C1 landed hubContractRecorded).
|
|
1015
|
+
self.assertIs(source_models_activation_allowed(True), not missing)
|
|
1015
1016
|
landed = {name: True for name in SOURCE_MODELS_ACTIVATION_PRECONDITIONS}
|
|
1016
1017
|
self.assertTrue(source_models_activation_allowed(True, landed))
|
|
1017
1018
|
for name in SOURCE_MODELS_ACTIVATION_PRECONDITIONS:
|
|
@@ -1106,17 +1107,22 @@ class SourceInterfaceTests(unittest.TestCase):
|
|
|
1106
1107
|
vectors["enabled"])
|
|
1107
1108
|
self.assertEqual(json.loads(json.dumps(dict(SOURCE_CURATED_MODELS_VERSION_TUPLE))), vectors["tuple"])
|
|
1108
1109
|
self.assertIn(SOURCE_CURATED_MODELS_VERSION_TUPLE, SOURCE_REGISTERED_VERSION_TUPLES)
|
|
1109
|
-
|
|
1110
|
+
# Production holds v2.7 exactly while both capabilities are on (the models activation).
|
|
1111
|
+
both = SOURCE_CURATED_RUNTIMES_ENABLED and SOURCE_MODELS_HF_V1_ENABLED
|
|
1112
|
+
self.assertIs(SOURCE_CURATED_MODELS_VERSION_TUPLE in SOURCE_VERSION_TUPLES, both)
|
|
1110
1113
|
for case in vectors["tuples"]:
|
|
1111
1114
|
with self.subTest(case=case["name"]):
|
|
1112
1115
|
self.assertEqual(check_source_version_tuple(case["tuple"], SOURCE_REGISTERED_VERSION_TUPLES),
|
|
1113
1116
|
case["expected"])
|
|
1114
|
-
|
|
1117
|
+
production = case.get("expectedProductionOn", case["expectedProduction"]) if both \
|
|
1118
|
+
else case["expectedProduction"]
|
|
1119
|
+
self.assertEqual(check_source_version_tuple(case["tuple"]), production)
|
|
1115
1120
|
for case in vectors["offers"]:
|
|
1116
1121
|
with self.subTest(offer=case["name"]):
|
|
1117
1122
|
self.assertEqual(source_curated_models_offered(case["capabilities"], case["curated"], case["models"]),
|
|
1118
1123
|
case["offered"])
|
|
1119
|
-
self.
|
|
1124
|
+
self.assertEqual(source_curated_models_offered(case["capabilities"]),
|
|
1125
|
+
source_curated_models_offered(case["capabilities"], both, both))
|
|
1120
1126
|
|
|
1121
1127
|
def test_curated_models_activation_needs_both_precondition_sets(self):
|
|
1122
1128
|
curated = {name: True for name in SOURCE_CURATED_ACTIVATION_PRECONDITIONS}
|
|
@@ -160,9 +160,10 @@ class CuratedModelsRunTests(SourceRunTestCase):
|
|
|
160
160
|
with self.assertRaises(SourceSubmissionError) as caught:
|
|
161
161
|
self.authored(curated, models, preflight)
|
|
162
162
|
self.assertEqual(caught.exception.code, "curated_runtimes_unavailable")
|
|
163
|
-
#
|
|
163
|
+
# A release with models off refuses a run right after the preflight.
|
|
164
164
|
server = FakeSource(preflight=offering_curated_models())
|
|
165
|
-
with
|
|
165
|
+
with mock.patch.object(_source_contract, "SOURCE_MODELS_HF_V1_ENABLED", False), \
|
|
166
|
+
self.assertRaises(SourceSubmissionError):
|
|
166
167
|
self.run_workload(server)
|
|
167
168
|
self.assertEqual(self.calls(server), [PREFLIGHT])
|
|
168
169
|
self.assertEqual(self.captures(), [])
|
|
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
|