hdx-python-api 6.2.6__tar.gz → 6.2.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/.config/pre-commit-config.yaml +4 -3
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/PKG-INFO +4 -4
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/documentation/.readthedocs.yaml +1 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/documentation/main.md +3 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/documentation/pydoc-markdown.yaml +1 -1
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/pyproject.toml +3 -3
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/requirements.txt +35 -55
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/api/_version.py +2 -2
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/data/dataset.py +38 -6
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/api/test_ckan.py +9 -3
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/.config/coveragerc +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/.config/pytest.ini +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/.config/ruff.toml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/.github/workflows/publish.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/.github/workflows/run-python-tests.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/.gitignore +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/CONTRIBUTING.md +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/LICENSE +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/README.md +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/api/__init__.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/api/configuration.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/api/hdx_base_configuration.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/api/locations.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/api/remotehdx.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/data/__init__.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/data/dataset_title_helper.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/data/date_helper.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/data/filestore_helper.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/data/hdx_datasource_topline.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/data/hdxobject.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/data/indicator_resource_view_template.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/data/organization.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/data/resource.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/data/resource_matcher.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/data/resource_view.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/data/showcase.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/data/user.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/data/vocabulary.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/facades/__init__.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/facades/infer_arguments.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/facades/keyword_arguments.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/facades/simple.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/Accepted_Tags.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/CKAN/hdx_dataset_static.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/Tag_Mapping.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/Tag_Mapping_ChainRuleError.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/empty.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_base_config.json +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_base_config.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_config.json +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_config.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_dataset_static.json +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_dataset_static.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_datasource_topline.json +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_datasource_topline.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_email_configuration.json +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_email_configuration.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_missing_site_config.json +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_organization_static.json +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_organization_static.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_resource_static.json +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_resource_static.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_resource_view_static.json +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_resource_view_static.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_showcase_static.json +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_showcase_static.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_user_static.json +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_user_static.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_vocabulary_static.json +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_vocabulary_static.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/project_configuration.json +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/project_configuration.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/user_agent_config.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/user_agent_config2.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/user_agent_config3.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/user_agent_config_wrong.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/dataset_search_results.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/datastore/ACLED-All-Africa-File_20170101-to-20170708.xlsx +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/empty.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/gen_resource/conflict_data_alg.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/gen_resource/min_qc_conflict_data_alg.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/gen_resource/qc_conflict_data_alg.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/gen_resource/test_data_no_data.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/gen_resource/test_data_no_years.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/organization_show_results.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/qc_from_rows/qc_conflict_data_alg.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/qc_from_rows/qc_conflict_data_alg_one_col.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/resource_formats.json +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/showcase_all_search_results.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/test_data.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/test_data.zip +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/update_dataset_resources/dem_data_zwe.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/update_dataset_resources/dem_indicatorlist_zwe.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/update_dataset_resources/expected_resources_to_update.json +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/update_dataset_resources/opri_data_zwe.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/update_dataset_resources/opri_indicatorlist_zwe.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/update_dataset_resources/opri_metadata_zwe.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/update_dataset_resources/qc_sdg_data_zwe.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/update_dataset_resources/sdg_data_zwe.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/update_dataset_resources/sdg_indicatorlist_zwe.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/update_dataset_resources/sdg_metadata_zwe.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/update_dataset_resources/unesco_dataset.json +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/update_dataset_resources/unesco_update_dataset.json +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/update_logic/update_logic_resources.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/update_logic/update_logic_resources_new.yaml +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/api/test_configuration.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/api/test_locations.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/conftest.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/data/__init__.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/data/test_dataset_core.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/data/test_dataset_noncore.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/data/test_dataset_title_helper.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/data/test_organization.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/data/test_resource.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/data/test_resource_view.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/data/test_showcase.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/data/test_update_dataset_resources.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/data/test_update_logic.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/data/test_user.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/data/test_vocabulary.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/facades/__init__.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/facades/test_infer_arguments.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/facades/test_keyword_arguments.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/facades/test_simple.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/workingexample/my_code.py +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/workingexample/my_resource.csv +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/workingexample/my_resource.xlsx +0 -0
- {hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/workingexample/run.py +0 -0
|
@@ -17,10 +17,11 @@ repos:
|
|
|
17
17
|
# Run the formatter.
|
|
18
18
|
- id: ruff-format
|
|
19
19
|
args: [--config, .config/ruff.toml]
|
|
20
|
-
- repo: https://github.com/
|
|
21
|
-
rev:
|
|
20
|
+
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
21
|
+
rev: v0.1.24
|
|
22
22
|
hooks:
|
|
23
|
+
# Run the pip compile
|
|
23
24
|
- id: pip-compile
|
|
24
25
|
name: pip-compile requirements.txt
|
|
25
26
|
files: pyproject.toml
|
|
26
|
-
args: [pyproject.toml, --resolver=backtracking, --all-extras, --upgrade, -q, -o, requirements.txt]
|
|
27
|
+
args: [ pyproject.toml, --resolver=backtracking, --all-extras, --upgrade, -q, -o, requirements.txt ]
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: hdx-python-api
|
|
3
|
-
Version: 6.2.
|
|
3
|
+
Version: 6.2.7
|
|
4
4
|
Summary: HDX Python API for interacting with the Humanitarian Data Exchange
|
|
5
5
|
Project-URL: Homepage, https://github.com/OCHA-DAP/hdx-python-api
|
|
6
|
-
Author
|
|
6
|
+
Author: Michael Rans
|
|
7
7
|
License: MIT
|
|
8
8
|
License-File: LICENSE
|
|
9
9
|
Keywords: API,CKAN,HDX,humanitarian data exchange
|
|
@@ -25,10 +25,10 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
25
25
|
Classifier: Programming Language :: Python :: 3.12
|
|
26
26
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
27
27
|
Requires-Python: >=3.8
|
|
28
|
-
Requires-Dist: ckanapi>=4.
|
|
28
|
+
Requires-Dist: ckanapi>=4.8
|
|
29
29
|
Requires-Dist: defopt>=6.4.0
|
|
30
30
|
Requires-Dist: email-validator
|
|
31
|
-
Requires-Dist: hdx-python-country>=3.
|
|
31
|
+
Requires-Dist: hdx-python-country>=3.7.0
|
|
32
32
|
Requires-Dist: hdx-python-utilities>=3.6.7
|
|
33
33
|
Requires-Dist: libhxl>=5.2.1
|
|
34
34
|
Requires-Dist: makefun
|
|
@@ -52,6 +52,9 @@ The library has detailed API documentation which can be found in the menu at the
|
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
## Breaking Changes
|
|
55
|
+
From 6.2.7, generate_resource_from_iterator renamed to
|
|
56
|
+
generate_resource_from_iterable with requirement of iterable rather iterator
|
|
57
|
+
|
|
55
58
|
From 6.2.6, kwargs take preference over environment variables which take
|
|
56
59
|
preference over configuration files
|
|
57
60
|
|
|
@@ -9,7 +9,7 @@ build-backend = "hatchling.build"
|
|
|
9
9
|
[project]
|
|
10
10
|
name = "hdx-python-api"
|
|
11
11
|
description = "HDX Python API for interacting with the Humanitarian Data Exchange"
|
|
12
|
-
authors = [{name = "Michael Rans"
|
|
12
|
+
authors = [{name = "Michael Rans"}]
|
|
13
13
|
license = {text = "MIT"}
|
|
14
14
|
keywords = ["HDX", "API", "CKAN", "humanitarian data exchange"]
|
|
15
15
|
classifiers = [
|
|
@@ -34,10 +34,10 @@ classifiers = [
|
|
|
34
34
|
requires-python = ">=3.8"
|
|
35
35
|
|
|
36
36
|
dependencies = [
|
|
37
|
-
"ckanapi>=4.
|
|
37
|
+
"ckanapi>=4.8",
|
|
38
38
|
"defopt>=6.4.0",
|
|
39
39
|
"email_validator",
|
|
40
|
-
"hdx-python-country>=3.
|
|
40
|
+
"hdx-python-country>=3.7.0",
|
|
41
41
|
"hdx-python-utilities>=3.6.7",
|
|
42
42
|
"libhxl>=5.2.1",
|
|
43
43
|
"makefun",
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
#
|
|
2
|
-
#
|
|
3
|
-
# by the following command:
|
|
4
|
-
#
|
|
5
|
-
# pip-compile --all-extras --output-file=requirements.txt pyproject.toml
|
|
6
|
-
#
|
|
1
|
+
# This file was autogenerated by uv via the following command:
|
|
2
|
+
# uv pip compile pyproject.toml --resolver=backtracking --all-extras -o requirements.txt
|
|
7
3
|
annotated-types==0.6.0
|
|
8
4
|
# via pydantic
|
|
9
5
|
attrs==23.2.0
|
|
@@ -23,18 +19,14 @@ chardet==5.2.0
|
|
|
23
19
|
# via frictionless
|
|
24
20
|
charset-normalizer==3.3.2
|
|
25
21
|
# via requests
|
|
26
|
-
ckanapi==4.
|
|
27
|
-
# via hdx-python-api (pyproject.toml)
|
|
22
|
+
ckanapi==4.8
|
|
28
23
|
click==8.1.7
|
|
29
24
|
# via typer
|
|
30
|
-
|
|
31
|
-
# via typer
|
|
32
|
-
coverage[toml]==7.4.4
|
|
25
|
+
coverage==7.4.4
|
|
33
26
|
# via pytest-cov
|
|
34
27
|
cryptography==42.0.5
|
|
35
28
|
# via pyopenssl
|
|
36
29
|
defopt==6.4.0
|
|
37
|
-
# via hdx-python-api (pyproject.toml)
|
|
38
30
|
distlib==0.3.8
|
|
39
31
|
# via virtualenv
|
|
40
32
|
dnspython==2.6.1
|
|
@@ -43,30 +35,25 @@ docopt==0.6.2
|
|
|
43
35
|
# via
|
|
44
36
|
# ckanapi
|
|
45
37
|
# num2words
|
|
46
|
-
docutils==0.
|
|
38
|
+
docutils==0.21.post1
|
|
47
39
|
# via defopt
|
|
48
40
|
email-validator==2.1.1
|
|
49
|
-
# via hdx-python-api (pyproject.toml)
|
|
50
41
|
et-xmlfile==1.1.0
|
|
51
42
|
# via openpyxl
|
|
52
|
-
filelock==3.13.
|
|
43
|
+
filelock==3.13.4
|
|
53
44
|
# via virtualenv
|
|
54
45
|
frictionless==5.16.1
|
|
55
46
|
# via hdx-python-utilities
|
|
56
|
-
google-auth==2.
|
|
47
|
+
google-auth==2.29.0
|
|
57
48
|
# via
|
|
58
49
|
# google-auth-oauthlib
|
|
59
50
|
# gspread
|
|
60
51
|
google-auth-oauthlib==1.2.0
|
|
61
52
|
# via gspread
|
|
62
|
-
gspread==6.0
|
|
63
|
-
|
|
64
|
-
hdx-python-country==3.6.9
|
|
65
|
-
# via hdx-python-api (pyproject.toml)
|
|
53
|
+
gspread==6.1.0
|
|
54
|
+
hdx-python-country==3.7.0
|
|
66
55
|
hdx-python-utilities==3.6.7
|
|
67
|
-
# via
|
|
68
|
-
# hdx-python-api (pyproject.toml)
|
|
69
|
-
# hdx-python-country
|
|
56
|
+
# via hdx-python-country
|
|
70
57
|
humanize==4.9.0
|
|
71
58
|
# via frictionless
|
|
72
59
|
identify==2.5.35
|
|
@@ -77,7 +64,7 @@ idna==3.6
|
|
|
77
64
|
# requests
|
|
78
65
|
ijson==3.2.3
|
|
79
66
|
# via hdx-python-utilities
|
|
80
|
-
inflect==7.
|
|
67
|
+
inflect==7.2.0
|
|
81
68
|
# via quantulum3
|
|
82
69
|
iniconfig==2.0.0
|
|
83
70
|
# via pytest
|
|
@@ -94,13 +81,10 @@ jsonschema==4.17.3
|
|
|
94
81
|
# frictionless
|
|
95
82
|
# tableschema-to-template
|
|
96
83
|
libhxl==5.2.1
|
|
97
|
-
# via
|
|
98
|
-
# hdx-python-api (pyproject.toml)
|
|
99
|
-
# hdx-python-country
|
|
84
|
+
# via hdx-python-country
|
|
100
85
|
loguru==0.7.2
|
|
101
86
|
# via hdx-python-utilities
|
|
102
87
|
makefun==1.15.2
|
|
103
|
-
# via hdx-python-api (pyproject.toml)
|
|
104
88
|
markdown-it-py==3.0.0
|
|
105
89
|
# via rich
|
|
106
90
|
marko==2.0.3
|
|
@@ -109,8 +93,9 @@ markupsafe==2.1.5
|
|
|
109
93
|
# via jinja2
|
|
110
94
|
mdurl==0.1.2
|
|
111
95
|
# via markdown-it-py
|
|
96
|
+
more-itertools==10.2.0
|
|
97
|
+
# via inflect
|
|
112
98
|
ndg-httpsclient==0.5.1
|
|
113
|
-
# via hdx-python-api (pyproject.toml)
|
|
114
99
|
nodeenv==1.8.0
|
|
115
100
|
# via pre-commit
|
|
116
101
|
num2words==0.5.13
|
|
@@ -133,40 +118,31 @@ ply==3.11
|
|
|
133
118
|
# libhxl
|
|
134
119
|
pockets==0.9.1
|
|
135
120
|
# via sphinxcontrib-napoleon
|
|
136
|
-
pre-commit==3.
|
|
137
|
-
|
|
138
|
-
pyasn1==0.5.1
|
|
121
|
+
pre-commit==3.7.0
|
|
122
|
+
pyasn1==0.6.0
|
|
139
123
|
# via
|
|
140
|
-
# hdx-python-api (pyproject.toml)
|
|
141
124
|
# ndg-httpsclient
|
|
142
125
|
# pyasn1-modules
|
|
143
126
|
# rsa
|
|
144
|
-
pyasn1-modules==0.
|
|
127
|
+
pyasn1-modules==0.4.0
|
|
145
128
|
# via google-auth
|
|
146
|
-
pycparser==2.
|
|
129
|
+
pycparser==2.22
|
|
147
130
|
# via cffi
|
|
148
131
|
pydantic==2.6.4
|
|
149
|
-
# via
|
|
150
|
-
# frictionless
|
|
151
|
-
# inflect
|
|
132
|
+
# via frictionless
|
|
152
133
|
pydantic-core==2.16.3
|
|
153
134
|
# via pydantic
|
|
154
135
|
pygments==2.17.2
|
|
155
136
|
# via rich
|
|
156
137
|
pyopenssl==24.1.0
|
|
157
|
-
# via
|
|
158
|
-
# hdx-python-api (pyproject.toml)
|
|
159
|
-
# ndg-httpsclient
|
|
138
|
+
# via ndg-httpsclient
|
|
160
139
|
pyphonetics==0.5.3
|
|
161
140
|
# via hdx-python-country
|
|
162
141
|
pyrsistent==0.20.0
|
|
163
142
|
# via jsonschema
|
|
164
143
|
pytest==8.1.1
|
|
165
|
-
# via
|
|
166
|
-
|
|
167
|
-
# pytest-cov
|
|
168
|
-
pytest-cov==4.1.0
|
|
169
|
-
# via hdx-python-api (pyproject.toml)
|
|
144
|
+
# via pytest-cov
|
|
145
|
+
pytest-cov==5.0.0
|
|
170
146
|
python-dateutil==2.8.2
|
|
171
147
|
# via
|
|
172
148
|
# frictionless
|
|
@@ -184,20 +160,18 @@ pyyaml==6.0.1
|
|
|
184
160
|
# pre-commit
|
|
185
161
|
# tableschema-to-template
|
|
186
162
|
quantulum3==0.9.0
|
|
187
|
-
# via hdx-python-api (pyproject.toml)
|
|
188
163
|
ratelimit==2.2.1
|
|
189
164
|
# via hdx-python-utilities
|
|
190
165
|
requests==2.31.0
|
|
191
166
|
# via
|
|
192
167
|
# ckanapi
|
|
193
168
|
# frictionless
|
|
194
|
-
# hdx-python-api (pyproject.toml)
|
|
195
169
|
# libhxl
|
|
196
170
|
# requests-file
|
|
197
171
|
# requests-oauthlib
|
|
198
172
|
requests-file==2.0.0
|
|
199
173
|
# via hdx-python-utilities
|
|
200
|
-
requests-oauthlib==
|
|
174
|
+
requests-oauthlib==2.0.0
|
|
201
175
|
# via google-auth-oauthlib
|
|
202
176
|
rfc3986==2.0.0
|
|
203
177
|
# via frictionless
|
|
@@ -209,10 +183,16 @@ ruamel-yaml==0.18.6
|
|
|
209
183
|
# via hdx-python-utilities
|
|
210
184
|
ruamel-yaml-clib==0.2.8
|
|
211
185
|
# via ruamel-yaml
|
|
186
|
+
setuptools==69.2.0
|
|
187
|
+
# via
|
|
188
|
+
# ckanapi
|
|
189
|
+
# nodeenv
|
|
212
190
|
shellingham==1.5.4
|
|
213
191
|
# via typer
|
|
214
192
|
simpleeval==0.9.13
|
|
215
193
|
# via frictionless
|
|
194
|
+
simplejson==3.19.2
|
|
195
|
+
# via ckanapi
|
|
216
196
|
six==1.16.0
|
|
217
197
|
# via
|
|
218
198
|
# ckanapi
|
|
@@ -234,14 +214,17 @@ tabulate==0.9.0
|
|
|
234
214
|
# via frictionless
|
|
235
215
|
text-unidecode==1.3
|
|
236
216
|
# via python-slugify
|
|
237
|
-
|
|
217
|
+
typeguard==4.2.1
|
|
218
|
+
# via inflect
|
|
219
|
+
typer==0.12.3
|
|
238
220
|
# via frictionless
|
|
239
|
-
typing-extensions==4.
|
|
221
|
+
typing-extensions==4.11.0
|
|
240
222
|
# via
|
|
241
223
|
# frictionless
|
|
242
224
|
# inflect
|
|
243
225
|
# pydantic
|
|
244
226
|
# pydantic-core
|
|
227
|
+
# typeguard
|
|
245
228
|
# typer
|
|
246
229
|
unidecode==1.3.8
|
|
247
230
|
# via
|
|
@@ -251,7 +234,7 @@ urllib3==2.2.1
|
|
|
251
234
|
# via
|
|
252
235
|
# libhxl
|
|
253
236
|
# requests
|
|
254
|
-
validators==0.
|
|
237
|
+
validators==0.28.0
|
|
255
238
|
# via frictionless
|
|
256
239
|
virtualenv==20.25.1
|
|
257
240
|
# via pre-commit
|
|
@@ -265,6 +248,3 @@ xlsxwriter==3.2.0
|
|
|
265
248
|
# via tableschema-to-template
|
|
266
249
|
xlwt==1.3.0
|
|
267
250
|
# via hdx-python-utilities
|
|
268
|
-
|
|
269
|
-
# The following packages are considered to be unsafe in a requirements file:
|
|
270
|
-
# setuptools
|
|
@@ -2601,10 +2601,10 @@ class Dataset(HDXObject):
|
|
|
2601
2601
|
encoding=encoding,
|
|
2602
2602
|
)
|
|
2603
2603
|
|
|
2604
|
-
def
|
|
2604
|
+
def generate_resource_from_iterable(
|
|
2605
2605
|
self,
|
|
2606
2606
|
headers: ListTuple[str],
|
|
2607
|
-
|
|
2607
|
+
iterable: Iterable[Union[ListTuple, Dict]],
|
|
2608
2608
|
hxltags: Dict[str, str],
|
|
2609
2609
|
folder: str,
|
|
2610
2610
|
filename: str,
|
|
@@ -2615,7 +2615,7 @@ class Dataset(HDXObject):
|
|
|
2615
2615
|
quickcharts: Optional[Dict] = None,
|
|
2616
2616
|
encoding: Optional[str] = None,
|
|
2617
2617
|
) -> Tuple[bool, Dict]:
|
|
2618
|
-
"""Given headers and an
|
|
2618
|
+
"""Given headers and an iterable, write rows to csv and create
|
|
2619
2619
|
resource, adding to it the dataset. The returned dictionary will
|
|
2620
2620
|
contain the resource in the key resource, headers in the key headers
|
|
2621
2621
|
and list of rows in the key rows.
|
|
@@ -2652,7 +2652,7 @@ class Dataset(HDXObject):
|
|
|
2652
2652
|
|
|
2653
2653
|
Args:
|
|
2654
2654
|
headers (ListTuple[str]): Headers
|
|
2655
|
-
|
|
2655
|
+
iterable (Iterable[Union[ListTuple,Dict]]): Iterable returning rows
|
|
2656
2656
|
hxltags (Dict[str,str]): Header to HXL hashtag mapping
|
|
2657
2657
|
folder (str): Folder to which to write file containing rows
|
|
2658
2658
|
filename (str): Filename of file to write rows
|
|
@@ -2738,7 +2738,7 @@ class Dataset(HDXObject):
|
|
|
2738
2738
|
|
|
2739
2739
|
date_function = datecol_function
|
|
2740
2740
|
|
|
2741
|
-
for row in
|
|
2741
|
+
for row in iterable:
|
|
2742
2742
|
if date_function is not None:
|
|
2743
2743
|
result = date_function(row)
|
|
2744
2744
|
if result is None:
|
|
@@ -2813,6 +2813,38 @@ class Dataset(HDXObject):
|
|
|
2813
2813
|
retdict["qc_resource"] = resource
|
|
2814
2814
|
return True, retdict
|
|
2815
2815
|
|
|
2816
|
+
def generate_resource_from_iterator(
|
|
2817
|
+
self,
|
|
2818
|
+
headers: ListTuple[str],
|
|
2819
|
+
iterator: Iterator[Union[ListTuple, Dict]],
|
|
2820
|
+
hxltags: Dict[str, str],
|
|
2821
|
+
folder: str,
|
|
2822
|
+
filename: str,
|
|
2823
|
+
resourcedata: Dict,
|
|
2824
|
+
datecol: Optional[Union[int, str]] = None,
|
|
2825
|
+
yearcol: Optional[Union[int, str]] = None,
|
|
2826
|
+
date_function: Optional[Callable[[Dict], Optional[Dict]]] = None,
|
|
2827
|
+
quickcharts: Optional[Dict] = None,
|
|
2828
|
+
encoding: Optional[str] = None,
|
|
2829
|
+
) -> Tuple[bool, Dict]:
|
|
2830
|
+
warnings.warn(
|
|
2831
|
+
"generate_resource_from_iterator() is deprecated, use generate_resource_from_iterable() instead",
|
|
2832
|
+
DeprecationWarning,
|
|
2833
|
+
)
|
|
2834
|
+
return self.generate_resource_from_iterable(
|
|
2835
|
+
headers,
|
|
2836
|
+
iterator,
|
|
2837
|
+
hxltags,
|
|
2838
|
+
folder,
|
|
2839
|
+
filename,
|
|
2840
|
+
resourcedata,
|
|
2841
|
+
datecol,
|
|
2842
|
+
yearcol,
|
|
2843
|
+
date_function,
|
|
2844
|
+
quickcharts,
|
|
2845
|
+
encoding,
|
|
2846
|
+
)
|
|
2847
|
+
|
|
2816
2848
|
def download_and_generate_resource(
|
|
2817
2849
|
self,
|
|
2818
2850
|
downloader: BaseDownload,
|
|
@@ -2898,7 +2930,7 @@ class Dataset(HDXObject):
|
|
|
2898
2930
|
format="csv",
|
|
2899
2931
|
**kwargs,
|
|
2900
2932
|
)
|
|
2901
|
-
return self.
|
|
2933
|
+
return self.generate_resource_from_iterable(
|
|
2902
2934
|
headers,
|
|
2903
2935
|
iterator,
|
|
2904
2936
|
hxltags,
|
|
@@ -176,7 +176,9 @@ class TestCKAN:
|
|
|
176
176
|
assert dataset["title"] == title
|
|
177
177
|
assert dataset.get_tags() == tags
|
|
178
178
|
assert dataset.get_maintainer()["id"] == maintainer_id
|
|
179
|
-
assert
|
|
179
|
+
assert (
|
|
180
|
+
dataset.get_organization()["display_name"] == "INNAGO (inactive)"
|
|
181
|
+
)
|
|
180
182
|
resources = dataset.get_resources()
|
|
181
183
|
for i, resource in enumerate(resources):
|
|
182
184
|
assert resource["name"] == f"test_resource_{i}"
|
|
@@ -227,7 +229,9 @@ class TestCKAN:
|
|
|
227
229
|
assert dataset["caveats"] == caveats
|
|
228
230
|
assert dataset.get_tags() == tags
|
|
229
231
|
assert dataset.get_maintainer()["id"] == maintainer_id
|
|
230
|
-
assert
|
|
232
|
+
assert (
|
|
233
|
+
dataset.get_organization()["display_name"] == "INNAGO (inactive)"
|
|
234
|
+
)
|
|
231
235
|
updated_resources = dataset.get_resources()
|
|
232
236
|
for i, updated_resource in enumerate(updated_resources):
|
|
233
237
|
resource = resources[i]
|
|
@@ -269,7 +273,9 @@ class TestCKAN:
|
|
|
269
273
|
assert "caveats" not in dataset
|
|
270
274
|
assert dataset.get_tags() == tags
|
|
271
275
|
assert dataset.get_maintainer()["id"] == maintainer_id
|
|
272
|
-
assert
|
|
276
|
+
assert (
|
|
277
|
+
dataset.get_organization()["display_name"] == "INNAGO (inactive)"
|
|
278
|
+
)
|
|
273
279
|
updated_resources = dataset.get_resources()
|
|
274
280
|
for i, updated_resource in enumerate(updated_resources):
|
|
275
281
|
resource = resources[i]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/src/hdx/data/indicator_resource_view_template.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_datasource_topline.json
RENAMED
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_datasource_topline.yaml
RENAMED
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_email_configuration.json
RENAMED
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_email_configuration.yaml
RENAMED
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_missing_site_config.json
RENAMED
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_organization_static.json
RENAMED
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_organization_static.yaml
RENAMED
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_resource_static.json
RENAMED
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_resource_static.yaml
RENAMED
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_resource_view_static.json
RENAMED
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_resource_view_static.yaml
RENAMED
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_showcase_static.json
RENAMED
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_showcase_static.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_vocabulary_static.json
RENAMED
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/hdx_vocabulary_static.yaml
RENAMED
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/project_configuration.json
RENAMED
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/project_configuration.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/config/user_agent_config_wrong.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/gen_resource/conflict_data_alg.csv
RENAMED
|
File without changes
|
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/gen_resource/qc_conflict_data_alg.csv
RENAMED
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/gen_resource/test_data_no_data.csv
RENAMED
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/gen_resource/test_data_no_years.csv
RENAMED
|
File without changes
|
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/qc_from_rows/qc_conflict_data_alg.csv
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/fixtures/showcase_all_search_results.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_api-6.2.6 → hdx_python_api-6.2.7}/tests/hdx/data/test_update_dataset_resources.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|