hdx-python-pipelineutils 0.0.3__tar.gz → 0.0.5__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_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/.pre-commit-config.yaml +3 -3
- hdx_python_pipelineutils-0.0.5/CLAUDE.md +58 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/PKG-INFO +2 -2
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/pyproject.toml +1 -1
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/src/hdx/pipelineutils/_version.py +2 -2
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/src/hdx/pipelineutils/hapi_admins.py +2 -2
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/src/hdx/pipelineutils/sector_configuration.yaml +24 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/tests/conftest.py +0 -1
- hdx_python_pipelineutils-0.0.5/tests/fixtures/input/sahel-humanitarian-needs-overview.json +1 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/uv.lock +22 -23
- hdx_python_pipelineutils-0.0.3/tests/config/project_configuration.yaml +0 -1684
- hdx_python_pipelineutils-0.0.3/tests/fixtures/input/sahel-humanitarian-needs-overview.json +0 -1
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/.github/workflows/publish.yaml +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/.github/workflows/run-python-tests.yaml +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/.gitignore +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/LICENSE +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/README.md +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/src/hdx/pipelineutils/__init__.py +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/src/hdx/pipelineutils/lookup.py +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/src/hdx/pipelineutils/org_type.py +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/src/hdx/pipelineutils/org_type_configuration.yaml +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/src/hdx/pipelineutils/reader.py +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/src/hdx/pipelineutils/sector.py +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/tests/fixtures/input/download-global-pcode-lengths.csv +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/tests/fixtures/input/download-global-pcodes-adm-1-2.csv +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/tests/fixtures/input/education_closures_school_closures.csv +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/tests/fixtures/input/global-coordination-groups-beta.json +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/tests/fixtures/input/hno_2017_sahel_nutrition.csv +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/tests/fixtures/input/hno_2017_sahel_people_in_need.xlsx +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/tests/fixtures/input/org_type_organization_types_beta_csv_no_hxl.csv +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/tests/fixtures/input/organization-types-beta.json +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/tests/fixtures/input/sector_global_coordination_groups_beta_csv_no_hxl.csv +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/tests/test_hapi_admins.py +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/tests/test_lookup.py +0 -0
- {hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/tests/test_readers.py +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
default_language_version:
|
|
2
|
-
python: python3
|
|
2
|
+
python: python3
|
|
3
3
|
|
|
4
4
|
repos:
|
|
5
5
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
@@ -10,7 +10,7 @@ repos:
|
|
|
10
10
|
- id: check-ast
|
|
11
11
|
|
|
12
12
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
13
|
-
rev: v0.
|
|
13
|
+
rev: v0.15.7
|
|
14
14
|
hooks:
|
|
15
15
|
# Run the linter.
|
|
16
16
|
- id: ruff-check
|
|
@@ -19,7 +19,7 @@ repos:
|
|
|
19
19
|
- id: ruff-format
|
|
20
20
|
|
|
21
21
|
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
22
|
-
rev: 0.
|
|
22
|
+
rev: 0.10.12
|
|
23
23
|
hooks:
|
|
24
24
|
# Ensure the lockfile is up-to-date with pyproject.toml
|
|
25
25
|
- id: uv-lock
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# CLAUDE.md
|
|
2
|
+
|
|
3
|
+
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
|
+
|
|
5
|
+
## Project Overview
|
|
6
|
+
|
|
7
|
+
**hdx-python-pipelineutils** is a shared utility library for HDX data pipeline scrapers. It provides reusable components for reading data, resolving admin levels, and looking up sector and org-type codes from YAML-driven configuration.
|
|
8
|
+
|
|
9
|
+
## Commands
|
|
10
|
+
|
|
11
|
+
Install dependencies:
|
|
12
|
+
```bash
|
|
13
|
+
uv sync
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Run tests:
|
|
17
|
+
```bash
|
|
18
|
+
uv run pytest
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Run a single test:
|
|
22
|
+
```bash
|
|
23
|
+
uv run pytest tests/test_lookup.py
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Lint check:
|
|
27
|
+
```bash
|
|
28
|
+
pre-commit run --all-files
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Architecture
|
|
32
|
+
|
|
33
|
+
Source lives under `src/hdx/pipelineutils/`:
|
|
34
|
+
|
|
35
|
+
- **`reader.py`** — `Read` (subclass of `hdx-python-utilities` `Retrieve`): downloads and caches tabular data (CSV, XLS, XLSX), with save/use-saved modes, date extraction from time periods, and HDX dataset/resource helpers.
|
|
36
|
+
- **`lookup.py`** — `Lookup`: base class for YAML-driven code lookups. Loads a configuration YAML, builds normalised name→code mappings, and resolves codes via `hdx-python-country`'s fuzzy matching.
|
|
37
|
+
- **`org_type.py`** — `OrgType(Lookup)`: resolves organisation-type codes using `org_type_configuration.yaml`.
|
|
38
|
+
- **`sector.py`** — `Sector(Lookup)`: resolves sector codes using `sector_configuration.yaml`.
|
|
39
|
+
- **`hapi_admins.py`** — `complete_admins()`: populates adm-level names from p-codes and vice-versa using `hdx-python-country` `AdminLevel` objects; returns the resolved level and a list of warnings.
|
|
40
|
+
- **`__init__.py`** — shared helpers: `string_params_to_dict`, `match_template` (extracts `{{...}}` placeholders), `get_startend_dates_from_time_period`.
|
|
41
|
+
|
|
42
|
+
## Testing
|
|
43
|
+
|
|
44
|
+
Tests are in `tests/` and use `pytest`. No live HDX connection is required — data is mocked or loaded from `tests/fixtures/`. Coverage is written to `coverage.lcov` and JUnit XML to `test-results.xml`.
|
|
45
|
+
|
|
46
|
+
## Code Style
|
|
47
|
+
|
|
48
|
+
Formatted and linted with `ruff` (rules: E, F, I, UP; line-length not enforced). Python ≥ 3.10. Use `X | Y` union syntax (PEP 604), not `Optional`/`Union`. Google-style docstrings with `Args:` and `Returns:` sections.
|
|
49
|
+
|
|
50
|
+
## Collaboration Style
|
|
51
|
+
|
|
52
|
+
- Be objective, not agreeable. Act as a partner, not a sycophant. Push back when you disagree, flag tradeoffs honestly, and don't sugarcoat problems.
|
|
53
|
+
- Keep explanations brief and to the point.
|
|
54
|
+
- Don't rely on recalled knowledge for facts that could be stale (API behaviour, library versions, external systems). Search or read the actual source first.
|
|
55
|
+
|
|
56
|
+
## Scope of Changes
|
|
57
|
+
|
|
58
|
+
When fixing a bug or addressing PR feedback, change only what is necessary to resolve the specific issue. Do not refactor surrounding code, rename variables, adjust formatting, or make improvements in the same commit unless they are directly required by the fix.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: hdx-python-pipelineutils
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.5
|
|
4
4
|
Summary: HDX Python Pipeline Utilities
|
|
5
5
|
Project-URL: Homepage, https://github.com/OCHA-DAP/hdx-python-pipelineutils
|
|
6
6
|
Author-email: Michael Rans <rans@email.com>
|
{hdx_python_pipelineutils-0.0.3 → hdx_python_pipelineutils-0.0.5}/src/hdx/pipelineutils/_version.py
RENAMED
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.0.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 0,
|
|
21
|
+
__version__ = version = '0.0.5'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 0, 5)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -10,8 +10,8 @@ def complete_admins(
|
|
|
10
10
|
fuzzy_match: bool = True,
|
|
11
11
|
) -> tuple[int, list[str]]:
|
|
12
12
|
"""Use information from adm_codes to populate adm_names and from
|
|
13
|
-
provider_adm_names to populate adm_codes with
|
|
14
|
-
and
|
|
13
|
+
provider_adm_names to populate adm_codes with output of the admin level
|
|
14
|
+
and warnings for unknown and mismatched p-codes. All provided lists
|
|
15
15
|
should be of the same length.
|
|
16
16
|
|
|
17
17
|
Args:
|
|
@@ -32,6 +32,8 @@ initial_lookup:
|
|
|
32
32
|
agriculture: "FSC"
|
|
33
33
|
agua saneamiento e higiene: "WSH"
|
|
34
34
|
all: "Intersectoral"
|
|
35
|
+
aor lam: "PRO-MIN"
|
|
36
|
+
alojamiento: "SHL"
|
|
35
37
|
alojamiento de emergencia: "SHL"
|
|
36
38
|
alojamiento de emergencia shelter: "SHL"
|
|
37
39
|
alojamiento energía y enseres: "SHL"
|
|
@@ -43,9 +45,11 @@ initial_lookup:
|
|
|
43
45
|
camp coordination and camp management: "CCM"
|
|
44
46
|
camp coordination camp management: "CCM"
|
|
45
47
|
cash: "Cash"
|
|
48
|
+
cash transfers: "Cash"
|
|
46
49
|
cccm: "CCM"
|
|
47
50
|
ccs: "CCM"
|
|
48
51
|
cluster coordination: "CCM"
|
|
52
|
+
coord log support services: "CCM"
|
|
49
53
|
coord services support: "CCM"
|
|
50
54
|
coordinacion informacion: "CCM"
|
|
51
55
|
coord support services: "CCM"
|
|
@@ -55,6 +59,7 @@ initial_lookup:
|
|
|
55
59
|
cp: "PRO-CPN"
|
|
56
60
|
css: "CCM"
|
|
57
61
|
eah: "WSH"
|
|
62
|
+
early recovery livelihoods: "ERY"
|
|
58
63
|
eau: "WSH"
|
|
59
64
|
eau assainissement et hygiene: "WSH"
|
|
60
65
|
eau hygiene: "WSH"
|
|
@@ -75,6 +80,7 @@ initial_lookup:
|
|
|
75
80
|
food: "FSC"
|
|
76
81
|
food safety: "FSC"
|
|
77
82
|
food security and agriculture: "FSC"
|
|
83
|
+
food security and agriculture working group: "FSC"
|
|
78
84
|
food security and livelihoods: "FSC"
|
|
79
85
|
food security and nutrition: "FSC"
|
|
80
86
|
food security livelihood: "FSC"
|
|
@@ -84,6 +90,7 @@ initial_lookup:
|
|
|
84
90
|
gbv: "PRO-GBV"
|
|
85
91
|
general protection: "PRO"
|
|
86
92
|
global protection: "PRO"
|
|
93
|
+
grupo de trabajo de infraestructura y alojamientos temporales: "SHL"
|
|
87
94
|
hlp: "PRO-HLP"
|
|
88
95
|
housing land property: "PRO-HLP"
|
|
89
96
|
humanitaire: "Hum"
|
|
@@ -101,11 +108,20 @@ initial_lookup:
|
|
|
101
108
|
mpca: "Cash"
|
|
102
109
|
ms: "Multi"
|
|
103
110
|
multi purpose cash: "Cash"
|
|
111
|
+
multi purpose cash assistance: "Cash"
|
|
104
112
|
multi secteur: "Multi"
|
|
105
113
|
multisectoriel: "Multi"
|
|
114
|
+
non food items: "SHL"
|
|
106
115
|
nutricion: "NUT"
|
|
107
116
|
nutrition: "NUT"
|
|
108
117
|
operatioanl presence water sanitation hygiene: "WSH"
|
|
118
|
+
operational capacity education in emergencies: "EDU"
|
|
119
|
+
operational capacity emergency shelter non food items: "SHL"
|
|
120
|
+
operational capacity food security agriculture: "FSC"
|
|
121
|
+
operational capacity health: "HEA"
|
|
122
|
+
operational capacity nutrition: "NUT"
|
|
123
|
+
operational capacity protection: "PRO"
|
|
124
|
+
operational capacity water sanitation hygiene: "WSH"
|
|
109
125
|
operational presence education in emergencies: "EDU"
|
|
110
126
|
operational presence emergency shelter non food items: "SHL"
|
|
111
127
|
operational presence food security agriculture: "FSC"
|
|
@@ -115,10 +131,13 @@ initial_lookup:
|
|
|
115
131
|
pro cpm: "PRO-CPN"
|
|
116
132
|
pronna: "PRO-CPN"
|
|
117
133
|
propg: "PRO"
|
|
134
|
+
proteccion accion contra minas: "PRO-MIN"
|
|
118
135
|
proteccion infantil: "PRO-CPN"
|
|
119
136
|
proteccion ninos ninas adolescentes: "PRO-CPN"
|
|
120
137
|
proteccion violencia de genero: "PRO-GBV"
|
|
138
|
+
proteccion y adrs: "PRO"
|
|
121
139
|
protection: "PRO"
|
|
140
|
+
protection child protection: "PRO-CPN"
|
|
122
141
|
protection de lenfance: "PRO-CPN"
|
|
123
142
|
protection de lenfant: "PRO-CPN"
|
|
124
143
|
protection generale: "PRO"
|
|
@@ -142,6 +161,7 @@ initial_lookup:
|
|
|
142
161
|
relevement precoce: "ERY"
|
|
143
162
|
relevement rapide: "ERY"
|
|
144
163
|
refugees: "CCM"
|
|
164
|
+
refugee consultative forum: "CCM"
|
|
145
165
|
refugee response: "CCM"
|
|
146
166
|
refugees migrants multi sector: "CCM"
|
|
147
167
|
reponse aux refugies: "CCM"
|
|
@@ -151,6 +171,7 @@ initial_lookup:
|
|
|
151
171
|
same: "FSC"
|
|
152
172
|
samv: "FSC"
|
|
153
173
|
sante: "HEA"
|
|
174
|
+
secal: "FSC"
|
|
154
175
|
securite alimentaire: "FSC"
|
|
155
176
|
securite alimentaire et moyen dexistence: "FSC"
|
|
156
177
|
seguridad alimentaria: "FSC"
|
|
@@ -160,6 +181,7 @@ initial_lookup:
|
|
|
160
181
|
shelter: "SHL"
|
|
161
182
|
shelter nfi: "SHL"
|
|
162
183
|
shelter nfis: "SHL"
|
|
184
|
+
shelter non food items: "SHL"
|
|
163
185
|
shelter and nfi: "SHL"
|
|
164
186
|
shelter and nfis: "SHL"
|
|
165
187
|
shelter and non food items: "SHL"
|
|
@@ -170,7 +192,9 @@ initial_lookup:
|
|
|
170
192
|
telecommunications: "TEL"
|
|
171
193
|
telecommunications durgence: "TEL"
|
|
172
194
|
telecomunicaciones de emergencia: "TEL"
|
|
195
|
+
transferencias monetarias multiproposito: "Cash"
|
|
173
196
|
transversal: "Multi"
|
|
197
|
+
transversal peas: "PRO-GBV"
|
|
174
198
|
vbg: "PRO-GBV"
|
|
175
199
|
violences basees sur le genre: "PRO-GBV"
|
|
176
200
|
violence basee sur le genre: "PRO-GBV"
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"owner_org": "ac91832d-2477-4e1f-8520-9a591a7c3d69", "maintainer": "f240651d-52d6-4a3c-b229-b5dd0443d642", "relationships_as_object": [], "package_creator": "nafissah", "private": false, "dataset_date": "[2016-09-01T00:00:00 TO 2016-09-01T23:59:59]", "num_tags": 3, "solr_additions": "{\"countries\": [\"Benin\", \"Burkina Faso\", \"Cameroon\", \"Chad\", \"Gambia\", \"Mali\", \"Niger\", \"Nigeria\", \"Senegal\"]}", "id": "47f6ef46-500f-421a-9fa2-fefd93facf95", "metadata_created": "2017-03-10T09:30:34.278280", "archived": false, "methodology_other": "Countries data aggregation. ", "metadata_modified": "2019-09-11T16:15:43.873688", "title": "Sahel : Humanitarian Needs Overview", "tags": [{"vocabulary_id": "b891512e-9516-4bf5-962a-7a289772a2a1", "state": "active", "display_name": "humanitarian needs overview - hno", "id": "bfd4300a-b35f-4c3d-a14b-05e0f040ad29", "name": "humanitarian needs overview - hno"}, {"vocabulary_id": "b891512e-9516-4bf5-962a-7a289772a2a1", "state": "active", "display_name": "people in need - pin", "id": "47dd0671-78c8-4359-9f96-5cfe4b86b48c", "name": "people in need - pin"}], "state": "active", "relationships_as_subject": [], "methodology": "Other", "version": null, "is_requestdata_type": false, "creator_user_id": "7711391a-7647-4432-a71b-294e7f901a2c", "type": "dataset", "has_showcases": true, "due_date": "2018-03-10T10:08:37", "dataset_preview": "first_resource", "num_resources": 5, "dataset_source": "Multiple organisations", "subnational": "1", "last_modified": "2017-03-10T10:08:37.690970", "groups": [{"display_name": "Benin", "description": "", "title": "Benin", "image_display_url": "", "id": "ben", "name": "ben"}, {"display_name": "Burkina Faso", "description": "", "title": "Burkina Faso", "image_display_url": "", "id": "bfa", "name": "bfa"}, {"display_name": "Cameroon", "description": "", "title": "Cameroon", "image_display_url": "", "id": "cmr", "name": "cmr"}, {"display_name": "Chad", "description": "", "title": "Chad", "image_display_url": "", "id": "tcd", "name": "tcd"}, {"display_name": "Gambia", "description": "", "title": "Gambia", "image_display_url": "", "id": "gmb", "name": "gmb"}, {"display_name": "Mali", "description": "", "title": "Mali", "image_display_url": "", "id": "mli", "name": "mli"}, {"display_name": "Niger", "description": "", "title": "Niger", "image_display_url": "", "id": "ner", "name": "ner"}, {"display_name": "Nigeria", "description": "", "title": "Nigeria", "image_display_url": "", "id": "nga", "name": "nga"}, {"display_name": "Senegal", "description": "", "title": "Senegal", "image_display_url": "", "id": "sen", "name": "sen"}], "license_id": "cc-by", "has_quickcharts": true, "has_geodata": false, "overdue_date": "2018-05-09T10:08:37", "total_res_downloads": 3083, "qa_completed": true, "name": "sahel-humanitarian-needs-overview", "isopen": true, "url": null, "notes": "This dataset is produced by the United Nations for the Coordination of Humanitarian Affairs (OCHA) in collaboration with humanitarian partners. It covers the period from January to December 2017 and was issued on December 2016.", "license_title": "Creative Commons Attribution International", "batch": "7c91002c-9c43-4c56-ac78-02a20ba9575e", "license_url": "http://www.opendefinition.org/licenses/cc-by", "pageviews_last_14_days": 4, "organization": {"description": "OCHA Regional Office for West and Central Africa (ROWCA).\r\n\r\nDans les pays de l'Afrique de l\u2019Ouest et du Centre, l'ins\u00e9curit\u00e9 alimentaire et la malnutrition s\u2019aggravent avec l'impact des catastrophes naturelles, le changement climatique, l\u2019\u00e9volution d\u00e9mographique, l'urbanisation mal g\u00e9r\u00e9e, les \u00e9pid\u00e9mies et les conflits violents.", "title": "OCHA West and Central Africa (ROWCA)", "created": "2014-09-26T15:15:48.616313", "approval_status": "approved", "is_organization": true, "state": "active", "image_url": "", "type": "organization", "id": "ac91832d-2477-4e1f-8520-9a591a7c3d69", "name": "ocha-rowca"}, "data_update_frequency": "365", "is_fresh": false, "update_status": "needs_update", "x_resource_grouping": [], "resources": [{"cache_last_updated": null, "package_id": "47f6ef46-500f-421a-9fa2-fefd93facf95", "datastore_active": false, "id": "2527ac5b-66fe-46f0-8b9b-7086d2c4ddd3", "size": 1291, "metadata_modified": "2017-03-10T09:43:15.837967", "download_url": "https://data.humdata.org/dataset/47f6ef46-500f-421a-9fa2-fefd93facf95/resource/2527ac5b-66fe-46f0-8b9b-7086d2c4ddd3/download/hno-2017-sahel-nutrition.csv", "state": "active", "hash": "", "description": "HNO 2017 Sahel - Nutrition ", "format": "CSV", "hdx_rel_url": "/dataset/47f6ef46-500f-421a-9fa2-fefd93facf95/resource/2527ac5b-66fe-46f0-8b9b-7086d2c4ddd3/download/hno-2017-sahel-nutrition.csv", "mimetype_inner": null, "url_type": "upload", "originalHash": "1719647142", "mimetype": null, "cache_url": null, "name": "HNO -2017 -Sahel-nutrition.csv", "created": "2017-03-10T09:43:15.837967", "url": "https://data.humdata.org/dataset/47f6ef46-500f-421a-9fa2-fefd93facf95/resource/2527ac5b-66fe-46f0-8b9b-7086d2c4ddd3/download/hno-2017-sahel-nutrition.csv", "tracking_summary[recent]": "0", "last_modified": "2017-03-10T10:08:37.690970", "tracking_summary[total]": "0", "position": 0, "resource_type": "file.upload"}, {"cache_last_updated": null, "package_id": "47f6ef46-500f-421a-9fa2-fefd93facf95", "datastore_active": false, "id": "487e329d-3959-49bf-8e12-2675be7008ae", "size": 2306, "metadata_modified": "2017-03-10T09:46:28.411331", "download_url": "https://data.humdata.org/dataset/47f6ef46-500f-421a-9fa2-fefd93facf95/resource/487e329d-3959-49bf-8e12-2675be7008ae/download/hno-2017-sahel-lake-chad-nutrition-as-of-25_11_2016.csv", "state": "active", "hash": "", "description": "HNO 2017 sahel - Lake Chad - Nutrition", "format": "CSV", "hdx_rel_url": "/dataset/47f6ef46-500f-421a-9fa2-fefd93facf95/resource/487e329d-3959-49bf-8e12-2675be7008ae/download/hno-2017-sahel-lake-chad-nutrition-as-of-25_11_2016.csv", "mimetype_inner": null, "url_type": "upload", "originalHash": "97196323", "mimetype": null, "cache_url": null, "name": "HNO 2017 Sahel-Lake Chad Nutrition as of 25_11_2016.csv", "created": "2017-03-10T09:46:28.411331", "url": "https://data.humdata.org/dataset/47f6ef46-500f-421a-9fa2-fefd93facf95/resource/487e329d-3959-49bf-8e12-2675be7008ae/download/hno-2017-sahel-lake-chad-nutrition-as-of-25_11_2016.csv", "last_modified": "2017-03-10T10:08:37.690970", "position": 1, "resource_type": "file.upload"}, {"cache_last_updated": null, "package_id": "47f6ef46-500f-421a-9fa2-fefd93facf95", "datastore_active": false, "id": "d648d73f-8e66-461f-864f-0d66b19bcfa2", "size": 10348, "metadata_modified": "2017-03-10T10:01:38.716006", "download_url": "https://data.humdata.org/dataset/47f6ef46-500f-421a-9fa2-fefd93facf95/resource/d648d73f-8e66-461f-864f-0d66b19bcfa2/download/hno-2017-sahel-displacement_per_country.xlsx", "state": "active", "hash": "", "description": "HNO 2017 Sahel - Displacement per country", "format": "XLSX", "hdx_rel_url": "/dataset/47f6ef46-500f-421a-9fa2-fefd93facf95/resource/d648d73f-8e66-461f-864f-0d66b19bcfa2/download/hno-2017-sahel-displacement_per_country.xlsx", "mimetype_inner": null, "url_type": "upload", "originalHash": "1345568791", "mimetype": null, "cache_url": null, "name": "HNO-2017-Sahel- Displacement_per_country.xlsx", "created": "2017-03-10T10:01:38.716006", "url": "https://data.humdata.org/dataset/47f6ef46-500f-421a-9fa2-fefd93facf95/resource/d648d73f-8e66-461f-864f-0d66b19bcfa2/download/hno-2017-sahel-displacement_per_country.xlsx", "last_modified": "2017-03-10T10:08:37.690970", "position": 2, "resource_type": "file.upload"}, {"cache_last_updated": null, "package_id": "47f6ef46-500f-421a-9fa2-fefd93facf95", "datastore_active": false, "id": "d9248be4-7bfb-4a81-a7aa-c035dcb737a2", "size": 10275, "metadata_modified": "2017-03-10T10:03:01.842877", "download_url": "https://data.humdata.org/dataset/47f6ef46-500f-421a-9fa2-fefd93facf95/resource/d9248be4-7bfb-4a81-a7aa-c035dcb737a2/download/hno-2017-sahel-people-in-need.xlsx", "state": "active", "hash": "", "description": "HNO 2017 Sahel - People in need", "format": "XLSX", "hdx_rel_url": "/dataset/47f6ef46-500f-421a-9fa2-fefd93facf95/resource/d9248be4-7bfb-4a81-a7aa-c035dcb737a2/download/hno-2017-sahel-people-in-need.xlsx", "mimetype_inner": null, "url_type": "upload", "originalHash": "97196323", "mimetype": null, "cache_url": null, "name": "HNO-2017-Sahel- People in need.xlsx", "created": "2017-03-10T10:03:01.842877", "url": "https://data.humdata.org/dataset/47f6ef46-500f-421a-9fa2-fefd93facf95/resource/d9248be4-7bfb-4a81-a7aa-c035dcb737a2/download/hno-2017-sahel-people-in-need.xlsx", "last_modified": "2017-03-10T10:08:37.690970", "position": 3, "resource_type": "file.upload"}, {"cache_last_updated": null, "package_id": "47f6ef46-500f-421a-9fa2-fefd93facf95", "datastore_active": false, "id": "798b6a50-75da-4c8c-8034-4a4439630a3a", "size": 9430, "metadata_modified": "2017-03-10T10:04:40.479364", "download_url": "https://data.humdata.org/dataset/47f6ef46-500f-421a-9fa2-fefd93facf95/resource/798b6a50-75da-4c8c-8034-4a4439630a3a/download/hno-2017-sahel-food-insecurity.xlsx", "state": "active", "hash": "", "description": "HNO 2017 Sahel - Food Insecurity", "format": "XLSX", "hdx_rel_url": "/dataset/47f6ef46-500f-421a-9fa2-fefd93facf95/resource/798b6a50-75da-4c8c-8034-4a4439630a3a/download/hno-2017-sahel-food-insecurity.xlsx", "mimetype_inner": null, "url_type": "upload", "originalHash": "97196323", "mimetype": null, "cache_url": null, "name": "HNO-2017-Sahel-Food Insecurity.xlsx", "created": "2017-03-10T10:04:40.479364", "url": "https://data.humdata.org/dataset/47f6ef46-500f-421a-9fa2-fefd93facf95/resource/798b6a50-75da-4c8c-8034-4a4439630a3a/download/hno-2017-sahel-food-insecurity.xlsx", "last_modified": "2017-03-10T10:08:37.690970", "position": 4, "resource_type": "file.upload"}]}
|
|
@@ -590,7 +590,7 @@ dev = [
|
|
|
590
590
|
{ name = "pre-commit" },
|
|
591
591
|
{ name = "pytest" },
|
|
592
592
|
{ name = "pytest-cov" },
|
|
593
|
-
{ name = "ruff", specifier = "==0.
|
|
593
|
+
{ name = "ruff", specifier = "==0.15.7" },
|
|
594
594
|
]
|
|
595
595
|
|
|
596
596
|
[[package]]
|
|
@@ -1661,28 +1661,27 @@ wheels = [
|
|
|
1661
1661
|
|
|
1662
1662
|
[[package]]
|
|
1663
1663
|
name = "ruff"
|
|
1664
|
-
version = "0.
|
|
1665
|
-
source = { registry = "https://pypi.org/simple" }
|
|
1666
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
1667
|
-
wheels = [
|
|
1668
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1669
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1670
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1671
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1672
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1673
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1674
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1675
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1676
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1677
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1678
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1679
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1680
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1681
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1682
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1683
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1684
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
1685
|
-
{ url = "https://files.pythonhosted.org/packages/9e/6a/40fee331a52339926a92e17ae748827270b288a35ef4a15c9c8f2ec54715/ruff-0.14.14-py3-none-win_arm64.whl", hash = "sha256:56e6981a98b13a32236a72a8da421d7839221fa308b223b9283312312e5ac76c", size = 10920448, upload-time = "2026-01-22T22:30:15.417Z" },
|
|
1664
|
+
version = "0.15.7"
|
|
1665
|
+
source = { registry = "https://pypi.org/simple" }
|
|
1666
|
+
sdist = { url = "https://files.pythonhosted.org/packages/a1/22/9e4f66ee588588dc6c9af6a994e12d26e19efbe874d1a909d09a6dac7a59/ruff-0.15.7.tar.gz", hash = "sha256:04f1ae61fc20fe0b148617c324d9d009b5f63412c0b16474f3d5f1a1a665f7ac", size = 4601277, upload-time = "2026-03-19T16:26:22.605Z" }
|
|
1667
|
+
wheels = [
|
|
1668
|
+
{ url = "https://files.pythonhosted.org/packages/41/2f/0b08ced94412af091807b6119ca03755d651d3d93a242682bf020189db94/ruff-0.15.7-py3-none-linux_armv6l.whl", hash = "sha256:a81cc5b6910fb7dfc7c32d20652e50fa05963f6e13ead3c5915c41ac5d16668e", size = 10489037, upload-time = "2026-03-19T16:26:32.47Z" },
|
|
1669
|
+
{ url = "https://files.pythonhosted.org/packages/91/4a/82e0fa632e5c8b1eba5ee86ecd929e8ff327bbdbfb3c6ac5d81631bef605/ruff-0.15.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:722d165bd52403f3bdabc0ce9e41fc47070ac56d7a91b4e0d097b516a53a3477", size = 10955433, upload-time = "2026-03-19T16:27:00.205Z" },
|
|
1670
|
+
{ url = "https://files.pythonhosted.org/packages/ab/10/12586735d0ff42526ad78c049bf51d7428618c8b5c467e72508c694119df/ruff-0.15.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7fbc2448094262552146cbe1b9643a92f66559d3761f1ad0656d4991491af49e", size = 10269302, upload-time = "2026-03-19T16:26:26.183Z" },
|
|
1671
|
+
{ url = "https://files.pythonhosted.org/packages/eb/5d/32b5c44ccf149a26623671df49cbfbd0a0ae511ff3df9d9d2426966a8d57/ruff-0.15.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b39329b60eba44156d138275323cc726bbfbddcec3063da57caa8a8b1d50adf", size = 10607625, upload-time = "2026-03-19T16:27:03.263Z" },
|
|
1672
|
+
{ url = "https://files.pythonhosted.org/packages/5d/f1/f0001cabe86173aaacb6eb9bb734aa0605f9a6aa6fa7d43cb49cbc4af9c9/ruff-0.15.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:87768c151808505f2bfc93ae44e5f9e7c8518943e5074f76ac21558ef5627c85", size = 10324743, upload-time = "2026-03-19T16:27:09.791Z" },
|
|
1673
|
+
{ url = "https://files.pythonhosted.org/packages/7a/87/b8a8f3d56b8d848008559e7c9d8bf367934d5367f6d932ba779456e2f73b/ruff-0.15.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb0511670002c6c529ec66c0e30641c976c8963de26a113f3a30456b702468b0", size = 11138536, upload-time = "2026-03-19T16:27:06.101Z" },
|
|
1674
|
+
{ url = "https://files.pythonhosted.org/packages/e4/f2/4fd0d05aab0c5934b2e1464784f85ba2eab9d54bffc53fb5430d1ed8b829/ruff-0.15.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e0d19644f801849229db8345180a71bee5407b429dd217f853ec515e968a6912", size = 11994292, upload-time = "2026-03-19T16:26:48.718Z" },
|
|
1675
|
+
{ url = "https://files.pythonhosted.org/packages/64/22/fc4483871e767e5e95d1622ad83dad5ebb830f762ed0420fde7dfa9d9b08/ruff-0.15.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4806d8e09ef5e84eb19ba833d0442f7e300b23fe3f0981cae159a248a10f0036", size = 11398981, upload-time = "2026-03-19T16:26:54.513Z" },
|
|
1676
|
+
{ url = "https://files.pythonhosted.org/packages/b0/99/66f0343176d5eab02c3f7fcd2de7a8e0dd7a41f0d982bee56cd1c24db62b/ruff-0.15.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dce0896488562f09a27b9c91b1f58a097457143931f3c4d519690dea54e624c5", size = 11242422, upload-time = "2026-03-19T16:26:29.277Z" },
|
|
1677
|
+
{ url = "https://files.pythonhosted.org/packages/5d/3a/a7060f145bfdcce4c987ea27788b30c60e2c81d6e9a65157ca8afe646328/ruff-0.15.7-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:1852ce241d2bc89e5dc823e03cff4ce73d816b5c6cdadd27dbfe7b03217d2a12", size = 11232158, upload-time = "2026-03-19T16:26:42.321Z" },
|
|
1678
|
+
{ url = "https://files.pythonhosted.org/packages/a7/53/90fbb9e08b29c048c403558d3cdd0adf2668b02ce9d50602452e187cd4af/ruff-0.15.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:5f3e4b221fb4bd293f79912fc5e93a9063ebd6d0dcbd528f91b89172a9b8436c", size = 10577861, upload-time = "2026-03-19T16:26:57.459Z" },
|
|
1679
|
+
{ url = "https://files.pythonhosted.org/packages/2f/aa/5f486226538fe4d0f0439e2da1716e1acf895e2a232b26f2459c55f8ddad/ruff-0.15.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:b15e48602c9c1d9bdc504b472e90b90c97dc7d46c7028011ae67f3861ceba7b4", size = 10327310, upload-time = "2026-03-19T16:26:35.909Z" },
|
|
1680
|
+
{ url = "https://files.pythonhosted.org/packages/99/9e/271afdffb81fe7bfc8c43ba079e9d96238f674380099457a74ccb3863857/ruff-0.15.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:1b4705e0e85cedc74b0a23cf6a179dbb3df184cb227761979cc76c0440b5ab0d", size = 10840752, upload-time = "2026-03-19T16:26:45.723Z" },
|
|
1681
|
+
{ url = "https://files.pythonhosted.org/packages/bf/29/a4ae78394f76c7759953c47884eb44de271b03a66634148d9f7d11e721bd/ruff-0.15.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:112c1fa316a558bb34319282c1200a8bf0495f1b735aeb78bfcb2991e6087580", size = 11336961, upload-time = "2026-03-19T16:26:39.076Z" },
|
|
1682
|
+
{ url = "https://files.pythonhosted.org/packages/26/6b/8786ba5736562220d588a2f6653e6c17e90c59ced34a2d7b512ef8956103/ruff-0.15.7-py3-none-win32.whl", hash = "sha256:6d39e2d3505b082323352f733599f28169d12e891f7dd407f2d4f54b4c2886de", size = 10582538, upload-time = "2026-03-19T16:26:15.992Z" },
|
|
1683
|
+
{ url = "https://files.pythonhosted.org/packages/2b/e9/346d4d3fffc6871125e877dae8d9a1966b254fbd92a50f8561078b88b099/ruff-0.15.7-py3-none-win_amd64.whl", hash = "sha256:4d53d712ddebcd7dace1bc395367aec12c057aacfe9adbb6d832302575f4d3a1", size = 11755839, upload-time = "2026-03-19T16:26:19.897Z" },
|
|
1684
|
+
{ url = "https://files.pythonhosted.org/packages/8f/e8/726643a3ea68c727da31570bde48c7a10f1aa60eddd628d94078fec586ff/ruff-0.15.7-py3-none-win_arm64.whl", hash = "sha256:18e8d73f1c3fdf27931497972250340f92e8c861722161a9caeb89a58ead6ed2", size = 11023304, upload-time = "2026-03-19T16:26:51.669Z" },
|
|
1686
1685
|
]
|
|
1687
1686
|
|
|
1688
1687
|
[[package]]
|