hdx-python-country 3.9.6__tar.gz → 4.0.0__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.
Files changed (51) hide show
  1. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/.pre-commit-config.yaml +5 -4
  2. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/PKG-INFO +3 -3
  3. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/documentation/index.md +2 -0
  4. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/hatch.toml +1 -1
  5. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/pyproject.toml +2 -2
  6. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/requirements.txt +34 -131
  7. hdx_python_country-4.0.0/ruff.toml +10 -0
  8. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/src/hdx/location/_version.py +16 -3
  9. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/src/hdx/location/adminlevel.py +103 -105
  10. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/src/hdx/location/country.py +224 -179
  11. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/src/hdx/location/currency.py +69 -69
  12. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/src/hdx/location/int_timestamp.py +2 -2
  13. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/src/hdx/location/wfp_api.py +23 -24
  14. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/src/hdx/location/wfp_exchangerates.py +14 -14
  15. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/hdx/location/test_adminlevel.py +3 -3
  16. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/hdx/location/test_country.py +111 -5
  17. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/hdx/location/test_wfp_exchangerates.py +5 -4
  18. hdx_python_country-3.9.6/ruff.toml +0 -15
  19. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/.coveragerc +0 -0
  20. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/.github/workflows/publish.yaml +0 -0
  21. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/.github/workflows/run-python-tests.yaml +0 -0
  22. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/.gitignore +0 -0
  23. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/LICENSE +0 -0
  24. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/README.md +0 -0
  25. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/documentation/.readthedocs.yaml +0 -0
  26. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/documentation/mkdocs.yaml +0 -0
  27. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/pytest.ini +0 -0
  28. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/src/hdx/location/Countries & Territories Taxonomy MVP - C&T Taxonomy with HXL Tags.csv +0 -0
  29. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/src/hdx/location/__init__.py +0 -0
  30. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/fixtures/adminlevel.yaml +0 -0
  31. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/fixtures/adminlevelparent.yaml +0 -0
  32. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/fixtures/download-global-pcode-lengths.csv +0 -0
  33. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/fixtures/download-global-pcodes-adm-1-2.csv +0 -0
  34. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/fixtures/secondary_historic_rates.csv +0 -0
  35. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/fixtures/secondary_rates.json +0 -0
  36. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/fixtures/wfp/Currency_List_1.json +0 -0
  37. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/fixtures/wfp/Currency_List_2.json +0 -0
  38. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/fixtures/wfp/Currency_UsdIndirectQuotation_1.json +0 -0
  39. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/fixtures/wfp/Currency_UsdIndirectQuotation_10.json +0 -0
  40. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/fixtures/wfp/Currency_UsdIndirectQuotation_2.json +0 -0
  41. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/fixtures/wfp/Currency_UsdIndirectQuotation_3.json +0 -0
  42. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/fixtures/wfp/Currency_UsdIndirectQuotation_4.json +0 -0
  43. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/fixtures/wfp/Currency_UsdIndirectQuotation_5.json +0 -0
  44. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/fixtures/wfp/Currency_UsdIndirectQuotation_6.json +0 -0
  45. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/fixtures/wfp/Currency_UsdIndirectQuotation_7.json +0 -0
  46. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/fixtures/wfp/Currency_UsdIndirectQuotation_8.json +0 -0
  47. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/fixtures/wfp/Currency_UsdIndirectQuotation_9.json +0 -0
  48. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/hdx/location/Countries_UZB_Deleted.csv +0 -0
  49. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/hdx/location/__init__.py +0 -0
  50. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/hdx/location/conftest.py +0 -0
  51. {hdx_python_country-3.9.6 → hdx_python_country-4.0.0}/tests/hdx/location/test_currency.py +3 -3
@@ -2,13 +2,13 @@ default_language_version:
2
2
  python: python3.13
3
3
  repos:
4
4
  - repo: https://github.com/pre-commit/pre-commit-hooks
5
- rev: v5.0.0
5
+ rev: v6.0.0
6
6
  hooks:
7
7
  - id: trailing-whitespace
8
8
  - id: end-of-file-fixer
9
9
  - id: check-ast
10
10
  - repo: https://github.com/astral-sh/ruff-pre-commit
11
- rev: v0.12.0
11
+ rev: v0.14.10
12
12
  hooks:
13
13
  # Run the linter.
14
14
  - id: ruff-check
@@ -16,10 +16,11 @@ repos:
16
16
  # Run the formatter.
