Environment variables lose to datajoint.json for settings missing from ENV_VAR_MAPPING
Les mainteneurs répondent en général sous 1 jour
@dimitri-yatsenko y travaille déjà.
Depuis le 13/10/2026.
Évaluation
Cette issue n'a pas encore été évaluée.
Description
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, anddownload_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.
- Langage dominant
- Python
- Étoiles
- 197
- Forks
- 99
- Merge moyen
- 1 j 11 h
- PR mergées (30 j)
- 10
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de datajoint/datajoint-python
-
MySQL error 1143 (column-level SELECT denied) is not translated to AccessErrorPeut-être pris @Bhanu73120 l’a pris aujourd’hui. Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
datajoint/datajoint-python#1586 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
datajoint/datajoint-python#1581 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
datajoint/datajoint-python#1539 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
_job_start_time records the populating host's local time, with no zonePeut-être pris @dimitri-yatsenko l’a pris il y a 2 jours. Ouverte
datajoint/datajoint-python#1584 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
database.name should namespace schema names on MySQL, as it does on PostgreSQLPeut-être pris @dimitri-yatsenko l’a pris il y a 5 jours. Ouvertefeature
Difficulté 4/5 3-5 jours Accessibilité débutants 15/100
datajoint/datajoint-python#1582 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de datajoint/datajoint-python
Issues similaires
-
good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
btclib-org/btclib-node#1955 ·
Les mainteneurs répondent en général sous 1 jour
-
documentation v0.9.2
Difficulté 2/5 Une demi-journée Accessibilité débutants 72/100
khuisman/mcp-gee-sweet#1033 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
ossf/cve-bin-tool#5966 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Les mainteneurs répondent en général sous 2 jours
-
write_iceberg ignores the table's write.parquet.compression-codec propertyPeut-être pris @YuangGao l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Eventual-Inc/Daft#7606 ·
Les mainteneurs répondent en général sous 1 jour