Hello community,

here is the log from the commit of package python-WSME for openSUSE:Factory 
checked in at 2017-08-29 11:44:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-WSME (Old)
 and      /work/SRC/openSUSE:Factory/.python-WSME.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-WSME"

Tue Aug 29 11:44:36 2017 rev:13 rq:518974 version:0.9.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-WSME/python-WSME.changes  2015-09-11 
09:04:40.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.python-WSME.new/python-WSME.changes     
2017-08-29 11:44:39.103493322 +0200
@@ -1,0 +2,28 @@
+Fri Aug 25 15:19:25 UTC 2017 - jeng...@inai.de
+
+- Trim sensationalist wording.
+
+-------------------------------------------------------------------
+Fri Aug 25 12:18:37 UTC 2017 - tbecht...@suse.com
+
+- Fix fdupes call
+
+-------------------------------------------------------------------
+Thu Aug 24 14:44:34 UTC 2017 - tbecht...@suse.com
+
+- update to 0.9.2:
+  * Remove white space between print ()
+  * Fix: Sphinx extension on Python3
+  * Fix the setup.cfg metadata
+  * Print exceptions raised from from_param methods
+  * Fix pep8 issues and switch to py35 in tox.ini
+  * [doc] Complete doc requirements
+  * Add the 0.8.0 changes list
+  * wsattr.__set__() catchs TypeError
+  * Fix jenkins failure
+  * Port test_cornice to Python 3
+  * Change the repositories from stackforge to openstack
+  * Update .gitreview for new namespace
+- convert to singlespec
+
+-------------------------------------------------------------------

Old:
----
  WSME-0.8.0.tar.gz

New:
----
  WSME-0.9.2.tar.gz

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

Other differences:
------------------
++++++ python-WSME.spec ++++++
--- /var/tmp/diff_new_pack.GKkrdV/_old  2017-08-29 11:44:40.827250329 +0200
+++ /var/tmp/diff_new_pack.GKkrdV/_new  2017-08-29 11:44:40.839248638 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-WSME
 #
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,57 +16,60 @@
 #
 
 
+%{?!python_module:%define python_module() python-%{**} python3-%{**}}
 Name:           python-WSME
-Version:        0.8.0
+Version:        0.9.2
 Release:        0
 Summary:        Web Services Made Easy
 License:        MIT
 Group:          Development/Languages/Python
 Url:            http://packages.python.org/WSME/
-Source:         
http://pypi.python.org/packages/source/W/WSME/WSME-%{version}.tar.gz
-BuildRequires:  python-devel
-BuildRequires:  python-pbr >= 0.5.21
-BuildRequires:  python-setuptools
-BuildRequires:  python-six
+Source:         
https://files.pythonhosted.org/packages/source/W/WSME/WSME-%{version}.tar.gz
+BuildRequires:  %{python_module devel}
+BuildRequires:  %{python_module pbr}
+BuildRequires:  %{python_module setuptools}
+BuildRequires:  fdupes
+BuildRequires:  python-rpm-macros
 # Test requirements:
