Hello community,

here is the log from the commit of package python-python-dotenv for 
openSUSE:Factory checked in at 2020-12-12 20:28:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-python-dotenv (Old)
 and      /work/SRC/openSUSE:Factory/.python-python-dotenv.new.2328 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-python-dotenv"

Sat Dec 12 20:28:58 2020 rev:9 rq:853582 version:0.15.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-python-dotenv/python-python-dotenv.changes    
    2020-08-05 20:30:07.883121547 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-python-dotenv.new.2328/python-python-dotenv.changes
      2020-12-12 20:31:16.233783567 +0100
@@ -1,0 +2,17 @@
+Mon Dec  7 00:42:19 UTC 2020 - Benjamin Greiner <c...@bnavigator.de>
+
+- Skip testing with optional jupyter_ipython. Jupyter is only
+  available for Python >= 3.7
+  gh#openSUSE/python-rpm-macros#66
+
+-------------------------------------------------------------------
+Wed Dec  2 17:16:41 UTC 2020 - Michael Ströder <mich...@stroeder.com>
+
+- Update to 0.15.0
+  * Add --export option to set to make it prepend the binding with export 
(#270 by @jadutter).
+  * Make set command create the .env file in the current directory if no .env 
file was found (#270 by @jadutter).
+  * 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).
+
+-------------------------------------------------------------------

Old:
----
  python-dotenv-0.14.0.tar.gz

New:
----
  python-dotenv-0.15.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-python-dotenv.spec ++++++
--- /var/tmp/diff_new_pack.FH4Pde/_old  2020-12-12 20:31:16.865784226 +0100
+++ /var/tmp/diff_new_pack.FH4Pde/_new  2020-12-12 20:31:16.869784230 +0100
@@ -18,14 +18,13 @@
 
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-python-dotenv
-Version:        0.14.0
+Version:        0.15.0
 Release:        0
 Summary:        Python library for .env support
 License:        BSD-3-Clause
 URL:            https://github.com/theskumar/python-dotenv
 Source:         
https://github.com/theskumar/python-dotenv/archive/v%{version}.tar.gz#/python-dotenv-%{version}.tar.gz
 BuildRequires:  %{python_module click >= 5.0}
-BuildRequires:  %{python_module jupyter_ipython}
 BuildRequires:  %{python_module mock}
 BuildRequires:  %{python_module pytest >= 3.0.5}
 BuildRequires:  %{python_module setuptools}
@@ -65,7 +64,8 @@
 export PATH=%{buildroot}%{_bindir}:$PATH
 %{python_expand export PYTHONPATH=%{buildroot}%{$python_sitelib}
 cp %{buildroot}%{_bindir}/dotenv-%{$python_bin_suffix} 
%{buildroot}%{_bindir}/dotenv
-$python -m pytest -v
+# ipython is optional and only available for python >= 3.7 in Tumbleweed
+$python -m pytest -v -k "not ipython"
 }
 mv %{buildroot}%{_bindir}/dotenv.orig %{buildroot}%{_bindir}/dotenv
 

++++++ python-dotenv-0.14.0.tar.gz -> python-dotenv-0.15.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-dotenv-0.14.0/.travis.yml 
new/python-dotenv-0.15.0/.travis.yml
--- old/python-dotenv-0.14.0/.travis.yml        2020-07-03 11:17:51.000000000 
+0200
+++ new/python-dotenv-0.15.0/.travis.yml        2020-10-28 17:59:29.000000000 
+0100
@@ -19,6 +19,8 @@
       env: TOXENV=py37
     - python: "3.8"
       env: TOXENV=py38
+    - python: "3.9-dev"
+      env: TOXENV=py39
     - python: "pypy"
       env: TOXENV=pypy
     - python: "pypy3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-dotenv-0.14.0/CHANGELOG.md 
new/python-dotenv-0.15.0/CHANGELOG.md
--- old/python-dotenv-0.14.0/CHANGELOG.md       2020-07-03 11:17:51.000000000 
+0200
+++ new/python-dotenv-0.15.0/CHANGELOG.md       2020-10-28 17:59:29.000000000 
+0100
@@ -7,7 +7,26 @@
 
 ## [Unreleased]
 
-*No unreleased change at this time.*
+_There are no unreleased changes at this time._
+
+## [0.15.0] - 2020-10-28
+
+### Added
+
+- Add `--export` option to `set` to make it prepend the binding with `export` 
(#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
 
@@ -204,16 +223,20 @@
 [@ekohl]: https://github.com/ekohl
 [@elbehery95]: https://github.com/elbehery95
 [@gergelyk]: https://github.com/gergelyk
+[@gongqingkui]: https://github.com/gongqingkui
 [@greyli]: https://github.com/greyli
+[@jadutter]: https://github.com/jadutter
 [@qnighy]: https://github.com/qnighy
 [@snobu]: https://github.com/snobu
 [@techalchemy]: https://github.com/techalchemy
 [@theskumar]: https://github.com/theskumar
 [@ulyssessouza]: https://github.com/ulyssessouza
 [@venthur]: https://github.com/venthur
+[@x-yuri]: https://github.com/x-yuri
 [@yannham]: https://github.com/yannham
 
-[Unreleased]: https://github.com/theskumar/python-dotenv/compare/v0.14.0...HEAD
+[Unreleased]: https://github.com/theskumar/python-dotenv/compare/v0.15.0...HEAD
+[0.15.0]: https://github.com/theskumar/python-dotenv/compare/v0.14.0...v0.15.0
 [0.14.0]: https://github.com/theskumar/python-dotenv/compare/v0.13.0...v0.14.0
 [0.13.0]: https://github.com/theskumar/python-dotenv/compare/v0.12.0...v0.13.0
 [0.12.0]: https://github.com/theskumar/python-dotenv/compare/v0.11.0...v0.12.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-dotenv-0.14.0/README.md 
new/python-dotenv-0.15.0/README.md
--- old/python-dotenv-0.14.0/README.md  2020-07-03 11:17:51.000000000 +0200
+++ new/python-dotenv-0.15.0/README.md  2020-10-28 17:59:29.000000000 +0100
@@ -6,7 +6,7 @@
     __ |  |____ |  |\   |    \    /
    (__)|_______||__| \__|     \__/
 ```
-python-dotenv | [![Build 
Status](https://travis-ci.org/theskumar/python-dotenv.svg?branch=master)](https://travis-ci.org/theskumar/python-dotenv)
 [![Coverage 
Status](https://coveralls.io/repos/theskumar/python-dotenv/badge.svg?branch=master)](https://coveralls.io/r/theskumar/python-dotenv?branch=master)
 [![PyPI 
version](https://badge.fury.io/py/python-dotenv.svg)](http://badge.fury.io/py/python-dotenv)
 [![Say 
Thanks!](https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg)](https://saythanks.io/to/theskumar)
+python-dotenv | [![Build 
Status](https://travis-ci.com/theskumar/python-dotenv.svg?branch=master)](https://travis-ci.com/theskumar/python-dotenv)
 [![Coverage 
Status](https://coveralls.io/repos/theskumar/python-dotenv/badge.svg?branch=master)](https://coveralls.io/r/theskumar/python-dotenv?branch=master)
 [![PyPI 
version](https://badge.fury.io/py/python-dotenv.svg)](http://badge.fury.io/py/python-dotenv)
 [![Say 
Thanks!](https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg)](https://saythanks.io/to/theskumar)
 ===============================================================================
 
 Reads the key-value pair from `.env` file and adds them to environment
@@ -43,12 +43,12 @@
 
 The value of a variable is the first of the values defined in the following 
list:
 
-- Value of that variable in the environment.
 - Value of that variable in the `.env` file.
+- Value of that variable in the environment.
 - Default value, if provided.
 - Empty string.
 
-Ensure that variables are surrounded with `{}` like `${HOME}` as bare 
+Ensure that variables are surrounded with `{}` like `${HOME}` as bare
 variables such as `$HOME` are not expanded.
 
 ```shell
@@ -186,16 +186,23 @@
 Options:
   -f, --file PATH                 Location of the .env file, defaults to .env
                                   file in current working directory.
+
   -q, --quote [always|never|auto]
                                   Whether to quote or not the variable values.
                                   Default mode is always. This does not affect
                                   parsing.
+
+  -e, --export BOOLEAN
+                                  Whether to write the dot file as an
+                                  executable bash script.
+
+  --version                       Show the version and exit.
   --help                          Show this message and exit.
 
 Commands:
-  get    Retrive the value for the given key.
+  get    Retrieve the value for the given key.
   list   Display all the stored key/value.
-  run    Run command with environment variables from .env file present
+  run    Run command with environment variables present.
   set    Store the given key/value.
   unset  Removes the given key.
 ```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-dotenv-0.14.0/setup.cfg 
new/python-dotenv-0.15.0/setup.cfg
--- old/python-dotenv-0.14.0/setup.cfg  2020-07-03 11:17:51.000000000 +0200
+++ new/python-dotenv-0.15.0/setup.cfg  2020-10-28 17:59:29.000000000 +0100
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 0.14.0
+current_version = 0.15.0
 commit = True
 tag = True
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-dotenv-0.14.0/setup.py 
new/python-dotenv-0.15.0/setup.py
--- old/python-dotenv-0.14.0/setup.py   2020-07-03 11:17:51.000000000 +0200
+++ new/python-dotenv-0.15.0/setup.py   2020-10-28 17:59:29.000000000 +0100
@@ -53,6 +53,7 @@
         'Programming Language :: Python :: 3.6',
         'Programming Language :: Python :: 3.7',
         'Programming Language :: Python :: 3.8',
+        'Programming Language :: Python :: 3.9',
         'Programming Language :: Python :: Implementation :: PyPy',
         'Intended Audience :: Developers',
         'Intended Audience :: System Administrators',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-dotenv-0.14.0/src/dotenv/cli.py 
new/python-dotenv-0.15.0/src/dotenv/cli.py
--- old/python-dotenv-0.14.0/src/dotenv/cli.py  2020-07-03 11:17:51.000000000 
+0200
+++ new/python-dotenv-0.15.0/src/dotenv/cli.py  2020-10-28 17:59:29.000000000 
+0100
@@ -19,19 +19,23 @@
 
 @click.group()
 @click.option('-f', '--file', default=os.path.join(os.getcwd(), '.env'),
-              type=click.Path(exists=True),
+              type=click.Path(file_okay=True),
               help="Location of the .env file, defaults to .env file in 
current working directory.")
 @click.option('-q', '--quote', default='always',
               type=click.Choice(['always', 'never', 'auto']),
               help="Whether to quote or not the variable values. Default mode 
is always. This does not affect parsing.")
+@click.option('-e', '--export', default=False,
+              type=click.BOOL,
+              help="Whether to write the dot file as an executable bash 
script.")
 @click.version_option(version=__version__)
 @click.pass_context
-def cli(ctx, file, quote):
-    # type: (click.Context, Any, Any) -> None
+def cli(ctx, file, quote, export):
+    # type: (click.Context, Any, Any, Any) -> None
     '''This script is used to set, get or unset values from a .env file.'''
     ctx.obj = {}
-    ctx.obj['FILE'] = file
     ctx.obj['QUOTE'] = quote
+    ctx.obj['EXPORT'] = export
+    ctx.obj['FILE'] = file
 
 
 @cli.command()
@@ -40,6 +44,11 @@
     # type: (click.Context) -> None
     '''Display all the stored key/value.'''
     file = ctx.obj['FILE']
+    if not os.path.isfile(file):
+        raise click.BadParameter(
+            'Path "%s" does not exist.' % (file),
+            ctx=ctx
+        )
     dotenv_as_dict = dotenv_values(file)
     for k, v in dotenv_as_dict.items():
         click.echo('%s=%s' % (k, v))
@@ -54,7 +63,8 @@
     '''Store the given key/value.'''
     file = ctx.obj['FILE']
     quote = ctx.obj['QUOTE']
-    success, key, value = set_key(file, key, value, quote)
+    export = ctx.obj['EXPORT']
+    success, key, value = set_key(file, key, value, quote, export)
     if success:
         click.echo('%s=%s' % (key, value))
     else:
@@ -68,6 +78,11 @@
     # type: (click.Context, Any) -> None
     '''Retrieve the value for the given key.'''
     file = ctx.obj['FILE']
+    if not os.path.isfile(file):
+        raise click.BadParameter(
+            'Path "%s" does not exist.' % (file),
+            ctx=ctx
+        )
     stored_value = get_key(file, key)
     if stored_value:
         click.echo('%s=%s' % (key, stored_value))
@@ -97,6 +112,11 @@
     # type: (click.Context, List[str]) -> None
     """Run command with environment variables present."""
     file = ctx.obj['FILE']
+    if not os.path.isfile(file):
+        raise click.BadParameter(
+            'Invalid value for \'-f\' "%s" does not exist.' % (file),
+            ctx=ctx
+        )
     dotenv_as_dict = {to_env(k): to_env(v) for (k, v) in 
dotenv_values(file).items() if v is not None}
 
     if not commandline:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-dotenv-0.14.0/src/dotenv/main.py 
new/python-dotenv-0.15.0/src/dotenv/main.py
--- old/python-dotenv-0.14.0/src/dotenv/main.py 2020-07-03 11:17:51.000000000 
+0200
+++ new/python-dotenv-0.15.0/src/dotenv/main.py 2020-10-28 17:59:29.000000000 
+0100
@@ -18,7 +18,7 @@
 
 if IS_TYPE_CHECKING:
     from typing import (
-        Dict, Iterator, Match, Optional, Pattern, Union, Text, IO, Tuple
+        Dict, Iterable, Iterator, Match, Optional, Pattern, Union, Text, IO, 
Tuple
     )
     if sys.version_info >= (3, 6):
         _PathLike = os.PathLike
@@ -83,9 +83,13 @@
         if self._dict:
             return self._dict
 
-        values = OrderedDict(self.parse())
-        self._dict = resolve_nested_variables(values) if self.interpolate else 
values
-        return self._dict
+        if self.interpolate:
+            values = resolve_nested_variables(self.parse())
+        else:
+            values = OrderedDict(self.parse())
+
+        self._dict = values
+        return values
 
     def parse(self):
         # type: () -> Iterator[Tuple[Text, Optional[Text]]]
@@ -136,6 +140,9 @@
 def rewrite(path):
     # type: (_PathLike) -> Iterator[Tuple[IO[Text], IO[Text]]]
     try:
+        if not os.path.isfile(path):
+            with io.open(path, "w+") as source:
+                source.write("")
         with tempfile.NamedTemporaryFile(mode="w+", delete=False) as dest:
             with io.open(path) as source:
                 yield (source, dest)  # type: ignore
@@ -147,8 +154,8 @@
         shutil.move(dest.name, path)
 
 
-def set_key(dotenv_path, key_to_set, value_to_set, quote_mode="always"):
-    # type: (_PathLike, Text, Text, Text) -> Tuple[Optional[bool], Text, Text]
+def set_key(dotenv_path, key_to_set, value_to_set, quote_mode="always", 
export=False):
+    # type: (_PathLike, Text, Text, Text, bool) -> Tuple[Optional[bool], Text, 
Text]
     """
     Adds or Updates a key/value to the given .env
 
@@ -156,9 +163,6 @@
     an orphan .env somewhere in the filesystem
     """
     value_to_set = value_to_set.strip("'").strip('"')
-    if not os.path.exists(dotenv_path):
-        logger.warning("Can't write to %s - it doesn't exist.", dotenv_path)
-        return None, key_to_set, value_to_set
 
     if " " in value_to_set:
         quote_mode = "always"
@@ -167,7 +171,10 @@
         value_out = '"{}"'.format(value_to_set.replace('"', '\\"'))
     else:
         value_out = value_to_set
-    line_out = "{}={}\n".format(key_to_set, value_out)
+    if export:
+        line_out = 'export {}={}\n'.format(key_to_set, value_out)
+    else:
+        line_out = "{}={}\n".format(key_to_set, value_out)
 
     with rewrite(dotenv_path) as (source, dest):
         replaced = False
@@ -211,7 +218,7 @@
 
 
 def resolve_nested_variables(values):
-    # type: (Dict[Text, Optional[Text]]) -> Dict[Text, Optional[Text]]
+    # type: (Iterable[Tuple[Text, Optional[Text]]]) -> Dict[Text, 
Optional[Text]]
     def _replacement(name, default):
         # type: (Text, Optional[Text]) -> Text
         default = default if default is not None else ""
@@ -229,7 +236,7 @@
 
     new_values = {}
 
-    for k, v in values.items():
+    for (k, v) in values:
         new_values[k] = __posix_variable.sub(_re_sub_callback, v) if v is not 
None else None
 
     return new_values
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-dotenv-0.14.0/src/dotenv/parser.py 
new/python-dotenv-0.15.0/src/dotenv/parser.py
--- old/python-dotenv-0.14.0/src/dotenv/parser.py       2020-07-03 
11:17:51.000000000 +0200
+++ new/python-dotenv-0.15.0/src/dotenv/parser.py       2020-10-28 
17:59:29.000000000 +0100
@@ -24,7 +24,7 @@
 _equal_sign = make_regex(r"(=[^\S\r\n]*)")
 _single_quoted_value = make_regex(r"'((?:\\'|[^'])*)'")
 _double_quoted_value = make_regex(r'"((?:\\"|[^"])*)"')
-_unquoted_value_part = make_regex(r"([^ \r\n]*)")
+_unquoted_value = make_regex(r"([^\r\n]*)")
 _comment = make_regex(r"(?:[^\S\r\n]*#[^\r\n]*)?")
 _end_of_line = make_regex(r"[^\S\r\n]*(?:\r\n|\n|\r|$)")
 _rest_of_line = make_regex(r"[^\r\n]*(?:\r|\n|\r\n)?")
@@ -55,7 +55,7 @@
             ("error", bool),
         ],
     )
-except ImportError:
+except (ImportError, AttributeError):
     from collections import namedtuple
     Original = namedtuple(  # type: ignore
         "Original",
@@ -167,14 +167,8 @@
 
 def parse_unquoted_value(reader):
     # type: (Reader) -> Text
-    value = u""
-    while True:
-        (part,) = reader.read_regex(_unquoted_value_part)
-        value += part
-        after = reader.peek(2)
-        if len(after) < 2 or after[0] in u"\r\n" or after[1] in u" #\r\n":
-            return value
-        value += reader.read(2)
+    (part,) = reader.read_regex(_unquoted_value)
+    return re.sub(r"\s+#.*", "", part).rstrip()
 
 
 def parse_value(reader):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-dotenv-0.14.0/src/dotenv/version.py 
new/python-dotenv-0.15.0/src/dotenv/version.py
--- old/python-dotenv-0.14.0/src/dotenv/version.py      2020-07-03 
11:17:51.000000000 +0200
+++ new/python-dotenv-0.15.0/src/dotenv/version.py      2020-10-28 
17:59:29.000000000 +0100
@@ -1 +1 @@
-__version__ = "0.14.0"
+__version__ = "0.15.0"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-dotenv-0.14.0/tests/test_cli.py 
new/python-dotenv-0.15.0/tests/test_cli.py
--- old/python-dotenv-0.14.0/tests/test_cli.py  2020-07-03 11:17:51.000000000 
+0200
+++ new/python-dotenv-0.15.0/tests/test_cli.py  2020-10-28 17:59:29.000000000 
+0100
@@ -20,7 +20,7 @@
     result = cli.invoke(dotenv_cli, ['--file', 'nx_file', 'list'])
 
     assert result.exit_code == 2, result.output
-    assert "Invalid value for '-f'" in result.output
+    assert "does not exist" in result.output
 
 
 def test_list_no_file(cli):
@@ -48,7 +48,7 @@
     result = cli.invoke(dotenv_cli, ['--file', 'nx_file', 'get', 'a'])
 
     assert result.exit_code == 2
-    assert "Invalid value for '-f'" in result.output
+    assert "does not exist" in result.output
 
 
 def test_unset_existing_value(cli, dotenv_file):
@@ -77,10 +77,27 @@
         ("auto", "HELLO", "HELLO WORLD", 'HELLO="HELLO WORLD"\n'),
     )
 )
-def test_set_options(cli, dotenv_file, quote_mode, variable, value, expected):
+def test_set_quote_options(cli, dotenv_file, quote_mode, variable, value, 
expected):
     result = cli.invoke(
         dotenv_cli,
-        ["--file", dotenv_file, "--quote", quote_mode, "set", variable, value]
+        ["--file", dotenv_file, "--export", "false", "--quote", quote_mode, 
"set", variable, value]
+    )
+
+    assert (result.exit_code, result.output) == (0, "{}={}\n".format(variable, 
value))
+    assert open(dotenv_file, "r").read() == expected
+
+
+@pytest.mark.parametrize(
+    "dotenv_file,export_mode,variable,value,expected",
+    (
+        (".nx_file", "true", "HELLO", "WORLD", "export HELLO=\"WORLD\"\n"),
+        (".nx_file", "false", "HELLO", "WORLD", "HELLO=\"WORLD\"\n"),
+    )
+)
+def test_set_export(cli, dotenv_file, export_mode, variable, value, expected):
+    result = cli.invoke(
+        dotenv_cli,
+        ["--file", dotenv_file, "--quote", "always", "--export", export_mode, 
"set", variable, value]
     )
 
     assert (result.exit_code, result.output) == (0, "{}={}\n".format(variable, 
value))
@@ -97,7 +114,7 @@
     result = cli.invoke(dotenv_cli, ["--file", "nx_file", "set"])
 
     assert result.exit_code == 2
-    assert "Invalid value for '-f'" in result.output
+    assert "Missing argument" in result.output
 
 
 def test_get_default_path(tmp_path):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-dotenv-0.14.0/tests/test_main.py 
new/python-dotenv-0.15.0/tests/test_main.py
--- old/python-dotenv-0.14.0/tests/test_main.py 2020-07-03 11:17:51.000000000 
+0200
+++ new/python-dotenv-0.15.0/tests/test_main.py 2020-10-28 17:59:29.000000000 
+0100
@@ -18,15 +18,11 @@
     nx_file = str(tmp_path / "nx")
     logger = logging.getLogger("dotenv.main")
 
-    with mock.patch.object(logger, "warning") as mock_warning:
+    with mock.patch.object(logger, "warning"):
         result = dotenv.set_key(nx_file, "foo", "bar")
 
-    assert result == (None, "foo", "bar")
-    assert not os.path.exists(nx_file)
-    mock_warning.assert_called_once_with(
-        "Can't write to %s - it doesn't exist.",
-        nx_file,
-    )
+    assert result == (True, "foo", "bar")
+    assert os.path.exists(nx_file)
 
 
 @pytest.mark.parametrize(
@@ -337,6 +333,8 @@
 
         # Re-defined and used in file
         ({"b": "c"}, "b=d\na=${b}", True, {"a": "d", "b": "d"}),
+        ({}, "a=b\na=c\nd=${a}", True, {"a": "c", "d": "c"}),
+        ({}, "a=b\nc=${a}\nd=e\nc=${d}", True, {"a": "b", "c": "e", "d": "e"}),
     ],
 )
 def test_dotenv_values_stream(env, string, interpolate, expected):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-dotenv-0.14.0/tests/test_parser.py 
new/python-dotenv-0.15.0/tests/test_parser.py
--- old/python-dotenv-0.14.0/tests/test_parser.py       2020-07-03 
11:17:51.000000000 +0200
+++ new/python-dotenv-0.15.0/tests/test_parser.py       2020-10-28 
17:59:29.000000000 +0100
@@ -19,20 +19,40 @@
     (u"# a=b", [Binding(key=None, value=None, original=Original(string=u"# 
a=b", line=1), error=False)]),
     (u"a=b#c", [Binding(key=u"a", value=u"b#c", 
original=Original(string=u"a=b#c", line=1), error=False)]),
     (
-        u'a=b # comment',
-        [Binding(key=u"a", value=u"b", original=Original(string=u"a=b # 
comment", line=1), error=False)],
+        u'a=b #c',
+        [Binding(key=u"a", value=u"b", original=Original(string=u"a=b #c", 
line=1), error=False)],
     ),
     (
-        u"a=b space ",
-        [Binding(key=u"a", value=u"b space", original=Original(string=u"a=b 
space ", line=1), error=False)],
+        u'a=b\t#c',
+        [Binding(key=u"a", value=u"b", original=Original(string=u"a=b\t#c", 
line=1), error=False)],
     ),
     (
-        u"a='b space '",
-        [Binding(key=u"a", value=u"b space ", original=Original(string=u"a='b 
space '", line=1), error=False)],
+        u"a=b c",
+        [Binding(key=u"a", value=u"b c", original=Original(string=u"a=b c", 
line=1), error=False)],
     ),
     (
-        u'a="b space "',
-        [Binding(key=u"a", value=u"b space ", original=Original(string=u'a="b 
space "', line=1), error=False)],
+        u"a=b\tc",
+        [Binding(key=u"a", value=u"b\tc", original=Original(string=u"a=b\tc", 
line=1), error=False)],
+    ),
+    (
+        u"a=b  c",
+        [Binding(key=u"a", value=u"b  c", original=Original(string=u"a=b  c", 
line=1), error=False)],
+    ),
+    (
+        u"a=b\u00a0 c",
+        [Binding(key=u"a", value=u"b\u00a0 c", 
original=Original(string=u"a=b\u00a0 c", line=1), error=False)],
+    ),
+    (
+        u"a=b c ",
+        [Binding(key=u"a", value=u"b c", original=Original(string=u"a=b c ", 
line=1), error=False)],
+    ),
+    (
+        u"a='b c '",
+        [Binding(key=u"a", value=u"b c ", original=Original(string=u"a='b c 
'", line=1), error=False)],
+    ),
+    (
+        u'a="b c "',
+        [Binding(key=u"a", value=u"b c ", original=Original(string=u'a="b c 
"', line=1), error=False)],
     ),
     (
         u"export export_a=1",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-dotenv-0.14.0/tox.ini 
new/python-dotenv-0.15.0/tox.ini
--- old/python-dotenv-0.14.0/tox.ini    2020-07-03 11:17:51.000000000 +0200
+++ new/python-dotenv-0.15.0/tox.ini    2020-10-28 17:59:29.000000000 +0100
@@ -1,5 +1,5 @@
 [tox]
-envlist = 
lint,py{27,34,35,36,37,38,34-no-typing},pypy,pypy3,manifest,coverage-report
+envlist = 
lint,py{27,34,35,36,37,38,39,34-no-typing},pypy,pypy3,manifest,coverage-report
 
 [testenv]
 deps =
@@ -10,7 +10,7 @@
   click
   py{27,py}: ipython<6.0.0
   py34{,-no-typing}: ipython<7.0.0
-  py{35,36,37,38,py3}: ipython
+  py{35,36,37,38,39,py3}: ipython
 commands = coverage run --parallel -m pytest {posargs}
 
 [testenv:py34-no-typing]
@@ -25,6 +25,7 @@
   mypy
 commands =
   flake8 src tests
+  mypy --python-version=3.9 src tests
   mypy --python-version=3.8 src tests
   mypy --python-version=3.7 src tests
   mypy --python-version=3.6 src tests
_______________________________________________
openSUSE Commits mailing list -- commit@lists.opensuse.org
To unsubscribe, email commit-le...@lists.opensuse.org
List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette
List Archives: 
https://lists.opensuse.org/archives/list/commit@lists.opensuse.org

Reply via email to