Hello community, here is the log from the commit of package python3-CherryPy for openSUSE:Factory checked in at 2015-04-25 21:51:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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 2014-12-19 09:37:40.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.python3-CherryPy.new/python3-CherryPy.changes 2015-04-25 21:51:05.000000000 +0200 @@ -1,0 +2,13 @@ +Sat Apr 25 18:22:14 UTC 2015 - [email protected] + +- specfile: + * update copyright year + +- update to version 3.7.0: + * CherryPy daemon may now be invoked with "python -m cherrypy" in + addition to the "cherryd" script. + * Issue #1298: Fix SSL handling on CPython 2.7 with builtin SSL + module and pyOpenSSL 0.14. This change will break PyPy for now. + * Several documentation fixes. + +------------------------------------------------------------------- Old: ---- CherryPy-3.6.0.tar.gz New: ---- CherryPy-3.7.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python3-CherryPy.spec ++++++ --- /var/tmp/diff_new_pack.BTYUqA/_old 2015-04-25 21:51:05.000000000 +0200 +++ /var/tmp/diff_new_pack.BTYUqA/_new 2015-04-25 21:51:05.000000000 +0200 @@ -1,7 +1,7 @@ # # spec file for package python3-CherryPy # -# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2015 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.6.0 +Version: 3.7.0 Release: 0 Url: http://www.cherrypy.org Summary: Object-Oriented HTTP framework ++++++ CherryPy-3.6.0.tar.gz -> CherryPy-3.7.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CherryPy-3.6.0/CherryPy.egg-info/PKG-INFO new/CherryPy-3.7.0/CherryPy.egg-info/PKG-INFO --- old/CherryPy-3.6.0/CherryPy.egg-info/PKG-INFO 2014-09-14 06:05:58.000000000 +0200 +++ new/CherryPy-3.7.0/CherryPy.egg-info/PKG-INFO 2015-04-24 19:58:15.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: CherryPy -Version: 3.6.0 +Version: 3.7.0 Summary: Object-Oriented HTTP framework Home-page: http://www.cherrypy.org Author: CherryPy Team diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CherryPy-3.6.0/CherryPy.egg-info/SOURCES.txt new/CherryPy-3.7.0/CherryPy.egg-info/SOURCES.txt --- old/CherryPy-3.6.0/CherryPy.egg-info/SOURCES.txt 2014-09-14 06:06:03.000000000 +0200 +++ new/CherryPy-3.7.0/CherryPy.egg-info/SOURCES.txt 2015-04-24 19:58:17.000000000 +0200 @@ -8,6 +8,7 @@ CherryPy.egg-info/top_level.txt cherrypy/LICENSE.txt cherrypy/__init__.py +cherrypy/__main__.py cherrypy/_cpchecker.py cherrypy/_cpcompat.py cherrypy/_cpcompat_subprocess.py @@ -26,6 +27,7 @@ cherrypy/_cpwsgi.py cherrypy/_cpwsgi_server.py cherrypy/cherryd +cherrypy/daemon.py cherrypy/favicon.ico cherrypy/lib/__init__.py cherrypy/lib/auth.py diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CherryPy-3.6.0/PKG-INFO new/CherryPy-3.7.0/PKG-INFO --- old/CherryPy-3.6.0/PKG-INFO 2014-09-14 06:06:03.000000000 +0200 +++ new/CherryPy-3.7.0/PKG-INFO 2015-04-24 19:58:17.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: CherryPy -Version: 3.6.0 +Version: 3.7.0 Summary: Object-Oriented HTTP framework Home-page: http://www.cherrypy.org Author: CherryPy Team diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CherryPy-3.6.0/cherrypy/LICENSE.txt new/CherryPy-3.7.0/cherrypy/LICENSE.txt --- old/CherryPy-3.6.0/cherrypy/LICENSE.txt 2014-09-11 02:52:02.000000000 +0200 +++ new/CherryPy-3.7.0/cherrypy/LICENSE.txt 2015-02-02 14:57:45.000000000 +0100 @@ -1,4 +1,4 @@ -Copyright (c) 2004-2011, CherryPy Team ([email protected]) +Copyright (c) 2004-2015, CherryPy Team ([email protected]) All rights reserved. Redistribution and use in source and binary forms, with or without modification, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CherryPy-3.6.0/cherrypy/__init__.py new/CherryPy-3.7.0/cherrypy/__init__.py --- old/CherryPy-3.6.0/cherrypy/__init__.py 2014-09-14 06:05:54.000000000 +0200 +++ new/CherryPy-3.7.0/cherrypy/__init__.py 2015-04-24 19:58:09.000000000 +0200 @@ -56,7 +56,7 @@ These API's are described in the `CherryPy specification <https://bitbucket.org/cherrypy/cherrypy/wiki/CherryPySpec>`_. """ -__version__ = "3.6.0" +__version__ = "3.7.0" from cherrypy._cpcompat import urljoin as _urljoin, urlencode as _urlencode from cherrypy._cpcompat import basestring, unicodestr, set diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CherryPy-3.6.0/cherrypy/__main__.py new/CherryPy-3.7.0/cherrypy/__main__.py --- old/CherryPy-3.6.0/cherrypy/__main__.py 1970-01-01 01:00:00.000000000 +0100 +++ new/CherryPy-3.7.0/cherrypy/__main__.py 2015-04-24 19:42:44.000000000 +0200 @@ -0,0 +1,4 @@ +import cherrypy.daemon + +if __name__ == '__main__': + cherrypy.daemon.run() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CherryPy-3.6.0/cherrypy/cherryd new/CherryPy-3.7.0/cherrypy/cherryd --- old/CherryPy-3.6.0/cherrypy/cherryd 2014-09-11 02:52:02.000000000 +0200 +++ new/CherryPy-3.7.0/cherrypy/cherryd 2015-04-24 19:41:25.000000000 +0200 @@ -1,110 +1,6 @@ #! /usr/bin/env python -"""The CherryPy daemon.""" - -import sys - -import cherrypy -from cherrypy.process import plugins, servers -from cherrypy import Application - - -def start(configfiles=None, daemonize=False, environment=None, - fastcgi=False, scgi=False, pidfile=None, imports=None, - cgi=False): - """Subscribe all engine plugins and start the engine.""" - sys.path = [''] + sys.path - for i in imports or []: - exec("import %s" % i) - - for c in configfiles or []: - cherrypy.config.update(c) - # If there's only one app mounted, merge config into it. - if len(cherrypy.tree.apps) == 1: - for app in cherrypy.tree.apps.values(): - if isinstance(app, Application): - app.merge(c) - - engine = cherrypy.engine - - if environment is not None: - cherrypy.config.update({'environment': environment}) - - # Only daemonize if asked to. - if daemonize: - # Don't print anything to stdout/sterr. - cherrypy.config.update({'log.screen': False}) - plugins.Daemonizer(engine).subscribe() - - if pidfile: - plugins.PIDFile(engine, pidfile).subscribe() - - if hasattr(engine, "signal_handler"): - engine.signal_handler.subscribe() - if hasattr(engine, "console_control_handler"): - engine.console_control_handler.subscribe() - - if (fastcgi and (scgi or cgi)) or (scgi and cgi): - cherrypy.log.error("You may only specify one of the cgi, fastcgi, and " - "scgi options.", 'ENGINE') - sys.exit(1) - elif fastcgi or scgi or cgi: - # Turn off autoreload when using *cgi. - cherrypy.config.update({'engine.autoreload_on': False}) - # Turn off the default HTTP server (which is subscribed by default). - 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) - s = servers.ServerAdapter(engine, httpserver=f, bind_addr=addr) - s.subscribe() - - # Always start the engine; this will start all other services - try: - engine.start() - except: - # Assume the error has been logged already via bus.log. - sys.exit(1) - else: - engine.block() +import cherrypy.daemon if __name__ == '__main__': - from optparse import OptionParser - - p = OptionParser() - p.add_option('-c', '--config', action="append", dest='config', - help="specify config file(s)") - p.add_option('-d', action="store_true", dest='daemonize', - help="run the server as a daemon") - p.add_option('-e', '--environment', dest='environment', default=None, - help="apply the given config environment") - p.add_option('-f', action="store_true", dest='fastcgi', - help="start a fastcgi server instead of the default HTTP " - "server") - p.add_option('-s', action="store_true", dest='scgi', - help="start a scgi server instead of the default HTTP server") - p.add_option('-x', action="store_true", dest='cgi', - help="start a cgi server instead of the default HTTP server") - p.add_option('-i', '--import', action="append", dest='imports', - help="specify modules to import") - p.add_option('-p', '--pidfile', dest='pidfile', default=None, - help="store the process id in the given file") - p.add_option('-P', '--Path', action="append", dest='Path', - help="add the given paths to sys.path") - options, args = p.parse_args() - - if options.Path: - for p in options.Path: - sys.path.insert(0, p) - - start(options.config, options.daemonize, - options.environment, options.fastcgi, options.scgi, - options.pidfile, options.imports, options.cgi) + cherrypy.daemon.run() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CherryPy-3.6.0/cherrypy/daemon.py new/CherryPy-3.7.0/cherrypy/daemon.py --- old/CherryPy-3.6.0/cherrypy/daemon.py 1970-01-01 01:00:00.000000000 +0100 +++ new/CherryPy-3.7.0/cherrypy/daemon.py 2015-04-24 19:41:51.000000000 +0200 @@ -0,0 +1,109 @@ +"""The CherryPy daemon.""" + +import sys + +import cherrypy +from cherrypy.process import plugins, servers +from cherrypy import Application + + +def start(configfiles=None, daemonize=False, environment=None, + fastcgi=False, scgi=False, pidfile=None, imports=None, + cgi=False): + """Subscribe all engine plugins and start the engine.""" + sys.path = [''] + sys.path + for i in imports or []: + exec("import %s" % i) + + for c in configfiles or []: + cherrypy.config.update(c) + # If there's only one app mounted, merge config into it. + if len(cherrypy.tree.apps) == 1: + for app in cherrypy.tree.apps.values(): + if isinstance(app, Application): + app.merge(c) + + engine = cherrypy.engine + + if environment is not None: + cherrypy.config.update({'environment': environment}) + + # Only daemonize if asked to. + if daemonize: + # Don't print anything to stdout/sterr. + cherrypy.config.update({'log.screen': False}) + plugins.Daemonizer(engine).subscribe() + + if pidfile: + plugins.PIDFile(engine, pidfile).subscribe() + + if hasattr(engine, "signal_handler"): + engine.signal_handler.subscribe() + if hasattr(engine, "console_control_handler"): + engine.console_control_handler.subscribe() + + if (fastcgi and (scgi or cgi)) or (scgi and cgi): + cherrypy.log.error("You may only specify one of the cgi, fastcgi, and " + "scgi options.", 'ENGINE') + sys.exit(1) + elif fastcgi or scgi or cgi: + # Turn off autoreload when using *cgi. + cherrypy.config.update({'engine.autoreload_on': False}) + # Turn off the default HTTP server (which is subscribed by default). + 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) + s = servers.ServerAdapter(engine, httpserver=f, bind_addr=addr) + s.subscribe() + + # Always start the engine; this will start all other services + try: + engine.start() + except: + # Assume the error has been logged already via bus.log. + sys.exit(1) + else: + engine.block() + + +def run(): + from optparse import OptionParser + + p = OptionParser() + p.add_option('-c', '--config', action="append", dest='config', + help="specify config file(s)") + p.add_option('-d', action="store_true", dest='daemonize', + help="run the server as a daemon") + p.add_option('-e', '--environment', dest='environment', default=None, + help="apply the given config environment") + p.add_option('-f', action="store_true", dest='fastcgi', + help="start a fastcgi server instead of the default HTTP " + "server") + p.add_option('-s', action="store_true", dest='scgi', + help="start a scgi server instead of the default HTTP server") + p.add_option('-x', action="store_true", dest='cgi', + help="start a cgi server instead of the default HTTP server") + p.add_option('-i', '--import', action="append", dest='imports', + help="specify modules to import") + p.add_option('-p', '--pidfile', dest='pidfile', default=None, + help="store the process id in the given file") + p.add_option('-P', '--Path', action="append", dest='Path', + help="add the given paths to sys.path") + options, args = p.parse_args() + + if options.Path: + for p in options.Path: + sys.path.insert(0, p) + + start(options.config, options.daemonize, + options.environment, options.fastcgi, options.scgi, + options.pidfile, options.imports, options.cgi) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CherryPy-3.6.0/cherrypy/process/servers.py new/CherryPy-3.7.0/cherrypy/process/servers.py --- old/CherryPy-3.6.0/cherrypy/process/servers.py 2014-09-11 02:52:02.000000000 +0200 +++ new/CherryPy-3.7.0/cherrypy/process/servers.py 2015-02-02 14:57:45.000000000 +0100 @@ -124,7 +124,7 @@ If you need to start more than one HTTP server (to serve on multiple ports, or protocols, etc.), you can manually register each one and then - start them all with bus.start: + start them all with bus.start:: s1 = ServerAdapter(bus, MyWSGIServer(host='0.0.0.0', port=80)) s2 = ServerAdapter(bus, another.HTTPServer(host='127.0.0.1', SSL=True)) @@ -183,7 +183,8 @@ if not self.httpserver: return '' host, port = self.bind_addr - if getattr(self.httpserver, 'ssl_certificate', None): + if getattr(self.httpserver, 'ssl_certificate', None) or \ + getattr(self.httpserver, 'ssl_adapter', None): scheme = "https" if port != 443: host += ":%s" % port diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CherryPy-3.6.0/cherrypy/test/helper.py new/CherryPy-3.7.0/cherrypy/test/helper.py --- old/CherryPy-3.6.0/cherrypy/test/helper.py 2014-09-14 06:00:08.000000000 +0200 +++ new/CherryPy-3.7.0/cherrypy/test/helper.py 2015-02-02 14:57:45.000000000 +0100 @@ -6,6 +6,7 @@ import os thisdir = os.path.abspath(os.path.dirname(__file__)) serverpem = os.path.join(os.getcwd(), thisdir, 'test.pem') +import unittest import re import sys @@ -322,10 +323,6 @@ if self.do_gc_test: self.getPage("/gc/stats") self.assertBody("Statistics:") - # Tell nose to run this last in each class. - # Prefer sys.maxint for Python 2.3, which didn't have float('inf') - test_gc.compat_co_firstlineno = getattr( - sys, 'maxint', None) or float('inf') def prefix(self): return self.script_name.rstrip("/") @@ -405,6 +402,20 @@ (dt1, dt2, seconds)) +def _test_method_sorter(_, x, y): + """Monkeypatch the test sorter to always run test_gc last in each suite.""" + if x == 'test_gc': + return 1 + if y == 'test_gc': + return -1 + if x > y: + return 1 + if x < y: + return -1 + return 0 +unittest.TestLoader.sortTestMethodsUsing = _test_method_sorter + + def setup_client(): """Set up the WebCase classes to match the server's socket settings.""" webtest.WebCase.PORT = cherrypy.server.socket_port diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CherryPy-3.6.0/cherrypy/test/test_conn.py new/CherryPy-3.7.0/cherrypy/test/test_conn.py --- old/CherryPy-3.6.0/cherrypy/test/test_conn.py 2014-09-14 06:00:08.000000000 +0200 +++ new/CherryPy-3.7.0/cherrypy/test/test_conn.py 2015-02-02 14:57:45.000000000 +0100 @@ -1,6 +1,5 @@ """Tests for TCP connection handling, including proper and timely close.""" -import httplib import socket import sys import time @@ -802,7 +801,7 @@ else: raise AssertionError("Overflow conn did not get RST. " "Got %s instead" % repr(exc.args)) - except httplib.BadStatusLine: + except BadStatusLine: # This is a special case in OS X. Linux and Windows will # RST correctly. assert sys.platform == 'darwin' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CherryPy-3.6.0/cherrypy/test/test_encoding.py new/CherryPy-3.7.0/cherrypy/test/test_encoding.py --- old/CherryPy-3.6.0/cherrypy/test/test_encoding.py 2014-09-14 06:00:08.000000000 +0200 +++ new/CherryPy-3.7.0/cherrypy/test/test_encoding.py 2015-03-11 03:55:27.000000000 +0100 @@ -1,6 +1,4 @@ - import gzip -import sys import cherrypy from cherrypy._cpcompat import BytesIO, IncompleteRead, ntob, ntou diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CherryPy-3.6.0/cherrypy/wsgiserver/wsgiserver2.py new/CherryPy-3.7.0/cherrypy/wsgiserver/wsgiserver2.py --- old/CherryPy-3.6.0/cherrypy/wsgiserver/wsgiserver2.py 2014-09-14 06:05:54.000000000 +0200 +++ new/CherryPy-3.7.0/cherrypy/wsgiserver/wsgiserver2.py 2015-04-24 19:58:09.000000000 +0200 @@ -1324,8 +1324,8 @@ def __init__(self, server, sock, makefile=CP_fileobject): self.server = server self.socket = sock - self.rfile = makefile(sock._sock, "rb", self.rbufsize) - self.wfile = makefile(sock._sock, "wb", self.wbufsize) + self.rfile = makefile(sock, "rb", self.rbufsize) + self.wfile = makefile(sock, "wb", self.wbufsize) self.requests_seen = 0 def communicate(self): @@ -1757,7 +1757,7 @@ timeout = 10 """The timeout in seconds for accepted connections (default 10).""" - version = "CherryPy/3.6.0" + version = "CherryPy/3.7.0" """A version string for the HTTPServer.""" software = None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CherryPy-3.6.0/cherrypy/wsgiserver/wsgiserver3.py new/CherryPy-3.7.0/cherrypy/wsgiserver/wsgiserver3.py --- old/CherryPy-3.6.0/cherrypy/wsgiserver/wsgiserver3.py 2014-09-14 06:05:54.000000000 +0200 +++ new/CherryPy-3.7.0/cherrypy/wsgiserver/wsgiserver3.py 2015-04-24 19:58:09.000000000 +0200 @@ -1468,7 +1468,7 @@ timeout = 10 """The timeout in seconds for accepted connections (default 10).""" - version = "CherryPy/3.6.0" + version = "CherryPy/3.7.0" """A version string for the HTTPServer.""" software = None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CherryPy-3.6.0/setup.cfg new/CherryPy-3.7.0/setup.cfg --- old/CherryPy-3.6.0/setup.cfg 2014-09-14 06:06:03.000000000 +0200 +++ new/CherryPy-3.7.0/setup.cfg 2015-04-24 19:58:17.000000000 +0200 @@ -9,6 +9,6 @@ [egg_info] tag_svn_revision = 0 -tag_date = 0 tag_build = +tag_date = 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CherryPy-3.6.0/setup.py new/CherryPy-3.7.0/setup.py --- old/CherryPy-3.6.0/setup.py 2014-09-14 06:05:54.000000000 +0200 +++ new/CherryPy-3.7.0/setup.py 2015-04-24 19:58:09.000000000 +0200 @@ -36,7 +36,7 @@ # arguments for the setup command ############################################################################### name = "CherryPy" -version = "3.6.0" +version = "3.7.0" desc = "Object-Oriented HTTP framework" long_desc = "CherryPy is a pythonic, object-oriented HTTP framework" classifiers = [
