Skip to content

Commit 4a3ea82

Browse files
authored
Merge pull request #27 from alexdlaird/feature-26-adl-overwrite-flag
#26: Adding an "overwrite" flag to read_dotenv, False by default.
2 parents fb0fb72 + fa0a6fe commit 4a3ea82

File tree

4 files changed

+12
-6
lines changed

4 files changed

+12
-6
lines changed

.travis.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ sudo: false
88
env:
99
- TOX_ENV=py27-flake8
1010
- TOX_ENV=py27
11-
- TOX_ENV=py33
1211
- TOX_ENV=py34
1312
- TOX_ENV=py35
1413

dotenv.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import warnings
55

66

7-
__version__ = '1.4.1'
7+
__version__ = '1.4.2'
88

99

1010
line_re = re.compile(r"""
@@ -34,12 +34,17 @@
3434
""", re.IGNORECASE | re.VERBOSE)
3535

3636

37-
def read_dotenv(dotenv=None):
37+
def read_dotenv(dotenv=None, override=False):
3838
"""
3939
Read a .env file into os.environ.
4040
4141
If not given a path to a dotenv path, does filthy magic stack backtracking
4242
to find manage.py and then find the dotenv.
43+
44+
If tests rely on .env files, setting the overwrite flag to True is a safe
45+
way to ensure tests run consistently across all environments.
46+
47+
:param override: True if values in .env should override system variables.
4348
"""
4449
if dotenv is None:
4550
frame_filename = sys._getframe().f_back.f_code.co_filename
@@ -51,7 +56,10 @@ def read_dotenv(dotenv=None):
5156
if os.path.exists(dotenv):
5257
with open(dotenv) as f:
5358
for k, v in parse_dotenv(f.read()).items():
54-
os.environ.setdefault(k, v)
59+
if override:
60+
os.environ[k] = v
61+
else:
62+
os.environ.setdefault(k, v)
5563
else:
5664
warnings.warn("Not reading {0} - it doesn't exist.".format(dotenv),
5765
stacklevel=2)

setup.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ def get_version(module):
4949
'Programming Language :: Python :: 2.7',
5050
'Programming Language :: Python :: 3',
5151
'Programming Language :: Python :: 3.2',
52-
'Programming Language :: Python :: 3.3',
5352
'Programming Language :: Python :: 3.4',
5453
'Topic :: Internet :: WWW/HTTP',
5554
]

tox.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[tox]
22
envlist =
33
py27-flake8,
4-
py27, py32, py33, py34, py35
4+
py27, py32, py34, py35
55

66
[testenv]
77
commands = python setup.py test

0 commit comments

Comments
 (0)