Hello community,

here is the log from the commit of package python3-CherryPy for 
openSUSE:Factory checked in at 2016-02-01 19:56:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-CherryPy (Old)
 and      /work/SRC/openSUSE:Factory/.python3-CherryPy.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python3-CherryPy"

Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-CherryPy/python3-CherryPy.changes        
2015-12-17 15:54:47.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-CherryPy.new/python3-CherryPy.changes   
2016-02-01 19:57:08.000000000 +0100
@@ -1,0 +2,14 @@
+Sat Jan 30 18:19:46 UTC 2016 - [email protected]
+
+- specfile:
+  * update copyright year
+
+- update to version 4.0.0:
+  * Drop support for Python 2.5 and earlier.
+  * No longer build Windows installers by default.
+
+- changes from version 3.8.2:
+  * Pull Request #116: Correct InternalServerError when null bytes in
+    static file path. Now responds with 404 instead.
+
+-------------------------------------------------------------------

Old:
----
  CherryPy-3.8.1.tar.gz

New:
----
  CherryPy-4.0.0.tar.gz

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

Other differences:
------------------
++++++ python3-CherryPy.spec ++++++
--- /var/tmp/diff_new_pack.1XqE4p/_old  2016-02-01 19:57:09.000000000 +0100
+++ /var/tmp/diff_new_pack.1XqE4p/_new  2016-02-01 19:57:09.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python3-CherryPy
 #
-# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2016 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
@@ -17,7 +17,7 @@
 
 
 Name:           python3-CherryPy
-Version:        3.8.1
+Version:        4.0.0
 Release:        0
 Url:            http://www.cherrypy.org
 Summary:        Object-Oriented HTTP framework

++++++ CherryPy-3.8.1.tar.gz -> CherryPy-4.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/CherryPy.egg-info/PKG-INFO 
new/CherryPy-4.0.0/CherryPy.egg-info/PKG-INFO
--- old/CherryPy-3.8.1/CherryPy.egg-info/PKG-INFO       2015-12-03 
01:13:05.000000000 +0100
+++ new/CherryPy-4.0.0/CherryPy.egg-info/PKG-INFO       2015-12-20 
05:53:24.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: CherryPy
-Version: 3.8.1
+Version: 4.0.0
 Summary: Object-Oriented HTTP framework
 Home-page: http://www.cherrypy.org
 Author: CherryPy Team
@@ -17,13 +17,14 @@
 Classifier: License :: OSI Approved :: BSD License
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.3
-Classifier: Programming Language :: Python :: 2.4
-Classifier: Programming Language :: Python :: 2.5
 Classifier: Programming Language :: Python :: 2.6
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.1
+Classifier: Programming Language :: Python :: 3.2
 Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: Implementation
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: Jython
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/CherryPy.egg-info/SOURCES.txt 
new/CherryPy-4.0.0/CherryPy.egg-info/SOURCES.txt
--- old/CherryPy-3.8.1/CherryPy.egg-info/SOURCES.txt    2015-12-03 
01:13:06.000000000 +0100
+++ new/CherryPy-4.0.0/CherryPy.egg-info/SOURCES.txt    2015-12-20 
05:53:24.000000000 +0100
@@ -114,6 +114,7 @@
 cherrypy/test/webtest.py
 cherrypy/test/static/404.html
 cherrypy/test/static/dirback.jpg
+cherrypy/test/static/has space.html
 cherrypy/test/static/index.html
 cherrypy/tutorial/README.txt
 cherrypy/tutorial/__init__.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/PKG-INFO new/CherryPy-4.0.0/PKG-INFO
--- old/CherryPy-3.8.1/PKG-INFO 2015-12-03 01:13:06.000000000 +0100
+++ new/CherryPy-4.0.0/PKG-INFO 2015-12-20 05:53:24.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: CherryPy
-Version: 3.8.1
+Version: 4.0.0
 Summary: Object-Oriented HTTP framework
 Home-page: http://www.cherrypy.org
 Author: CherryPy Team
@@ -17,13 +17,14 @@
 Classifier: License :: OSI Approved :: BSD License
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.3
-Classifier: Programming Language :: Python :: 2.4
-Classifier: Programming Language :: Python :: 2.5
 Classifier: Programming Language :: Python :: 2.6
 Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.1
