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.
Files changed (53) hide show
  1. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/PKG-INFO +2 -2
  2. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/README.md +1 -1
  3. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/pyproject.toml +1 -1
  4. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_contract.py +3 -3
  5. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu.egg-info/PKG-INFO +2 -2
  6. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_contract.py +10 -4
  7. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_curated_run.py +3 -2
  8. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/setup.cfg +0 -0
  9. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/UNICODE-LICENSE.txt +0 -0
  10. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/__init__.py +0 -0
  11. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/__main__.py +0 -0
  12. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_admission.py +0 -0
  13. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_capture.py +0 -0
  14. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_casefold.json +0 -0
  15. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_credits.py +0 -0
  16. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_errors.py +0 -0
  17. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_history.py +0 -0
  18. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_interfaces.py +0 -0
  19. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_job.py +0 -0
  20. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_outputs.py +0 -0
  21. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_public.py +0 -0
  22. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_release.py +0 -0
  23. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_results.py +0 -0
  24. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_run.py +0 -0
  25. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_submission.py +0 -0
  26. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/_source_transfer.py +0 -0
  27. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/cli.py +0 -0
  28. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/cli_auth.py +0 -0
  29. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/client.py +0 -0
  30. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu/errors.py +0 -0
  31. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu.egg-info/SOURCES.txt +0 -0
  32. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu.egg-info/dependency_links.txt +0 -0
  33. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu.egg-info/entry_points.txt +0 -0
  34. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu.egg-info/requires.txt +0 -0
  35. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/src/gridlinegpu.egg-info/top_level.txt +0 -0
  36. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_cli.py +0 -0
  37. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_cli_auth.py +0 -0
  38. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_client.py +0 -0
  39. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_client_source.py +0 -0
  40. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_admission.py +0 -0
  41. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_canary.py +0 -0
  42. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_capture.py +0 -0
  43. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_capture_gaps.py +0 -0
  44. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_credits.py +0 -0
  45. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_errors.py +0 -0
  46. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_history.py +0 -0
  47. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_job.py +0 -0
  48. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_job_results.py +0 -0
  49. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_release.py +0 -0
  50. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_results.py +0 -0
  51. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_run.py +0 -0
  52. {gridlinegpu-0.1.6 → gridlinegpu-0.1.7}/tests/test_source_submission.py +0 -0
  53. {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.6
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.6,<0.2'
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.6,<0.2'
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
  ```
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "gridlinegpu"
7
- version = "0.1.6"
7
+ version = "0.1.7"
8
8
  description = "Python client for Gridline YAML workload routing"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -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 = False
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": False, "imageAllowanceRegistered": True,
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": False,
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.6
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.6,<0.2'
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
- self.assertFalse(source_models_activation_allowed(True))
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
- self.assertNotIn(SOURCE_CURATED_MODELS_VERSION_TUPLE, SOURCE_VERSION_TUPLES)
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
- self.assertEqual(check_source_version_tuple(case["tuple"]), case["expectedProduction"])
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.assertFalse(source_curated_models_offered(case["capabilities"]))
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
- # This release: both off, so a run is refused right after the preflight.
163
+ # A release with models off refuses a run right after the preflight.
164
164
  server = FakeSource(preflight=offering_curated_models())
165
- with self.assertRaises(SourceSubmissionError):
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