Skip to content

Commit a0c20d7

Browse files
committed
refactor: add type hints to datastore_utils
1 parent ea3c902 commit a0c20d7

File tree

1 file changed

+28
-15
lines changed

1 file changed

+28
-15
lines changed

ckanext/datapusher_plus/datastore_utils.py

Lines changed: 28 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,15 @@
1414
class DatastoreEncoder(json.JSONEncoder):
1515
"""Custom JSON encoder for datastore values."""
1616

17-
def default(self, obj):
17+
def default(self, obj: object) -> object:
1818
if isinstance(obj, datetime.datetime):
1919
return obj.isoformat()
2020
if isinstance(obj, decimal.Decimal):
2121
return str(obj)
2222
return json.JSONEncoder.default(self, obj)
2323

2424

25-
def delete_datastore_resource(resource_id):
25+
def delete_datastore_resource(resource_id: str) -> None:
2626
"""Delete a resource from datastore."""
2727
try:
2828
tk.get_action("datastore_delete")(
@@ -32,7 +32,7 @@ def delete_datastore_resource(resource_id):
3232
raise utils.JobError("Deleting existing datastore failed.")
3333

3434

35-
def delete_resource(resource_id):
35+
def delete_resource(resource_id: str) -> None:
3636
"""Delete a resource from CKAN."""
3737
try:
3838
tk.get_action("resource_delete")(
@@ -42,7 +42,7 @@ def delete_resource(resource_id):
4242
raise utils.JobError("Deleting existing resource failed.")
4343

4444

45-
def datastore_resource_exists(resource_id):
45+
def datastore_resource_exists(resource_id: str) -> dict:
4646
"""Check if a resource exists in datastore."""
4747
data_dict = {
4848
"resource_id": resource_id,
@@ -56,12 +56,17 @@ def datastore_resource_exists(resource_id):
5656
result = tk.get_action("datastore_search")(context, data_dict)
5757
return result
5858
except tk.ObjectNotFound:
59-
return False
59+
return None
6060

6161

6262
def send_resource_to_datastore(
63-
resource, resource_id, headers, records, aliases, calculate_record_count
64-
):
63+
resource: dict,
64+
resource_id: str,
65+
headers: list,
66+
records: list,
67+
aliases: list,
68+
calculate_record_count: bool,
69+
) -> dict:
6570
"""Store records in CKAN datastore."""
6671
if resource_id:
6772
# used to create the "main" resource
@@ -91,7 +96,7 @@ def send_resource_to_datastore(
9196
raise utils.JobError("Error sending data to datastore ({!s}).".format(e))
9297

9398

94-
def upload_resource(new_resource, file):
99+
def upload_resource(new_resource: dict, file: str) -> None:
95100
"""Upload a new resource to CKAN."""
96101
site_user = tk.get_action("get_site_user")({"ignore_auth": True}, {})
97102
context = {
@@ -109,7 +114,7 @@ def upload_resource(new_resource, file):
109114
raise utils.JobError("Creating resource failed.")
110115

111116

112-
def update_resource(resource):
117+
def update_resource(resource: dict) -> None:
113118
"""Update resource metadata."""
114119
site_user = tk.get_action("get_site_user")({"ignore_auth": True}, {})
115120
context = {"ignore_auth": True, "user": site_user["name"], "auth_user_obj": None}
@@ -119,23 +124,23 @@ def update_resource(resource):
119124
raise utils.JobError("Updating existing resource failed.")
120125

121126

122-
def get_resource(resource_id):
127+
def get_resource(resource_id: str) -> dict:
123128
"""Get available information about the resource from CKAN."""
124129
resource_dict = tk.get_action("resource_show")(
125130
{"ignore_auth": True}, {"id": resource_id}
126131
)
127132
return resource_dict
128133

129134

130-
def get_package(package_id):
135+
def get_package(package_id: str) -> dict:
131136
"""Get available information about a package from CKAN."""
132137
dataset_dict = tk.get_action("package_show")(
133138
{"ignore_auth": True}, {"id": package_id}
134139
)
135140
return dataset_dict
136141

137142

138-
def resource_exists(package_id, resource_name):
143+
def resource_exists(package_id: str, resource_name: str) -> tuple[bool, str | None]:
139144
"""
140145
Check if a resource name exists in a package.
141146
Returns:
@@ -151,15 +156,21 @@ def resource_exists(package_id, resource_name):
151156
return False, None
152157

153158

154-
def patch_package(package):
159+
def patch_package(package: dict) -> dict:
155160
"""Patch package metadata."""
156161
site_user = tk.get_action("get_site_user")({"ignore_auth": True}, {})
157162
context = {"ignore_auth": True, "user": site_user["name"], "auth_user_obj": None}
158163
patched_package = tk.get_action("package_patch")(context, package)
159164
return patched_package
160165

161166

162-
def revise_package(package_id, match=None, filter=None, update=None, include=None):
167+
def revise_package(
168+
package_id: str,
169+
match: dict | None = None,
170+
filter: list | None = None,
171+
update: dict | None = None,
172+
include: list | None = None,
173+
) -> dict:
163174
"""
164175
Revise package metadata using the package_revise action API.
165176
@@ -196,7 +207,9 @@ def revise_package(package_id, match=None, filter=None, update=None, include=Non
196207
return revised_package
197208

198209

199-
def get_scheming_yaml(package_id, scheming_yaml_type="dataset"):
210+
def get_scheming_yaml(
211+
package_id: str, scheming_yaml_type: str = "dataset"
212+
) -> tuple[dict, dict]:
200213
"""Get the scheming yaml for a package."""
201214
package = get_package(package_id)
202215
if not package:

0 commit comments

Comments
 (0)