All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
1.0.1 - 2024-01-23
Fixed
- Gracefully handle code which has been imported from a zipfile (#456 by @samwyma)
- Allow modules using load_dotenv to be reloaded when launched in a separate thread ([#497] by @freddyaboulton)
- Fix file not closed after deletion, handle error in the rewrite function (#469 by @Qwerty-133)
Misc
- Use pathlib.Path in tests (#466 by @eumiro)
- Fix year in release date in changelog.md (#454 by @jankislinger)
- Use https in README links (#474 by @Nicals)
1.0.0 - 2023-02-24
Fixed
- Drop support for python 3.7, add python 3.12-dev (#449 by @theskumar)
- Handle situations where the cwd does not exist. (#446 by @jctanner)
0.21.1 - 2023-01-21
Added
- Use Python 3.11 non-beta in CI (#438 by @bbc2)
- Modernize variables code (#434 by @Nougat-Waffle)
- Modernize main.py and parser.py code (#435 by @Nougat-Waffle)
- Improve conciseness of cli.py and init.py (#439 by @Nougat-Waffle)
- Improve error message for
get
andlist
commands when env file can't be opened (#441 by @bbc2) - Updated License to align with BSD OSI template (#433 by @lsmith77)
Fixed
- Fix Out-of-scope error when "dest" variable is undefined (#413 by @theGOTOguy)
- Fix IPython test warning about deprecated
magic
(#440 by @bbc2) - Fix type hint for dotenv_path var, add StrPath alias (#432 by @eaf)
0.21.0 - 2022-09-03
Added
- CLI: add support for invocations via 'python -m'. (#395 by @theskumar)
load_dotenv
function now returnsFalse
. (#388 by @larsks)- CLI: add --format= option to list command. (#407 by @sammck)
Fixed
- Drop Python 3.5 and 3.6 and upgrade GA (#393 by @eggplants)
- Use
open
instead ofio.open
. (#389 by @rabinadk1) - Improve documentation for variables without a value (#390 by @bbc2)
- Add
parse_it
to Related Projects (#410 by @naorlivne) - Update README.md (#415 by @harveer07)
- Improve documentation with direct use of MkDocs (#398 by @bbc2)
0.20.0 - 2022-03-24
Added
- Add
encoding
(Optional[str]
) parameter toget_key
,set_key
andunset_key
. (#379 by @bbc2)
Fixed
- Use dict to specify the
entry_points
parameter ofsetuptools.setup
(#376 by @mgorny). - Don't build universal wheels (#387 by @bbc2).
0.19.2 - 2021-11-11
Fixed
- In
set_key
, add missing newline character before new entry if necessary. (#361 by @bbc2)
0.19.1 - 2021-08-09
Added
- Add support for Python 3.10. (#359 by @theskumar)
0.19.0 - 2021-07-24
Changed
- Require Python 3.5 or a later version. Python 2 and 3.4 are no longer supported. (#341 by @bbc2).
Added
- The
dotenv_path
argument ofset_key
andunset_key
now has a type ofUnion[str, os.PathLike]
instead of justos.PathLike
(#347 by @bbc2). - The
stream
argument ofload_dotenv
anddotenv_values
can now be a text stream (IO[str]
), which includes values likeio.StringIO("foo")
andopen("file.env", "r")
(#348 by @bbc2).
0.18.0 - 2021-06-20
Changed
- Raise
ValueError
ifquote_mode
isn't one ofalways
,auto
ornever
inset_key
(#330 by @bbc2). - When writing a value to a .env file with
set_key
ordotenv set <key> <value>
(#330 by @bbc2):- Use single quotes instead of double quotes.
- Don't strip surrounding quotes.
- In
auto
mode, don't add quotes if the value is only made of alphanumeric characters (as determined bystring.isalnum
).
0.17.1 - 2021-04-29
Fixed
- Fixed tests for build environments relying on
PYTHONPATH
(#318 by @befeleme).
0.17.0 - 2021-04-02
Changed
- Make
dotenv get <key>
only show the value, notkey=value
(#313 by @bbc2).
Added
0.16.0 - 2021-03-27
Changed
- The default value of the
encoding
parameter forload_dotenv
anddotenv_values
is now"utf-8"
instead ofNone
(#306 by @bbc2). - Fix resolution order in variable expansion with
override=False
(#287 by @bbc2).
0.15.0 - 2020-10-28
Added
- Add
--export
option toset
to make it prepend the binding withexport
(#270 by @jadutter).
Changed
- Make
set
command create the.env
file in the current directory if no.env
file was found (#270 by @jadutter).
Fixed
- Fix potentially empty expanded value for duplicate key (#260 by @bbc2).
- Fix import error on Python 3.5.0 and 3.5.1 (#267 by @gongqingkui).
- Fix parsing of unquoted values containing several adjacent space or tab characters (#277 by @bbc2, review by @x-yuri).
0.14.0 - 2020-07-03
Changed
- Privilege definition in file over the environment in variable expansion (#256 by @elbehery95).
Fixed
- Improve error message for when file isn't found (#245 by @snobu).
- Use HTTPS URL in package meta data (#251 by @ekohl).
0.13.0 - 2020-04-16
Added
- Add support for a Bash-like default value in variable expansion (#248 by @bbc2).
0.12.0 - 2020-02-28
Changed
- Use current working directory to find
.env
when bundled by PyInstaller (#213 by @gergelyk).
Fixed
- Fix escaping of quoted values written by
set_key
(#236 by @bbc2). - Fix
dotenv run
crashing on environment variables without values (#237 by @yannham). - Remove warning when last line is empty (#238 by @bbc2).
0.11.0 - 2020-02-07
Added
- Add
interpolate
argument toload_dotenv
anddotenv_values
to disable interpolation (#232 by @ulyssessouza).
Changed
- Use logging instead of warnings (#231 by @bbc2).
Fixed
- Fix installation in non-UTF-8 environments (#225 by @altendky).
- Fix PyPI classifiers (#228 by @bbc2).
0.10.5 - 2020-01-19
Fixed
- Fix handling of malformed lines and lines without a value (#222 by @bbc2):
- Don't print warning when key has no value.
- Reject more malformed lines (e.g. "A: B", "a='b',c").
- Fix handling of lines with just a comment (#224 by @bbc2).
0.10.4 - 2020-01-17
Added
- Make typing optional (#179 by @techalchemy).
- Print a warning on malformed line (#211 by @bbc2).
- Support keys without a value (#220 by @ulyssessouza).
- Improve interactive mode detection (@andrewsmith)(#183).
- Refactor parser to fix parsing inconsistencies (@bbc2)(#170).
- Interpret escapes as control characters only in double-quoted strings.
- Interpret
#
as start of comment only if preceded by whitespace.
- Add type hints and expose them to users (@qnighy)(#172)
load_dotenv
anddotenv_values
now accept anencoding
parameter, defaults toNone
(@theskumar)(@earlbread)([#161])- Fix
str
/unicode
inconsistency in Python 2: values are alwaysstr
now. (@bbc2)(#121) - Fix Unicode error in Python 2, introduced in 0.10.0. (@bbc2)(#176)
- Add support for UTF-8 in unquoted values (@bbc2)(#148)
- Add support for trailing comments (@bbc2)(#148)
- Add backslashes support in values (@bbc2)(#148)
- Add support for newlines in values (@bbc2)(#148)
- Force environment variables to str with Python2 on Windows (@greyli)
- Drop Python 3.3 support (@greyli)
- Fix stderr/-out/-in redirection (@venthur)
- Add
--version
parameter to cli (@venthur) - Enable loading from current directory (@cjauvin)
- Add 'dotenv run' command for calling arbitrary shell script with .env (@venthur)
- Add tests for docs (@Flimm)
- Make 'cli' support optional. Use
pip install python-dotenv[cli]
. (@theskumar)
set_key
andunset_key
only modified the affected file instead of parsing and re-writing file, this causes comments and other file entact as it is.- Add support for
export
prefix in the line. - Internal refractoring (@theskumar)
- Allow
load_dotenv
anddotenv_values
to work withStringIO())
(@alanjds)(@theskumar)(#78)
- Remove hard dependency on iPython (@theskumar)
- Add support to override system environment variable via .env. (@milonimrod) (#63)
- Disable ".env not found" warning by default (@maxkoryukov) (#57)
- Handle unicode exception in setup.py (#46)
- Fix dotenv list command (@ticosax)
- Add iPython Support (@tillahoffmann)
- Drop support for Python 2.6
- Handle escaped characters and newlines in quoted values. (Thanks @iameugenejo)
- Remove any spaces around unquoted key/value. (Thanks @paulochf)
- Added POSIX variable expansion. (Thanks @hugochinchilla)
- Fix find_dotenv - it now start search from the file where this function is called from.
- Add
find_dotenv
method that will try to find a.env
file. (Thanks @isms)
- cli: Added
-q/--quote
option to control the behaviour of quotes around values in.env
. (Thanks @hugochinchilla). - Improved test coverage.