-BuildRequires:  python-WebOb >= 1.2.3
-BuildRequires:  python-netaddr >= 0.7.12
-BuildRequires:  python-pytz
-BuildRequires:  python-simplegeneric
-BuildRequires:  python-six >= 1.9.0
+BuildRequires:  %{python_module WebOb >= 1.2.3}
+BuildRequires:  %{python_module WebTest}
+BuildRequires:  %{python_module mock}
+BuildRequires:  %{python_module netaddr >= 0.7.12}
+BuildRequires:  %{python_module nose}
+BuildRequires:  %{python_module pecan}
+BuildRequires:  %{python_module pytz}
+BuildRequires:  %{python_module simplegeneric}
+BuildRequires:  %{python_module six >= 1.9.0}
 Requires:       python-WebOb >= 1.2.3
 Requires:       python-netaddr >= 0.7.12
 Requires:       python-pytz
 Requires:       python-simplegeneric
 Requires:       python-six >= 1.9.0
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-%if 0%{?suse_version} && 0%{?suse_version} <= 1110
-BuildRequires:  python-ordereddict
-Requires:       python-ordereddict
-%{!?python_sitelib: %global python_sitelib %(python -c "from 
distutils.sysconfig import get_python_lib; print get_python_lib()")}
-%else
 BuildArch:      noarch
-%endif
+
+%python_subpackages
 
 %description
-Web Service Made Easy (WSME) is a very easy way to implement webservices
-in your python web application.
+Web Service Made Easy (WSME) is a way to implement webservices
+in Python web applications.
 It is originally a rewrite of TGWebServices
-with focus on extensibility, framework-independance and better type handling.
+with focus on extensibility, framework-independence and improved type handling.
 
 %prep
 %setup -q -n WSME-%{version}
 
 %build
-python setup.py build
+%python_build
 
 %install
-python setup.py install --prefix=%{_prefix} --root=%{buildroot}
+%python_install
+%python_expand %fdupes -s %{buildroot}%{$python_sitelib}
 
 %check
-python setup.py test
+%python_exec %{_bindir}/nosetests -v tests/pecantest tests/rest
 
-%files
+%files %{python_files}
 %defattr(-,root,root,-)
 %doc LICENSE README.rst examples
 %{python_sitelib}/*

++++++ WSME-0.8.0.tar.gz -> WSME-0.9.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/AUTHORS new/WSME-0.9.2/AUTHORS
--- old/WSME-0.8.0/AUTHORS      2015-08-25 17:05:53.000000000 +0200
+++ new/WSME-0.9.2/AUTHORS      2017-02-14 11:39:39.000000000 +0100
@@ -14,6 +14,7 @@
 Ilya Kharin <aksc...@gmail.com>
 James Page <james.p...@ubuntu.com>
 Jason Myers <ja...@jasonamyers.com>
+Jeremy Stanley <fu...@yuggoth.org>
 Julien Danjou <jul...@danjou.info>
 Ken'ichi Ohmichi <oomi...@mxs.nes.nec.co.jp>
 Lan Qi song <lqs...@cn.ibm.com>
@@ -24,10 +25,15 @@
 Mehdi Abaakouk <sil...@sileht.net>
 Michael Krotscheck <krotsch...@gmail.com>
 Ryan Petrello <li...@ryanpetrello.com>
+Sanu Madhavan <sanup...@gmail.com>
 Sascha Peilicke <speili...@suse.com>
 Stéphane Bisinger <stephane.bisin...@gmail.com>
 Sławek Ehlert <sl...@op.pl>
+Victor Stinner <vstin...@redhat.com>
+Vladyslav Drok <vd...@mirantis.com>
 Yuriy Zveryanskyy <yzveryans...@mirantis.com>
 arati.mahimane <arati.mahim...@rackspace.com>
 aviau <alexandre.v...@savoirfairelinux.com>
 gordon chung <g...@live.ca>
+houming-wang <houming.w...@easystack.cn>
+venkatamahesh <venkatamaheshko...@gmail.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/ChangeLog new/WSME-0.9.2/ChangeLog
--- old/WSME-0.8.0/ChangeLog    2015-08-25 17:05:53.000000000 +0200
+++ new/WSME-0.9.2/ChangeLog    2017-02-14 11:39:39.000000000 +0100
@@ -1,6 +1,30 @@
 CHANGES
 =======
 
+0.9.2
+-----
+
+* Remove white space between print ()
+* Fix: Sphinx extension on Python3
+
+0.9.1
+-----
+
+* Fix the setup.cfg metadata
+
+0.9.0
+-----
+
+* Print exceptions raised from from_param methods
+* Fix pep8 issues and switch to py35 in tox.ini
+* [doc] Complete doc requirements
+* Add the 0.8.0 changes list
+* wsattr.__set__() catchs TypeError
+* Fix jenkins failure
+* Port test_cornice to Python 3
+* Change the repositories from stackforge to openstack
+* Update .gitreview for new namespace
+
 0.8.0
 -----
 
@@ -46,7 +70,7 @@
 0.6.4
 -----
 
-* Include tests in the source distribution (so pecan can download and run them
+* Include tests in the source distribution (so pecan can download and run them)
 
 0.6.3
 -----
@@ -241,7 +265,7 @@
 0.5b1
 -----
 
-* Merging a dead branch (messed up with 'amend'
+* Merging a dead branch (messed up with 'amend')
 * Merging a dead branch (messed up with 'amend')
 * Merging a dead branch (messed up with 'amend')
 * Merging a dead branch (messed up with 'amend')
@@ -763,7 +787,7 @@
 * Use generic to prepare the json output so that non-structured custom types 
can be added
 * rest+xml now handle the basic return types
 * Add unittests for rest+xml
-* Continue working on the rest-xml tests and implementation + changed the 
RestProtocol interface
+* Continue working on the rest-xml tests and implementation +  changed the 
RestProtocol interface
 * Start working on the rest-xml tests and implementation
 * better testing (+ fixes) of sort_attributes
 * test & fix the forced attribute order feature
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/PKG-INFO new/WSME-0.9.2/PKG-INFO
--- old/WSME-0.8.0/PKG-INFO     2015-08-25 17:05:53.000000000 +0200
+++ new/WSME-0.9.2/PKG-INFO     2017-02-14 11:39:39.000000000 +0100
@@ -1,10 +1,10 @@
 Metadata-Version: 1.1
 Name: WSME
-Version: 0.8.0
+Version: 0.9.2
 Summary: Simplify the writing of REST APIs, and extend them with additional 
protocols.
-Home-page: UNKNOWN
-Author: "Christophe de Vienne"
-Author-email: "python-w...@googlegroups.com"
+Home-page: http://git.openstack.org/cgit/openstack/wsme
+Author: Christophe de Vienne
+Author-email: python-w...@googlegroups.com
 License: MIT
 Description: Web Services Made Easy
         ======================
@@ -109,9 +109,9 @@
         ~~~~~~~~~~
         
         * Documentation: http://packages.python.org/WSME/
-        * Source: http://git.openstack.org/cgit/stackforge/wsme
+        * Source: http://git.openstack.org/cgit/openstack/wsme
         * Bugs: https://bugs.launchpad.net/wsme/+bugs
-        * Code review: 
https://review.openstack.org/#/q/project:stackforge/wsme,n,z
+        * Code review: 
https://review.openstack.org/#/q/project:openstack/wsme,n,z
         
         .. _Changelog: http://packages.python.org/WSME/changes.html
         .. _python-wsme mailinglist: http://groups.google.com/group/python-wsme
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/README.rst new/WSME-0.9.2/README.rst
--- old/WSME-0.8.0/README.rst   2015-08-25 17:05:33.000000000 +0200
+++ new/WSME-0.9.2/README.rst   2017-02-14 11:37:52.000000000 +0100
@@ -101,9 +101,9 @@
 ~~~~~~~~~~
 
 * Documentation: http://packages.python.org/WSME/
-* Source: http://git.openstack.org/cgit/stackforge/wsme
+* Source: http://git.openstack.org/cgit/openstack/wsme
 * Bugs: https://bugs.launchpad.net/wsme/+bugs
-* Code review: https://review.openstack.org/#/q/project:stackforge/wsme,n,z
+* Code review: https://review.openstack.org/#/q/project:openstack/wsme,n,z
 
 .. _Changelog: http://packages.python.org/WSME/changes.html
 .. _python-wsme mailinglist: http://groups.google.com/group/python-wsme
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/WSME.egg-info/PKG-INFO 
new/WSME-0.9.2/WSME.egg-info/PKG-INFO
--- old/WSME-0.8.0/WSME.egg-info/PKG-INFO       2015-08-25 17:05:53.000000000 
+0200
+++ new/WSME-0.9.2/WSME.egg-info/PKG-INFO       2017-02-14 11:39:39.000000000 
+0100
@@ -1,10 +1,10 @@
 Metadata-Version: 1.1
 Name: WSME
-Version: 0.8.0
+Version: 0.9.2
 Summary: Simplify the writing of REST APIs, and extend them with additional 
protocols.
-Home-page: UNKNOWN
-Author: "Christophe de Vienne"
-Author-email: "python-w...@googlegroups.com"
+Home-page: http://git.openstack.org/cgit/openstack/wsme
+Author: Christophe de Vienne
+Author-email: python-w...@googlegroups.com
 License: MIT
 Description: Web Services Made Easy
         ======================
@@ -109,9 +109,9 @@
         ~~~~~~~~~~
         
         * Documentation: http://packages.python.org/WSME/
-        * Source: http://git.openstack.org/cgit/stackforge/wsme
+        * Source: http://git.openstack.org/cgit/openstack/wsme
         * Bugs: https://bugs.launchpad.net/wsme/+bugs
-        * Code review: 
https://review.openstack.org/#/q/project:stackforge/wsme,n,z
+        * Code review: 
https://review.openstack.org/#/q/project:openstack/wsme,n,z
         
         .. _Changelog: http://packages.python.org/WSME/changes.html
         .. _python-wsme mailinglist: http://groups.google.com/group/python-wsme
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/WSME.egg-info/pbr.json 
new/WSME-0.9.2/WSME.egg-info/pbr.json
--- old/WSME-0.8.0/WSME.egg-info/pbr.json       2015-08-25 17:05:53.000000000 
+0200
+++ new/WSME-0.9.2/WSME.egg-info/pbr.json       2017-02-14 11:39:39.000000000 
+0100
@@ -1 +1 @@
-{"git_version": "1dc4421", "is_release": true}
\ No newline at end of file
+{"git_version": "9f84e4c", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/doc/changes.rst 
new/WSME-0.9.2/doc/changes.rst
--- old/WSME-0.8.0/doc/changes.rst      2015-08-25 17:05:33.000000000 +0200
+++ new/WSME-0.9.2/doc/changes.rst      2017-02-14 11:37:52.000000000 +0100
@@ -1,6 +1,20 @@
 Changes
 =======
 
+0.8.0 (2015-08-25)
+------------------
+
+Changes that may break your app:
+
+* Returns 400 if unexpected attributes are added to complex types (#1277571).
+
+Other changes:
+
+* Returns 415 when Content-Type is invalid (#1419110)
+* Returns 400 if a complex input type is not a json object (#1423634)
+* Fix error reports with ArrayType and DictType invalid inputs (#1428185, 
#1428628)
+* Update README
+
 0.7.0 (2015-05-13)
 ------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/doc/integrate.rst 
new/WSME-0.9.2/doc/integrate.rst
--- old/WSME-0.8.0/doc/integrate.rst    2015-08-25 17:05:33.000000000 +0200
+++ new/WSME-0.9.2/doc/integrate.rst    2017-02-14 11:37:52.000000000 +0100
@@ -340,5 +340,3 @@
 
 The recommended way of using WSME inside Pyramid is to use
 :ref:`adapter-cornice`.
-
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/doc/requirements.txt 
new/WSME-0.9.2/doc/requirements.txt
--- old/WSME-0.8.0/doc/requirements.txt 2015-08-25 17:05:33.000000000 +0200
+++ new/WSME-0.9.2/doc/requirements.txt 2017-02-14 11:37:52.000000000 +0100
@@ -1,2 +1,3 @@
 sphinx
 cloud_sptheme
+-r ../requirements.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/setup.cfg new/WSME-0.9.2/setup.cfg
--- old/WSME-0.8.0/setup.cfg    2015-08-25 17:05:53.000000000 +0200
+++ new/WSME-0.9.2/setup.cfg    2017-02-14 11:39:39.000000000 +0100
@@ -1,10 +1,10 @@
 [metadata]
 name = WSME
-author = "Christophe de Vienne"
-author-email = "python-w...@googlegroups.com"
+author = Christophe de Vienne
+author-email = python-w...@googlegroups.com
 summary = Simplify the writing of REST APIs, and extend them with additional 
protocols.
 description-file = README.rst
-url = https://github.com/stackforge/wsme
+url = http://git.openstack.org/cgit/openstack/wsme
 license = MIT
 classifier = 
        Development Status :: 3 - Alpha
@@ -41,7 +41,6 @@
 universal = 0
 
 [egg_info]
-tag_date = 0
-tag_svn_revision = 0
 tag_build = 
+tag_date = 0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/tests/pecantest/test/tests/test_ws.py 
new/WSME-0.9.2/tests/pecantest/test/tests/test_ws.py
--- old/WSME-0.8.0/tests/pecantest/test/tests/test_ws.py        2015-08-25 
17:05:33.000000000 +0200
+++ new/WSME-0.9.2/tests/pecantest/test/tests/test_ws.py        2017-02-14 
11:37:52.000000000 +0100
@@ -91,7 +91,8 @@
         self.assertEqual(
             a['faultstring'],
             "Invalid input for field/attribute author_id. "
-            "Value: 'foobar'. unable to convert to int")
+            "Value: 'foobar'. unable to convert to int. Error: invalid "
+            "literal for int() with base 10: 'foobar'")
 
     def test_clientsideerror(self):
         expected_status_code = 400
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/tests/test_cornice.py 
new/WSME-0.9.2/tests/test_cornice.py
--- old/WSME-0.8.0/tests/test_cornice.py        2015-08-25 17:05:33.000000000 
+0200
+++ new/WSME-0.9.2/tests/test_cornice.py        2017-02-14 11:37:52.000000000 
+0100
@@ -103,14 +103,14 @@
         resp = self.app.get('/users')
         self.assertEqual(
             resp.body,
-            '[{"id": 1, "name": "first"}]'
+            b'[{"id": 1, "name": "first"}]'
         )
 
     def test_get_xml_list(self):
         resp = self.app.get('/users', headers={"Accept": "text/xml"})
         self.assertEqual(
             resp.body,
-            '<result><item><id>1</id><name>first</name></item></result>'
+           b'<result><item><id>1</id><name>first</name></item></result>'
         )
 
     def test_post_json_data(self):
@@ -121,7 +121,7 @@
         )
         self.assertEqual(
             resp.body,
-            '{"id": 2, "name": "new"}'
+            b'{"id": 2, "name": "new"}'
         )
 
     def test_post_xml_data(self):
@@ -132,7 +132,7 @@
         )
         self.assertEqual(
             resp.body,
-            '<result><id>2</id><name>new</name></result>'
+            b'<result><id>2</id><name>new</name></result>'
         )
 
     def test_pass_request(self):
@@ -170,7 +170,6 @@
             headers={'Accept': 'application/json'},
             expect_errors=True
         )
-        print resp.body
         self.assertEqual(resp.json['faultcode'], 'Client')
         self.assertEqual(resp.status_code, 400)
 
@@ -180,6 +179,5 @@
             headers={'Accept': 'application/json'},
             expect_errors=True
         )
-        print resp.body
         self.assertEqual(resp.json['faultcode'], 'Client')
         self.assertEqual(resp.status_code, 401)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/tox-tmpl.ini new/WSME-0.9.2/tox-tmpl.ini
--- old/WSME-0.8.0/tox-tmpl.ini 2015-08-25 17:05:33.000000000 +0200
+++ new/WSME-0.9.2/tox-tmpl.ini 2017-02-14 11:37:52.000000000 +0100
@@ -1,6 +1,6 @@
 # content of: tox.ini , put in same dir as setup.py
 [tox]
-envlist = 
py27,py27-nolxml,pypy,tg11,tg15,cornice,coverage,py34,py34-nolxml,pecan-dev27,pecan-dev34,pep8
+envlist = 
py27,py27-nolxml,pypy,tg11,tg15,cornice,cornice-py3,coverage,py35,py35-nolxml,pecan-dev27,pecan-dev35,pep8
 
 [common]
 testtools=
@@ -17,13 +17,13 @@
     flask-restful
 
 [axes]
-python=py27,py34,pypy
+python=py27,py35,pypy
 sqlalchemy=sa5,sa6,sa7*
 lxml=lxml*,nolxml
 json=json*,simplejson
 
 [axis:python]
-deps = 
+deps =
     {[common]testtools}
     {[common]basedeps}
     suds-jurko
@@ -36,8 +36,8 @@
 [axis:python:py27]
 basepython=python2.7
 
-[axis:python:py34]
-basepython=python3.4
+[axis:python:py35]
+basepython=python3.5
 
 [axis:sqlalchemy:sa5]
 deps=
@@ -76,6 +76,17 @@
     {envbindir}/nosetests tests/test_cornice.py --with-xunit --xunit-file 
nosetests-{envname}.xml --verbose --with-coverage --cover-package wsmeext 
{posargs}
     {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsmeext/cornice.py
 
+[testenv:cornice-py3]
+basepython = python3.5
+usedevelop = {[testenv:cornice]usedevelop}
+deps = {[testenv:cornice]deps}
+# disable hash randomization
+setenv =
+        PYTHONHASHSEED=0
+commands =
+    {envbindir}/nosetests tests/test_cornice.py --with-xunit --xunit-file 
nosetests-{envname}.xml --verbose --with-coverage --cover-package wsmeext 
{posargs}
+    {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsmeext/cornice.py
+
 [testenv:pecan-dev-base]
 deps=
     {[common]testtools}
@@ -89,8 +100,8 @@
 commands=
     {envbindir}/nosetests tests/pecantest --with-xunit --xunit-file 
nosetests-{envname}.xml --verbose {posargs}
 
-[testenv:pecan-dev34]
-basepython=python3.4
+[testenv:pecan-dev35]
+basepython=python3.5
 deps={[testenv:pecan-dev-base]deps}
 commands=
     {envbindir}/nosetests tests/pecantest --with-xunit --xunit-file 
nosetests-{envname}.xml --verbose {posargs}
@@ -127,6 +138,6 @@
 commands = {posargs}
 usedevelop=True
 deps =
-       pbr
+    pbr
     oslo.config
     oslotest
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/tox.ini new/WSME-0.9.2/tox.ini
--- old/WSME-0.8.0/tox.ini      2015-08-25 17:05:33.000000000 +0200
+++ new/WSME-0.9.2/tox.ini      2017-02-14 11:37:52.000000000 +0100
@@ -1,5 +1,5 @@
 [tox]
-envlist = 
py27,py27-nolxml,pypy,tg11,tg15,cornice,coverage,py34,py34-nolxml,pecan-dev27,pecan-dev34,pep8
+envlist = 
py27,py27-nolxml,pypy,tg11,tg15,cornice,cornice-py3,coverage,py35,py35-nolxml,pecan-dev27,pecan-dev35,pep8
 
 [common]
 testtools = 
@@ -32,6 +32,16 @@
        {envbindir}/nosetests tests/test_cornice.py --with-xunit --xunit-file 
nosetests-{envname}.xml --verbose --with-coverage --cover-package wsmeext 
{posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsmeext/cornice.py
 
+[testenv:cornice-py3]
+basepython = python3.5
+usedevelop = {[testenv:cornice]usedevelop}
+deps = {[testenv:cornice]deps}
+setenv = 
+       PYTHONHASHSEED=0
+commands = 
+       {envbindir}/nosetests tests/test_cornice.py --with-xunit --xunit-file 
nosetests-{envname}.xml --verbose --with-coverage --cover-package wsmeext 
{posargs}
+       {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsmeext/cornice.py
+
 [testenv:pecan-dev-base]
 deps = 
        {[common]testtools}
@@ -45,8 +55,8 @@
 commands = 
        {envbindir}/nosetests tests/pecantest --with-xunit --xunit-file 
nosetests-{envname}.xml --verbose {posargs}
 
-[testenv:pecan-dev34]
-basepython = python3.4
+[testenv:pecan-dev35]
+basepython = python3.5
 deps = {[testenv:pecan-dev-base]deps}
 commands = 
        {envbindir}/nosetests tests/pecantest --with-xunit --xunit-file 
nosetests-{envname}.xml --verbose {posargs}
@@ -370,7 +380,7 @@
        simplejson
 basepython = python2.7
 
-[testenv:py34-sa5-lxml-json]
+[testenv:py35-sa5-lxml-json]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -381,9 +391,9 @@
        suds-jurko
        SQLAlchemy<=0.5.99
        lxml
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-sa5]
+[testenv:py35-sa5]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -394,9 +404,9 @@
        suds-jurko
        SQLAlchemy<=0.5.99
        lxml
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-sa5-lxml-simplejson]
+[testenv:py35-sa5-lxml-simplejson]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -408,9 +418,9 @@
        SQLAlchemy<=0.5.99
        lxml
        simplejson
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-sa5-simplejson]
+[testenv:py35-sa5-simplejson]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -422,9 +432,9 @@
        SQLAlchemy<=0.5.99
        lxml
        simplejson
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-sa5-nolxml-json]
+[testenv:py35-sa5-nolxml-json]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -434,9 +444,9 @@
        {[common]basedeps}
        suds-jurko
        SQLAlchemy<=0.5.99
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-sa5-nolxml]
+[testenv:py35-sa5-nolxml]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -446,9 +456,9 @@
        {[common]basedeps}
        suds-jurko
        SQLAlchemy<=0.5.99
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-sa5-nolxml-simplejson]
+[testenv:py35-sa5-nolxml-simplejson]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -459,9 +469,9 @@
        suds-jurko
        SQLAlchemy<=0.5.99
        simplejson
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-sa6-lxml-json]
+[testenv:py35-sa6-lxml-json]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -472,9 +482,9 @@
        suds-jurko
        SQLAlchemy<=0.6.99
        lxml
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-sa6]
+[testenv:py35-sa6]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -485,9 +495,9 @@
        suds-jurko
        SQLAlchemy<=0.6.99
        lxml
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-sa6-lxml-simplejson]
+[testenv:py35-sa6-lxml-simplejson]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -499,9 +509,9 @@
        SQLAlchemy<=0.6.99
        lxml
        simplejson
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-sa6-simplejson]
+[testenv:py35-sa6-simplejson]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -513,9 +523,9 @@
        SQLAlchemy<=0.6.99
        lxml
        simplejson
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-sa6-nolxml-json]
+[testenv:py35-sa6-nolxml-json]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -525,9 +535,9 @@
        {[common]basedeps}
        suds-jurko
        SQLAlchemy<=0.6.99
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-sa6-nolxml]
+[testenv:py35-sa6-nolxml]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -537,9 +547,9 @@
        {[common]basedeps}
        suds-jurko
        SQLAlchemy<=0.6.99
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-sa6-nolxml-simplejson]
+[testenv:py35-sa6-nolxml-simplejson]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -550,9 +560,9 @@
        suds-jurko
        SQLAlchemy<=0.6.99
        simplejson
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-sa7-lxml-json]
+[testenv:py35-sa7-lxml-json]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -563,9 +573,9 @@
        suds-jurko
        SQLAlchemy<=0.7.99
        lxml
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34]
+[testenv:py35]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -576,9 +586,9 @@
        suds-jurko
        SQLAlchemy<=0.7.99
        lxml
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-sa7-lxml-simplejson]
+[testenv:py35-sa7-lxml-simplejson]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -590,9 +600,9 @@
        SQLAlchemy<=0.7.99
        lxml
        simplejson
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-simplejson]
+[testenv:py35-simplejson]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -604,9 +614,9 @@
        SQLAlchemy<=0.7.99
        lxml
        simplejson
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-sa7-nolxml-json]
+[testenv:py35-sa7-nolxml-json]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -616,9 +626,9 @@
        {[common]basedeps}
        suds-jurko
        SQLAlchemy<=0.7.99
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-nolxml]
+[testenv:py35-nolxml]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -628,9 +638,9 @@
        {[common]basedeps}
        suds-jurko
        SQLAlchemy<=0.7.99
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-sa7-nolxml-simplejson]
+[testenv:py35-sa7-nolxml-simplejson]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -641,9 +651,9 @@
        suds-jurko
        SQLAlchemy<=0.7.99
        simplejson
-basepython = python3.4
+basepython = python3.5
 
-[testenv:py34-nolxml-simplejson]
+[testenv:py35-nolxml-simplejson]
 commands = 
        {envbindir}/coverage run {envbindir}/nosetests --nologcapture 
--with-xunit --xunit-file nosetests-{envname}.xml wsme/tests wsmeext/tests 
tests/pecantest tests/test_sphinxext.py tests/test_flask.py --verbose {posargs}
        {envbindir}/coverage xml -o coverage-{envname}.xml wsme/*.py 
wsme/rest/*.py wsmeext/*.py
@@ -654,7 +664,7 @@
        suds-jurko
        SQLAlchemy<=0.7.99
        simplejson
-basepython = python3.4
+basepython = python3.5
 
 [testenv:pypy-sa5-lxml-json]
 commands = 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/wsme/api.py new/WSME-0.9.2/wsme/api.py
--- old/WSME-0.8.0/wsme/api.py  2015-08-25 17:05:33.000000000 +0200
+++ new/WSME-0.9.2/wsme/api.py  2017-02-14 11:37:52.000000000 +0100
@@ -182,6 +182,7 @@
                 fd.set_arg_types(argspec, self.arg_types)
         return func
 
+
 sig = signature
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/wsme/rest/args.py 
new/WSME-0.9.2/wsme/rest/args.py
--- old/WSME-0.8.0/wsme/rest/args.py    2015-08-25 17:05:33.000000000 +0200
+++ new/WSME-0.9.2/wsme/rest/args.py    2017-02-14 11:37:52.000000000 +0100
@@ -178,7 +178,7 @@
     for argdef, arg in zip(funcdef.arguments[:len(args)], args):
         try:
             newargs.append(from_param(argdef.datatype, arg))
-        except Exception:
+        except Exception as e:
             if isinstance(argdef.datatype, UserType):
                 datatype_name = argdef.datatype.name
             elif isinstance(argdef.datatype, type):
@@ -188,7 +188,8 @@
             raise InvalidInput(
                 argdef.name,
                 arg,
-                "unable to convert to %s" % datatype_name)
+                "unable to convert to %(datatype)s. Error: %(error)s" % {
+                    'datatype': datatype_name, 'error': e})
     newkwargs = {}
     for argname, value in kwargs.items():
         newkwargs[argname] = from_param(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/wsme/tests/test_protocols_commons.py 
new/WSME-0.9.2/wsme/tests/test_protocols_commons.py
--- old/WSME-0.8.0/wsme/tests/test_protocols_commons.py 2015-08-25 
17:05:33.000000000 +0200
+++ new/WSME-0.9.2/wsme/tests/test_protocols_commons.py 2017-02-14 
11:37:52.000000000 +0100
@@ -93,6 +93,31 @@
         else:
             self.fail('Should have thrown an InvalidInput')
 
+    def test_args_from_args_custom_exc(self):
+
+        class FakeType(UserType):
+            name = 'fake-type'
+            basetype = int
+
+            def validate(self, value):
+                if value < 10:
+                    raise ValueError('should be greater than 10')
+
+            def frombasetype(self, value):
+                self.validate(value)
+
+        fake_type = FakeType()
+        fd = FunctionDefinition(FunctionDefinition)
+        fd.arguments.append(FunctionArgument('fake-arg', fake_type, True, 0))
+
+        try:
+            args_from_args(fd, [9], {})
+        except InvalidInput as e:
+            assert fake_type.name in str(e)
+            assert 'Error: should be greater than 10' in str(e)
+        else:
+            self.fail('Should have thrown an InvalidInput')
+
     def test_args_from_args_array_type(self):
         fake_type = ArrayType(MyBaseType)
         fd = FunctionDefinition(FunctionDefinition)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/wsme/tests/test_restjson.py 
new/WSME-0.9.2/wsme/tests/test_restjson.py
--- old/WSME-0.8.0/wsme/tests/test_restjson.py  2015-08-25 17:05:33.000000000 
+0200
+++ new/WSME-0.9.2/wsme/tests/test_restjson.py  2017-02-14 11:37:52.000000000 
+0100
@@ -148,6 +148,7 @@
             ref.name = u('test')
         return CRUDResult(ref, u('delete'))
 
+
 wsme.tests.protocol.WSTestRoot.crud = MiniCrud()
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/wsme/tests/test_restxml.py 
new/WSME-0.9.2/wsme/tests/test_restxml.py
--- old/WSME-0.8.0/wsme/tests/test_restxml.py   2015-08-25 17:05:33.000000000 
+0200
+++ new/WSME-0.9.2/wsme/tests/test_restxml.py   2017-02-14 11:37:52.000000000 
+0100
@@ -57,7 +57,7 @@
 
 
 def loadxml(el, datatype):
-    print (el, datatype, len(el))
+    print(el, datatype, len(el))
     if el.get('nil') == 'true':
         return None
     if isinstance(datatype, list):
@@ -90,10 +90,10 @@
         for attr in datatype._wsme_attributes:
             name = attr.name
             child = el.find(name)
-            print (name, attr, child)
+            print(name, attr, child)
             if child is not None:
                 d[name] = loadxml(child, attr.datatype)
-        print (d)
+        print(d)
         return d
     else:
         if datatype == wsme.types.binary:
@@ -137,7 +137,7 @@
             content,
             headers=headers,
             expect_errors=True)
-        print ("Received:", res.body)
+        print("Received:", res.body)
 
         if _no_result_decode:
             return res
@@ -167,7 +167,7 @@
 
         language, sample = wsme.rest.xml.encode_sample_value(
             MyType, value, True)
-        print (language, sample)
+        print(language, sample)
 
         assert language == 'xml'
         assert sample == b("""<value>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/wsme/tests/test_types.py 
new/WSME-0.9.2/wsme/tests/test_types.py
--- old/WSME-0.8.0/wsme/tests/test_types.py     2015-08-25 17:05:33.000000000 
+0200
+++ new/WSME-0.9.2/wsme/tests/test_types.py     2017-02-14 11:37:52.000000000 
+0100
@@ -206,6 +206,19 @@
         self.assertRaises(exc.InvalidInput, setattr, obj, 'alist', 12)
         self.assertRaises(exc.InvalidInput, setattr, obj, 'alist', [2, 'a'])
 
+    def test_attribute_validation_minimum(self):
+        class ATypeInt(object):
+            attr = types.IntegerType(minimum=1, maximum=5)
+
+        types.register_type(ATypeInt)
+
+        obj = ATypeInt()
+        obj.attr = 2
+
+        # comparison between 'zero' value and intger minimum (1) raises a
+        # TypeError which must be wrapped into an InvalidInput exception
+        self.assertRaises(exc.InvalidInput, setattr, obj, 'attr', 'zero')
+
     def test_text_attribute_conversion(self):
         class SType(object):
             atext = types.text
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/wsme/tests/test_utils.py 
new/WSME-0.9.2/wsme/tests/test_utils.py
--- old/WSME-0.8.0/wsme/tests/test_utils.py     2015-08-25 17:05:33.000000000 
+0200
+++ new/WSME-0.9.2/wsme/tests/test_utils.py     2017-02-14 11:37:52.000000000 
+0100
@@ -63,14 +63,12 @@
                                pytz.FixedOffset(-1439))),
         ]
         ill_formatted_datetimes = [
-            '24-12-2004',
+            '24-32-2004',
             '1856-07-10+33:00'
         ]
         out_of_range_datetimes = [
             '2008-02-12T32:12:00',
             '2012-13-12T00:54:60',
-            '1856-07-10T01:02:03-24:00',
-            '1856-07-10T01:02:03+24:00',
         ]
         for s, t in good_datetimes:
             assert utils.parse_isodatetime(s) == t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/wsme/types.py new/WSME-0.9.2/wsme/types.py
--- old/WSME-0.8.0/wsme/types.py        2015-08-25 17:05:33.000000000 +0200
+++ new/WSME-0.9.2/wsme/types.py        2017-02-14 11:37:52.000000000 +0100
@@ -135,6 +135,7 @@
             return None
         return base64.decodestring(value)
 
+
 #: The binary almost-native type
 binary = BinaryType()
 
@@ -325,6 +326,7 @@
     def __repr__(self):
         return 'Unset'
 
+
 Unset = UnsetType()
 
 #: A special type that corresponds to the host framework request object.
@@ -487,7 +489,7 @@
     def __set__(self, instance, value):
         try:
             value = validate_value(self.datatype, value)
-        except ValueError as e:
+        except (ValueError, TypeError) as e:
             raise exc.InvalidInput(self.name, value, six.text_type(e))
         dataholder = self._get_dataholder(instance)
         if value is Unset:
@@ -741,6 +743,7 @@
             type_ = self.register(type_)
         return type_
 
+
 # Default type registry
 registry = Registry()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/wsmeext/pecan.py 
new/WSME-0.9.2/wsmeext/pecan.py
--- old/WSME-0.8.0/wsmeext/pecan.py     2015-08-25 17:05:33.000000000 +0200
+++ new/WSME-0.9.2/wsmeext/pecan.py     2017-02-14 11:37:52.000000000 +0100
@@ -43,6 +43,7 @@
             namespace['datatype']
         )
 
+
 pecan.templating._builtin_renderers['wsmejson'] = JSonRenderer
 pecan.templating._builtin_renderers['wsmexml'] = XMLRenderer
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/wsmeext/soap/wsdl.py 
new/WSME-0.9.2/wsmeext/soap/wsdl.py
--- old/WSME-0.8.0/wsmeext/soap/wsdl.py 2015-08-25 17:05:33.000000000 +0200
+++ new/WSME-0.9.2/wsmeext/soap/wsdl.py 2017-02-14 11:37:52.000000000 +0100
@@ -28,6 +28,7 @@
     def qn(self, name):
         return '{%s}%s' % (self.url, name)
 
+
 wsdl_ns = NS("http://schemas.xmlsoap.org/wsdl/";)
 soap_ns = NS("http://schemas.xmlsoap.org/wsdl/soap/";)
 xs_ns = NS("http://www.w3.org/2001/XMLSchema";)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/wsmeext/sphinxext.py 
new/WSME-0.9.2/wsmeext/sphinxext.py
--- old/WSME-0.8.0/wsmeext/sphinxext.py 2015-08-25 17:05:33.000000000 +0200
+++ new/WSME-0.9.2/wsmeext/sphinxext.py 2017-02-14 11:37:52.000000000 +0100
@@ -361,6 +361,8 @@
 
     def format_name(self):
         path = find_service_path(self.env, self.object)
+        if path is None:
+            return
         return '/' + '/'.join(path)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/wsmeext/sqlalchemy/controllers.py 
new/WSME-0.9.2/wsmeext/sqlalchemy/controllers.py
--- old/WSME-0.8.0/wsmeext/sqlalchemy/controllers.py    2015-08-25 
17:05:33.000000000 +0200
+++ new/WSME-0.9.2/wsmeext/sqlalchemy/controllers.py    2017-02-14 
11:37:52.000000000 +0100
@@ -91,6 +91,7 @@
         self.__dbsession__.flush()
         return None
 
+
 CRUDController = CRUDControllerMeta(
     'CRUDController', (CRUDControllerBase,), {}
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/wsmeext/tests/test_extdirect.py 
new/WSME-0.9.2/wsmeext/tests/test_extdirect.py
--- old/WSME-0.8.0/wsmeext/tests/test_extdirect.py      2015-08-25 
17:05:33.000000000 +0200
+++ new/WSME-0.9.2/wsmeext/tests/test_extdirect.py      2017-02-14 
11:37:52.000000000 +0100
@@ -224,7 +224,7 @@
             body,
             headers={'Content-Type': 'application/x-www-form-urlencoded'}
         )
-        print (r)
+        print(r)
 
         assert json.loads(r.text) == {
             "tid": "1",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/WSME-0.8.0/wsmeext/tests/test_soap.py 
new/WSME-0.9.2/wsmeext/tests/test_soap.py
--- old/WSME-0.8.0/wsmeext/tests/test_soap.py   2015-08-25 17:05:33.000000000 
+0200
+++ new/WSME-0.9.2/wsmeext/tests/test_soap.py   2017-02-14 11:37:52.000000000 
+0100
@@ -28,6 +28,7 @@
                 return str(value)
             return value
 
+
 suds.xsd.sxbuiltin.Factory.tags['decimal'] = XDecimal
 
 
@@ -83,6 +84,7 @@
     def clear(self, id):
         self.d = {}
 
+
 sudscache = SudsCache()
 
 tns = "http://foo.bar.baz/soap/";
@@ -200,6 +202,7 @@
 def read_bool(value):
     return value == 'true'
 
+
 soap_types = {
     'xs:string': wsme.types.text,
     'xs:int': int,
@@ -244,6 +247,7 @@
     value = base64.decodestring(value.encode())
     return value
 
+
 fromsuds_types = {
     wsme.types.binary: tobin,
     wsme.types.bytes: tobytes,


Reply via email to