Skip to content

Commit b1e5685

Browse files
authored
Merge pull request #121 from oslokommune/auto-create-edition
Add `Dataset.auto_create_edition`
2 parents f61250d + e1aa255 commit b1e5685

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## ?.?.?
2+
3+
* New method `Dataset.auto_create_edition` for creating a new edition with an
4+
automatic name based on the current time.
5+
16
## 3.0.0
27

38
* Added support for Python 3.12.

okdata/sdk/data/dataset.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import logging
22
import re
3+
from datetime import datetime
34

45
from okdata.sdk import SDK
56

@@ -99,6 +100,20 @@ def create_edition(self, datasetid, versionid, data, retries=0):
99100
log.info(f"SDK:Created dataset edition: {editionid} on {datasetid}/{versionid}")
100101
return body
101102

103+
def auto_create_edition(self, datasetid, versionid):
104+
"""Create an automatically named edition for the given dataset version.
105+
106+
Return the name of the newly created edition.
107+
"""
108+
data = {
109+
"edition": datetime.now().astimezone().replace(microsecond=0).isoformat(),
110+
"description": f"Auto-created edition for {datasetid}/{versionid}",
111+
}
112+
log.info(f"Creating new edition for {datasetid}/{versionid} with data: {data}")
113+
edition = self.create_edition(datasetid, versionid, data)
114+
log.info(f"Created edition: {edition}")
115+
return edition
116+
102117
def get_editions(self, datasetid, versionid, retries=0):
103118
datasetUrl = self.config.get("datasetUrl")
104119
url = f"{datasetUrl}/{datasetid}/versions/{versionid}/editions"

tests/data/dataset_test.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,16 @@ def test_createDatasetVersionEdition(self, requests_mock):
163163
edition = ds.create_edition("test-dataset-createdataset-edition", 1, {})
164164
assert edition["Id"] == "test-dataset-createdataset-edition/1/test-edition"
165165

166+
def test_auto_create_edition(self, requests_mock):
167+
ds = Dataset(config=config, auth=auth_default)
168+
response = json.dumps({"Id": "test-dataset/1/test-edition"})
169+
matcher = re.compile("datasets/test-dataset/versions/1/editions")
170+
requests_mock.register_uri("POST", matcher, text=response, status_code=200)
171+
assert (
172+
ds.auto_create_edition("test-dataset", "1")["Id"]
173+
== "test-dataset/1/test-edition"
174+
)
175+
166176
def test_getDatasetVersionEditions(self, requests_mock):
167177
ds = Dataset(config=config, auth=auth_default)
168178
response = json.dumps([{"Id": "test-dataset-get-dataset-version-editions"}])

0 commit comments

Comments
 (0)