Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Environment variables lose to datajoint.json for settings missing from ENV_VAR_MAPPING

Abierto
#1,585 0 comentarios 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 1 día

@dimitri-yatsenko ya está trabajando en esto.

Desde el 13/10/2026.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

settings.py documents environment variables as taking precedence over datajoint.json. _update_from_flat_dict enforces that only for keys listed in ENV_VAR_MAPPING. For any other key, loading datajoint.json overwrites the value read from the environment.

ENV_VAR_MAPPING lists database.* (except use_tls), loglevel, and two display.* keys. For the following settings, the file wins over the environment:

  • jobs.* (DJ_JOBS_*)
  • provenance.* (DJ_PROVENANCE_*)
  • database.use_tls (DJ_USE_TLS)
  • the top-level safemode, query_cache, and download_path (DJ_SAFEMODE, DJ_QUERY_CACHE, DJ_DOWNLOAD_PATH)

Reproduce

On 2.3.4 (settings.py on master is unchanged):

{"safemode": true, "database.use_tls": true, "jobs.keep_completed": false,
 "provenance.capture": false, "database.host": "file-host"}
$ DJ_SAFEMODE=false DJ_USE_TLS=false DJ_JOBS_KEEP_COMPLETED=true \
  DJ_PROVENANCE_CAPTURE=true DJ_HOST=env-host python -c "import datajoint as dj; ..."
database.host        env-host   # mapped: env wins
safemode             True       # file wins
database.use_tls     True       # file wins
jobs.keep_completed  False      # file wins
provenance.capture   False      # file wins

Effect

A deployment cannot use the environment to override a key that the project's datajoint.json sets. For example, one worker cannot turn off safemode or provenance capture for a pipeline whose file sets it.

Fix

Derive the check from the settings models. Remove the hand-kept mapping. A field's environment variable is its validation_alias, or else its group's env_prefix plus the field name. This way a new setting cannot fall outside the precedence rule. Add a parametrized test over every field that reads an environment variable: set the environment variable and the file key to different values, and assert that the environment value wins.

Lenguaje dominante
Python
Estrellas
197
Forks
99
Merge medio
1 d 11 h
PR fusionados (30 d)
10

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de datajoint/datajoint-python

Todos los issues de datajoint/datajoint-python

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.