+Classifier: Programming Language :: Python :: 3.2
 Classifier: Programming Language :: Python :: 3.3
+Classifier: Programming Language :: Python :: 3.4
+Classifier: Programming Language :: Python :: 3.5
 Classifier: Programming Language :: Python :: Implementation
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: Jython
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/__init__.py 
new/CherryPy-4.0.0/cherrypy/__init__.py
--- old/CherryPy-3.8.1/cherrypy/__init__.py     2015-11-25 07:01:28.000000000 
+0100
+++ new/CherryPy-4.0.0/cherrypy/__init__.py     2015-12-20 05:53:20.000000000 
+0100
@@ -56,10 +56,10 @@
 These API's are described in the `CherryPy specification 
<https://bitbucket.org/cherrypy/cherrypy/wiki/CherryPySpec>`_.
 """
 
-__version__ = "3.8.1"
+__version__ = "4.0.0"
 
 from cherrypy._cpcompat import urljoin as _urljoin, urlencode as _urlencode
-from cherrypy._cpcompat import basestring, unicodestr, set
+from cherrypy._cpcompat import basestring, unicodestr
 
 from cherrypy._cperror import HTTPError, HTTPRedirect, InternalRedirect
 from cherrypy._cperror import NotFound, CherryPyException, TimeoutError
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/_cpcompat.py 
new/CherryPy-4.0.0/cherrypy/_cpcompat.py
--- old/CherryPy-3.8.1/cherrypy/_cpcompat.py    2015-12-03 00:24:55.000000000 
+0100
+++ new/CherryPy-4.0.0/cherrypy/_cpcompat.py    2015-12-20 05:37:04.000000000 
+0100
@@ -111,11 +111,6 @@
         raise TypeError("n must be a native str (got %s)" % type(n).__name__)
 
 try:
-    set = set
-except NameError:
-    from sets import Set as set
-
-try:
     # Python 3.1+
     from base64 import decodebytes as _base64_decodebytes
 except ImportError:
@@ -137,17 +132,6 @@
     else:
         return b
 
-try:
-    # Python 2.5+
-    from hashlib import md5
-except ImportError:
-    from md5 import new as md5
-
-try:
-    # Python 2.5+
-    from hashlib import sha1 as sha
-except ImportError:
-    from sha import new as sha
 
 try:
     sorted = sorted
@@ -333,18 +317,10 @@
     # In Python 3, pickle is the sped-up C version.
     import pickle
 
-try:
-    os.urandom(20)
-    import binascii
-
-    def random20():
-        return binascii.hexlify(os.urandom(20)).decode('ascii')
-except (AttributeError, NotImplementedError):
-    import random
-    # os.urandom not available until Python 2.4. Fall back to random.random.
+import binascii
 
-    def random20():
-        return sha('%s' % random.random()).hexdigest()
+def random20():
+    return binascii.hexlify(os.urandom(20)).decode('ascii')
 
 try:
     from _thread import get_ident as get_thread_ident
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/_cpconfig.py 
new/CherryPy-4.0.0/cherrypy/_cpconfig.py
--- old/CherryPy-3.8.1/cherrypy/_cpconfig.py    2015-11-25 07:01:28.000000000 
+0100
+++ new/CherryPy-4.0.0/cherrypy/_cpconfig.py    2015-12-20 05:36:59.000000000 
+0100
@@ -119,7 +119,7 @@
 """
 
 import cherrypy
-from cherrypy._cpcompat import set, basestring
+from cherrypy._cpcompat import basestring
 from cherrypy.lib import reprconf
 
 # Deprecated in  CherryPy 3.2--remove in 3.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/_cpdispatch.py 
new/CherryPy-4.0.0/cherrypy/_cpdispatch.py
--- old/CherryPy-3.8.1/cherrypy/_cpdispatch.py  2015-11-25 07:01:28.000000000 
+0100
+++ new/CherryPy-4.0.0/cherrypy/_cpdispatch.py  2015-12-20 05:36:59.000000000 
+0100
@@ -18,7 +18,6 @@
     classtype = type
 
 import cherrypy
