Skip to content

Commit 0f402f5

Browse files
authored
HDXDSYS-2641 Ensure package_hxl_update and QuickCharts arguments are noops in HDX Python API (#103)
* Remove all usages of package_hxl_update * QuickCharts noop * Fix name * Fix infer arguments * Add missing import * Probably should handle Optional[bool] * Actually don't need to handle Optional[bool] here as not one of Configuration's parameters
1 parent c498f06 commit 0f402f5

8 files changed

Lines changed: 26 additions & 643 deletions

File tree

src/hdx/data/dataset.py

Lines changed: 15 additions & 354 deletions
Large diffs are not rendered by default.

src/hdx/facades/infer_arguments.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from collections.abc import Callable
66
from inspect import getdoc
77
from pathlib import Path
8-
from typing import Any
8+
from typing import Any, Optional # noqa: F401
99

1010
import defopt
1111
from hdx.utilities.easy_logging import setup_logging

tests/hdx/api/test_ckan.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -168,9 +168,7 @@ def create_resource():
168168
for i in range(10):
169169
create_resource()
170170

171-
dataset.create_in_hdx(
172-
hxl_update=False, updated_by_script="hdx_python_api_ignore"
173-
)
171+
dataset.create_in_hdx(updated_by_script="hdx_python_api_ignore")
174172

175173
# check created dataset
176174
dataset = Dataset.read_from_hdx(name)
@@ -219,7 +217,7 @@ def create_resource():
219217
dataset.add_update_resources(resources)
220218

221219
sleep(2)
222-
dataset.update_in_hdx(hxl_update=False, remove_additional_resources=True)
220+
dataset.update_in_hdx(remove_additional_resources=True)
223221
sleep(2)
224222

225223
# check updated dataset
@@ -264,7 +262,6 @@ def create_resource():
264262

265263
sleep(2)
266264
dataset.create_in_hdx(
267-
hxl_update=False,
268265
remove_additional_resources=True,
269266
keys_to_delete=("caveats",),
270267
)

tests/hdx/data/test_dataset_core.py

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -170,19 +170,6 @@ def mockall(url, datadict):
170170
)
171171

172172

173-
def mockhxlupdate(url, datadict):
174-
if "hxl" not in url:
175-
return MockResponse(
176-
404,
177-
'{"success": false, "error": {"message": "TEST ERROR: Not HXL Update", "__type": "TEST ERROR: Not HXL Update Error"}, "help": "http://test-data.humdata.org/api/3/action/help_show?name=package_hxl_update"}',
178-
)
179-
result = json.dumps(hxlupdate_list)
180-
return MockResponse(
181-
200,
182-
f'{{"success": true, "result": {result}, "help": "http://test-data.humdata.org/api/3/action/help_show?name=package_hxl_update"}}',
183-
)
184-
185-
186173
class TestDatasetCore:
187174
@pytest.fixture(scope="class")
188175
def static_yaml(self, configfolder):
@@ -244,8 +231,6 @@ def post(url, data, headers, files, allow_redirects, auth=None):
244231
return vocabulary_mockshow(url, datadict)
245232
if "show" in url:
246233
return dataset_mockshow(url, datadict)
247-
if "hxl" in url:
248-
return mockhxlupdate(url, datadict)
249234
if "default" in url:
250235
result = json.dumps(resource_view_list)
251236
return MockResponse(
@@ -331,8 +316,6 @@ def post(url, data, headers, files, allow_redirects, auth=None):
331316
return vocabulary_mockshow(url, datadict)
332317
if "show" in url:
333318
return dataset_mockshow(url, datadict)
334-
if "hxl" in url:
335-
return mockhxlupdate(url, datadict)
336319
if "resource" in url:
337320
resultdictcopy = copy.deepcopy(resources_data[0])
338321
merge_two_dictionaries(resultdictcopy, datadict)
@@ -386,8 +369,6 @@ def post(url, data, headers, files, allow_redirects, auth=None):
386369
datadict = json.loads(decodedata)
387370
if "show" in url:
388371
return dataset_mockshow(url, datadict)
389-
if "hxl" in url:
390-
return mockhxlupdate(url, datadict)
391372
if "reorder" not in url:
392373
return MockResponse(
393374
404,

tests/hdx/data/test_dataset_noncore.py

Lines changed: 8 additions & 150 deletions
Original file line numberDiff line numberDiff line change
@@ -717,195 +717,53 @@ def test_set_quickchart_resource(self, configuration):
717717
dataset = Dataset(datasetdata)
718718
assert "dataset_preview" not in dataset
719719
assert (
720-
dataset.set_quickchart_resource("3d777226-96aa-4239-860a-703389d16d1f")[
721-
"id"
722-
]
720+
dataset.set_preview_resource("3d777226-96aa-4239-860a-703389d16d1f")["id"]
723721
== "3d777226-96aa-4239-860a-703389d16d1f"
724722
)
725723
assert dataset["dataset_preview"] == "resource_id"
726724
resources = dataset.get_resources()
727725
assert resources[0]["dataset_preview_enabled"] == "False"
728726
assert resources[1]["dataset_preview_enabled"] == "True"
729727
assert (
730-
dataset.set_quickchart_resource(resources[0])["id"]
728+
dataset.set_preview_resource(resources[0])["id"]
731729
== "de6549d8-268b-4dfe-adaf-a4ae5c8510d5"
732730
)
733731
assert resources[0]["dataset_preview_enabled"] == "True"
734732
assert resources[1]["dataset_preview_enabled"] == "False"
735733
assert (
736-
dataset.set_quickchart_resource(resources[1].data)["id"]
734+
dataset.set_preview_resource(resources[1].data)["id"]
737735
== "3d777226-96aa-4239-860a-703389d16d1f"
738736
)
739737
assert resources[0]["dataset_preview_enabled"] == "False"
740738
assert resources[1]["dataset_preview_enabled"] == "True"
741739
assert (
742-
dataset.set_quickchart_resource(0)["id"]
740+
dataset.set_preview_resource(0)["id"]
743741
== "de6549d8-268b-4dfe-adaf-a4ae5c8510d5"
744742
)
745743
assert resources[0]["dataset_preview_enabled"] == "True"
746744
assert resources[1]["dataset_preview_enabled"] == "False"
747-
assert dataset.set_quickchart_resource("12345") is None
745+
assert dataset.set_preview_resource("12345") is None
748746
with pytest.raises(HDXError):
749-
dataset.set_quickchart_resource(True)
747+
dataset.set_preview_resource(True)
750748
dataset.preview_off()
751749
assert dataset["dataset_preview"] == "no_preview"
752750
assert resources[0]["dataset_preview_enabled"] == "False"
753751
assert resources[1]["dataset_preview_enabled"] == "False"
754752
assert (
755-
dataset.set_quickchart_resource("Resource2")["id"]
753+
dataset.set_preview_resource("Resource2")["id"]
756754
== "3d777226-96aa-4239-860a-703389d16d1f"
757755
)
758756
assert dataset["dataset_preview"] == "resource_id"
759757
assert resources[0]["dataset_preview_enabled"] == "False"
760758
assert resources[1]["dataset_preview_enabled"] == "True"
761759
assert (
762-
dataset.set_quickchart_resource({"name": "Resource1"})["id"]
760+
dataset.set_preview_resource({"name": "Resource1"})["id"]
763761
== "de6549d8-268b-4dfe-adaf-a4ae5c8510d5"
764762
)
765763
assert dataset["dataset_preview"] == "resource_id"
766764
assert resources[0]["dataset_preview_enabled"] == "True"
767765
assert resources[1]["dataset_preview_enabled"] == "False"
768766

769-
def test_quickcharts_resource_last(self, configuration):
770-
datasetdata = copy.deepcopy(dataset_data)
771-
resourcesdata = copy.deepcopy(resources_data)
772-
datasetdata["resources"] = resourcesdata
773-
dataset = Dataset(datasetdata)
774-
assert dataset.quickcharts_resource_last() is False
775-
resource = {"name": "QuickCharts-resource"}
776-
dataset._resources.insert(1, resource)
777-
assert dataset.quickcharts_resource_last() is True
778-
assert dataset._resources[3]["name"] == resource["name"]
779-
assert dataset.quickcharts_resource_last() is True
780-
781-
def test_generate_resource_view(
782-
self, configuration, vocabulary_update, static_resource_view_yaml
783-
):
784-
datasetdata = copy.deepcopy(dataset_data)
785-
resourcesdata = copy.deepcopy(resources_data)
786-
datasetdata["resources"] = resourcesdata
787-
dataset = Dataset(datasetdata)
788-
assert "dataset_preview" not in dataset
789-
resourceview = dataset.generate_quickcharts(path=static_resource_view_yaml)
790-
hxl_preview_config = json.loads(resourceview["hxl_preview_config"])
791-
assert resourceview["id"] == "c06b5a0d-1d41-4a74-a196-41c251c76023"
792-
assert hxl_preview_config["bites"][0]["title"] == "Sum of fatalities"
793-
assert (
794-
hxl_preview_config["bites"][1]["title"]
795-
== "Sum of fatalities grouped by admin1"
796-
)
797-
assert (
798-
hxl_preview_config["bites"][2]["title"]
799-
== "Sum of fatalities grouped by admin2"
800-
)
801-
resourceview = dataset.generate_quickcharts(
802-
path=static_resource_view_yaml, bites_disabled=[False, True, False]
803-
)
804-
hxl_preview_config = json.loads(resourceview["hxl_preview_config"])
805-
assert resourceview["id"] == "c06b5a0d-1d41-4a74-a196-41c251c76023"
806-
assert hxl_preview_config["bites"][0]["title"] == "Sum of fatalities"
807-
assert (
808-
hxl_preview_config["bites"][1]["title"]
809-
== "Sum of fatalities grouped by admin2"
810-
)
811-
resourceview = dataset.generate_quickcharts(
812-
path=static_resource_view_yaml, bites_disabled=[True, True, True]
813-
)
814-
assert resourceview is None
815-
indicators = [
816-
{
817-
"code": "1",
818-
"title": "My1",
819-
"unit": "ones",
820-
"description": "This is my one!",
821-
},
822-
{
823-
"code": "2",
824-
"title": "My2",
825-
"unit": "twos",
826-
"aggregate_col": "Agg2",
827-
},
828-
{
829-
"code": "3",
830-
"title": "My3",
831-
"description": "This is my three!",
832-
"date_col": "dt3",
833-
"date_format": "%b %Y",
834-
},
835-
]
836-
resourceview = dataset.generate_quickcharts(indicators=indicators)
837-
hxl_preview_config = json.loads(resourceview["hxl_preview_config"])
838-
assert resourceview["id"] == "c06b5a0d-1d41-4a74-a196-41c251c76023"
839-
assert (
840-
hxl_preview_config["bites"][0]["ingredient"]["filters"]["filterWith"][0][
841-
"#indicator+code"
842-
]
843-
== "1"
844-
)
845-
assert (
846-
hxl_preview_config["bites"][0]["ingredient"]["description"]
847-
== "This is my one!"
848-
)
849-
assert hxl_preview_config["bites"][0]["uiProperties"]["title"] == "My1"
850-
assert (
851-
hxl_preview_config["bites"][0]["computedProperties"]["dataTitle"] == "ones"
852-
)
853-
assert (
854-
hxl_preview_config["bites"][1]["ingredient"]["filters"]["filterWith"][0][
855-
"#indicator+code"
856-
]
857-
== "2"
858-
)
859-
assert hxl_preview_config["bites"][1]["ingredient"]["description"] == ""
860-
assert hxl_preview_config["bites"][1]["uiProperties"]["title"] == "My2"
861-
assert (
862-
hxl_preview_config["bites"][1]["computedProperties"]["dataTitle"] == "twos"
863-
)
864-
assert hxl_preview_config["bites"][1]["ingredient"]["aggregateColumn"] == "Agg2"
865-
assert (
866-
hxl_preview_config["bites"][2]["ingredient"]["filters"]["filterWith"][0][
867-
"#indicator+code"
868-
]
869-
== "3"
870-
)
871-
assert (
872-
hxl_preview_config["bites"][2]["ingredient"]["description"]
873-
== "This is my three!"
874-
)
875-
assert hxl_preview_config["bites"][2]["ingredient"]["dateColumn"] == "dt3"
876-
assert hxl_preview_config["bites"][2]["uiProperties"]["title"] == "My3"
877-
assert hxl_preview_config["bites"][2]["computedProperties"]["dataTitle"] == ""
878-
assert hxl_preview_config["bites"][2]["uiProperties"]["dateFormat"] == "%b %Y"
879-
resourceview = dataset.generate_quickcharts(
880-
indicators=indicators,
881-
findreplace={
882-
"#indicator+code": "#item+code",
883-
"#indicator+value+num": "#value",
884-
},
885-
)
886-
hxl_preview_config = json.loads(resourceview["hxl_preview_config"])
887-
assert resourceview["id"] == "c06b5a0d-1d41-4a74-a196-41c251c76023"
888-
assert (
889-
hxl_preview_config["bites"][0]["ingredient"]["filters"]["filterWith"][0][
890-
"#item+code"
891-
]
892-
== "1"
893-
)
894-
assert hxl_preview_config["bites"][0]["ingredient"]["valueColumn"] == "#value"
895-
assert dataset.generate_quickcharts(indicators=[]) is None
896-
assert dataset.generate_quickcharts(indicators=[None, None, None]) is None
897-
assert (
898-
dataset.generate_quickcharts(resource="123", path=static_resource_view_yaml)
899-
is None
900-
)
901-
del dataset.get_resources()[0]["id"]
902-
resourceview = dataset.generate_quickcharts(path=static_resource_view_yaml)
903-
assert "id" not in resourceview
904-
assert "resource_id" not in resourceview
905-
assert resourceview["resource_name"] == "Resource1"
906-
with pytest.raises(IOError):
907-
dataset.generate_quickcharts()
908-
909767
def test_remove_dates_from_title(self, configuration):
910768
dataset = Dataset()
911769
with pytest.raises(HDXError):

0 commit comments

Comments
 (0)