Hello community,

here is the log from the commit of package python3-gunicorn for 
openSUSE:Factory checked in at 2015-03-09 10:10:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-gunicorn (Old)
 and      /work/SRC/openSUSE:Factory/.python3-gunicorn.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python3-gunicorn"

Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-gunicorn/python3-gunicorn.changes        
2015-02-05 11:01:39.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-gunicorn.new/python3-gunicorn.changes   
2015-03-09 10:10:15.000000000 +0100
@@ -1,0 +2,15 @@
+Fri Mar  6 19:25:02 UTC 2015 - a...@gmx.de
+
+- update to version 19.3.0:
+  * Core
+    + fix: issue 978 make sure a listener is inheritable
+    + add check_config class method to workers
+    + fix: issue 983 fix select timeout in sync worker with multiple 
connections
+    + allows workers to access to the reloader. close issue 984
+    + raise TypeError instead of AssertionError
+  * Logging
+    + make Logger.loglevel a classs attribute
+  * Documentation
+    + fix: issue 988 fix syntax errors in examples/gunicorn_rc
+
+-------------------------------------------------------------------

Old:
----
  gunicorn-19.2.1.tar.gz

New:
----
  gunicorn-19.3.0.tar.gz

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

Other differences:
------------------
++++++ python3-gunicorn.spec ++++++
--- /var/tmp/diff_new_pack.OWqp2W/_old  2015-03-09 10:10:16.000000000 +0100
+++ /var/tmp/diff_new_pack.OWqp2W/_new  2015-03-09 10:10:16.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           python3-gunicorn
-Version:        19.2.1
+Version:        19.3.0
 Release:        0
 Summary:        WSGI HTTP Server for UNIX
 License:        MIT

++++++ gunicorn-19.2.1.tar.gz -> gunicorn-19.3.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.2.1/PKG-INFO new/gunicorn-19.3.0/PKG-INFO
--- old/gunicorn-19.2.1/PKG-INFO        2015-02-04 14:44:35.000000000 +0100
+++ new/gunicorn-19.3.0/PKG-INFO        2015-03-06 11:19:35.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: gunicorn
-Version: 19.2.1
+Version: 19.3.0
 Summary: WSGI HTTP Server for UNIX
 Home-page: http://gunicorn.org
 Author: Benoit Chesneau
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.2.1/docs/site/index.html 
new/gunicorn-19.3.0/docs/site/index.html
--- old/gunicorn-19.2.1/docs/site/index.html    2015-01-29 23:45:14.000000000 
+0100
+++ new/gunicorn-19.3.0/docs/site/index.html    2015-03-06 11:19:04.000000000 
+0100
@@ -16,7 +16,7 @@
     <div class="logo-div">
       <div class="latest">
         Latest version: <strong><a
-            
href="http://docs.gunicorn.org/en/19.1.1/news.html#id1";>19.1.1</a></strong>
+            
href="http://docs.gunicorn.org/en/19.3/news.html#id1";>19.3</a></strong>
       </div>
 
       <div class="logo"><img src="images/logo.jpg" ></div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.2.1/docs/source/2015-news.rst 
new/gunicorn-19.3.0/docs/source/2015-news.rst
--- old/gunicorn-19.2.1/docs/source/2015-news.rst       2015-02-04 
14:43:49.000000000 +0100
+++ new/gunicorn-19.3.0/docs/source/2015-news.rst       2015-03-06 
11:06:04.000000000 +0100
@@ -6,6 +6,33 @@
 
    Please see :doc:`news` for the latest changes.
 
+19.3.0 / 2015/03/06
+===================
+
+Changes
+-------
+
+Core
+++++
+
+- fix: :issue:`978` make sure a listener is inheritable
+- add `check_config` class method to workers
+- fix: :issue:`983` fix select timeout in sync worker with multiple
+  connections
+- allows workers to access to the reloader. close :issue:`984`
+- raise TypeError instead of AssertionError
+
+Logging
++++++++
+
+- make Logger.loglevel a classs attribute
+
+Documentation
++++++++++++++
+
+- fix: :issue:`988` fix syntax errors in examples/gunicorn_rc
+
+
 19.2.1 / 2015/02/4
 ==================
 