-from cherrypy._cpcompat import set
 
 
 class PageHandler(object):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/daemon.py 
new/CherryPy-4.0.0/cherrypy/daemon.py
--- old/CherryPy-3.8.1/cherrypy/daemon.py       2015-11-25 07:01:28.000000000 
+0100
+++ new/CherryPy-4.0.0/cherrypy/daemon.py       2015-12-20 05:36:06.000000000 
+0100
@@ -53,15 +53,12 @@
         cherrypy.server.unsubscribe()
 
         addr = cherrypy.server.bind_addr
-        if fastcgi:
-            f = servers.FlupFCGIServer(application=cherrypy.tree,
-                                       bindAddress=addr)
-        elif scgi:
-            f = servers.FlupSCGIServer(application=cherrypy.tree,
-                                       bindAddress=addr)
-        else:
-            f = servers.FlupCGIServer(application=cherrypy.tree,
-                                      bindAddress=addr)
+        cls = (
+            servers.FlupFCGIServer if fastcgi else
+            servers.FlupSCGIServer if scgi else
+            servers.FlupCGIServer
+        )
+        f = cls(application=cherrypy.tree, bindAddress=addr)
         s = servers.ServerAdapter(engine, httpserver=f, bind_addr=addr)
         s.subscribe()
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/lib/auth_digest.py 
new/CherryPy-4.0.0/cherrypy/lib/auth_digest.py
--- old/CherryPy-3.8.1/cherrypy/lib/auth_digest.py      2015-11-25 
07:01:28.000000000 +0100
+++ new/CherryPy-4.0.0/cherrypy/lib/auth_digest.py      2015-12-20 
05:36:06.000000000 +0100
@@ -23,10 +23,11 @@
 
 
 import time
+from hashlib import md5
 from cherrypy._cpcompat import parse_http_list, parse_keqv_list
 
 import cherrypy
-from cherrypy._cpcompat import md5, ntob
+from cherrypy._cpcompat import ntob
 md5_hex = lambda s: md5(ntob(s)).hexdigest()
 
 qop_auth = 'auth'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/lib/cptools.py 
new/CherryPy-4.0.0/cherrypy/lib/cptools.py
--- old/CherryPy-3.8.1/cherrypy/lib/cptools.py  2015-11-25 07:01:28.000000000 
+0100
+++ new/CherryPy-4.0.0/cherrypy/lib/cptools.py  2015-12-20 05:36:59.000000000 
+0100
@@ -2,9 +2,10 @@
 
 import logging
 import re
+from hashlib import md5
 
 import cherrypy
-from cherrypy._cpcompat import basestring, md5, set, unicodestr
+from cherrypy._cpcompat import basestring, unicodestr
 from cherrypy.lib import httputil as _httputil
 from cherrypy.lib import is_iterator
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/lib/encoding.py 
new/CherryPy-4.0.0/cherrypy/lib/encoding.py
--- old/CherryPy-3.8.1/cherrypy/lib/encoding.py 2015-11-25 07:01:28.000000000 
+0100
+++ new/CherryPy-4.0.0/cherrypy/lib/encoding.py 2015-12-20 05:36:59.000000000 
+0100
@@ -2,7 +2,7 @@
 import time
 
 import cherrypy
-from cherrypy._cpcompat import basestring, BytesIO, ntob, set, unicodestr
+from cherrypy._cpcompat import basestring, BytesIO, ntob, unicodestr
 from cherrypy.lib import file_generator
 from cherrypy.lib import is_closable_iterator
 from cherrypy.lib import set_vary_header
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/lib/httpauth.py 
new/CherryPy-4.0.0/cherrypy/lib/httpauth.py
--- old/CherryPy-3.8.1/cherrypy/lib/httpauth.py 2015-11-25 07:01:28.000000000 
+0100
+++ new/CherryPy-4.0.0/cherrypy/lib/httpauth.py 2015-12-20 05:36:06.000000000 
+0100
@@ -62,7 +62,9 @@
 
 ##########################################################################
 import time
-from cherrypy._cpcompat import base64_decode, ntob, md5
+from hashlib import md5
+
+from cherrypy._cpcompat import base64_decode, ntob
 from cherrypy._cpcompat import parse_http_list, parse_keqv_list
 
 MD5 = "MD5"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/lib/static.py 
new/CherryPy-4.0.0/cherrypy/lib/static.py
--- old/CherryPy-3.8.1/cherrypy/lib/static.py   2015-11-25 07:01:28.000000000 
+0100
+++ new/CherryPy-4.0.0/cherrypy/lib/static.py   2015-12-20 05:46:46.000000000 
+0100
@@ -49,7 +49,10 @@
 
     try:
         st = os.stat(path)
-    except OSError:
+    except (OSError, TypeError, ValueError):
+        # OSError when file fails to stat
+        # TypeError on Python 2 when there's a null byte
+        # ValueError on Python 3 when there's a null byte
         if debug:
             cherrypy.log('os.stat(%r) failed' % path, 'TOOLS.STATIC')
         raise cherrypy.NotFound()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/process/plugins.py 
new/CherryPy-4.0.0/cherrypy/process/plugins.py
--- old/CherryPy-3.8.1/cherrypy/process/plugins.py      2015-11-25 
07:01:28.000000000 +0100
+++ new/CherryPy-4.0.0/cherrypy/process/plugins.py      2015-12-20 
05:36:59.000000000 +0100
@@ -8,7 +8,7 @@
 import threading
 
 from cherrypy._cpcompat import basestring, get_daemon, get_thread_ident
-from cherrypy._cpcompat import ntob, set, Timer, SetDaemonProperty
+from cherrypy._cpcompat import ntob, Timer, SetDaemonProperty
 
 # _module__file__base is used by Autoreload to make
 # absolute any filenames retrieved from sys.modules which are not
@@ -200,7 +200,7 @@
 
     """Drop privileges. uid/gid arguments not available on Windows.
 
-    Special thanks to `Gavin Baker 
<http://antonym.org/2005/12/dropping-privileges-in-python.html>`_ 
+    Special thanks to `Gavin Baker 
<http://antonym.org/2005/12/dropping-privileges-in-python.html>`_
     """
 
     def __init__(self, bus, umask=None, uid=None, gid=None):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/process/wspbus.py 
new/CherryPy-4.0.0/cherrypy/process/wspbus.py
--- old/CherryPy-3.8.1/cherrypy/process/wspbus.py       2015-11-25 
07:01:28.000000000 +0100
+++ new/CherryPy-4.0.0/cherrypy/process/wspbus.py       2015-12-20 
05:36:59.000000000 +0100
@@ -68,8 +68,6 @@
 import traceback as _traceback
 import warnings
 
-from cherrypy._cpcompat import set
-
 # Here I save the value of os.getcwd(), which, if I am imported early enough,
 # will be the directory from which the startup script was run.  This is needed
 # by _do_execv(), to change back to the original directory before execv()ing a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/test/static/has space.html 
new/CherryPy-4.0.0/cherrypy/test/static/has space.html
--- old/CherryPy-3.8.1/cherrypy/test/static/has space.html      1970-01-01 
01:00:00.000000000 +0100
+++ new/CherryPy-4.0.0/cherrypy/test/static/has space.html      2015-12-20 
05:31:00.000000000 +0100
@@ -0,0 +1 @@
+Hello, world
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/test/test_auth_basic.py 
new/CherryPy-4.0.0/cherrypy/test/test_auth_basic.py
--- old/CherryPy-3.8.1/cherrypy/test/test_auth_basic.py 2015-11-25 
07:01:28.000000000 +0100
+++ new/CherryPy-4.0.0/cherrypy/test/test_auth_basic.py 2015-12-20 
05:36:06.000000000 +0100
@@ -2,8 +2,10 @@
 # -*- coding: utf-8 -*-
 # vim:ts=4:sw=4:expandtab:fileencoding=utf-8
 
+from hashlib import md5
+
 import cherrypy
-from cherrypy._cpcompat import md5, ntob
+from cherrypy._cpcompat import ntob
 from cherrypy.lib import auth_basic
 from cherrypy.test import helper
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/test/test_bus.py 
new/CherryPy-4.0.0/cherrypy/test/test_bus.py
--- old/CherryPy-3.8.1/cherrypy/test/test_bus.py        2015-11-25 
07:01:28.000000000 +0100
+++ new/CherryPy-4.0.0/cherrypy/test/test_bus.py        2015-12-20 
05:37:09.000000000 +0100
@@ -2,8 +2,7 @@
 import time
 import unittest
 
