Skip to content

Commit b32947b

Browse files
committed
Add overloads and return_id option to create_dataset
Enhanced the create_dataset fixture with type overloads and a return_id parameter to optionally return both persistentId and id. Updated type hints for improved clarity and flexibility in test usage.
1 parent d733162 commit b32947b

1 file changed

Lines changed: 30 additions & 6 deletions

File tree

tests/conftest.py

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import os
2-
import pytest
3-
import httpx
42
import random
3+
from typing import Literal, Tuple, Union, overload
4+
5+
import httpx
6+
import pytest
57

68

79
@pytest.fixture
@@ -16,11 +18,30 @@ def credentials():
1618
return BASE_URL, API_TOKEN
1719

1820

21+
@overload
1922
def create_dataset(
2023
parent: str,
2124
server_url: str,
2225
api_token: str,
23-
):
26+
return_id: Literal[False] = False,
27+
) -> str: ...
28+
29+
30+
@overload
31+
def create_dataset(
32+
parent: str,
33+
server_url: str,
34+
api_token: str,
35+
return_id: Literal[True],
36+
) -> Tuple[str, int]: ...
37+
38+
39+
def create_dataset(
40+
parent: str,
41+
server_url: str,
42+
api_token: str,
43+
return_id: bool = False,
44+
) -> Union[str, Tuple[str, int]]:
2445
"""
2546
Creates a dataset in a Dataverse.
2647
@@ -30,7 +51,7 @@ def create_dataset(
3051
api_token (str): The API token for authentication.
3152
3253
Returns:
33-
str: The persistent identifier of the created dataset.
54+
Dict: The response from the Dataverse API.
3455
"""
3556
if server_url.endswith("/"):
3657
server_url = server_url[:-1]
@@ -39,12 +60,15 @@ def create_dataset(
3960
response = httpx.post(
4061
url=url,
4162
headers={"X-Dataverse-key": api_token},
42-
data=open("./tests/fixtures/create_dataset.json", "rb"),
63+
data=open("./tests/fixtures/create_dataset.json", "rb"), # type: ignore
4364
)
4465

4566
response.raise_for_status()
4667

47-
return response.json()["data"]["persistentId"]
68+
if return_id:
69+
return response.json()["data"]["persistentId"], response.json()["data"]["id"]
70+
else:
71+
return response.json()["data"]["persistentId"]
4872

4973

5074
def create_mock_file(

0 commit comments

Comments
 (0)