@@ -26,8 +53,7 @@
 +++++++++++++
 
 - document security mailing-list in the contributing page.
-   
-   
+
 19.2 / 2015/01/30
 =================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.2.1/docs/source/news.rst 
new/gunicorn-19.3.0/docs/source/news.rst
--- old/gunicorn-19.2.1/docs/source/news.rst    2015-02-04 14:43:51.000000000 
+0100
+++ new/gunicorn-19.3.0/docs/source/news.rst    2015-03-06 11:10:30.000000000 
+0100
@@ -2,6 +2,32 @@
 Changelog
 =========
 
+19.3.0 / 2015/03/06
+===================
+
+Changes
+-------
+
+Core
+++++
+
+- fix: :issue:`978` make sure a listener is inheritable
+- add `check_config` class method to workers
+- fix: :issue:`983` fix select timeout in sync worker with multiple
+  connections
+- allows workers to access to the reloader. close :issue:`984`
+- raise TypeError instead of AssertionError
+
+Logging
++++++++
+
+- make Logger.loglevel a classs attribute
+
+Documentation
++++++++++++++
+
+- fix: :issue:`988` fix syntax errors in examples/gunicorn_rc
+
 19.2.1 / 2015/02/4
 ==================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.2.1/examples/gunicorn_rc 
new/gunicorn-19.3.0/examples/gunicorn_rc
--- old/gunicorn-19.2.1/examples/gunicorn_rc    2015-01-21 23:12:39.000000000 
+0100
+++ new/gunicorn-19.3.0/examples/gunicorn_rc    2015-03-06 10:08:34.000000000 
+0100
@@ -6,7 +6,7 @@
 
 APP=main:application
 
-if [ -f $PID ]; then rm $PID fi
+if [ -f $PID ]; then rm $PID; fi
 
 cd $ROOT
-exec $GUNICORN -c $ROOT/gunicorn.conf.py --pidfile=$PID $APP
+exec $GUNICORN -c $ROOT/gunicorn.conf.py --pid=$PID $APP
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.2.1/gunicorn/__init__.py 
new/gunicorn-19.3.0/gunicorn/__init__.py
--- old/gunicorn-19.2.1/gunicorn/__init__.py    2015-02-04 14:38:13.000000000 
+0100
+++ new/gunicorn-19.3.0/gunicorn/__init__.py    2015-03-06 11:06:04.000000000 
+0100
@@ -3,6 +3,6 @@
 # This file is part of gunicorn released under the MIT license.
 # See the NOTICE for more information.
 
-version_info = (19, 2, 1)
+version_info = (19, 3, 0)
 __version__ = ".".join([str(v) for v in version_info])
 SERVER_SOFTWARE = "gunicorn/%s" % __version__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.2.1/gunicorn/arbiter.py 
new/gunicorn-19.3.0/gunicorn/arbiter.py
--- old/gunicorn-19.2.1/gunicorn/arbiter.py     2015-01-29 23:43:21.000000000 
+0100
+++ new/gunicorn-19.3.0/gunicorn/arbiter.py     2015-03-06 10:11:20.000000000 
+0100
@@ -134,6 +134,10 @@
         self.log.info("Listening at: %s (%s)", listeners_str, self.pid)
         self.log.info("Using worker: %s", self.cfg.worker_class_str)
 
+        # check worker class requirements
+        if hasattr(self.worker_class, "check_config"):
+            self.worker_class.check_config(self.cfg, self.log)
+
         self.cfg.when_ready(self)
 
     def init_signals(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.2.1/gunicorn/config.py 
new/gunicorn-19.3.0/gunicorn/config.py
--- old/gunicorn-19.2.1/gunicorn/config.py      2015-01-29 23:43:27.000000000 
+0100
+++ new/gunicorn-19.3.0/gunicorn/config.py      2015-03-06 10:08:34.000000000 
+0100
@@ -268,7 +268,8 @@
         return self.value
 
     def set(self, val):
-        assert six.callable(self.validator), "Invalid validator: %s" % 
self.name
+        if not six.callable(self.validator):
+            raise TypeError('Invalid validator: %s' % self.name)
         self.value = self.validator(val)
 
     def __lt__(self, other):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.2.1/gunicorn/glogging.py 
new/gunicorn-19.3.0/gunicorn/glogging.py
--- old/gunicorn-19.2.1/gunicorn/glogging.py    2015-02-04 09:10:53.000000000 
+0100
+++ new/gunicorn-19.3.0/gunicorn/glogging.py    2015-03-06 10:08:34.000000000 
+0100
@@ -155,6 +155,7 @@
         "info": logging.INFO,
         "debug": logging.DEBUG
     }