17
17
  - id: ruff-format
18
18
  - repo: https://github.com/astral-sh/uv-pre-commit
19
- rev: 0.7.14
19
+ rev: 0.9.22
20
20
  hooks:
21
21
  # Run the pip compile
22
22
  - id: pip-compile
23
23
  name: pip-compile requirements.txt
24
24
  files: pyproject.toml
25
- args: [ pyproject.toml, --resolver=backtracking, --all-extras, --upgrade, -q, -o, requirements.txt ]
25
+ args: [ pyproject.toml, --resolver=backtracking, --upgrade, -q,
26
+ -o, requirements.txt ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hdx-python-country
3
- Version: 3.9.6
3
+ Version: 4.0.0
4
4
  Summary: HDX Python country code and exchange rate (fx) utilities
5
5
  Project-URL: Homepage, https://github.com/OCHA-DAP/hdx-python-country
6
6
  Author: Michael Rans
@@ -24,8 +24,8 @@ Classifier: Programming Language :: Python :: 3.10
24
24
  Classifier: Programming Language :: Python :: 3.11
25
25
  Classifier: Programming Language :: Python :: 3.12
26
26
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
27
- Requires-Python: >=3.8
28
- Requires-Dist: hdx-python-utilities>=3.8.7
27
+ Requires-Python: >=3.10
28
+ Requires-Dist: hdx-python-utilities>=4.0.0
29
29
  Requires-Dist: libhxl>=5.2.2
30
30
  Requires-Dist: tenacity
31
31
  Provides-Extra: dev
@@ -42,6 +42,8 @@ The code for the library is [here](https://github.com/OCHA-DAP/hdx-python-countr
42
42
  The library has detailed API documentation which can be found in the menu at the top.
43
43
 
44
44
  ## Breaking Changes
45
+ From 4.0.0, Python 3.10 or later is required
46
+
45
47
  From 3.9.2, must call Currency.setup before using Currency methods.
46
48
 
47
49
  From 3.7.5, removed clean_name function. There is now a function normalise in
@@ -34,4 +34,4 @@ run = """
34
34
 
35
35
  [envs.hatch-static-analysis]
36
36
  config-path = "none"
37
- dependencies = ["ruff==0.9.10"]
37
+ dependencies = ["ruff==0.14.10"]
@@ -31,10 +31,10 @@ classifiers = [
31
31
  "Operating System :: MacOS",
32
32
  "Operating System :: Microsoft :: Windows",
33
33
  ]
34
- requires-python = ">=3.8"
34
+ requires-python = ">=3.10"
35
35
 
36
36
  dependencies = [
37
- "hdx-python-utilities>=3.8.7",
37
+ "hdx-python-utilities>=4.0.0",
38
38
  "libhxl>=5.2.2",
39
39
  "tenacity",
40
40
  ]
@@ -1,211 +1,118 @@
1
1
  # This file was autogenerated by uv via the following command:
2
- # uv pip compile pyproject.toml --resolver=backtracking --all-extras -o requirements.txt
2
+ # uv pip compile pyproject.toml --resolver=backtracking -o requirements.txt
3
3
  annotated-types==0.7.0
4
4
  # via pydantic
5
- astdoc==1.3.0
6
- # via mkapi
7
- attrs==25.3.0
5
+ attrs==25.4.0
8
6
  # via
9
7
  # frictionless
10
8
  # jsonlines
11
9
  # jsonschema
12
10
  # referencing
13
- babel==2.17.0
14
- # via mkdocs-material
15
- backrefs==5.9
16
- # via mkdocs-material
17
- certifi==2025.7.9
11
+ certifi==2026.1.4
18
12
  # via requests
19
- cfgv==3.4.0
20
- # via pre-commit
21
13
  chardet==5.2.0
22
14
  # via frictionless
23
- charset-normalizer==3.4.2
15
+ charset-normalizer==3.4.4
24
16
  # via requests
25
- click==8.2.1
26
- # via
27
- # mkdocs
28
- # typer
29
- colorama==0.4.6
30
- # via mkdocs-material
31
- coverage==7.9.2
32
- # via pytest-cov
33
- distlib==0.3.9
34
- # via virtualenv
17
+ click==8.3.1
18
+ # via typer
35
19
  et-xmlfile==2.0.0
36
20
  # via openpyxl
37
- filelock==3.18.0
38
- # via virtualenv
39
21
  frictionless==5.18.1
40
22
  # via hdx-python-utilities
41
- ghp-import==2.1.0
42
- # via mkdocs
43
- hdx-python-utilities==3.8.7
23
+ hdx-python-utilities==4.0.0
44
24
  # via hdx-python-country (pyproject.toml)
45
- humanize==4.12.3
25
+ humanize==4.15.0
46
26
  # via frictionless
47
- identify==2.6.12
48
- # via pre-commit
49
- idna==3.10
27
+ idna==3.11
50
28
  # via requests
51
- ijson==3.4.0
29
+ ijson==3.4.0.post0
52
30
  # via hdx-python-utilities
53
- iniconfig==2.1.0
54
- # via pytest
55
31
  isodate==0.7.2
56
32
  # via frictionless
57
33
  jinja2==3.1.6
58
- # via
59
- # frictionless
60
- # mkapi
61
- # mkdocs
62
- # mkdocs-material
34
+ # via frictionless
63
35
  jsonlines==4.0.0
64
36
  # via hdx-python-utilities
65
37
  jsonpath-ng==1.7.0
66
38
  # via libhxl
67
- jsonschema==4.24.0
39
+ jsonschema==4.26.0
68
40
  # via
69
41
  # frictionless
70
42
  # tableschema-to-template
71
- jsonschema-specifications==2025.4.1
43
+ jsonschema-specifications==2025.9.1
72
44
  # via jsonschema
73
45
  libhxl==5.2.2
74
46
  # via hdx-python-country (pyproject.toml)
75
47
  loguru==0.7.3
76
48
  # via hdx-python-utilities
77
- markdown==3.8.2
78
- # via
79
- # mkdocs
80
- # mkdocs-material
81
- # pymdown-extensions
82
- markdown-it-py==3.0.0
49
+ markdown-it-py==4.0.0
83
50
  # via rich
84
- marko==2.1.4
51
+ marko==2.2.2
85
52
  # via frictionless
86
- markupsafe==3.0.2
87
- # via
88
- # jinja2
89
- # mkdocs
53
+ markupsafe==3.0.3
54
+ # via jinja2
90
55
  mdurl==0.1.2
91
56
  # via markdown-it-py
92
- mergedeep==1.3.4
93
- # via
94
- # mkdocs
95
- # mkdocs-get-deps
96
- mkapi==4.4.3
97
- # via hdx-python-country (pyproject.toml)
98
- mkdocs==1.6.1
99
- # via
100
- # mkapi
101
- # mkdocs-material
102
- mkdocs-get-deps==0.2.0
103
- # via mkdocs
104
- mkdocs-material==9.6.15
105
- # via mkapi
106
- mkdocs-material-extensions==1.3.1
107
- # via mkdocs-material
108
- nodeenv==1.9.1
109
- # via pre-commit
110
57
  openpyxl==3.1.5
111
58
  # via hdx-python-utilities
112
- packaging==25.0
113
- # via
114
- # mkdocs
115
- # pytest
116
- paginate==0.5.7
117
- # via mkdocs-material
118
- pathspec==0.12.1
119
- # via mkdocs
120
- petl==1.7.16
59
+ petl==1.7.17
121
60
  # via frictionless
122
- platformdirs==4.3.8
123
- # via
124
- # mkdocs-get-deps
125
- # virtualenv
126
- pluggy==1.6.0
127
- # via
128
- # pytest
129
- # pytest-cov
130
61
  ply==3.11
131
62
  # via
132
63
  # jsonpath-ng
133
64
  # libhxl
134
- pre-commit==4.2.0
135
- # via hdx-python-country (pyproject.toml)
136
- pydantic==2.11.7
65
+ pydantic==2.12.5
137
66
  # via frictionless
138
- pydantic-core==2.33.2
67
+ pydantic-core==2.41.5
139
68
  # via pydantic
140
69
  pygments==2.19.2
141
- # via
142
- # mkdocs-material
143
- # pytest
144
- # rich
145
- pymdown-extensions==10.16
146
- # via mkdocs-material
70
+ # via rich
147
71
  pyphonetics==0.5.3
148
72
  # via hdx-python-utilities
149
- pytest==8.4.1
150
- # via
151
- # hdx-python-country (pyproject.toml)
152
- # pytest-cov
153
- pytest-cov==6.2.1
154
- # via hdx-python-country (pyproject.toml)
155
73
  python-dateutil==2.9.0.post0
156
74
  # via
157
75
  # frictionless
158
- # ghp-import
159
76
  # hdx-python-utilities
160
77
  # libhxl
161
78
  python-io-wrapper==0.3.1
162
79
  # via libhxl
163
80
  python-slugify==8.0.4
164
81
  # via frictionless
165
- pyyaml==6.0.2
82
+ pyyaml==6.0.3
166
83
  # via
167
84
  # frictionless
168
- # mkdocs
169
- # mkdocs-get-deps
170
- # pre-commit
171
- # pymdown-extensions
172
- # pyyaml-env-tag
173
85
  # tableschema-to-template
174
- pyyaml-env-tag==1.1
175
- # via mkdocs
176
86
  ratelimit==2.2.1
177
87
  # via hdx-python-utilities
178
- referencing==0.36.2
88
+ referencing==0.37.0
179
89
  # via
180
90
  # jsonschema
181
91
  # jsonschema-specifications
182
- requests==2.32.4
92
+ requests==2.32.5
183
93
  # via
184
94
  # frictionless
185
95
  # libhxl
186
- # mkdocs-material
187
96
  # requests-file
188
- requests-file==2.1.0
97
+ requests-file==3.0.1
189
98
  # via hdx-python-utilities
190
99
  rfc3986==2.0.0
191
100
  # via frictionless
192
- rich==14.0.0
101
+ rich==14.2.0
193
102
  # via typer
194
- rpds-py==0.26.0
103
+ rpds-py==0.30.0
195
104
  # via
196
105
  # jsonschema
197
106
  # referencing
198
- ruamel-yaml==0.18.14
107
+ ruamel-yaml==0.19.1
199
108
  # via hdx-python-utilities
200
- ruamel-yaml-clib==0.2.12
201
- # via ruamel-yaml
202
109
  shellingham==1.5.4
203
110
  # via typer
204
111
  simpleeval==1.0.3
205
112
  # via frictionless
206
113
  six==1.17.0
207
114
  # via python-dateutil
208
- structlog==25.4.0
115
+ structlog==25.5.0
209
116
  # via libhxl
210
117
  tableschema-to-template==0.0.13
211
118
  # via hdx-python-utilities
@@ -215,31 +122,27 @@ tenacity==9.1.2
215
122
  # via hdx-python-country (pyproject.toml)
216
123
  text-unidecode==1.3
217
124
  # via python-slugify
218
- typer==0.16.0
125
+ typer==0.21.1
219
126
  # via frictionless
220
- typing-extensions==4.14.1
127
+ typing-extensions==4.15.0
221
128
  # via
222
129
  # frictionless
223
130
  # pydantic
224
131
  # pydantic-core
225
132
  # typer
226
133
  # typing-inspection
227
- typing-inspection==0.4.1
134
+ typing-inspection==0.4.2
228
135
  # via pydantic
229
136
  unidecode==1.4.0
230
137
  # via
231
138
  # libhxl
232
139
  # pyphonetics
233
- urllib3==2.5.0
140
+ urllib3==2.6.3
234
141
  # via
235
142
  # libhxl
236
143
  # requests
237
144
  validators==0.35.0
238
145
  # via frictionless
239
- virtualenv==20.31.2
240
- # via pre-commit
241
- watchdog==6.0.0
242
- # via mkdocs
243
146
  wheel==0.45.1
244
147
  # via libhxl
245
148
  xlrd==2.0.2
@@ -248,7 +151,7 @@ xlrd3==1.1.0
248
151
  # via libhxl
249
152
  xlsx2csv==0.8.4
250
153
  # via hdx-python-utilities
251
- xlsxwriter==3.2.5
154
+ xlsxwriter==3.2.9
252
155
  # via tableschema-to-template
253
156
  xlwt==1.3.0
254
157
  # via hdx-python-utilities
@@ -0,0 +1,10 @@
1
+ target-version = "py310"
2
+ src = ["src"]
3
+ exclude = ["_version.py"]
4
+
5
+ [lint]
6
+ # List of rules: https://docs.astral.sh/ruff/rules/
7
+ extend-select = [
8
+ "I", # isort
9
+ "UP" # Upgrade Python
10
+ ]
@@ -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__ = ["__version__", "__version_tuple__", "version", "version_tuple"]
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.6'
21
- __version_tuple__ = version_tuple = (3, 9, 6)
31
+ __version__ = version = '4.0.0'
32
+ __version_tuple__ = version_tuple = (4, 0, 0)
33
+
34
+ __commit_id__ = commit_id = None