[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