hdx-python-utilities 3.8.2__tar.gz → 3.8.4__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.8.2 → hdx_python_utilities-3.8.4}/.config/pre-commit-config.yaml +2 -2
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/PKG-INFO +1 -1
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/documentation/main.md +4 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/pyproject.toml +1 -1
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/requirements.txt +14 -12
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/_version.py +2 -2
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/dictandlist.py +13 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/error_handler.py +5 -5
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/text.py +1 -1
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_dictandlist.py +5 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/.config/coveragerc +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/.config/pytest.ini +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/.config/ruff.toml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/.github/workflows/publish.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/.github/workflows/run-python-tests.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/.gitignore +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/CONTRIBUTING.md +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/LICENSE +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/README.md +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/documentation/.readthedocs.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/documentation/pydoc-markdown.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/__init__.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/base_downloader.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/compare.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/dateparse.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/downloader.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/easy_logging.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/email.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/encoding.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/errors_onexit.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/frictionless_wrapper.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/html.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/loader.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/matching.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/path.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/retriever.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/saver.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/session.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/state.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/typehint.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/useragent.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/uuid.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/compare/test_csv_processing.csv +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/compare/test_csv_processing2.csv +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/empty.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/hdx_config.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/hdx_config.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/hdx_email_configuration.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/hdx_email_configuration.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/json_csv.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/logging_config.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/logging_config.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/project_configuration.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/project_configuration.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/smtp_config.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/smtp_config.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/user_agent_config.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/user_agent_config2.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/user_agent_config3.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/user_agent_config_wrong.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/downloader/basicauth.txt +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/downloader/bearertoken.txt +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/downloader/extra_params.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/downloader/extra_params.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/downloader/extra_params_tree.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/downloader/test_csv_processing.csv +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/downloader/test_csv_processing_blanks.csv +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/downloader/test_data.csv +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/downloader/test_data.xlsx +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/downloader/test_data1.csv/empty.txt +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/downloader/test_data2.csv +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/downloader/test_json_processing.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/downloader/test_xls_processing.xls +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/downloader/test_xlsx_processing.xlsx +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/html/response.html +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/loader/empty.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/loader/empty.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/retriever/fallbacks/test.csv +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/retriever/fallbacks/test.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/retriever/fallbacks/test.txt +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/retriever/fallbacks/test.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/retriever/retriever-test.csv +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/retriever/test.csv +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/retriever/test.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/retriever/test.txt +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/retriever/test.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/retriever/test_hxl.csv +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/saver/out.csv +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/saver/out.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/saver/out2.csv +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/saver/out2.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/saver/out5.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/saver/out6.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/saver/out7.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/saver/out8.csv +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/saver/out8.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/saver/pretty-false_sortkeys-false.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/saver/pretty-false_sortkeys-false.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/saver/pretty-false_sortkeys-true.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/saver/pretty-false_sortkeys-true.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/saver/pretty-true_sortkeys-false.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/saver/pretty-true_sortkeys-false.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/saver/pretty-true_sortkeys-true.json +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/saver/pretty-true_sortkeys-true.yaml +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/state/analysis_dates.txt +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/state/last_build_date.txt +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/test_data.csv +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/conftest.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_compare.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_dateparse.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_downloader.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_easy_logging.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_email.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_encoding.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_error_handler.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_html.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_loader.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_matching.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_path.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_retriever.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_saver.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_state.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_text.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_useragent.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_uuid.py +0 -0
- {hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/utils.py +0 -0
|
@@ -10,7 +10,7 @@ repos:
|
|
|
10
10
|
exclude: (test_csv_processing_blanks.csv|test.txt)
|
|
11
11
|
- id: check-ast
|
|
12
12
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
13
|
-
rev: v0.
|
|
13
|
+
rev: v0.9.6
|
|
14
14
|
hooks:
|
|
15
15
|
# Run the linter.
|
|
16
16
|
- id: ruff
|
|
@@ -19,7 +19,7 @@ repos:
|
|
|
19
19
|
- id: ruff-format
|
|
20
20
|
args: [--config, .config/ruff.toml]
|
|
21
21
|
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
22
|
-
rev: 0.
|
|
22
|
+
rev: 0.6.1
|
|
23
23
|
hooks:
|
|
24
24
|
# Run the pip compile
|
|
25
25
|
- id: pip-compile
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hdx-python-utilities
|
|
3
|
-
Version: 3.8.
|
|
3
|
+
Version: 3.8.4
|
|
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>
|
|
@@ -466,6 +466,10 @@ configuration for the metadata.
|
|
|
466
466
|
|
|
467
467
|
Examples:
|
|
468
468
|
|
|
469
|
+
# Invert dictionary
|
|
470
|
+
a = {"a": "#a", "b": "#b", "c": "#c"}
|
|
471
|
+
assert invert_dictionary(a) == {"#a": "a", "#b": "b", "#c": "c"}
|
|
472
|
+
|
|
469
473
|
# Merge dictionaries
|
|
470
474
|
d1 = {1: 1, 2: 2, 3: 3, 4: ["a", "b", "c"]}
|
|
471
475
|
d2 = {2: 6, 5: 8, 6: 9, 4: ["d", "e"]}
|
|
@@ -107,7 +107,7 @@ run = """
|
|
|
107
107
|
"""
|
|
108
108
|
|
|
109
109
|
[tool.hatch.envs.hatch-static-analysis]
|
|
110
|
-
dependencies = ["ruff==0.
|
|
110
|
+
dependencies = ["ruff==0.9.6"]
|
|
111
111
|
|
|
112
112
|
[tool.hatch.envs.hatch-static-analysis.scripts]
|
|
113
113
|
format-check = ["ruff format --config .config/ruff.toml --check --diff {args:.}",]
|
|
@@ -2,15 +2,15 @@
|
|
|
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
|
-
attrs==
|
|
5
|
+
attrs==25.1.0
|
|
6
6
|
# via
|
|
7
7
|
# frictionless
|
|
8
8
|
# jsonlines
|
|
9
9
|
# jsonschema
|
|
10
10
|
# referencing
|
|
11
|
-
beautifulsoup4==4.
|
|
11
|
+
beautifulsoup4==4.13.3
|
|
12
12
|
# via hdx-python-utilities (pyproject.toml)
|
|
13
|
-
certifi==
|
|
13
|
+
certifi==2025.1.31
|
|
14
14
|
# via requests
|
|
15
15
|
cfgv==3.4.0
|
|
16
16
|
# via pre-commit
|
|
@@ -20,7 +20,7 @@ charset-normalizer==3.4.1
|
|
|
20
20
|
# via requests
|
|
21
21
|
click==8.1.8
|
|
22
22
|
# via typer
|
|
23
|
-
coverage==7.6.
|
|
23
|
+
coverage==7.6.12
|
|
24
24
|
# via pytest-cov
|
|
25
25
|
distlib==0.3.9
|
|
26
26
|
# via virtualenv
|
|
@@ -30,15 +30,15 @@ email-validator==2.2.0
|
|
|
30
30
|
# via hdx-python-utilities (pyproject.toml)
|
|
31
31
|
et-xmlfile==2.0.0
|
|
32
32
|
# via openpyxl
|
|
33
|
-
filelock==3.
|
|
33
|
+
filelock==3.17.0
|
|
34
34
|
# via virtualenv
|
|
35
35
|
frictionless==5.18.0
|
|
36
36
|
# via hdx-python-utilities (pyproject.toml)
|
|
37
37
|
html5lib==1.1
|
|
38
38
|
# via hdx-python-utilities (pyproject.toml)
|
|
39
|
-
humanize==4.
|
|
39
|
+
humanize==4.12.1
|
|
40
40
|
# via frictionless
|
|
41
|
-
identify==2.6.
|
|
41
|
+
identify==2.6.7
|
|
42
42
|
# via pre-commit
|
|
43
43
|
idna==3.10
|
|
44
44
|
# via
|
|
@@ -84,9 +84,9 @@ platformdirs==4.3.6
|
|
|
84
84
|
# via virtualenv
|
|
85
85
|
pluggy==1.5.0
|
|
86
86
|
# via pytest
|
|
87
|
-
pre-commit==4.0
|
|
87
|
+
pre-commit==4.1.0
|
|
88
88
|
# via hdx-python-utilities (pyproject.toml)
|
|
89
|
-
pydantic==2.10.
|
|
89
|
+
pydantic==2.10.6
|
|
90
90
|
# via frictionless
|
|
91
91
|
pydantic-core==2.27.2
|
|
92
92
|
# via pydantic
|
|
@@ -115,7 +115,7 @@ pyyaml==6.0.2
|
|
|
115
115
|
# tableschema-to-template
|
|
116
116
|
ratelimit==2.2.1
|
|
117
117
|
# via hdx-python-utilities (pyproject.toml)
|
|
118
|
-
referencing==0.
|
|
118
|
+
referencing==0.36.2
|
|
119
119
|
# via
|
|
120
120
|
# jsonschema
|
|
121
121
|
# jsonschema-specifications
|
|
@@ -159,9 +159,11 @@ typer==0.15.1
|
|
|
159
159
|
# via frictionless
|
|
160
160
|
typing-extensions==4.12.2
|
|
161
161
|
# via
|
|
162
|
+
# beautifulsoup4
|
|
162
163
|
# frictionless
|
|
163
164
|
# pydantic
|
|
164
165
|
# pydantic-core
|
|
166
|
+
# referencing
|
|
165
167
|
# typer
|
|
166
168
|
unidecode==1.3.8
|
|
167
169
|
# via pyphonetics
|
|
@@ -169,7 +171,7 @@ urllib3==2.3.0
|
|
|
169
171
|
# via requests
|
|
170
172
|
validators==0.34.0
|
|
171
173
|
# via frictionless
|
|
172
|
-
virtualenv==20.
|
|
174
|
+
virtualenv==20.29.2
|
|
173
175
|
# via pre-commit
|
|
174
176
|
webencodings==0.5.1
|
|
175
177
|
# via html5lib
|
|
@@ -177,7 +179,7 @@ xlrd==2.0.1
|
|
|
177
179
|
# via hdx-python-utilities (pyproject.toml)
|
|
178
180
|
xlsx2csv==0.8.4
|
|
179
181
|
# via hdx-python-utilities (pyproject.toml)
|
|
180
|
-
xlsxwriter==3.2.
|
|
182
|
+
xlsxwriter==3.2.2
|
|
181
183
|
# via tableschema-to-template
|
|
182
184
|
xlwt==1.3.0
|
|
183
185
|
# via hdx-python-utilities (pyproject.toml)
|
|
@@ -8,6 +8,19 @@ from .frictionless_wrapper import get_frictionless_tableresource
|
|
|
8
8
|
from .typehint import ListDict, ListTuple, ListTupleDict
|
|
9
9
|
|
|
10
10
|
|
|
11
|
+
def invert_dictionary(d: Dict) -> Dict:
|
|
12
|
+
"""Invert a dictionary from key - value to value - key. Assumes
|
|
13
|
+
one to one mapping between keys and values.
|
|
14
|
+
|
|
15
|
+
Args:
|
|
16
|
+
d (Dict): Dictionary
|
|
17
|
+
|
|
18
|
+
Returns:
|
|
19
|
+
Dict: Return inverse of dictionary
|
|
20
|
+
"""
|
|
21
|
+
return dict(zip(d.values(), d.keys()))
|
|
22
|
+
|
|
23
|
+
|
|
11
24
|
def merge_two_dictionaries(
|
|
12
25
|
a: Dict, b: Dict, merge_lists: bool = False
|
|
13
26
|
) -> Dict:
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/error_handler.py
RENAMED
|
@@ -151,20 +151,20 @@ class ErrorHandler:
|
|
|
151
151
|
|
|
152
152
|
def log(self) -> None:
|
|
153
153
|
"""
|
|
154
|
-
Log
|
|
154
|
+
Log warnings and errors by category and sorted
|
|
155
155
|
|
|
156
156
|
Returns:
|
|
157
157
|
None
|
|
158
158
|
"""
|
|
159
159
|
|
|
160
|
-
for _, errors in self.shared_errors["error"].items():
|
|
161
|
-
errors = sorted(errors)
|
|
162
|
-
for error in errors:
|
|
163
|
-
logger.error(error)
|
|
164
160
|
for _, warnings in self.shared_errors["warning"].items():
|
|
165
161
|
warnings = sorted(warnings)
|
|
166
162
|
for warning in warnings:
|
|
167
163
|
logger.warning(warning)
|
|
164
|
+
for _, errors in self.shared_errors["error"].items():
|
|
165
|
+
errors = sorted(errors)
|
|
166
|
+
for error in errors:
|
|
167
|
+
logger.error(error)
|
|
168
168
|
|
|
169
169
|
def exit_on_error(self) -> None:
|
|
170
170
|
"""Exit with a 1 code if there are errors and should_exit_on_error
|
|
@@ -122,7 +122,7 @@ def remove_string(
|
|
|
122
122
|
newstring = remove_end_characters(
|
|
123
123
|
newstring, characters_to_remove=end_characters_to_remove
|
|
124
124
|
)
|
|
125
|
-
return f"{newstring}{string[index + len(toremove):]}"
|
|
125
|
+
return f"{newstring}{string[index + len(toremove) :]}"
|
|
126
126
|
|
|
127
127
|
|
|
128
128
|
def get_words_in_sentence(sentence: str) -> List[str]:
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_dictandlist.py
RENAMED
|
@@ -16,6 +16,7 @@ from hdx.utilities.dictandlist import (
|
|
|
16
16
|
float_value_convert,
|
|
17
17
|
integer_key_convert,
|
|
18
18
|
integer_value_convert,
|
|
19
|
+
invert_dictionary,
|
|
19
20
|
key_value_convert,
|
|
20
21
|
list_distribute_contents,
|
|
21
22
|
list_distribute_contents_simple,
|
|
@@ -27,6 +28,10 @@ from hdx.utilities.path import temp_dir
|
|
|
27
28
|
|
|
28
29
|
|
|
29
30
|
class TestDictAndList:
|
|
31
|
+
def test_invert_dictionary(self):
|
|
32
|
+
a = {"a": "#a", "b": "#b", "c": "#c"}
|
|
33
|
+
assert invert_dictionary(a) == {"#a": "a", "#b": "b", "#c": "c"}
|
|
34
|
+
|
|
30
35
|
def test_merge_dictionaries(self):
|
|
31
36
|
d1 = {1: 1, 2: 2, 3: 3, 4: {"a": 1, "b": "c"}}
|
|
32
37
|
d2 = {2: 6, 4: 8, 6: 9, 9: {"c": 12, "e": "h"}}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/.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
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/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.8.2 → hdx_python_utilities-3.8.4}/src/hdx/utilities/errors_onexit.py
RENAMED
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/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.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/hdx_config.json
RENAMED
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/hdx_config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/json_csv.yaml
RENAMED
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/logging_config.json
RENAMED
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/logging_config.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/config/smtp_config.json
RENAMED
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/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.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/downloader/basicauth.txt
RENAMED
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/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.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/downloader/test_data.csv
RENAMED
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/downloader/test_data.xlsx
RENAMED
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/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
|
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/retriever/test.json
RENAMED
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/retriever/test.yaml
RENAMED
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/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.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/state/analysis_dates.txt
RENAMED
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/fixtures/state/last_build_date.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_compare.py
RENAMED
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_dateparse.py
RENAMED
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_downloader.py
RENAMED
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_easy_logging.py
RENAMED
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_encoding.py
RENAMED
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_error_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_loader.py
RENAMED
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_matching.py
RENAMED
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_retriever.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hdx_python_utilities-3.8.2 → hdx_python_utilities-3.8.4}/tests/hdx/utilities/test_useragent.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|