-import cherrypy
-from cherrypy._cpcompat import get_daemon, set
+from cherrypy._cpcompat import get_daemon
 from cherrypy.process import wspbus
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/test/test_http.py 
new/CherryPy-4.0.0/cherrypy/test/test_http.py
--- old/CherryPy-3.8.1/cherrypy/test/test_http.py       2015-11-25 
07:01:28.000000000 +0100
+++ new/CherryPy-4.0.0/cherrypy/test/test_http.py       2015-12-17 
23:07:55.000000000 +0100
@@ -5,6 +5,8 @@
 import socket
 import sys
 
+from mock import patch
+
 import cherrypy
 from cherrypy._cpcompat import HTTPConnection, HTTPSConnection, ntob, py3k
 
@@ -35,12 +37,12 @@
 
 
 class HTTPTests(helper.CPWebCase):
-    
+
     def make_connection(self):
         if self.scheme == "https":
             return HTTPSConnection('%s:%s' % (self.interface(), self.PORT))
         else:
-            return HTTPConnection('%s:%s' % (self.interface(), self.PORT))     
 
+            return HTTPConnection('%s:%s' % (self.interface(), self.PORT))
 
     def setup_server():
         class Root:
@@ -78,7 +80,7 @@
                     summary.append("%s * %d" % (curchar, count))
                 return ", ".join(summary)
             post_multipart.exposed = True
-            
+
             @cherrypy.expose
             def post_filename(self, myfile):
                 '''Return the name of the file which was uploaded.'''
@@ -111,7 +113,8 @@
             c = HTTPSConnection('%s:%s' % (self.interface(), self.PORT))
         else:
             c = HTTPConnection('%s:%s' % (self.interface(), self.PORT))
-        c.request("POST", "/")
+        with patch.object(c, '_set_content_length'):
+            c.request("POST", "/")
         response = c.getresponse()
         self.body = response.fp.read()
         self.status = str(response.status)
@@ -140,7 +143,7 @@
         self.status = str(response.status)
         self.assertStatus(200)
         self.assertBody(", ".join(["%s * 65536" % c for c in alphabet]))
-        
+
     def test_post_filename_with_commas(self):
         '''Testing that we can handle filenames with commas. This was
         reported as a bug in:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/test/test_httpauth.py 
new/CherryPy-4.0.0/cherrypy/test/test_httpauth.py
--- old/CherryPy-3.8.1/cherrypy/test/test_httpauth.py   2015-11-25 
07:01:28.000000000 +0100
+++ new/CherryPy-4.0.0/cherrypy/test/test_httpauth.py   2015-12-20 
05:36:06.000000000 +0100
@@ -1,5 +1,7 @@
+from hashlib import md5, sha1
+
 import cherrypy
-from cherrypy._cpcompat import md5, sha, ntob
+from cherrypy._cpcompat import ntob
 from cherrypy.lib import httpauth
 
 from cherrypy.test import helper
@@ -39,10 +41,10 @@
             return {'test': 'test'}
 
         def sha_password_encrypter(password):
-            return sha(ntob(password)).hexdigest()
+            return sha1(ntob(password)).hexdigest()
 
         def fetch_password(username):
-            return sha(ntob('test')).hexdigest()
+            return sha1(ntob('test')).hexdigest()
 
         conf = {
             '/digest': {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/test/test_static.py 
new/CherryPy-4.0.0/cherrypy/test/test_static.py
--- old/CherryPy-3.8.1/cherrypy/test/test_static.py     2015-11-25 
07:01:28.000000000 +0100
+++ new/CherryPy-4.0.0/cherrypy/test/test_static.py     2015-12-17 
23:07:55.000000000 +0100
@@ -119,7 +119,7 @@
                     pass
     teardown_server = staticmethod(teardown_server)
 
-    def testStatic(self):
+    def test_static(self):
         self.getPage("/static/index.html")
         self.assertStatus('200 OK')
         self.assertHeader('Content-Type', 'text/html')
@@ -333,6 +333,10 @@
         self.assertStatus(404)
         self.assertInBody("I couldn't find that thing")
 
+    def test_null_bytes(self):
+        self.getPage("/static/\x00")
+        self.assertStatus('404 Not Found')
+
 def error_page_404(status, message, traceback, version):
     import os.path
     return static.serve_file(os.path.join(curdir, 'static', '404.html'),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/wsgiserver/wsgiserver2.py 
new/CherryPy-4.0.0/cherrypy/wsgiserver/wsgiserver2.py
--- old/CherryPy-3.8.1/cherrypy/wsgiserver/wsgiserver2.py       2015-11-25 
07:01:28.000000000 +0100
+++ new/CherryPy-4.0.0/cherrypy/wsgiserver/wsgiserver2.py       2015-12-20 
05:53:20.000000000 +0100
@@ -1762,7 +1762,7 @@
     timeout = 10
     """The timeout in seconds for accepted connections (default 10)."""
 
-    version = "CherryPy/3.8.1"
+    version = "CherryPy/4.0.0"
     """A version string for the HTTPServer."""
 
     software = None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/cherrypy/wsgiserver/wsgiserver3.py 
new/CherryPy-4.0.0/cherrypy/wsgiserver/wsgiserver3.py
--- old/CherryPy-3.8.1/cherrypy/wsgiserver/wsgiserver3.py       2015-11-25 
07:01:28.000000000 +0100
+++ new/CherryPy-4.0.0/cherrypy/wsgiserver/wsgiserver3.py       2015-12-20 
05:53:20.000000000 +0100
@@ -1473,7 +1473,7 @@
     timeout = 10
     """The timeout in seconds for accepted connections (default 10)."""
 
-    version = "CherryPy/3.8.1"
+    version = "CherryPy/4.0.0"
     """A version string for the HTTPServer."""
 
     software = None
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/setup.cfg new/CherryPy-4.0.0/setup.cfg
--- old/CherryPy-3.8.1/setup.cfg        2015-12-03 01:13:06.000000000 +0100
+++ new/CherryPy-4.0.0/setup.cfg        2015-12-20 05:53:24.000000000 +0100
@@ -8,7 +8,7 @@
 nocapture = True
 
 [egg_info]
-tag_build = 
 tag_date = 0
+tag_build = 
 tag_svn_revision = 0
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CherryPy-3.8.1/setup.py new/CherryPy-4.0.0/setup.py
--- old/CherryPy-3.8.1/setup.py 2015-11-25 07:01:28.000000000 +0100
+++ new/CherryPy-4.0.0/setup.py 2015-12-20 05:53:20.000000000 +0100
@@ -36,7 +36,7 @@
 # arguments for the setup command
 ###############################################################################
 name = "CherryPy"
-version = "3.8.1"
+version = "4.0.0"
 desc = "Object-Oriented HTTP framework"
 long_desc = "CherryPy is a pythonic, object-oriented HTTP framework"
 classifiers = [
@@ -49,13 +49,14 @@
     "License :: OSI Approved :: BSD License",
     "Programming Language :: Python",
     "Programming Language :: Python :: 2",
-    "Programming Language :: Python :: 2.3",
-    "Programming Language :: Python :: 2.4",
-    "Programming Language :: Python :: 2.5",
     "Programming Language :: Python :: 2.6",
     "Programming Language :: Python :: 2.7",
     "Programming Language :: Python :: 3",
+    "Programming Language :: Python :: 3.1",
+    "Programming Language :: Python :: 3.2",
     "Programming Language :: Python :: 3.3",
+    "Programming Language :: Python :: 3.4",
+    "Programming Language :: Python :: 3.5",
     "Programming Language :: Python :: Implementation",
     "Programming Language :: Python :: Implementation :: CPython",
     "Programming Language :: Python :: Implementation :: Jython",
@@ -113,7 +114,7 @@
 if sys.version_info >= (3, 0):
     required_python_version = '3.0'
 else:
-    required_python_version = '2.3'
+    required_python_version = '2.6'
 
 ###############################################################################
 # end arguments for setup


Reply via email to