+    loglevel = logging.INFO
 
     error_fmt = r"%(asctime)s [%(process)d] [%(levelname)s] %(message)s"
     datefmt = r"[%Y-%m-%d %H:%M:%S %z]"
@@ -171,7 +172,6 @@
         self.access_log.propagate = False
         self.error_handlers = []
         self.access_handlers = []
-        self.loglevel = logging.INFO
         self.cfg = cfg
         self.setup(cfg)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.2.1/gunicorn/http/wsgi.py 
new/gunicorn-19.3.0/gunicorn/http/wsgi.py
--- old/gunicorn-19.2.1/gunicorn/http/wsgi.py   2015-01-30 07:19:36.000000000 
+0100
+++ new/gunicorn-19.3.0/gunicorn/http/wsgi.py   2015-03-06 10:08:34.000000000 
+0100
@@ -257,8 +257,8 @@
 
     def process_headers(self, headers):
         for name, value in headers:
-            assert isinstance(name, string_types), "%r is not a string" % name
-
+            if not isinstance(name, string_types):
+                raise TypeError('%r is not a string' % name)
             value = str(value).strip()
             lname = name.lower().strip()
             if lname == "content-length":
@@ -322,9 +322,8 @@
 
     def write(self, arg):
         self.send_headers()
-
-        assert isinstance(arg, binary_type), "%r is not a byte." % arg
-
+        if not isinstance(arg, binary_type):
+            raise TypeError('%r is not a byte' % arg)
         arglen = len(arg)
         tosend = arglen
         if self.response_length is not None:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.2.1/gunicorn/sock.py 
new/gunicorn-19.3.0/gunicorn/sock.py
--- old/gunicorn-19.2.1/gunicorn/sock.py        2015-01-21 23:12:39.000000000 
+0100
+++ new/gunicorn-19.3.0/gunicorn/sock.py        2015-03-06 10:18:31.000000000 
+0100
@@ -41,6 +41,11 @@
         if not bound:
             self.bind(sock)
         sock.setblocking(0)
+
+        # make sure that the socket can be inherited
+        if hasattr(sock, "set_inheritable"):
+            sock.set_inheritable(True)
+
         sock.listen(self.conf.backlog)
         return sock
 
@@ -110,6 +115,7 @@
         util.chown(self.cfg_addr, self.conf.uid, self.conf.gid)
         os.umask(old_umask)
 
+
     def close(self):
         super(UnixSocket, self).close()
         os.unlink(self.cfg_addr)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.2.1/gunicorn/util.py 
new/gunicorn-19.3.0/gunicorn/util.py
--- old/gunicorn-19.2.1/gunicorn/util.py        2015-01-21 23:12:39.000000000 
+0100
+++ new/gunicorn-19.3.0/gunicorn/util.py        2015-03-06 10:08:34.000000000 
+0100
@@ -503,7 +503,8 @@
     """Converts a string argument to a byte string"""
     if isinstance(value, bytes):
         return value
-    assert isinstance(value, text_type)
+    if not isinstance(value, text_type):
+        raise TypeError('%r is not a string' % value)
     return value.encode("utf-8")
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.2.1/gunicorn/workers/base.py 
new/gunicorn-19.3.0/gunicorn/workers/base.py
--- old/gunicorn-19.2.1/gunicorn/workers/base.py        2015-01-29 
23:43:21.000000000 +0100
+++ new/gunicorn-19.3.0/gunicorn/workers/base.py        2015-03-06 
10:08:34.000000000 +0100
@@ -7,6 +7,7 @@
 import os
 import signal
 import sys
+import time
 from random import randint
 
 
