Promouvoir une dalle voisine déjà téléchargée au lieu de la retélécharger, nettoyer les doublons existants

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Antoine Jacquin
2026-09-27 16:22:12 +02:00
parent 90dbe61f3b
commit 32d694bbd6
4 changed files with 151 additions and 0 deletions

View File

@ -216,6 +216,7 @@ def fetch_tiles(input_dir, specs, output_dir=None, only_viz=None, resolutions=(0
Returns:
Liste des chemins téléchargés.
"""
from .dtm import EDGE_NEIGHBORS_DIRNAME
input_dir = Path(input_dir)
complete = None
if output_dir is not None and only_viz and not force:
@ -223,6 +224,10 @@ def fetch_tiles(input_dir, specs, output_dir=None, only_viz=None, resolutions=(0
keys = [step_to_keyword(v) for v in only_viz]
complete = cells_with_all_viz(Path(output_dir) / "visualisations",
keys, resolutions)
# Explicite : jamais de promotion quand on télécharge directement DANS
# edge_neighbors/ (appel de _fetch_edge_neighbors avec input_dir=edge_dir)
# — sinon une dalle voisine pourrait se retrouver déplacée vers elle-même.
is_edge_dir = input_dir.name == EDGE_NEIGHBORS_DIRNAME
downloaded = []
for col, row in specs:
name = tile_filename(col, row)
@ -232,6 +237,19 @@ def fetch_tiles(input_dir, specs, output_dir=None, only_viz=None, resolutions=(0
logger.info(f" {name} : déjà présent dans input/ — aucun téléchargement")
_report_download(output_dir, tile, "skip", "déjà dans input/")
continue
if not is_edge_dir:
# dest.exists() ci-dessus ne teste que le nom exact : un ".part"
# voisin n'y correspond jamais, donc .exists() suffit à exclure
# un téléchargement voisin encore en cours.
neighbor_copy = input_dir / EDGE_NEIGHBORS_DIRNAME / name
if neighbor_copy.exists():
import os
os.replace(neighbor_copy, dest)
logger.info(f" {name} : déjà téléchargée comme voisine "
f"— déplacée dans input/")
_report_download(output_dir, tile, "skip",
"déjà téléchargée comme voisine — déplacée dans input/")
continue
if output_dir is not None and not force:
if complete is not None:
if (col, row) in complete: