theskumar / theskumar/python-dotenv
dotenv get exits with code 1 for empty string values
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 8.9k
- Forks
- 581
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
Description
dotenv get KEY treats an empty string value as missing because the CLI uses a truthiness check (if stored_value:) instead of testing for key presence / None.
Empty values are valid in .env files (KEY= or KEY=""). The library API already returns them correctly via get_key / dotenv_values; only the CLI get command is wrong.
Steps to reproduce
import subprocess, sys, tempfile
from pathlib import Path
from dotenv import set_key
with tempfile.TemporaryDirectory() as directory:
path = Path(directory) / ".env"
set_key(path, "EMPTY", "")
result = subprocess.run(
[sys.executable, "-m", "dotenv", "-f", str(path), "get", "EMPTY"],
capture_output=True,
text=True,
)
print(result.returncode, repr(result.stdout))
Expected behavior
0 ''
(exit code 0, empty value printed)
Actual behavior
1 ''
(exit code 1 — same as a missing key)
dotenv get ZERO with ZERO=0 works (exit 0), so only falsy-but-present empty strings are affected.
Environment
- python-dotenv: 1.2.3 (current
main) - Python: 3.14
- OS: Windows
Suggested fix
In src/dotenv/cli.py get, distinguish missing/None from an empty string, e.g. exit only when the key is absent or the stored value is None.
Guide de contribution
Ouvrir 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.
Piste de recherche
Commencez dans src/dotenv/cli.py, au niveau de la commande dotenv get, et examinez comment elle distingue une clé manquante d’une valeur vide. Reproduisez le problème avec l’exemple Python subprocess du rapport ; c’est terminé lorsqu’une valeur vide existante affiche une chaîne vide et se termine avec le code 0, tandis qu’une clé manquante se termine toujours avec le code 1.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python
- Domaine
- cli
- Type d'issue
- Bug
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Activité
- Active
- Clarté
- Clairement spécifiée
- Accessibilité débutants
- 88/100