sfapi-client 0.2.0__tar.gz → 0.3.1__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 (90) hide show
  1. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/PKG-INFO +1 -1
  2. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/requirements-dev.txt +4 -0
  3. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_async/client.py +4 -1
  4. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_async/compute.py +3 -2
  5. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_sync/client.py +7 -1
  6. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_sync/compute.py +3 -2
  7. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/.github/dependabot.yml +0 -0
  8. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/.github/workflows/black.yml +0 -0
  9. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/.github/workflows/mkdocs.yml +0 -0
  10. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/.github/workflows/pypi.yml +0 -0
  11. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/.github/workflows/pytest.yml +0 -0
  12. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/.github/workflows/ruff.yml +0 -0
  13. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/.gitignore +0 -0
  14. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/.pre-commit-config.yaml +0 -0
  15. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/LEGAL +0 -0
  16. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/LICENSE +0 -0
  17. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/README.md +0 -0
  18. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/community/contributing.md +0 -0
  19. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/examples/check_current_and_past_jobs.ipynb +0 -0
  20. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/examples/getting_bearer_token.ipynb +0 -0
  21. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/examples/run_job_and_check_status.ipynb +0 -0
  22. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/gen_examples.py +0 -0
  23. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/gen_sync.py +0 -0
  24. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/index.md +0 -0
  25. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/javascript/apiselector.js +0 -0
  26. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/quickstart/index.md +0 -0
  27. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/reference/SUMMARY.txt +0 -0
  28. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/reference/async/client/index.md +0 -0
  29. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/reference/async/compute/index.md +0 -0
  30. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/reference/async/exceptions/index.md +0 -0
  31. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/reference/async/groups/index.md +0 -0
  32. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/reference/async/jobs/index.md +0 -0
  33. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/reference/async/paths/index.md +0 -0
  34. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/reference/async/projects/index.md +0 -0
  35. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/reference/async/resources/index.md +0 -0
  36. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/docs/reference/async/users/index.md +0 -0
  37. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/mkdocs.yml +0 -0
  38. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/pyproject.toml +0 -0
  39. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/pytest.ini +0 -0
  40. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/scripts/run.py +0 -0
  41. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/__init__.py +0 -0
  42. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_async/__init__.py +0 -0
  43. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_async/groups.py +0 -0
  44. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_async/jobs.py +0 -0
  45. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_async/paths.py +0 -0
  46. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_async/projects.py +0 -0
  47. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_async/users.py +0 -0
  48. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_compute.py +0 -0
  49. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_jobs.py +0 -0
  50. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_models/__init__.py +0 -0
  51. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_models/job_status_response_sacct.py +0 -0
  52. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_models/job_status_response_squeue.py +0 -0
  53. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_models/resources.py +0 -0
  54. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_monitor.py +0 -0
  55. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_sync/__init__.py +0 -0
  56. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_sync/groups.py +0 -0
  57. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_sync/jobs.py +0 -0
  58. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_sync/paths.py +0 -0
  59. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_sync/projects.py +0 -0
  60. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_sync/users.py +0 -0
  61. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/_utils.py +0 -0
  62. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/client.py +0 -0
  63. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/compute.py +0 -0
  64. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/exceptions.py +0 -0
  65. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/groups.py +0 -0
  66. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/jobs.py +0 -0
  67. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/paths.py +0 -0
  68. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/projects.py +0 -0
  69. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/resources.py +0 -0
  70. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/src/sfapi_client/users.py +0 -0
  71. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/conftest.py +0 -0
  72. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_api.py +0 -0
  73. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_api_async.py +0 -0
  74. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_client.py +0 -0
  75. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_client_async.py +0 -0
  76. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_compute.py +0 -0
  77. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_compute_async.py +0 -0
  78. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_groups.py +0 -0
  79. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_groups_async.py +0 -0
  80. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_jobs.py +0 -0
  81. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_jobs_async.py +0 -0
  82. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_key.py +0 -0
  83. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_paths.py +0 -0
  84. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_paths_async.py +0 -0
  85. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_projects.py +0 -0
  86. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_projects_async.py +0 -0
  87. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_resources.py +0 -0
  88. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_resources_async.py +0 -0
  89. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_users.py +0 -0
  90. {sfapi_client-0.2.0 → sfapi_client-0.3.1}/tests/test_users_async.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: sfapi_client
3
- Version: 0.2.0
3
+ Version: 0.3.1
4
4
  Summary: Python client for NERSC SF API
5
5
  Author-email: Chris Harris <cjh@lbl.gov>, Nicholas Tyler <tylern@lbl.gov>
6
6
  License-File: LICENSE
@@ -6,3 +6,7 @@ pytest-asyncio
6
6
  pytest-mock
7
7
  mkdocs-jupyter
8
8
  datamodel-code-generator[http]
9
+ cryptography
10
+ authlib
11
+ tenacity
12
+ pydantic_settings
@@ -382,12 +382,15 @@ class AsyncClient:
382
382
  wait=tenacity.wait_exponential(max=MAX_RETRY),
383
383
  stop=tenacity.stop_after_attempt(MAX_RETRY),
384
384
  )
385
- async def post(self, url: str, data: Dict[str, Any]) -> httpx.Response:
385
+ async def post(
386
+ self, url: str, data: Dict[str, Any] = None, json: Dict[str, Any] = None
387
+ ) -> httpx.Response:
386
388
  client = await self._http_client()
387
389
 
388
390
  r = await client.post(
389
391
  f"{self._api_base_url}/{url}",
390
392
  data=data,
393
+ json=json,
391
394
  )
392
395
  r.raise_for_status()
393
396
 
@@ -58,10 +58,11 @@ class AsyncCompute(ComputeBase):
58
58
  json_response = r.json()
59
59
  task = Task.model_validate(json_response)
60
60
 
61
- if task.status.lower() in ["error", "failed"]:
61
+ status = task.status.lower()
62
+ if status in ["error", "failed"]:
62
63
  raise SfApiError(task.result)
63
64
 
64
- if task.result is None:
65
+ if status not in ["completed", "cancelled"]:
65
66
  await _ASYNC_SLEEP(1)
66
67
  continue
67
68
 
@@ -382,12 +382,18 @@ class Client:
382
382
  wait=tenacity.wait_exponential(max=MAX_RETRY),
383
383
  stop=tenacity.stop_after_attempt(MAX_RETRY),
384
384
  )
385
- def post(self, url: str, data: Dict[str, Any]) -> httpx.Response:
385
+ def post(
386
+ self,
387
+ url: str,
388
+ data: Dict[str, Any] = None,
389
+ json: Dict[str, Any] = None
390
+ ) -> httpx.Response:
386
391
  client = self._http_client()
387
392
 
388
393
  r = client.post(
389
394
  f"{self._api_base_url}/{url}",
390
395
  data=data,
396
+ json=json,
391
397
  )
392
398
  r.raise_for_status()
393
399
 
@@ -58,10 +58,11 @@ class Compute(ComputeBase):
58
58
  json_response = r.json()
59
59
  task = Task.model_validate(json_response)
60
60
 
61
- if task.status.lower() in ["error", "failed"]:
61
+ status = task.status.lower()
62
+ if status in ["error", "failed"]:
62
63
  raise SfApiError(task.result)
63
64
 
64
- if task.result is None:
65
+ if status not in ["completed", "cancelled"]:
65
66
  _SLEEP(1)
66
67
  continue
67
68
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes