beaker-py 2.7.0__tar.gz → 2.7.2__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 (38) hide show
  1. {beaker_py-2.7.0 → beaker_py-2.7.2}/PKG-INFO +5 -3
  2. {beaker_py-2.7.0 → beaker_py-2.7.2}/README.md +3 -1
  3. {beaker_py-2.7.0 → beaker_py-2.7.2}/pyproject.toml +1 -1
  4. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/_service_client.py +10 -0
  5. beaker_py-2.7.2/src/beaker/beaker_pb2.py +1752 -0
  6. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/beaker_pb2.pyi +394 -129
  7. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/beaker_pb2_grpc.py +400 -13
  8. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/client.py +2 -0
  9. beaker_py-2.7.2/src/beaker/version.py +1 -0
  10. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker_py.egg-info/PKG-INFO +5 -3
  11. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker_py.egg-info/requires.txt +1 -1
  12. beaker_py-2.7.0/src/beaker/beaker_pb2.py +0 -1646
  13. beaker_py-2.7.0/src/beaker/version.py +0 -1
  14. {beaker_py-2.7.0 → beaker_py-2.7.2}/setup.cfg +0 -0
  15. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/__init__.py +0 -0
  16. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/_cluster.py +0 -0
  17. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/_dataset.py +0 -0
  18. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/_deprecations.py +0 -0
  19. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/_experiment.py +0 -0
  20. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/_group.py +0 -0
  21. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/_image.py +0 -0
  22. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/_job.py +0 -0
  23. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/_node.py +0 -0
  24. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/_organization.py +0 -0
  25. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/_queue.py +0 -0
  26. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/_secret.py +0 -0
  27. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/_user.py +0 -0
  28. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/_workload.py +0 -0
  29. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/_workspace.py +0 -0
  30. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/common.py +0 -0
  31. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/config.py +0 -0
  32. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/exceptions.py +0 -0
  33. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/py.typed +0 -0
  34. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/types.py +0 -0
  35. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker/utils.py +0 -0
  36. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker_py.egg-info/SOURCES.txt +0 -0
  37. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker_py.egg-info/dependency_links.txt +0 -0
  38. {beaker_py-2.7.0 → beaker_py-2.7.2}/src/beaker_py.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beaker-py
3
- Version: 2.7.0
3
+ Version: 2.7.2
4
4
  Summary: A Python Beaker client
5
5
  Author-email: Allen Institute for Artificial Intelligence <contact@allenai.org>, Pete Walsh <petew@allenai.org>
6
6
  Project-URL: Homepage, https://github.com/allenai/beaker
@@ -21,7 +21,7 @@ Requires-Dist: google-crc32c
21
21
  Provides-Extra: docker
22
22
  Requires-Dist: docker<8.0,>=5.0; extra == "docker"
23
23
  Provides-Extra: dev
24
- Requires-Dist: ruff; extra == "dev"
24
+ Requires-Dist: ruff<0.16,>=0.15; extra == "dev"
25
25
  Requires-Dist: mypy<1.6,>=1.0; extra == "dev"
26
26
  Requires-Dist: types-requests; extra == "dev"
27
27
  Requires-Dist: types-cachetools; extra == "dev"
@@ -186,7 +186,9 @@ See the [integration tests](https://github.com/allenai/beaker/tree/main/bindings
186
186
 
187
187
  ## Development
188
188
 
189
- After [installing from source](#installing-from-source), you can run checks and tests locally with:
189
+ After [installing from source](#installing-from-source), set BEAKER_TOKEN in your environment.
190
+
191
+ Then, you can run checks and tests locally with:
190
192
 
191
193
  ```bash
192
194
  make checks
@@ -145,7 +145,9 @@ See the [integration tests](https://github.com/allenai/beaker/tree/main/bindings
145
145
 
146
146
  ## Development
147
147
 
148
- After [installing from source](#installing-from-source), you can run checks and tests locally with:
148
+ After [installing from source](#installing-from-source), set BEAKER_TOKEN in your environment.
149
+
150
+ Then, you can run checks and tests locally with:
149
151
 
150
152
  ```bash
151
153
  make checks
@@ -32,7 +32,7 @@ docker = [
32
32
  "docker>=5.0,<8.0",
33
33
  ]
34
34
  dev = [
35
- "ruff",
35
+ "ruff>=0.15,<0.16",
36
36
  "mypy>=1.0,<1.6",
37
37
  "types-requests",
38
38
  "types-cachetools",
@@ -224,6 +224,12 @@ class ServiceClient:
224
224
  if status_code == 400 and msg is not None and "already in use" in msg:
225
225
  status_code = 409
226
226
 
227
+ # A native 409 is a transient serialization/deadlock conflict
228
+ # (service/error.go), not a name conflict, so retry it instead of
229
+ # surfacing e.g. BeakerExperimentConflict.
230
+ if status_code == 409 and msg == "a retryable database conflict occurred":
231
+ raise BeakerServerError(msg)
232
+
227
233
  if exceptions_for_status is not None and status_code in exceptions_for_status:
228
234
  raise exceptions_for_status[status_code]
229
235
 
@@ -246,6 +252,10 @@ class ServiceClient:
246
252
  # We assume HEAD and GET calls won't modify state, so they're
247
253
  # safe to retry for any recoverable error.
248
254
  make_request = self._retriable()(make_request)
255
+ else:
256
+ # Other methods only retry transient serialization conflicts; the
257
+ # aborted transaction rolled back, so replaying is safe.
258
+ make_request = self._retriable(recoverable_errors=(BeakerServerError,))(make_request)
249
259
 
250
260
  with self.beaker.http_session() as session:
251
261
  return make_request(session)