diff --git a/pipenv/vendor/dotenv/__init__.py b/pipenv/patched/dotenv/__init__.py similarity index 100% rename from pipenv/vendor/dotenv/__init__.py rename to pipenv/patched/dotenv/__init__.py diff --git a/pipenv/vendor/dotenv/cli.py b/pipenv/patched/dotenv/cli.py similarity index 100% rename from pipenv/vendor/dotenv/cli.py rename to pipenv/patched/dotenv/cli.py diff --git a/pipenv/vendor/dotenv/ipython.py b/pipenv/patched/dotenv/ipython.py similarity index 100% rename from pipenv/vendor/dotenv/ipython.py rename to pipenv/patched/dotenv/ipython.py diff --git a/pipenv/vendor/dotenv/main.py b/pipenv/patched/dotenv/main.py similarity index 94% rename from pipenv/vendor/dotenv/main.py rename to pipenv/patched/dotenv/main.py index ba74cb63..59f05174 100644 --- a/pipenv/vendor/dotenv/main.py +++ b/pipenv/patched/dotenv/main.py @@ -97,15 +97,7 @@ def dotenv_values(dotenv_path): def parse_dotenv(dotenv_path): with open(dotenv_path) as f: - for line in f: - line = line.strip() - if not line or line.startswith('#') or '=' not in line: - continue - k, v = line.split('=', 1) - - # Remove any leading and trailing spaces in key, value - k, v = k.strip(), v.strip().encode('unicode-escape').decode('ascii') - + for k, v in re.findall('^\s*(\w*)\s*=\s*("[^"]*"|[^\s]*)\s*$', f.read(), flags=re.MULTILINE): if len(v) > 0: quoted = v[0] == v[len(v) - 1] in ['"', "'"]