Skip to content

fix(_misc.py): multithread, mutation silencieuse, logger.info#20

Merged
CyrilJl merged 3 commits into
CyrilJl:mainfrom
miki4iaml:patch-1
Jul 10, 2026
Merged

fix(_misc.py): multithread, mutation silencieuse, logger.info#20
CyrilJl merged 3 commits into
CyrilJl:mainfrom
miki4iaml:patch-1

Conversation

@miki4iaml

Copy link
Copy Markdown
Contributor

propositions pour _misc.py

  • threading.Lock() dans set_grib_defs() pour gérer le multithread
  • da.copy dans geo_encode_cf() pour éviter la mutation silencieuse
  • logger.info dans set_test_mode() au lieu de print()

miki4iaml and others added 2 commits June 27, 2026 18:34
propositions pour _misc.py
- threading.Lock() dans set_grib_defs() pour gérer le multithread
- da.copy dans geo_encode_cf() pour éviter la mutation silencieuse
- logger.info dans set_test_mode() au lieu de print()
La PR proposait plusieurs changements dans _misc.py. Après les correctifs récents sur eccodes, je garde seulement les deux points qui restent utiles :

- geo_encode_cf() copie la DataArray sans dupliquer les données sous-jacentes, pour éviter de modifier l'objet passé en argument ;

- set_test_mode() passe par le logger du package au lieu d'écrire directement sur stdout.

Je laisse set_grib_defs() aligné avec main. Remettre codes_context_delete(), même derrière un lock, réintroduirait le crash eccodes corrigé dans CyrilJl#22.
@CyrilJl

CyrilJl commented Jul 9, 2026

Copy link
Copy Markdown
Owner

J’ai repris la PR pour ne garder que les deux changements qui restent utiles après les PR récentes.

  • geo_encode_cf() copie maintenant la DataArray avant d’ajouter les métadonnées CF. J’ai utilisé copy(deep=False) pour éviter l’effet de bord sur l’objet passé en argument, sans recopier les grosses données météo en mémoire.
  • set_test_mode() utilise maintenant logger.info() au lieu de print().
  • Je n’ai pas gardé la partie threading.Lock() / set_grib_defs(). La suppression de eccodes.codes_context_delete() est déjà dans main, et la remettre, même sous lock, réintroduirait le crash eccodes traité dans test: fiabilise et raccourcit la suite pytest (fix crash eccodes) #22. Le lock ne protège pas non plus les lectures GRIB faites dans les processus enfants.

J’ai ajouté deux tests unitaires ciblés pour couvrir ces deux comportements.

@miki4iaml

miki4iaml commented Jul 10, 2026 via email

Copy link
Copy Markdown
Contributor Author

@CyrilJl

CyrilJl commented Jul 10, 2026

Copy link
Copy Markdown
Owner

Nan nan pas de soucis, j'ai fait le #22 après votre PR, en plus du coup ça m'a incité à regarder ce qui allait pas avec les tests, c'est cool.

@CyrilJl
CyrilJl merged commit e8cd403 into CyrilJl:main Jul 10, 2026
4 of 7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants