From 05730443e18268703f54d6b939e2e9d29b3844d2 Mon Sep 17 00:00:00 2001 From: Pete Date: Tue, 30 Jan 2024 12:01:15 -0800 Subject: [PATCH] Add `budget` field to experiment spec (#264) * Add `budget` field to experiment spec * Try fix tests --- CHANGELOG.md | 4 ++++ beaker/data_model/experiment_spec.py | 6 ++++++ pyproject.toml | 2 +- tests/workspace_test.py | 3 +++ 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b68740b..e5afefd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,10 @@ use patch releases for compatibility fixes instead. ## Unreleased +### Added + +- Added `budget` field to experiment spec. + ## [v1.23.0](https://github.com/allenai/beaker-py/releases/tag/v1.23.0) - 2023-12-15 ### Fixed diff --git a/beaker/data_model/experiment_spec.py b/beaker/data_model/experiment_spec.py index 470bd4e..f2430bc 100644 --- a/beaker/data_model/experiment_spec.py +++ b/beaker/data_model/experiment_spec.py @@ -700,6 +700,12 @@ class ExperimentSpec(BaseModel, frozen=False): Long-form explanation for an experiment. """ + budget: Optional[str] = None + """ + The name of the budget account for your team. + See https://beaker-docs.apps.allenai.org/concept/budgets.html for more details. + """ + @field_validator("tasks") def _validate_tasks(cls, v: List[TaskSpec]) -> List[TaskSpec]: task_names = set() diff --git a/pyproject.toml b/pyproject.toml index d784d2a..586f229 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,7 +37,7 @@ dev = [ "types-PyYAML", "black>=23.0,<24.0", "isort>=5.12,<5.13", - "pytest", + "pytest<8.0", "pytest-sphinx", "flaky", "twine>=1.11.0", diff --git a/tests/workspace_test.py b/tests/workspace_test.py index 776d375..3ccbfc7 100644 --- a/tests/workspace_test.py +++ b/tests/workspace_test.py @@ -110,15 +110,18 @@ def test_workspace_get_permissions(client: Beaker): client.workspace.get_permissions() +@pytest.mark.skip("Requires admin credentials") def test_workspace_grant_and_revoke_permissions(client: Beaker, alternate_user: Account): client.workspace.grant_permissions(Permission.read, alternate_user) client.workspace.revoke_permissions(alternate_user) +@pytest.mark.skip("Requires admin credentials") def test_workspace_set_visibility(client: Beaker): client.workspace.set_visibility(public=False) +@pytest.mark.skip("Requires admin credentials") def test_workspace_set_visibility_archived(client: Beaker, archived_workspace_name: str): client.workspace.set_visibility(public=False, workspace=archived_workspace_name)