@@ -43,6 +44,7 @@
         self.cfg = cfg
         self.booted = False
         self.aborted = False
+        self.reloader = None
 
         self.nr = 0
         jitter = randint(0, cfg.max_requests_jitter)
@@ -87,7 +89,7 @@
             def changed(fname):
                 self.log.info("Worker reloading: %s modified", fname)
                 os.kill(self.pid, signal.SIGQUIT)
-            Reloader(callback=changed).start()
+            self.reloader = Reloader(callback=changed).start()
 
         # set environment' variables
         if self.cfg.env:
@@ -148,6 +150,7 @@
         self.alive = False
         # worker_int callback
         self.cfg.worker_int(self)
+        time.sleep(0.1)
         sys.exit(0)
 
     def handle_abort(self, sig, frame):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.2.1/gunicorn/workers/gthread.py 
new/gunicorn-19.3.0/gunicorn/workers/gthread.py
--- old/gunicorn-19.2.1/gunicorn/workers/gthread.py     2015-01-30 
06:52:29.000000000 +0100
+++ new/gunicorn-19.3.0/gunicorn/workers/gthread.py     2015-03-06 
10:08:34.000000000 +0100
@@ -86,7 +86,6 @@
         super(ThreadWorker, self).__init__(*args, **kwargs)
         self.worker_connections = self.cfg.worker_connections
         self.max_keepalived = self.cfg.worker_connections - self.cfg.threads
-
         # initialise the pool
         self.tpool = None
         self.poller = None
@@ -94,6 +93,14 @@
         self.futures = deque()
         self._keep = deque()
 
+    @classmethod
+    def check_config(cls, cfg, log):
+        max_keepalived = cfg.worker_connections - cfg.threads
+
+        if max_keepalived <= 0 and cfg.keepalive:
+            log.warning("No keepalived connections can be handled. " +
+                    "Check the number of worker connections and threads.")
+
     def init_process(self):
         self.tpool = futures.ThreadPoolExecutor(max_workers=self.cfg.threads)
         self.poller = selectors.DefaultSelector()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.2.1/gunicorn/workers/sync.py 
new/gunicorn-19.3.0/gunicorn/workers/sync.py
--- old/gunicorn-19.2.1/gunicorn/workers/sync.py        2015-01-21 
23:12:39.000000000 +0100
+++ new/gunicorn-19.3.0/gunicorn/workers/sync.py        2015-03-06 
10:08:34.000000000 +0100
@@ -91,13 +91,14 @@
             except StopWaiting:
                 return
 
-            for listener in ready:
-                try:
-                    self.accept(listener)
-                except socket.error as e:
-                    if e.args[0] not in (errno.EAGAIN, errno.ECONNABORTED,
-                            errno.EWOULDBLOCK):
-                        raise
+            if ready is not None:
+                for listener in ready:
+                    try:
+                        self.accept(listener)
+                    except socket.error as e:
+                        if e.args[0] not in (errno.EAGAIN, errno.ECONNABORTED,
+                                errno.EWOULDBLOCK):
+                            raise
 
             if not self.is_parent_alive():
                 return
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.2.1/gunicorn.egg-info/PKG-INFO 
new/gunicorn-19.3.0/gunicorn.egg-info/PKG-INFO
--- old/gunicorn-19.2.1/gunicorn.egg-info/PKG-INFO      2015-02-04 
14:44:35.000000000 +0100
+++ new/gunicorn-19.3.0/gunicorn.egg-info/PKG-INFO      2015-03-06 
11:19:35.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: gunicorn
-Version: 19.2.1
+Version: 19.3.0
 Summary: WSGI HTTP Server for UNIX
 Home-page: http://gunicorn.org
 Author: Benoit Chesneau
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-19.2.1/setup.cfg 
new/gunicorn-19.3.0/setup.cfg
--- old/gunicorn-19.2.1/setup.cfg       2015-02-04 14:44:35.000000000 +0100
+++ new/gunicorn-19.3.0/setup.cfg       2015-03-06 11:19:35.000000000 +0100
@@ -12,6 +12,6 @@
 
 [egg_info]
 tag_svn_revision = 0
-tag_build = 
 tag_date = 0
+tag_build = 
 

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to