Skip to content

Commit

Permalink
merge master and tests changes
Browse files Browse the repository at this point in the history
  • Loading branch information
Nathanjp91 committed Nov 13, 2023
2 parents 75f2e4a + f1b8f3c commit ab47096
Show file tree
Hide file tree
Showing 25 changed files with 668 additions and 271 deletions.
9 changes: 8 additions & 1 deletion darwin/future/core/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,12 @@
from requests.adapters import HTTPAdapter, Retry

from darwin.future.core.types.common import JSONType, QueryString
from darwin.future.exceptions import NotFound, Unauthorized, UnprocessibleEntity
from darwin.future.exceptions import (
BadRequest,
NotFound,
Unauthorized,
UnprocessibleEntity,
)


class TeamsConfig(BaseModel):
Expand Down Expand Up @@ -235,6 +240,8 @@ def raise_for_darwin_exception(response: requests.Response) -> None:
"""
if response.status_code == 200:
return
if response.status_code == 400:
raise BadRequest(response)
if response.status_code == 401:
raise Unauthorized(response)
if response.status_code == 404:
Expand Down
31 changes: 17 additions & 14 deletions darwin/future/core/items/archive_items.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
from __future__ import annotations

from typing import Dict, List
from uuid import UUID

from darwin.future.core.client import ClientCore
from darwin.future.core.types.common import JSONType
from darwin.future.data_objects.typing import UnknownType


def archive_list_of_items(
api_client: ClientCore,
client: ClientCore,
team_slug: str,
dataset_id: int,
item_ids: List[UUID],
dataset_ids: int | List[int],
filters: Dict[str, UnknownType] = {},
) -> JSONType:
"""
Expand All @@ -19,26 +19,29 @@ def archive_list_of_items(
Parameters
----------
client: Client
The client to use for the request
The client to use for the request.
team_slug: str
The slug of the team containing the items
dataset_id: int
The ID of the dataset containing the items
item_ids: List[UUID]
The IDs of the items to be archived
The slug of the team containing the items.
dataset_ids: int | List[int]
The ID(s) of the dataset(s) containing the items.
filters: Dict[str, UnknownType]
Dataset filter parameters
Filter parameters.
Returns
-------
JSONType
The response data.
"""
assert (
filters
), "No parameters provided, please provide at least one non-dataset id filter"
payload = {
"filters": {
"dataset_ids": [dataset_id],
"item_ids": [str(item_id) for item_id in item_ids],
"dataset_ids": dataset_ids
if isinstance(dataset_ids, list)
else [dataset_ids],
**filters,
}
}

return api_client.post(f"/v2/teams/{team_slug}/items/archive", data=payload)
return client.post(f"/v2/teams/{team_slug}/items/archive", data=payload)
18 changes: 8 additions & 10 deletions darwin/future/core/items/delete_items.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@


def delete_list_of_items(
api_client: ClientCore,
client: ClientCore,
team_slug: str,
dataset_ids: int | list[int] | Literal["all"],
item_ids: List[UUID],
Expand All @@ -21,19 +21,18 @@ def delete_list_of_items(
Parameters
----------
client: Client
The client to use for the request
The client to use for the request.
team_slug: str
The slug of the team containing the items
dataset_id: int
The ID of the dataset containing the items
item_ids: List[UUID]
The IDs of the items to be deleted
The slug of the team containing the items.
dataset_ids: int | List[int]
The ID(s) of the dataset(s) containing the items.
filters: Dict[str, UnknownType]
Dataset filter parameters
Filter parameters
Returns
-------
JSONType
The response data.
"""
payload = {
"filters": {
Expand All @@ -44,5 +43,4 @@ def delete_list_of_items(
**filters,
}
}

return api_client.delete(f"/v2/teams/{team_slug}/items", data=payload)
return client.delete(f"/v2/teams/{team_slug}/items", data=payload)
55 changes: 32 additions & 23 deletions darwin/future/core/items/move_items.py
Original file line number Diff line number Diff line change
@@ -1,47 +1,56 @@
from typing import List
from __future__ import annotations

from typing import Dict, List
from uuid import UUID

from darwin.future.core.client import ClientCore
from darwin.future.core.types.common import JSONType
from darwin.future.data_objects.typing import UnknownType


def move_items_to_stage(
api_client: ClientCore,
client: ClientCore,
team_slug: str,
workflow_id: UUID,
dataset_id: int,
dataset_ids: int | List[int],
stage_id: UUID,
item_ids: List[UUID],
filters: Dict[str, UnknownType] = {},
) -> JSONType:
"""
Moves a list of items to a stage
Parameters
----------
client: Client
The client to use for the request
The client to use for the request.
team_slug: str
The slug of the team to move items for
dataset_id: str
The id or slug of the dataset to move items for
stage_id: str
The id or slug of the stage to move items to
item_ids: List[UUID]
A list of item ids to move to the stage
The slug of the team to move items for.
workflow_id: UUID
The id of the workflow to move items for.
dataset_ids: int | List[int]
The ID(s) of the dataset(s) containing the items.
stage_id: UUID
The id of the workflow to move items for.
filters: Dict[str, UnknownType]
Filter parameters.
Returns
-------
JSONType
The response data.
"""

return api_client.post(
f"/v2/teams/{team_slug}/items/stage",
{
"filters": {
"dataset_ids": [dataset_id],
"item_ids": [str(id) for id in item_ids],
},
"stage_id": str(stage_id),
"workflow_id": str(workflow_id),
assert (
filters
), "No parameters provided, please provide at least one non-dataset id filter"
payload = {
"filters": {
"dataset_ids": dataset_ids
if isinstance(dataset_ids, list)
else [dataset_ids],
**filters,
},
)
"stage_id": str(stage_id),
"workflow_id": str(workflow_id),
}

return client.post(f"/v2/teams/{team_slug}/items/stage", data=payload)
50 changes: 50 additions & 0 deletions darwin/future/core/items/move_items_to_folder.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
from __future__ import annotations

from typing import Dict, List

from darwin.future.core.client import ClientCore
from darwin.future.core.types.common import JSONType
from darwin.future.data_objects.typing import UnknownType


def move_list_of_items_to_folder(
client: ClientCore,
team_slug: str,
dataset_ids: int | List[int],
path: str,
filters: Dict[str, UnknownType] = {},
) -> JSONType:
"""
Move specified items to a folder
Parameters
----------
client: Client
The client to use for the request.
team_slug: str
The slug of the team containing the items.
dataset_ids: int | List[int]
The ID(s) of the dataset(s) containing the items.
path: str
The path to the folder to move the items to.
filters: Dict[str, UnknownType]
Filter parameters.
Returns
-------
JSONType
The response data.
"""
assert (
filters
), "No parameters provided, please provide at least one non-dataset id filter"
payload = {
"filters": {
"dataset_ids": dataset_ids
if isinstance(dataset_ids, list)
else [dataset_ids],
**filters,
}
}

return client.post(f"/v2/teams/{team_slug}/items/path", data=payload)
31 changes: 17 additions & 14 deletions darwin/future/core/items/restore_items.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
from __future__ import annotations

from typing import Dict, List
from uuid import UUID

from darwin.future.core.client import ClientCore
from darwin.future.core.types.common import JSONType
from darwin.future.data_objects.typing import UnknownType


def restore_list_of_items(
api_client: ClientCore,
client: ClientCore,
team_slug: str,
dataset_id: int,
item_ids: List[UUID],
dataset_ids: int | List[int],
filters: Dict[str, UnknownType] = {},
) -> JSONType:
"""
Expand All @@ -19,26 +19,29 @@ def restore_list_of_items(
Parameters
----------
client: Client
The client to use for the request
The client to use for the request.
team_slug: str
The slug of the team containing the items
dataset_id: int
The ID of the dataset containing the items
item_ids: List[UUID]
The IDs of the items to be restored
The slug of the team containing the items.
dataset_ids: int | List[int]
The ID(s) of the dataset(s) containing the items.
filters: Dict[str, UnknownType]
Dataset filter parameters
Filter parameters.
Returns
-------
JSONType
The response data.
"""
assert (
filters
), "No parameters provided, please provide at least one non-dataset id filter"
payload = {
"filters": {
"dataset_ids": [dataset_id],
"item_ids": [str(item_id) for item_id in item_ids],
"dataset_ids": dataset_ids
if isinstance(dataset_ids, list)
else [dataset_ids],
**filters,
}
}

return api_client.post(f"/v2/teams/{team_slug}/items/restore", data=payload)
return client.post(f"/v2/teams/{team_slug}/items/restore", data=payload)
44 changes: 44 additions & 0 deletions darwin/future/core/items/set_item_layout.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
from __future__ import annotations

from typing import Dict

from darwin.future.core.client import ClientCore
from darwin.future.core.types.common import JSONType
from darwin.future.data_objects.item import ItemLayout
from darwin.future.data_objects.typing import UnknownType


def set_item_layout(
client: ClientCore,
team_slug: str,
dataset_ids: int | list[int],
layout: ItemLayout,
filters: Dict[str, UnknownType],
) -> JSONType:
"""
Set the layout of a dataset and filtered items via filters.
Args:
client (ClientCore): The Darwin Core client.
team_slug (str): The team slug.
dataset_ids (int | list[int]): The dataset ids.
layout (ItemLayout): The layout.
filters Dict[str, UnknownType]: The parameters of the filter.
Returns:
JSONType: The response data.
"""
assert (
filters
), "No parameters provided, please provide at least one non-dataset id filter"
payload = {
"filters": {
"dataset_ids": dataset_ids
if isinstance(dataset_ids, list)
else [dataset_ids],
**filters,
},
"layout": dict(layout),
}

return client.post(f"/v2/teams/{team_slug}/items/layout", data=payload)
Loading

0 comments on commit ab47096

Please sign in to comment.