Variable declared without a value suppresses ${VAR:-default} expansion
Les mainteneurs répondent en général sous 12 jours
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 85/100
Piste de recherche
L’issue indique Variable.resolve() dans src/dotenv/variables.py et fournit une reproduction minimale avec dotenv_values(). Commencez par lire cette méthode et les tests d’expansion des variables, puis vérifiez comment une valeur None est traitée pour ${A} et ${A:-fallback}. Le résultat attendu est que la forme avec valeur par défaut utilise cette valeur, tandis que ${A} continue de s’expanser en chaîne vide.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Environment
- python-dotenv 1.2.4 (main, commit 4fbc6ff)
- Python 3.14.0 on Windows 11; the code involved is platform independent
Minimal repro
import io
from dotenv import dotenv_values
print(dotenv_values(stream=io.StringIO("A\nB=${A:-fallback}")))
Actual
OrderedDict({'A': None, 'B': ''})
Expected
OrderedDict({'A': None, 'B': 'fallback'})
${A} should still expand to ""; only the defaulted form is affected.
Why this is wrong
The README's "Variable expansion" section lists the resolution order for
dotenv_values() as: value of the variable in the .env file, value in the
environment, default value, then empty string. A key written without a value
(A) is documented earlier as producing None, and load_dotenv is said to
"simply ignore such variables" — that is, the variable is unset, not set to the
empty string. Since the default is only skipped when the variable has a value,
${A:-fallback} should produce fallback here.
This also contradicts the explicit distinction the README draws between FOO
and FOO=: A and A= currently expand identically ("") even though only
A= is the empty string.
The cause is in Variable.resolve() (src/dotenv/variables.py): a name that is
present in the mapping with a None value is converted to "", so the
supplied default is never used.
- Langage dominant
- Python
- Étoiles
- 8.9k
- Forks
- 618
- Merge moyen
- 12 j 6 min
- PR mergées (30 j)
- 3
Préparer son environnement
- Aucun Dockerfile ni 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 theskumar/python-dotenv
-
An empty value ignores ${name:-default}Peut-être pris @SashaMIT l’a pris il y a 41 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
theskumar/python-dotenv#715 ·
Les mainteneurs répondent en général sous 12 jours
-
set_key and unset_key don't fsync before replacing the .env filePeut-être pris @Imkkey l’a pris il y a 40 jours. Ouverteenhancement
Difficulté 3/5 1-2 jours Accessibilité débutants 72/100
theskumar/python-dotenv#713 ·
Les mainteneurs répondent en général sous 12 jours
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 28/100
theskumar/python-dotenv#693 · 1 commentaire ·
Les mainteneurs répondent en général sous 12 jours
-
python-dotenv installation without cli masks python-dotenv cliPeut-être pris @gyanu2507 l’a pris il y a 80 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
theskumar/python-dotenv#683 · 4 commentaires ·
Les mainteneurs répondent en général sous 12 jours
-
Feature Request: Automatically copy `default.env` to `.env`Peut-être pris @dradetsky l’a pris il y a 189 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 55/100
theskumar/python-dotenv#644 · 2 commentaires ·
Les mainteneurs répondent en général sous 12 jours
Toutes les issues de theskumar/python-dotenv
Issues similaires
-
[Bug]: graphify query loads every language extractor just for _file_stem (about 34 ms per call)Peut-être pris @rohit-jsfreaky l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Graphify-Labs/graphify#5160 · 1 commentaire ·
Les mainteneurs répondent en général sous 2 jours
-
Minor bug: Main page buttonOuvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
-
Operations on a list[T] | None var throw when the value is NonePeut-être pris @masenf l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
reflex-dev/reflex#7826 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
[Bug]: Upfront audit metrics accept out-of-range budgets and return impossible probabilitiesOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
UKGovernmentBEIS/control-arena#947 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
jasonacox/Powerwall-Dashboard#897 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour