hdx-python-utilities 3.9.0__tar.gz → 3.9.2__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_utilities-3.9.0 → hdx_python_utilities-3.9.2}/PKG-INFO +1 -1
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/requirements.txt +29 -28
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/_version.py +16 -3
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/downloader.py +9 -2
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/loader.py +14 -12
- hdx_python_utilities-3.9.2/tests/fixtures/loader/empty.yaml +0 -0
- hdx_python_utilities-3.9.2/tests/fixtures/loader/empty_list.json +1 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_downloader.py +23 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_loader.py +24 -8
- hdx_python_utilities-3.9.0/tests/fixtures/loader/empty.json +0 -1
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/.coveragerc +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/.github/workflows/publish-test.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/.github/workflows/publish.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/.github/workflows/run-python-tests.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/.gitignore +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/.pre-commit-config.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/CONTRIBUTING.md +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/LICENSE +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/README.md +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/documentation/.readthedocs.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/documentation/index.md +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/documentation/mkdocs.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/hatch.toml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/pyproject.toml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/pytest.ini +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/ruff.toml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/__init__.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/base_downloader.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/compare.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/dateparse.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/dictandlist.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/easy_logging.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/email.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/encoding.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/error_handler.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/errors_onexit.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/frictionless_wrapper.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/html.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/matching.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/path.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/retriever.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/saver.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/session.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/state.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/text.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/typehint.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/useragent.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/uuid.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/compare/test_csv_processing.csv +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/compare/test_csv_processing2.csv +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/empty.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/hdx_config.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/hdx_config.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/hdx_email_configuration.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/hdx_email_configuration.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/json_csv.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/logging_config.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/logging_config.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/project_configuration.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/project_configuration.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/smtp_config.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/smtp_config.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/user_agent_config.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/user_agent_config2.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/user_agent_config3.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/user_agent_config_wrong.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/basicauth.txt +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/bearertoken.txt +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/extra_params.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/extra_params.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/extra_params_tree.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/test_csv_processing.csv +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/test_csv_processing_blanks.csv +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/test_data.csv +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/test_data.xlsx +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/test_data1.csv/empty.txt +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/test_data2.csv +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/test_json_processing.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/test_xls_processing.xls +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/test_xlsx_processing.xlsx +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/html/response.html +0 -0
- /hdx_python_utilities-3.9.0/tests/fixtures/loader/empty.yaml → /hdx_python_utilities-3.9.2/tests/fixtures/loader/empty.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/retriever/fallbacks/test.csv +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/retriever/fallbacks/test.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/retriever/fallbacks/test.txt +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/retriever/fallbacks/test.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/retriever/retriever-test.csv +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/retriever/test.csv +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/retriever/test.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/retriever/test.txt +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/retriever/test.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/retriever/test_hxl.csv +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/saver/out.csv +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/saver/out.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/saver/out2.csv +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/saver/out2.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/saver/out5.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/saver/out6.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/saver/out7.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/saver/out8.csv +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/saver/out8.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/saver/pretty-false_sortkeys-false.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/saver/pretty-false_sortkeys-false.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/saver/pretty-false_sortkeys-true.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/saver/pretty-false_sortkeys-true.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/saver/pretty-true_sortkeys-false.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/saver/pretty-true_sortkeys-false.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/saver/pretty-true_sortkeys-true.json +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/saver/pretty-true_sortkeys-true.yaml +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/state/analysis_dates.txt +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/state/last_build_date.txt +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/test_data.csv +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/conftest.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_compare.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_dateparse.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_dictandlist.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_easy_logging.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_email.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_encoding.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_error_handler.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_html.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_matching.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_path.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_retriever.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_saver.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_state.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_text.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_useragent.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_uuid.py +0 -0
- {hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hdx-python-utilities
|
|
3
|
-
Version: 3.9.
|
|
3
|
+
Version: 3.9.2
|
|
4
4
|
Summary: HDX Python Utilities for streaming tabular data, date and time handling and other helpful functions
|
|
5
5
|
Project-URL: Homepage, https://github.com/OCHA-DAP/hdx-python-utilities
|
|
6
6
|
Author-email: Michael Rans <rans@email.com>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# uv pip compile pyproject.toml --resolver=backtracking --all-extras -o requirements.txt
|
|
3
3
|
annotated-types==0.7.0
|
|
4
4
|
# via pydantic
|
|
5
|
-
astdoc==1.3.
|
|
5
|
+
astdoc==1.3.2
|
|
6
6
|
# via mkapi
|
|
7
7
|
attrs==25.3.0
|
|
8
8
|
# via
|
|
@@ -14,7 +14,7 @@ babel==2.17.0
|
|
|
14
14
|
# via mkdocs-material
|
|
15
15
|
backrefs==5.9
|
|
16
16
|
# via mkdocs-material
|
|
17
|
-
beautifulsoup4==4.13.
|
|
17
|
+
beautifulsoup4==4.13.5
|
|
18
18
|
# via hdx-python-utilities (pyproject.toml)
|
|
19
19
|
certifi==2025.8.3
|
|
20
20
|
# via requests
|
|
@@ -22,27 +22,28 @@ cfgv==3.4.0
|
|
|
22
22
|
# via pre-commit
|
|
23
23
|
chardet==5.2.0
|
|
24
24
|
# via frictionless
|
|
25
|
-
charset-normalizer==3.4.
|
|
25
|
+
charset-normalizer==3.4.3
|
|
26
26
|
# via requests
|
|
27
27
|
click==8.2.1
|
|
28
28
|
# via
|
|
29
29
|
# mkdocs
|
|
30
|
+
# mkdocs-material
|
|
30
31
|
# typer
|
|
31
32
|
colorama==0.4.6
|
|
32
33
|
# via mkdocs-material
|
|
33
|
-
coverage==7.10.
|
|
34
|
+
coverage==7.10.7
|
|
34
35
|
# via pytest-cov
|
|
35
36
|
cydifflib==1.2.0
|
|
36
37
|
# via hdx-python-utilities (pyproject.toml)
|
|
37
38
|
distlib==0.4.0
|
|
38
39
|
# via virtualenv
|
|
39
|
-
dnspython==2.
|
|
40
|
+
dnspython==2.8.0
|
|
40
41
|
# via email-validator
|
|
41
|
-
email-validator==2.
|
|
42
|
+
email-validator==2.3.0
|
|
42
43
|
# via hdx-python-utilities (pyproject.toml)
|
|
43
44
|
et-xmlfile==2.0.0
|
|
44
45
|
# via openpyxl
|
|
45
|
-
filelock==3.
|
|
46
|
+
filelock==3.19.1
|
|
46
47
|
# via virtualenv
|
|
47
48
|
frictionless==5.18.1
|
|
48
49
|
# via hdx-python-utilities (pyproject.toml)
|
|
@@ -50,9 +51,9 @@ ghp-import==2.1.0
|
|
|
50
51
|
# via mkdocs
|
|
51
52
|
html5lib==1.1
|
|
52
53
|
# via hdx-python-utilities (pyproject.toml)
|
|
53
|
-
humanize==4.
|
|
54
|
+
humanize==4.13.0
|
|
54
55
|
# via frictionless
|
|
55
|
-
identify==2.6.
|
|
56
|
+
identify==2.6.14
|
|
56
57
|
# via pre-commit
|
|
57
58
|
idna==3.10
|
|
58
59
|
# via
|
|
@@ -72,24 +73,24 @@ jinja2==3.1.6
|
|
|
72
73
|
# mkdocs-material
|
|
73
74
|
jsonlines==4.0.0
|
|
74
75
|
# via hdx-python-utilities (pyproject.toml)
|
|
75
|
-
jsonschema==4.25.
|
|
76
|
+
jsonschema==4.25.1
|
|
76
77
|
# via
|
|
77
78
|
# frictionless
|
|
78
79
|
# tableschema-to-template
|
|
79
|
-
jsonschema-specifications==2025.
|
|
80
|
+
jsonschema-specifications==2025.9.1
|
|
80
81
|
# via jsonschema
|
|
81
82
|
loguru==0.7.3
|
|
82
83
|
# via
|
|
83
84
|
# hdx-python-utilities (pyproject.toml)
|
|
84
85
|
# pytest-loguru
|
|
85
|
-
markdown==3.
|
|
86
|
+
markdown==3.9
|
|
86
87
|
# via
|
|
87
88
|
# mkdocs
|
|
88
89
|
# mkdocs-material
|
|
89
90
|
# pymdown-extensions
|
|
90
|
-
markdown-it-py==
|
|
91
|
+
markdown-it-py==4.0.0
|
|
91
92
|
# via rich
|
|
92
|
-
marko==2.
|
|
93
|
+
marko==2.2.0
|
|
93
94
|
# via frictionless
|
|
94
95
|
markupsafe==3.0.2
|
|
95
96
|
# via
|
|
@@ -109,7 +110,7 @@ mkdocs==1.6.1
|
|
|
109
110
|
# mkdocs-material
|
|
110
111
|
mkdocs-get-deps==0.2.0
|
|
111
112
|
# via mkdocs
|
|
112
|
-
mkdocs-material==9.6.
|
|
113
|
+
mkdocs-material==9.6.20
|
|
113
114
|
# via mkapi
|
|
114
115
|
mkdocs-material-extensions==1.3.1
|
|
115
116
|
# via mkdocs-material
|
|
@@ -127,7 +128,7 @@ pathspec==0.12.1
|
|
|
127
128
|
# via mkdocs
|
|
128
129
|
petl==1.7.17
|
|
129
130
|
# via frictionless
|
|
130
|
-
platformdirs==4.
|
|
131
|
+
platformdirs==4.4.0
|
|
131
132
|
# via
|
|
132
133
|
# mkdocs-get-deps
|
|
133
134
|
# virtualenv
|
|
@@ -135,9 +136,9 @@ pluggy==1.6.0
|
|
|
135
136
|
# via
|
|
136
137
|
# pytest
|
|
137
138
|
# pytest-cov
|
|
138
|
-
pre-commit==4.
|
|
139
|
+
pre-commit==4.3.0
|
|
139
140
|
# via hdx-python-utilities (pyproject.toml)
|
|
140
|
-
pydantic==2.11.
|
|
141
|
+
pydantic==2.11.9
|
|
141
142
|
# via frictionless
|
|
142
143
|
pydantic-core==2.33.2
|
|
143
144
|
# via pydantic
|
|
@@ -150,11 +151,11 @@ pymdown-extensions==10.16.1
|
|
|
150
151
|
# via mkdocs-material
|
|
151
152
|
pyphonetics==0.5.3
|
|
152
153
|
# via hdx-python-utilities (pyproject.toml)
|
|
153
|
-
pytest==8.4.
|
|
154
|
+
pytest==8.4.2
|
|
154
155
|
# via
|
|
155
156
|
# hdx-python-utilities (pyproject.toml)
|
|
156
157
|
# pytest-cov
|
|
157
|
-
pytest-cov==
|
|
158
|
+
pytest-cov==7.0.0
|
|
158
159
|
# via hdx-python-utilities (pyproject.toml)
|
|
159
160
|
pytest-loguru==0.4.0
|
|
160
161
|
# via hdx-python-utilities (pyproject.toml)
|
|
@@ -182,7 +183,7 @@ referencing==0.36.2
|
|
|
182
183
|
# via
|
|
183
184
|
# jsonschema
|
|
184
185
|
# jsonschema-specifications
|
|
185
|
-
requests==2.32.
|
|
186
|
+
requests==2.32.5
|
|
186
187
|
# via
|
|
187
188
|
# frictionless
|
|
188
189
|
# mkdocs-material
|
|
@@ -193,11 +194,11 @@ rfc3986==2.0.0
|
|
|
193
194
|
# via frictionless
|
|
194
195
|
rich==14.1.0
|
|
195
196
|
# via typer
|
|
196
|
-
rpds-py==0.
|
|
197
|
+
rpds-py==0.27.1
|
|
197
198
|
# via
|
|
198
199
|
# jsonschema
|
|
199
200
|
# referencing
|
|
200
|
-
ruamel-yaml==0.18.
|
|
201
|
+
ruamel-yaml==0.18.15
|
|
201
202
|
# via hdx-python-utilities (pyproject.toml)
|
|
202
203
|
ruamel-yaml-clib==0.2.12
|
|
203
204
|
# via ruamel-yaml
|
|
@@ -209,7 +210,7 @@ six==1.17.0
|
|
|
209
210
|
# via
|
|
210
211
|
# html5lib
|
|
211
212
|
# python-dateutil
|
|
212
|
-
soupsieve==2.
|
|
213
|
+
soupsieve==2.8
|
|
213
214
|
# via beautifulsoup4
|
|
214
215
|
tableschema-to-template==0.0.13
|
|
215
216
|
# via hdx-python-utilities (pyproject.toml)
|
|
@@ -217,9 +218,9 @@ tabulate==0.9.0
|
|
|
217
218
|
# via frictionless
|
|
218
219
|
text-unidecode==1.3
|
|
219
220
|
# via python-slugify
|
|
220
|
-
typer==0.
|
|
221
|
+
typer==0.19.1
|
|
221
222
|
# via frictionless
|
|
222
|
-
typing-extensions==4.
|
|
223
|
+
typing-extensions==4.15.0
|
|
223
224
|
# via
|
|
224
225
|
# beautifulsoup4
|
|
225
226
|
# frictionless
|
|
@@ -235,7 +236,7 @@ urllib3==2.5.0
|
|
|
235
236
|
# via requests
|
|
236
237
|
validators==0.35.0
|
|
237
238
|
# via frictionless
|
|
238
|
-
virtualenv==20.
|
|
239
|
+
virtualenv==20.34.0
|
|
239
240
|
# via pre-commit
|
|
240
241
|
watchdog==6.0.0
|
|
241
242
|
# via mkdocs
|
|
@@ -245,7 +246,7 @@ xlrd==2.0.2
|
|
|
245
246
|
# via hdx-python-utilities (pyproject.toml)
|
|
246
247
|
xlsx2csv==0.8.4
|
|
247
248
|
# via hdx-python-utilities (pyproject.toml)
|
|
248
|
-
xlsxwriter==3.2.
|
|
249
|
+
xlsxwriter==3.2.9
|
|
249
250
|
# via tableschema-to-template
|
|
250
251
|
xlwt==1.3.0
|
|
251
252
|
# via hdx-python-utilities (pyproject.toml)
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
# file generated by setuptools-scm
|
|
2
2
|
# don't change, don't track in version control
|
|
3
3
|
|
|
4
|
-
__all__ = [
|
|
4
|
+
__all__ = [
|
|
5
|
+
"__version__",
|
|
6
|
+
"__version_tuple__",
|
|
7
|
+
"version",
|
|
8
|
+
"version_tuple",
|
|
9
|
+
"__commit_id__",
|
|
10
|
+
"commit_id",
|
|
11
|
+
]
|
|
5
12
|
|
|
6
13
|
TYPE_CHECKING = False
|
|
7
14
|
if TYPE_CHECKING:
|
|
@@ -9,13 +16,19 @@ if TYPE_CHECKING:
|
|
|
9
16
|
from typing import Union
|
|
10
17
|
|
|
11
18
|
VERSION_TUPLE = Tuple[Union[int, str], ...]
|
|
19
|
+
COMMIT_ID = Union[str, None]
|
|
12
20
|
else:
|
|
13
21
|
VERSION_TUPLE = object
|
|
22
|
+
COMMIT_ID = object
|
|
14
23
|
|
|
15
24
|
version: str
|
|
16
25
|
__version__: str
|
|
17
26
|
__version_tuple__: VERSION_TUPLE
|
|
18
27
|
version_tuple: VERSION_TUPLE
|
|
28
|
+
commit_id: COMMIT_ID
|
|
29
|
+
__commit_id__: COMMIT_ID
|
|
19
30
|
|
|
20
|
-
__version__ = version = '3.9.
|
|
21
|
-
__version_tuple__ = version_tuple = (3, 9,
|
|
31
|
+
__version__ = version = '3.9.2'
|
|
32
|
+
__version_tuple__ = version_tuple = (3, 9, 2)
|
|
33
|
+
|
|
34
|
+
__commit_id__ = commit_id = None
|
|
@@ -261,6 +261,7 @@ class Download(BaseDownload):
|
|
|
261
261
|
timeout: Optional[float] = None,
|
|
262
262
|
headers: Optional[Dict] = None,
|
|
263
263
|
encoding: Optional[str] = None,
|
|
264
|
+
json_string: bool = False,
|
|
264
265
|
) -> requests.Response:
|
|
265
266
|
"""Setup download from provided url returning the response.
|
|
266
267
|
|
|
@@ -272,6 +273,7 @@ class Download(BaseDownload):
|
|
|
272
273
|
timeout (Optional[float]): Timeout for connecting to URL. Defaults to None (no timeout).
|
|
273
274
|
headers (Optional[Dict]): Headers to pass. Defaults to None.
|
|
274
275
|
encoding (Optional[str]): Encoding to use for text response. Defaults to None (best guess).
|
|
276
|
+
json_string (bool): Whether to post parameters as JSON string. Defaults to False.
|
|
275
277
|
|
|
276
278
|
Returns:
|
|
277
279
|
requests.Response: requests.Response object
|
|
@@ -288,10 +290,11 @@ class Download(BaseDownload):
|
|
|
288
290
|
url = urlunsplit(spliturl)
|
|
289
291
|
if post:
|
|
290
292
|
full_url, parameters = self.get_url_params_for_post(url, parameters)
|
|
291
|
-
|
|
293
|
+
if json_string:
|
|
294
|
+
parameters = json.dumps(parameters)
|
|
292
295
|
self.response = self.session.post(
|
|
293
296
|
full_url,
|
|
294
|
-
data=
|
|
297
|
+
data=parameters,
|
|
295
298
|
stream=stream,
|
|
296
299
|
timeout=timeout,
|
|
297
300
|
headers=headers,
|
|
@@ -423,6 +426,7 @@ class Download(BaseDownload):
|
|
|
423
426
|
timeout (float): Timeout for connecting to URL. Defaults to None (no timeout).
|
|
424
427
|
headers (Dict): Headers to pass. Defaults to None.
|
|
425
428
|
encoding (str): Encoding to use for text response. Defaults to None (best guess).
|
|
429
|
+
json_string (bool): Whether to post parameters as JSON string. Defaults to False.
|
|
426
430
|
|
|
427
431
|
Returns:
|
|
428
432
|
str: Path of downloaded file
|
|
@@ -443,6 +447,7 @@ class Download(BaseDownload):
|
|
|
443
447
|
timeout=kwargs.get("timeout"),
|
|
444
448
|
headers=kwargs.get("headers"),
|
|
445
449
|
encoding=kwargs.get("encoding"),
|
|
450
|
+
json_string=kwargs.get("json_string", False),
|
|
446
451
|
)
|
|
447
452
|
return self.stream_path(
|
|
448
453
|
path, f"Download of {url} failed in retrieval of stream!"
|
|
@@ -459,6 +464,7 @@ class Download(BaseDownload):
|
|
|
459
464
|
timeout (float): Timeout for connecting to URL. Defaults to None (no timeout).
|
|
460
465
|
headers (Dict): Headers to pass. Defaults to None.
|
|
461
466
|
encoding (str): Encoding to use for text response. Defaults to None (best guess).
|
|
467
|
+
json_string (bool): Whether to post parameters as JSON string. Defaults to False.
|
|
462
468
|
|
|
463
469
|
Returns:
|
|
464
470
|
requests.Response: Response
|
|
@@ -471,6 +477,7 @@ class Download(BaseDownload):
|
|
|
471
477
|
timeout=kwargs.get("timeout"),
|
|
472
478
|
headers=kwargs.get("headers"),
|
|
473
479
|
encoding=kwargs.get("encoding"),
|
|
480
|
+
json_string=kwargs.get("json_string", False),
|
|
474
481
|
)
|
|
475
482
|
|
|
476
483
|
def get_header(self, header: str) -> Any:
|
|
@@ -72,13 +72,14 @@ def load_yaml(
|
|
|
72
72
|
Any: The data from the YAML file
|
|
73
73
|
"""
|
|
74
74
|
with open(path, encoding=encoding) as f:
|
|
75
|
+
data = f.read()
|
|
76
|
+
if not data:
|
|
77
|
+
if loaderror_if_empty:
|
|
78
|
+
raise LoadError(f"YAML file: {path} is empty!")
|
|
79
|
+
return None
|
|
75
80
|
yaml = YAML()
|
|
76
|
-
yamlobj = yaml.load(
|
|
77
|
-
|
|
78
|
-
if loaderror_if_empty:
|
|
79
|
-
raise LoadError(f"YAML file: {path} is empty!")
|
|
80
|
-
return None
|
|
81
|
-
return yamlobj
|
|
81
|
+
yamlobj = yaml.load(data)
|
|
82
|
+
return yamlobj
|
|
82
83
|
|
|
83
84
|
|
|
84
85
|
def load_json(
|
|
@@ -95,12 +96,13 @@ def load_json(
|
|
|
95
96
|
Any: The data from the JSON file
|
|
96
97
|
"""
|
|
97
98
|
with open(path, encoding=encoding) as f:
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
99
|
+
data = f.read()
|
|
100
|
+
if not data:
|
|
101
|
+
if loaderror_if_empty:
|
|
102
|
+
raise LoadError(f"JSON file: {path} is empty!")
|
|
103
|
+
return None
|
|
104
|
+
jsonobj = json.loads(data)
|
|
105
|
+
return jsonobj
|
|
104
106
|
|
|
105
107
|
|
|
106
108
|
def load_and_merge_yaml(
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[]
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_downloader.py
RENAMED
|
@@ -386,6 +386,18 @@ class TestDownloader:
|
|
|
386
386
|
parameters=OrderedDict([("a", "3"), ("c", "2")]),
|
|
387
387
|
)
|
|
388
388
|
json = downloader.get_json()
|
|
389
|
+
assert list(json["form"].items()) == list(
|
|
390
|
+
OrderedDict(
|
|
391
|
+
[("a", "3"), ("c", "2"), ("id", "3"), ("lala", "b")]
|
|
392
|
+
).items()
|
|
393
|
+
)
|
|
394
|
+
downloader.setup(
|
|
395
|
+
f"{postfixtureurl}?id=3&lala=b",
|
|
396
|
+
post=True,
|
|
397
|
+
parameters=OrderedDict([("a", "3"), ("c", "2")]),
|
|
398
|
+
json_string=True,
|
|
399
|
+
)
|
|
400
|
+
json = downloader.get_json()
|
|
389
401
|
assert list(json["json"].items()) == list(
|
|
390
402
|
OrderedDict(
|
|
391
403
|
[("a", "3"), ("c", "2"), ("id", "3"), ("lala", "b")]
|
|
@@ -526,6 +538,17 @@ class TestDownloader:
|
|
|
526
538
|
post=True,
|
|
527
539
|
parameters=OrderedDict([("a", "3"), ("c", "2")]),
|
|
528
540
|
)
|
|
541
|
+
assert list(json["form"].items()) == list(
|
|
542
|
+
OrderedDict(
|
|
543
|
+
[("a", "3"), ("c", "2"), ("id", "3"), ("lala", "b")]
|
|
544
|
+
).items()
|
|
545
|
+
)
|
|
546
|
+
json = downloader.download_json(
|
|
547
|
+
f"{postfixtureurl}?id=3&lala=b",
|
|
548
|
+
post=True,
|
|
549
|
+
parameters=OrderedDict([("a", "3"), ("c", "2")]),
|
|
550
|
+
json_string=True,
|
|
551
|
+
)
|
|
529
552
|
assert list(json["json"].items()) == list(
|
|
530
553
|
OrderedDict(
|
|
531
554
|
[("a", "3"), ("c", "2"), ("id", "3"), ("lala", "b")]
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_loader.py
RENAMED
|
@@ -113,17 +113,33 @@ a
|
|
|
113
113
|
test"""
|
|
114
114
|
expected_text_newlines_to_spaces = """ hello this is a test """
|
|
115
115
|
|
|
116
|
-
|
|
117
|
-
|
|
116
|
+
@pytest.fixture(scope="class")
|
|
117
|
+
def loaderfolder(self, fixturesfolder):
|
|
118
|
+
return join(fixturesfolder, "loader")
|
|
119
|
+
|
|
120
|
+
@pytest.fixture(scope="class")
|
|
121
|
+
def empty_yaml(self, loaderfolder):
|
|
122
|
+
return join(loaderfolder, "empty.yaml")
|
|
123
|
+
|
|
124
|
+
@pytest.fixture(scope="class")
|
|
125
|
+
def empty_json(self, loaderfolder):
|
|
126
|
+
return join(loaderfolder, "empty.json")
|
|
127
|
+
|
|
128
|
+
@pytest.fixture(scope="class")
|
|
129
|
+
def empty_list(self, loaderfolder):
|
|
130
|
+
return join(loaderfolder, "empty_list.json")
|
|
131
|
+
|
|
132
|
+
def test_load_empty(self, empty_yaml, empty_json, empty_list):
|
|
118
133
|
with pytest.raises(LoadError):
|
|
119
|
-
load_text(
|
|
120
|
-
load_text(
|
|
134
|
+
load_text(empty_yaml)
|
|
135
|
+
load_text(empty_yaml, loaderror_if_empty=False) == ""
|
|
121
136
|
with pytest.raises(LoadError):
|
|
122
|
-
load_yaml(
|
|
123
|
-
load_yaml(
|
|
137
|
+
load_yaml(empty_yaml)
|
|
138
|
+
load_yaml(empty_yaml, loaderror_if_empty=False) is None
|
|
124
139
|
with pytest.raises(LoadError):
|
|
125
|
-
load_json(
|
|
126
|
-
load_json(
|
|
140
|
+
load_json(empty_json)
|
|
141
|
+
load_json(empty_json, loaderror_if_empty=False) is None
|
|
142
|
+
load_json(empty_list)
|
|
127
143
|
|
|
128
144
|
def test_load_and_merge_yaml(self, configfolder):
|
|
129
145
|
result = load_and_merge_yaml(
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
""
|
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/.github/workflows/publish-test.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/.github/workflows/run-python-tests.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
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/base_downloader.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/error_handler.py
RENAMED
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/errors_onexit.py
RENAMED
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/src/hdx/utilities/frictionless_wrapper.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/hdx_config.json
RENAMED
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/hdx_config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/json_csv.yaml
RENAMED
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/logging_config.json
RENAMED
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/logging_config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/smtp_config.json
RENAMED
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/config/smtp_config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/basicauth.txt
RENAMED
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/bearertoken.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/test_data.csv
RENAMED
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/test_data.xlsx
RENAMED
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/downloader/test_data2.csv
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
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/retriever/test.json
RENAMED
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/retriever/test.yaml
RENAMED
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/retriever/test_hxl.csv
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
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/state/analysis_dates.txt
RENAMED
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/fixtures/state/last_build_date.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_compare.py
RENAMED
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_dateparse.py
RENAMED
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_dictandlist.py
RENAMED
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_easy_logging.py
RENAMED
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_encoding.py
RENAMED
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_error_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_matching.py
RENAMED
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_retriever.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.9.0 → hdx_python_utilities-3.9.2}/tests/hdx/utilities/test_useragent.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|