Skip to content

Commit af3af67

Browse files
committed
Merge branch 'hotfix/2.7.1'
2 parents d14f19d + 47a8b3d commit af3af67

4 files changed

Lines changed: 25 additions & 11 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
#### 2.7.1
2+
3+
- Gestion des datasets dépubliés par leur propriétaire (arrêt du workflow pour ne pas écraser les données de prod et pouvoir en extraire les données à présent indisponibles)
4+
15
### 2.7.0
26

37
- Remplacement des guillemets simples par des apostrophes dans "objet"

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
[project]
22
name = "decp-processing"
33
description = "Traitement des données des marchés publics français."
4-
version = "2.7.0"
5-
requires-python = ">= 3.9"
4+
version = "2.7.1"
5+
requires-python = ">= 3.10"
66
authors = [
77
{ name = "Colin Maudry", email = "colin+decp@maudry.com" }
88
]

reference/source_datasets.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,8 @@
171171
"id": "6727210202eee145031c05da",
172172
"name": "Données essentielles du profil acheteur GIP Recia",
173173
"owner_org_name": "ATEXO - DECP",
174-
"code": "atexo_recia"
174+
"code": "atexo_recia",
175+
"deleted_date": "2026-01-06"
175176
},
176177
{
177178
"id": "6727210a3b056f39537f23a0",

src/tasks/dataset_utils.py

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import datetime
22

3-
from httpx import get
3+
from httpx import HTTPError, get
44
from prefect import task
55
from prefect.cache_policies import INPUTS
66

@@ -24,9 +24,15 @@ def handle_paginated_calls(url: str) -> list[dict]:
2424
"""
2525
data = []
2626
while url:
27-
response = get(
28-
url, follow_redirects=True, headers={"X-API-KEY": DATAGOUVFR_API_KEY}
29-
).json()
27+
response = (
28+
get(
29+
url,
30+
follow_redirects=True,
31+
headers={"X-API-KEY": DATAGOUVFR_API_KEY},
32+
)
33+
.raise_for_status()
34+
.json()
35+
)
3036
data.extend(response["data"])
3137
url = response.get("next_page")
3238
return data
@@ -76,15 +82,18 @@ def list_resources(
7682
# Données de test .tests/data/datasets_reference_test.json
7783
if dataset["id"].startswith("test_"):
7884
all_resources += dataset["resources"]
79-
8085
# Données de production ./data/datasets_reference.json
86+
elif dataset.get("deleted_date"):
87+
continue
8188
else:
8289
try:
8390
all_resources = list_resources_by_dataset(dataset["id"])
84-
except Exception as e:
85-
raise RuntimeError(
86-
f"Erreur lors de la récupération des ressources du dataset '{dataset['id']}': {e}"
91+
except (HTTPError, RuntimeError) as e:
92+
# Si problème dans la récupération des données, on arrête tout : le dataset a peut-être été dépublié il faut s'assurer qu'on le sauvegarde avant d'écraser les données de prod.
93+
logger.error(
94+
f"Erreur lors de la récupération des ressources du dataset '{dataset['name']}' ({dataset['id']}) : {e}"
8795
)
96+
raise RuntimeError
8897
for resource in all_resources:
8998
# On ne garde que les ressources au format JSON ou XML et celles qui ne sont pas
9099
# - des fichiers OCDS

0 commit comments

Comments
 (0)