[Python-modules-commits] [python-werkzeug] 01/07: Import python-werkzeug_0.11.13+dfsg1.orig.tar.gz

Ondřej Nový onovy at moszumanska.debian.org
Wed Dec 28 21:40:05 UTC 2016


This is an automated email from the git hooks/post-receive script.

onovy pushed a commit to branch master
in repository python-werkzeug.

commit a596b49313fe62d3b1d7d1cf64e76bb14db0339a
Author: Ondřej Nový <onovy at debian.org>
Date:   Wed Dec 28 22:35:14 2016 +0100

    Import python-werkzeug_0.11.13+dfsg1.orig.tar.gz
---
 CHANGES                      | 17 +++++++++++++++++
 setup.cfg                    |  2 +-
 tests/test_datastructures.py | 18 ++++++++++++++++++
 werkzeug/__init__.py         |  2 +-
 werkzeug/_reloader.py        | 17 ++++++++++++++++-
 werkzeug/datastructures.py   | 11 ++++++++++-
 werkzeug/test.py             |  2 +-
 7 files changed, 64 insertions(+), 5 deletions(-)

diff --git a/CHANGES b/CHANGES
index 04bd63c..0805087 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,23 @@
 Werkzeug Changelog
 ==================
 
+Version 0.11.13
+---------------
+
+Released on December 26th 2016.
+
+- Correct fix for the reloader issuer on certain Windows installations.
+
+Version 0.11.12
+---------------
+
+Released on December 26th 2016.
+
+- Fix more bugs in multidicts regarding empty lists. See ``#1000``.
+- Add some docstrings to some `EnvironBuilder` properties that were previously
+  unintentionally missing.
+- Added a workaround for the reloader on windows.
+
 Version 0.11.11
 ---------------
 
diff --git a/setup.cfg b/setup.cfg
index 820ac8e..646eb2d 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -8,6 +8,6 @@ norecursedirs = .* env* _build *.egg
 universal = 1
 
 [flake8]
-ignore = E126,E241,E272,E402,E731,W503
+ignore = E126,E241,E272,E305,E402,E731,W503
 exclude=.tox,examples,docs
 max-line-length=100
diff --git a/tests/test_datastructures.py b/tests/test_datastructures.py
index 3c08e30..47672b4 100644
--- a/tests/test_datastructures.py
+++ b/tests/test_datastructures.py
@@ -362,6 +362,24 @@ class TestMultiDict(_MutableMultiDictTests):
         with pytest.raises(KeyError):
             d.pop('foos')
 
+    def test_multidict_pop_raise_badrequestkeyerror_for_empty_list_value(self):
+        mapping = [('a', 'b'), ('a', 'c')]
+        md = self.storage_class(mapping)
+
+        md.setlistdefault('empty', [])
+
+        with pytest.raises(KeyError):
+            md.pop('empty')
+
+    def test_multidict_popitem_raise_badrequestkeyerror_for_empty_list_value(self):
+        mapping = []
+        md = self.storage_class(mapping)
+
+        md.setlistdefault('empty', [])
+
+        with pytest.raises(KeyError):
+            md.popitem()
+
     def test_setlistdefault(self):
         md = self.storage_class()
         assert md.setlistdefault('u', [-1, -2]) == [-1, -2]
diff --git a/werkzeug/__init__.py b/werkzeug/__init__.py
index 729d91e..b2ca4fe 100644
--- a/werkzeug/__init__.py
+++ b/werkzeug/__init__.py
@@ -20,7 +20,7 @@ import sys
 from werkzeug._compat import iteritems
 
 # the version.  Usually set automatically by a script.
-__version__ = '0.11.11-dev'
+__version__ = '0.11.13'
 
 
 # This import magic raises concerns quite often which is why the implementation
diff --git a/werkzeug/_reloader.py b/werkzeug/_reloader.py
index 3d30c18..c4ca271 100644
--- a/werkzeug/_reloader.py
+++ b/werkzeug/_reloader.py
@@ -50,6 +50,21 @@ def _find_observable_paths(extra_files=None):
     return _find_common_roots(rv)
 
 
+def _get_args_for_reloading():
+    """Returns the executable. This contains a workaround for windows
+    if the executable is incorrectly reported to not have the .exe
+    extension which can cause bugs on reloading.
+    """
+    rv = [sys.executable]
+    py_script = sys.argv[0]
+    if os.name == 'nt' and not os.path.exists(py_script) and \
+       os.path.exists(py_script + '.exe'):
+        py_script += '.exe'
+    rv.append(py_script)
+    rv.extend(sys.argv[1:])
+    return rv
+
+
 def _find_common_roots(paths):
     """Out of some paths it finds the common roots that need monitoring."""
     paths = [x.split(os.path.sep) for x in paths]
@@ -93,7 +108,7 @@ class ReloaderLoop(object):
         """
         while 1:
             _log('info', ' * Restarting with %s' % self.name)
-            args = [sys.executable] + sys.argv
+            args = _get_args_for_reloading()
             new_environ = os.environ.copy()
             new_environ['WERKZEUG_RUN_MAIN'] = 'true'
 
diff --git a/werkzeug/datastructures.py b/werkzeug/datastructures.py
index 171ec64..6f6558a 100644
--- a/werkzeug/datastructures.py
+++ b/werkzeug/datastructures.py
@@ -606,7 +606,12 @@ class MultiDict(TypeConversionDict):
                         not in the dictionary.
         """
         try:
-            return dict.pop(self, key)[0]
+            lst = dict.pop(self, key)
+
+            if len(lst) == 0:
+                raise exceptions.BadRequestKeyError()
+
+            return lst[0]
         except KeyError as e:
             if default is not _missing:
                 return default
@@ -616,6 +621,10 @@ class MultiDict(TypeConversionDict):
         """Pop an item from the dict."""
         try:
             item = dict.popitem(self)
+
+            if len(item[1]) == 0:
+                raise exceptions.BadRequestKeyError()
+
             return (item[0], item[1][0])
         except KeyError as e:
             raise exceptions.BadRequestKeyError(str(e))
diff --git a/werkzeug/test.py b/werkzeug/test.py
index 84f1cd9..d3fdb81 100644
--- a/werkzeug/test.py
+++ b/werkzeug/test.py
@@ -433,7 +433,7 @@ class EnvironBuilder(object):
         def setter(self, value):
             self._input_stream = None
             setattr(self, key, value)
-        return property(getter, setter, doc)
+        return property(getter, setter, doc=doc)
 
     form = form_property('form', MultiDict, doc='''
         A :class:`MultiDict` of form values.''')

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/python-werkzeug.git



More information about the Python-modules-commits mailing list