commit python-WSME for openSUSE:Factory
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 - jengelh@inai.de + +- Trim sensationalist wording. + +------------------------------------------------------------------- +Fri Aug 25 12:18:37 UTC 2017 - tbechtold@suse.com + +- Fix fdupes call + +------------------------------------------------------------------- +Thu Aug 24 14:44:34 UTC 2017 - tbechtold@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 <akscram@gmail.com> James Page <james.page@ubuntu.com> Jason Myers <jason@jasonamyers.com> +Jeremy Stanley <fungi@yuggoth.org> Julien Danjou <julien@danjou.info> Ken'ichi Ohmichi <oomichi@mxs.nes.nec.co.jp> Lan Qi song <lqslan@cn.ibm.com> @@ -24,10 +25,15 @@ Mehdi Abaakouk <sileht@sileht.net> Michael Krotscheck <krotscheck@gmail.com> Ryan Petrello <lists@ryanpetrello.com> +Sanu Madhavan <sanuptpm@gmail.com> Sascha Peilicke <speilicke@suse.com> Stéphane Bisinger <stephane.bisinger@gmail.com> Sławek Ehlert <slafs@op.pl> +Victor Stinner <vstinner@redhat.com> +Vladyslav Drok <vdrok@mirantis.com> Yuriy Zveryanskyy <yzveryanskyy@mirantis.com> arati.mahimane <arati.mahimane@rackspace.com> aviau <alexandre.viau@savoirfairelinux.com> gordon chung <gord@live.ca> +houming-wang <houming.wang@easystack.cn> +venkatamahesh <venkatamaheshkotha@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-wsme@googlegroups.com" +Home-page: http://git.openstack.org/cgit/openstack/wsme +Author: Christophe de Vienne +Author-email: python-wsme@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-wsme@googlegroups.com" +Home-page: http://git.openstack.org/cgit/openstack/wsme +Author: Christophe de Vienne +Author-email: python-wsme@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-wsme@googlegroups.com" +author = Christophe de Vienne +author-email = python-wsme@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,
participants (1)
-
root@hilbert.suse.de