Hello community,

here is the log from the commit of package python-gunicorn for openSUSE:Factory 
checked in at 2012-03-23 12:09:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-gunicorn (Old)
 and      /work/SRC/openSUSE:Factory/.python-gunicorn.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-gunicorn", Maintainer is ""

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-gunicorn/python-gunicorn.changes  
2012-03-16 13:23:01.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python-gunicorn.new/python-gunicorn.changes     
2012-03-23 12:09:40.000000000 +0100
@@ -1,0 +2,11 @@
+Thu Mar 22 10:05:23 UTC 2012 - s...@ammler.ch
+
+- Update to version 0.14.2
+  - add validate_class validator: allows to use a class or a method 
+    to initialize the app during in-code configuration
+  - add support for max_requests in tornado worker
+  - add support for disabling x_forwarded_for_header in tornado worker
+  - gevent_wsgi is now an alias of gevent_pywsgi
+  - Fix gevent_pywsgi worker
+
+-------------------------------------------------------------------

Old:
----
  gunicorn-0.14.1.tar.gz

New:
----
  gunicorn-0.14.2.tar.gz

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

Other differences:
------------------
++++++ python-gunicorn.spec ++++++
--- /var/tmp/diff_new_pack.pMSZTS/_old  2012-03-23 12:09:41.000000000 +0100
+++ /var/tmp/diff_new_pack.pMSZTS/_new  2012-03-23 12:09:41.000000000 +0100
@@ -11,17 +11,18 @@
 # case the license is the MIT License). An "Open Source License" is a
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
-#
+
 # Please submit bugfixes or comments via http://bugs.opensuse.org/
 #
 
+
 Name:           python-gunicorn
-Version:        0.14.1
+Version:        0.14.2
 Release:        0
-License:        MIT
 Summary:        WSGI HTTP Server for UNIX
-Url:            http://gunicorn.org
+License:        MIT
 Group:          Development/Languages/Python
+Url:            http://gunicorn.org
 Source:         
http://pypi.python.org/packages/source/g/gunicorn/gunicorn-%{version}.tar.gz
 BuildRequires:  python-devel
 BuildRequires:  python-distribute

++++++ gunicorn-0.14.1.tar.gz -> gunicorn-0.14.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-0.14.1/PKG-INFO new/gunicorn-0.14.2/PKG-INFO
--- old/gunicorn-0.14.1/PKG-INFO        2012-03-04 08:50:50.000000000 +0100
+++ new/gunicorn-0.14.2/PKG-INFO        2012-03-16 21:34:35.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: gunicorn
-Version: 0.14.1
+Version: 0.14.2
 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-0.14.1/THANKS new/gunicorn-0.14.2/THANKS
--- old/gunicorn-0.14.1/THANKS  2012-02-20 19:51:53.000000000 +0100
+++ new/gunicorn-0.14.2/THANKS  2012-03-16 11:44:55.000000000 +0100
@@ -32,9 +32,9 @@
 Masahiro Nakagawa <repeate...@gmail.com>
 Denis Bilenko <denis.bile...@gmail.com>
 Phil Schanely <p...@daylife.com>
-Chris Lamb <la...@debian.org>
-Jonas Borgström <jo...@borgstrom.se>
 Evan Mezeske <advanced.fractal.explo...@gmail.com>
 Darii Denis <denis.da...@gmail.com>
 Dan Callaghan <d...@djc.id.au>
 Kristian Glass <g...@doismellburning.co.uk>
+Mazdak Rezvani <maz...@mac.com>
+Maxim Kamenkov <mkamen...@gmail.com>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-0.14.1/doc/htdocs/configure.html 
new/gunicorn-0.14.2/doc/htdocs/configure.html
--- old/gunicorn-0.14.1/doc/htdocs/configure.html       2012-02-29 
14:11:55.000000000 +0100
+++ new/gunicorn-0.14.2/doc/htdocs/configure.html       2012-03-16 
11:44:55.000000000 +0100
@@ -272,7 +272,7 @@
 <li><tt class="docutils literal"><span 
class="pre">--limit-request-field_size</span> INT</tt></li>
 <li><tt class="docutils literal">8190</tt></li>
 </ul>
-<p>Limit he allowed size of an HTTP request header field.</p>
+<p>Limit the allowed size of an HTTP request header field.</p>
 <p>Value is a number from 0 (unlimited) to 8190. to set the limit
 on the allowed size of an HTTP request header field.</p>
 </div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-0.14.1/doc/htdocs/index.html 
new/gunicorn-0.14.2/doc/htdocs/index.html
--- old/gunicorn-0.14.1/doc/htdocs/index.html   2012-02-25 15:33:01.000000000 
+0100
+++ new/gunicorn-0.14.2/doc/htdocs/index.html   2012-03-16 21:10:53.000000000 
+0100
@@ -79,33 +79,15 @@
         </ul>
       </div>
       <div class="blurb">
-        <h3>Version 0.14.0 / 2012-02-27</h3>
+        <h3>Version 0.14.2 / 2012-03-16</h3>
         <ul>
-          <li>check if Request line is too large: You can now pass the
-          parameter <code>--limit-request-line</code> or set the
-          <code>limit_request_line</code> in your configuration file to set 
the max
-          size of the request line in bytes.</li>
-          <li>limit the number of headers fields and their size. Add
-          <code>--limit-request-fieldsw</code> and
-          <code>limit-request-field-size</code> settings</li>
-          <li>add <code>p</code> variable to the log access format to log
-          pidfile</li>
-          <li>add <code>{HeaderName}o</code> variable to the logo access 
format to
-          log the response header HeaderName</li>
-          <li>request header is now logged with the variable
-          <code>{HeaderName}i</code> in the  access log file</lI>
-          <li>improve error logging</li>
-          <li>support logging.configFile</li>
-          <li><strong>support django 1.4</strong> in both
-          <code>gunicorn_django</code> &amp; <code>run_gunicorn</code> 
command</li>
-          <li>improve reload in django run_gunicorn command (should just
-          work now)</li>
-          <li>allows people to set the <code>X-Forwarded-For</code> header key 
and
-          disable it by setting an empty string.</li>
-          <li>fix support of Tornado</li>
-          <li>many <a
-            
href="https://github.com/benoitc/gunicorn/compare/0.13.4...0.14.0";>other
-            fixes.</a></li></li>
+          <li>add validate_class validator: allows to use a class or a
+          method to initialize the app during in-code configuration</li>
+          <li>add support for max_requests in tornado worker</li>
+          <li>add support for disabling x_forwarded_for_header in
+          tornado worker</li>
+          <li>gevent_wsgi is now an alias of gevent_pywsgi</li>
+          <li>Fix gevent_pywsgi worker</li>
         </ul>
       </div>
       <div id="footer">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-0.14.1/doc/htdocs/news.html 
new/gunicorn-0.14.2/doc/htdocs/news.html
--- old/gunicorn-0.14.1/doc/htdocs/news.html    2012-02-25 15:31:09.000000000 
+0100
+++ new/gunicorn-0.14.2/doc/htdocs/news.html    2012-03-16 21:11:05.000000000 
+0100
@@ -29,6 +29,23 @@
       <div id="content">
       <div class="document">
 <div class="section" id="id1">
+<h2><a class="toc-backref" href="#contents">0.14.2 / 2012-03-16</a></h2>
+<ul class="simple">
+<li>add validate_class validator: allows to use a class or a method to
+initialize the app during in-code configuration</li>
+<li>add support for max_requests in tornado worker</li>
+<li>add support for disabling x_forwarded_for_header in tornado worker</li>
+<li>gevent_wsgi is now an alias of gevent_pywsgi</li>
+<li>Fix gevent_pywsgi worker</li>
+</ul>
+</div>
+<div class="section" id="id2">
+<h2><a class="toc-backref" href="#contents">0.14.1 / 2012-03-02</a></h2>
+<ul class="simple">
+<li>fixing source archive, reducing its size</li>
+</ul>
+</div>
+<div class="section" id="id3">
 <h2><a class="toc-backref" href="#contents">0.14.0 / 2012-02-27</a></h2>
 <ul class="simple">
 <li>check if Request line is too large: You can now pass the parameter
@@ -51,14 +68,14 @@
 <li>many other fixes.</li>
 </ul>
 </div>
-<div class="section" id="id2">
+<div class="section" id="id4">
 <h2><a class="toc-backref" href="#contents">0.13.4 / 2011-09-23</a></h2>
 <ul class="simple">
 <li>fix util.closerange function used to prevent leaking fds on python 2.5
 (typo)</li>
 </ul>
 </div>
-<div class="section" id="id3">
+<div class="section" id="id5">
 <h2><a class="toc-backref" href="#contents">0.13.3 / 2011-09-19</a></h2>
 <ul class="simple">
 <li>refactor gevent worker</li>
@@ -66,7 +83,7 @@
 <li>fix inverted request_time computation</li>
 </ul>
 </div>
-<div class="section" id="id4">
+<div class="section" id="id6">
 <h2><a class="toc-backref" href="#contents">0.13.2 / 2011-09-17</a></h2>
 <ul class="simple">
 <li>Add support for Tornado 2.0 in tornado worker</li>
@@ -79,13 +96,13 @@
 <li>Fix Django reloading</li>
 </ul>
 </div>
-<div class="section" id="id5">
+<div class="section" id="id7">
 <h2><a class="toc-backref" href="#contents">0.13.1 / 2011-08-22</a></h2>
 <ul class="simple">
 <li>Fix unix socket. log argument was missing.</li>
 </ul>
 </div>
-<div class="section" id="id6">
+<div class="section" id="id8">
 <h2><a class="toc-backref" href="#contents">0.13.0 / 2011-08-22</a></h2>
 <ul class="simple">
 <li>Improve logging: allows file-reopening and add access log file
@@ -103,7 +120,7 @@
 <li>Fix the use of sendfile in wsgi.file_wrapper</li>
 </ul>
 </div>
-<div class="section" id="id7">
+<div class="section" id="id9">
 <h2><a class="toc-backref" href="#contents">0.12.2 / 2011-05-18</a></h2>
 <ul class="simple">
 <li>Add wsgi.file_wrapper optimised for FreeBSD, Linux &amp; MacOSX (use
@@ -114,7 +131,7 @@
 <li>Compatible with gevent 0.14dev</li>
 </ul>
 </div>
-<div class="section" id="id8">
+<div class="section" id="id10">
 <h2><a class="toc-backref" href="#contents">0.12.1 / 2011-03-23</a></h2>
 <ul class="simple">
 <li>Add &quot;on_starting&quot; hook. This hook can be used to set anything 
before
@@ -126,7 +143,7 @@
 <li>Fix ipv6 handling</li>
 </ul>
 </div>
-<div class="section" id="id9">
+<div class="section" id="id11">
 <h2><a class="toc-backref" href="#contents">0.12.0 / 2010-12-22</a></h2>
 <ul class="simple">
 <li>Add support for logging configuration using a ini file.
@@ -144,7 +161,7 @@
 <li>Set the number of workers to zero on WINCH</li>
 </ul>
 </div>
-<div class="section" id="id10">
+<div class="section" id="id12">
 <h2><a class="toc-backref" href="#contents">0.11.2 / 2010-10-30</a></h2>
 <ul class="simple">
 <li>Add SERVER_SOFTWARE to the os.environ</li>
@@ -157,7 +174,7 @@
 <li>Fix readline in wsgi.input</li>
 </ul>
 </div>
-<div class="section" id="id11">
+<div class="section" id="id13">
 <h2><a class="toc-backref" href="#contents">0.11.1 / 2010-09-02</a></h2>
 <ul class="simple">
 <li>Implement max-requests feature to prevent memory leaks.</li>
@@ -169,7 +186,7 @@
 <li>Workaround to prevent Gevent worker to segfault on MacOSX.</li>
 </ul>
 </div>
-<div class="section" id="id12">
+<div class="section" id="id14">
 <h2><a class="toc-backref" href="#contents">0.11.0 / 2010-08-12</a></h2>
 <ul class="simple">
 <li>Improve dramatically performances of Gevent and Eventlet workers</li>
@@ -178,7 +195,7 @@
 <li>Fix latency issue in async workers</li>
 </ul>
 </div>
-<div class="section" id="id13">
+<div class="section" id="id15">
 <h2><a class="toc-backref" href="#contents">0.10.1 / 2010-08-06</a></h2>
 <ul class="simple">
 <li>Improve gevent's workers. Add &quot;egg:gunicorn#gevent_wsgi&quot; worker 
using
@@ -192,7 +209,7 @@
 <li>Fix gevent dns issue</li>
 </ul>
 </div>
-<div class="section" id="id14">
+<div class="section" id="id16">
 <h2><a class="toc-backref" href="#contents">0.10.0 / 2010-07-08</a></h2>
 <ul class="simple">
 <li>New HTTP parser.</li>
@@ -212,7 +229,7 @@
 <li>New documentation website.</li>
 </ul>
 </div>
-<div class="section" id="id15">
+<div class="section" id="id17">
 <h2><a class="toc-backref" href="#contents">0.9.1 / 2010-05-26</a></h2>
 <ul class="simple">
 <li>Support https via X-Forwarded-Protocol or X-Forwarded-Ssl headers</li>
@@ -221,7 +238,7 @@
 <li>Fix umask in unix socket</li>
 </ul>
 </div>
-<div class="section" id="id16">
+<div class="section" id="id18">
 <h2><a class="toc-backref" href="#contents">0.9.0 / 2010-05-24</a></h2>
 <ul class="simple">
 <li>Added <em>when_ready</em> hook. Called just after the server is 
started</li>
@@ -234,7 +251,7 @@
 <li>Documentation improvements</li>
 </ul>
 </div>
-<div class="section" id="id17">
+<div class="section" id="id19">
 <h2><a class="toc-backref" href="#contents">0.8.1 / 2010-04-29</a></h2>
 <ul class="simple">
 <li>Fix builtins import in config</li>
@@ -243,7 +260,7 @@
 <li>Delay application loading until after processing all configuration</li>
 </ul>
 </div>
-<div class="section" id="id18">
+<div class="section" id="id20">
 <h2><a class="toc-backref" href="#contents">0.8.0 / 2010-04-22</a></h2>
 <ul class="simple">
 <li>Refactored Worker management for better async support. Now use the -k 
option
@@ -251,7 +268,7 @@
 <li>Added support for <a class="reference external" 
href="http://www.tornadoweb.org/";>Tornado</a></li>
 </ul>
 </div>
-<div class="section" id="id19">
+<div class="section" id="id21">
 <h2><a class="toc-backref" href="#contents">0.7.2 / 2010-04-15</a></h2>
 <ul class="simple">
 <li>Added --spew option to help debugging (installs a system trace hook)</li>
@@ -259,13 +276,13 @@
 <li>Fix a bug in start_response on error</li>
 </ul>
 </div>
-<div class="section" id="id20">
+<div class="section" id="id22">
 <h2><a class="toc-backref" href="#contents">0.7.1 / 2010-04-01</a></h2>
 <ul class="simple">
 <li>Fix bug when responses have no body.</li>
 </ul>
 </div>
-<div class="section" id="id21">
+<div class="section" id="id23">
 <h2><a class="toc-backref" href="#contents">0.7.0 / 2010-03-26</a></h2>
 <ul class="simple">
 <li>Added support for <a class="reference external" 
href="http://eventlet.net";>Eventlet</a> and <a class="reference external" 
href="http://gevent.org";>Gevent</a> based workers.</li>
@@ -275,28 +292,28 @@
 <li>Fix <a class="reference external" 
href="http://www.python.org/dev/peps/pep-0333/";>PEP 333</a> compliance for the 
write callable.</li>
 </ul>
 </div>
-<div class="section" id="id22">
+<div class="section" id="id24">
 <h2><a class="toc-backref" href="#contents">0.6.5 / 2010-03-11</a></h2>
 <ul class="simple">
 <li>Fix pidfile handling</li>
 <li>Fix Exception Error</li>
 </ul>
 </div>
-<div class="section" id="id23">
+<div class="section" id="id25">
 <h2><a class="toc-backref" href="#contents">0.6.4 / 2010-03-08</a></h2>
 <ul class="simple">
 <li>Use cStringIO for performance when possible.</li>
 <li>Fix worker freeze when a remote connection closes unexpectedly.</li>
 </ul>
 </div>
-<div class="section" id="id24">
+<div class="section" id="id26">
 <h2><a class="toc-backref" href="#contents">0.6.3 / 2010-03-07</a></h2>
 <ul class="simple">
 <li>Make HTTP parsing faster.</li>
 <li>Various bug fixes</li>
 </ul>
 </div>
-<div class="section" id="id25">
+<div class="section" id="id27">
 <h2><a class="toc-backref" href="#contents">0.6.2 / 2010-03-01</a></h2>
 <ul class="simple">
 <li>Added support for chunked response.</li>
@@ -307,7 +324,7 @@
 <li>Workers are now murdered by age (the oldest is killed first).</li>
 </ul>
 </div>
-<div class="section" id="id26">
+<div class="section" id="id28">
 <h2><a class="toc-backref" href="#contents">0.6.1 / 2010-02-24</a></h2>
 <ul class="simple">
 <li>Added gunicorn config file support for Django admin command</li>
@@ -315,7 +332,7 @@
 <li>Removed TTIN/TTOU from workers which blocked other signals.</li>
 </ul>
 </div>
-<div class="section" id="id27">
+<div class="section" id="id29">
 <h2><a class="toc-backref" href="#contents">0.6 / 2010-02-22</a></h2>
 <ul class="simple">
 <li>Added setproctitle support</li>
@@ -323,14 +340,14 @@
 permissions, new uid/gid permissions are only set for workers.</li>
 </ul>
 </div>
-<div class="section" id="id28">
+<div class="section" id="id30">
 <h2><a class="toc-backref" href="#contents">0.5.1 / 2010-02-22</a></h2>
 <ul class="simple">
 <li>Fix umask</li>
 <li>Added Debian packaging</li>
 </ul>
 </div>
-<div class="section" id="id29">
+<div class="section" id="id31">
 <h2><a class="toc-backref" href="#contents">0.5 / 2010-02-20</a></h2>
 <ul class="simple">
 <li>Added <a class="reference external" 
href="configuration.html">configuration file</a> handler.</li>
@@ -352,35 +369,37 @@
       <div class="contents topic" id="contents">
 <p class="topic-title first">Contents</p>
 <ul class="simple">
-<li><a class="reference internal" href="#id1" id="id30">0.14.0 / 
2012-02-27</a></li>
-<li><a class="reference internal" href="#id2" id="id31">0.13.4 / 
2011-09-23</a></li>
-<li><a class="reference internal" href="#id3" id="id32">0.13.3 / 
2011-09-19</a></li>
-<li><a class="reference internal" href="#id4" id="id33">0.13.2 / 
2011-09-17</a></li>
-<li><a class="reference internal" href="#id5" id="id34">0.13.1 / 
2011-08-22</a></li>
-<li><a class="reference internal" href="#id6" id="id35">0.13.0 / 
2011-08-22</a></li>
-<li><a class="reference internal" href="#id7" id="id36">0.12.2 / 
2011-05-18</a></li>
-<li><a class="reference internal" href="#id8" id="id37">0.12.1 / 
2011-03-23</a></li>
-<li><a class="reference internal" href="#id9" id="id38">0.12.0 / 
2010-12-22</a></li>
-<li><a class="reference internal" href="#id10" id="id39">0.11.2 / 
2010-10-30</a></li>
-<li><a class="reference internal" href="#id11" id="id40">0.11.1 / 
2010-09-02</a></li>
-<li><a class="reference internal" href="#id12" id="id41">0.11.0 / 
2010-08-12</a></li>
-<li><a class="reference internal" href="#id13" id="id42">0.10.1 / 
2010-08-06</a></li>
-<li><a class="reference internal" href="#id14" id="id43">0.10.0 / 
2010-07-08</a></li>
-<li><a class="reference internal" href="#id15" id="id44">0.9.1 / 
2010-05-26</a></li>
-<li><a class="reference internal" href="#id16" id="id45">0.9.0 / 
2010-05-24</a></li>
-<li><a class="reference internal" href="#id17" id="id46">0.8.1 / 
2010-04-29</a></li>
-<li><a class="reference internal" href="#id18" id="id47">0.8.0 / 
2010-04-22</a></li>
-<li><a class="reference internal" href="#id19" id="id48">0.7.2 / 
2010-04-15</a></li>
-<li><a class="reference internal" href="#id20" id="id49">0.7.1 / 
2010-04-01</a></li>
-<li><a class="reference internal" href="#id21" id="id50">0.7.0 / 
2010-03-26</a></li>
-<li><a class="reference internal" href="#id22" id="id51">0.6.5 / 
2010-03-11</a></li>
-<li><a class="reference internal" href="#id23" id="id52">0.6.4 / 
2010-03-08</a></li>
-<li><a class="reference internal" href="#id24" id="id53">0.6.3 / 
2010-03-07</a></li>
-<li><a class="reference internal" href="#id25" id="id54">0.6.2 / 
2010-03-01</a></li>
-<li><a class="reference internal" href="#id26" id="id55">0.6.1 / 
2010-02-24</a></li>
-<li><a class="reference internal" href="#id27" id="id56">0.6 / 
2010-02-22</a></li>
-<li><a class="reference internal" href="#id28" id="id57">0.5.1 / 
2010-02-22</a></li>
-<li><a class="reference internal" href="#id29" id="id58">0.5 / 
2010-02-20</a></li>
+<li><a class="reference internal" href="#id1" id="id32">0.14.2 / 
2012-03-16</a></li>
+<li><a class="reference internal" href="#id2" id="id33">0.14.1 / 
2012-03-02</a></li>
+<li><a class="reference internal" href="#id3" id="id34">0.14.0 / 
2012-02-27</a></li>
+<li><a class="reference internal" href="#id4" id="id35">0.13.4 / 
2011-09-23</a></li>
+<li><a class="reference internal" href="#id5" id="id36">0.13.3 / 
2011-09-19</a></li>
+<li><a class="reference internal" href="#id6" id="id37">0.13.2 / 
2011-09-17</a></li>
+<li><a class="reference internal" href="#id7" id="id38">0.13.1 / 
2011-08-22</a></li>
+<li><a class="reference internal" href="#id8" id="id39">0.13.0 / 
2011-08-22</a></li>
+<li><a class="reference internal" href="#id9" id="id40">0.12.2 / 
2011-05-18</a></li>
+<li><a class="reference internal" href="#id10" id="id41">0.12.1 / 
2011-03-23</a></li>
+<li><a class="reference internal" href="#id11" id="id42">0.12.0 / 
2010-12-22</a></li>
+<li><a class="reference internal" href="#id12" id="id43">0.11.2 / 
2010-10-30</a></li>
+<li><a class="reference internal" href="#id13" id="id44">0.11.1 / 
2010-09-02</a></li>
+<li><a class="reference internal" href="#id14" id="id45">0.11.0 / 
2010-08-12</a></li>
+<li><a class="reference internal" href="#id15" id="id46">0.10.1 / 
2010-08-06</a></li>
+<li><a class="reference internal" href="#id16" id="id47">0.10.0 / 
2010-07-08</a></li>
+<li><a class="reference internal" href="#id17" id="id48">0.9.1 / 
2010-05-26</a></li>
+<li><a class="reference internal" href="#id18" id="id49">0.9.0 / 
2010-05-24</a></li>
+<li><a class="reference internal" href="#id19" id="id50">0.8.1 / 
2010-04-29</a></li>
+<li><a class="reference internal" href="#id20" id="id51">0.8.0 / 
2010-04-22</a></li>
+<li><a class="reference internal" href="#id21" id="id52">0.7.2 / 
2010-04-15</a></li>
+<li><a class="reference internal" href="#id22" id="id53">0.7.1 / 
2010-04-01</a></li>
+<li><a class="reference internal" href="#id23" id="id54">0.7.0 / 
2010-03-26</a></li>
+<li><a class="reference internal" href="#id24" id="id55">0.6.5 / 
2010-03-11</a></li>
+<li><a class="reference internal" href="#id25" id="id56">0.6.4 / 
2010-03-08</a></li>
+<li><a class="reference internal" href="#id26" id="id57">0.6.3 / 
2010-03-07</a></li>
+<li><a class="reference internal" href="#id27" id="id58">0.6.2 / 
2010-03-01</a></li>
+<li><a class="reference internal" href="#id28" id="id59">0.6.1 / 
2010-02-24</a></li>
+<li><a class="reference internal" href="#id29" id="id60">0.6 / 
2010-02-22</a></li>
+<li><a class="reference internal" href="#id30" id="id61">0.5.1 / 
2010-02-22</a></li>
+<li><a class="reference internal" href="#id31" id="id62">0.5 / 
2010-02-20</a></li>
 </ul>
 </div>
       </div>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-0.14.1/doc/site/news.rst 
new/gunicorn-0.14.2/doc/site/news.rst
--- old/gunicorn-0.14.1/doc/site/news.rst       2012-02-25 15:31:05.000000000 
+0100
+++ new/gunicorn-0.14.2/doc/site/news.rst       2012-03-16 21:10:53.000000000 
+0100
@@ -8,6 +8,21 @@
 
 _TOC_BOT_
 
+0.14.2 / 2012-03-16
+-------------------
+
+- add validate_class validator: allows to use a class or a method to
+  initialize the app during in-code configuration
+- add support for max_requests in tornado worker
+- add support for disabling x_forwarded_for_header in tornado worker
+- gevent_wsgi is now an alias of gevent_pywsgi
+- Fix gevent_pywsgi worker
+
+0.14.1 / 2012-03-02
+-------------------
+
+- fixing source archive, reducing its size
+
 0.14.0 / 2012-02-27
 -------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-0.14.1/examples/test.py 
new/gunicorn-0.14.2/examples/test.py
--- old/gunicorn-0.14.1/examples/test.py        2012-03-01 07:50:18.000000000 
+0100
+++ new/gunicorn-0.14.2/examples/test.py        2012-03-16 21:10:44.000000000 
+0100
@@ -21,5 +21,6 @@
         ('Content-Length', str(len(data))),
         ('X-Gunicorn-Version', __version__)
     ]
+
     start_response(status, response_headers)
     return iter([data])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn/__init__.py 
new/gunicorn-0.14.2/gunicorn/__init__.py
--- old/gunicorn-0.14.1/gunicorn/__init__.py    2012-03-04 08:29:21.000000000 
+0100
+++ new/gunicorn-0.14.2/gunicorn/__init__.py    2012-03-16 21:10:53.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 = (0, 14, 1)
+version_info = (0, 14, 2)
 __version__ = ".".join(map(str, version_info))
 SERVER_SOFTWARE = "gunicorn/%s" % __version__
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn/config.py 
new/gunicorn-0.14.2/gunicorn/config.py
--- old/gunicorn-0.14.1/gunicorn/config.py      2012-03-01 07:23:12.000000000 
+0100
+++ new/gunicorn-0.14.2/gunicorn/config.py      2012-03-16 21:10:31.000000000 
+0100
@@ -212,6 +212,13 @@
         raise TypeError("Not a string: %s" % val)
     return val.strip()
 
+def validate_class(val):
+    if inspect.isfunction(val) or inspect.ismethod(val):
+        val = val()
+    if inspect.isclass(val):
+        return val
+    return validate_string(val)
+
 def validate_callable(arity):
     def _validate_callable(val):
         if not callable(val):
@@ -338,7 +345,7 @@
     section = "Worker Processes"
     cli = ["-k", "--worker-class"]
     meta = "STRING"
-    validator = validate_string
+    validator = validate_class
     default = "sync"
     desc = """\
         The type of workers to use.
@@ -474,7 +481,7 @@
     type = "int"
     default = 8190
     desc= """\
-        Limit he allowed size of an HTTP request header field.
+        Limit the allowed size of an HTTP request header field.
 
         Value is a number from 0 (unlimited) to 8190. to set the limit
         on the allowed size of an HTTP request header field.
@@ -740,7 +747,7 @@
     section = "Logging"
     cli = ["--logger-class"]
     meta = "STRING"
-    validator = validate_string
+    validator = validate_class
     default = "simple"
     desc = """\
         The logger you want to use to log events in gunicorn.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn/glogging.py 
new/gunicorn-0.14.2/gunicorn/glogging.py
--- old/gunicorn-0.14.1/gunicorn/glogging.py    2012-02-25 14:42:54.000000000 
+0100
+++ new/gunicorn-0.14.2/gunicorn/glogging.py    2012-03-16 21:10:44.000000000 
+0100
@@ -107,9 +107,7 @@
             if cfg.errorlog != "-":
                 # if an error log file is set redirect stdout & stderr to
                 # this log file.
-                stdout_log = LazyWriter(cfg.errorlog, 'a')
-                sys.stdout = stdout_log
-                sys.stderr = stdout_log
+                sys.stdout = sys.stderr = LazyWriter(cfg.errorlog, 'a')
 
             # set gunicorn.error handler
             self._set_handler(self.error_log, cfg.errorlog,
@@ -175,7 +173,12 @@
                 }
 
         # add request headers
-        atoms.update(dict([("{%s}i" % k.lower(),v) for k, v in req.headers]))
+        if hasattr(req, 'headers'):
+            req_headers = req.headers
+        else:
+            req_headers = req
+
+        atoms.update(dict([("{%s}i" % k.lower(),v) for k, v in req_headers]))
 
         # add response headers
         atoms.update(dict([("{%s}o" % k.lower(),v) for k, v in resp.headers]))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn/util.py 
new/gunicorn-0.14.2/gunicorn/util.py
--- old/gunicorn-0.14.1/gunicorn/util.py        2012-02-19 22:11:32.000000000 
+0100
+++ new/gunicorn-0.14.2/gunicorn/util.py        2012-03-16 21:10:31.000000000 
+0100
@@ -23,6 +23,7 @@
 import sys
 import textwrap
 import time
+import inspect
 
 
 MAXFD = 1024
@@ -103,6 +104,8 @@
         return sys.modules[name]
 
 def load_class(uri, default="sync", section="gunicorn.workers"):
+    if inspect.isclass(uri):
+        return uri
     if uri.startswith("egg:"):
         # uses entry points
         entry_str = uri.split("egg:")[1]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn/workers/ggevent.py 
new/gunicorn-0.14.2/gunicorn/workers/ggevent.py
--- old/gunicorn-0.14.1/gunicorn/workers/ggevent.py     2012-03-01 
07:42:01.000000000 +0100
+++ new/gunicorn-0.14.2/gunicorn/workers/ggevent.py     2012-03-16 
11:44:55.000000000 +0100
@@ -96,13 +96,29 @@
             gevent.core.dns_init()
             super(GeventWorker, self).init_process()
 
+
+class GeventResponse(object):
+
+    status = None
+    headers = None
+    response_length = None
+
+
+    def __init__(self, status, headers, clength):
+        self.status = status
+        self.headers = headers
+        self.response_length = clength
+
 class PyWSGIHandler(pywsgi.WSGIHandler):
 
     def log_request(self):
         start = datetime.fromtimestamp(self.time_start)
         finish = datetime.fromtimestamp(self.time_finish)
         response_time = finish - start
-        self.server.log.access(self, self.environ, response_time)
+        resp = GeventResponse(self.status, self.response_headers,
+                self.response_length)
+        req_headers = [h.split(":", 1) for h in self.headers.headers]
+        self.server.log.access(resp, req_headers, self.environ, response_time)
 
     def get_environ(self):
         env = super(PyWSGIHandler, self).get_environ()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn/workers/ggevent_wsgi.py 
new/gunicorn-0.14.2/gunicorn/workers/ggevent_wsgi.py
--- old/gunicorn-0.14.1/gunicorn/workers/ggevent_wsgi.py        2012-02-19 
11:27:05.000000000 +0100
+++ new/gunicorn-0.14.2/gunicorn/workers/ggevent_wsgi.py        1970-01-01 
01:00:00.000000000 +0100
@@ -1,40 +0,0 @@
-# -*- coding: utf-8 -
-#
-# This file is part of gunicorn released under the MIT license.
-# See the NOTICE for more information.
-
-from datetime import datetime
-
-from gunicorn.workers.ggevent import BASE_WSGI_ENV, GeventWorker
-from gevent import wsgi
-
-
-class WSGIHandler(wsgi.WSGIHandler):
-
-    @property
-    def status(self):
-        return ' '.join([str(self.code), self.reason])
-
-    def log_request(self, length):
-        self.response_length = length
-        response_time = datetime.now() - self.time_start
-        self.server.log.access(self, self.environ, response_time)
-
-    def prepare_env(self):
-        env = super(WSGIHandler, self).prepare_env()
-        env['RAW_URI'] = self.request.uri
-        self.environ = env
-        return env
-
-    def handle(self):
-        self.time_start = datetime.now()
-        super(WSGIHandler, self).handle()
-
-
-class WSGIServer(wsgi.WSGIServer):
-    base_env = BASE_WSGI_ENV
-
-class GeventWSGIWorker(GeventWorker):
-    "The Gevent StreamServer based workers."
-    server_class = WSGIServer
-    wsgi_handler = WSGIHandler
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn/workers/gtornado.py 
new/gunicorn-0.14.2/gunicorn/workers/gtornado.py
--- old/gunicorn-0.14.1/gunicorn/workers/gtornado.py    2012-02-19 
11:27:11.000000000 +0100
+++ new/gunicorn-0.14.2/gunicorn/workers/gtornado.py    2012-03-16 
11:44:55.000000000 +0100
@@ -10,20 +10,20 @@
     import tornado.web
 except ImportError:
     raise RuntimeError("You need tornado installed to use this worker.")
-from tornado.httpserver import HTTPServer
+import tornado.httpserver
 from tornado.ioloop import IOLoop, PeriodicCallback
 from tornado.wsgi import WSGIContainer
-
-
 from gunicorn.workers.base import Worker
 from gunicorn import __version__ as gversion
 
+
 class TornadoWorker(Worker):
 
     @classmethod
     def setup(cls):
         web = sys.modules.pop("tornado.web")
         old_clear = web.RequestHandler.clear
+
         def clear(self):
             old_clear(self)
             self._headers["Server"] += " (Gunicorn/%s)" % gversion
@@ -34,8 +34,16 @@
         super(TornadoWorker, self).handle_quit(sig, frame)
         self.ioloop.stop()
 
+    def handle_request(self):
+        self.nr += 1
+        if self.alive and self.nr >= self.max_requests:
+            self.alive = False
+            self.log.info("Autorestarting worker after current request.")
+            self.ioloop.stop()
+
     def watchdog(self):
-        self.notify()
+        if self.alive:
+            self.notify()
 
         if self.ppid != os.getppid():
             self.log.info("Parent changed, shutting down: %s", self)
@@ -44,6 +52,7 @@
     def run(self):
         self.socket.setblocking(0)
         self.ioloop = IOLoop.instance()
+        self.alive = True
         PeriodicCallback(self.watchdog, 1000, io_loop=self.ioloop).start()
 
         # Assume the app is a WSGI callable if its not an
@@ -52,13 +61,30 @@
         if not isinstance(app, tornado.web.Application):
             app = WSGIContainer(app)
 
-        server = HTTPServer(app, io_loop=self.ioloop)
-        if hasattr(server, "add_socket"): # tornado > 2.0
+        # Monkey-patching HTTPConnection.finish to count the
+        # number of requests being handled by Tornado. This
+        # will help gunicorn shutdown the worker if max_requests
+        # is exceeded.
+        httpserver = sys.modules["tornado.httpserver"]
+        old_connection_finish = httpserver.HTTPConnection.finish
+
+        def finish(other):
+            self.handle_request()
+            old_connection_finish(other)
+        httpserver.HTTPConnection.finish = finish
+        sys.modules["tornado.httpserver"] = httpserver
+
+        server = tornado.httpserver.HTTPServer(app, io_loop=self.ioloop)
+        if hasattr(server, "add_socket"):  # tornado > 2.0
             server.add_socket(self.socket)
-        elif hasattr(server, "_sockets"): # tornado 2.0
+        elif hasattr(server, "_sockets"):  # tornado 2.0
             server._sockets[self.socket.fileno()] = self.socket
-        else: # tornado 1.2 or earlier
+        else:  # tornado 1.2 or earlier
             server._socket = self.socket
+
+        server.no_keep_alive = self.cfg.keepalive <= 0
+        server.xheaders = bool(self.cfg.x_forwarded_for_header)
+
         server.start(num_processes=1)
 
         self.ioloop.start()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn.egg-info/PKG-INFO 
new/gunicorn-0.14.2/gunicorn.egg-info/PKG-INFO
--- old/gunicorn-0.14.1/gunicorn.egg-info/PKG-INFO      2012-03-04 
08:50:49.000000000 +0100
+++ new/gunicorn-0.14.2/gunicorn.egg-info/PKG-INFO      2012-03-16 
21:34:35.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: gunicorn
-Version: 0.14.1
+Version: 0.14.2
 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-0.14.1/gunicorn.egg-info/SOURCES.txt 
new/gunicorn-0.14.2/gunicorn.egg-info/SOURCES.txt
--- old/gunicorn-0.14.1/gunicorn.egg-info/SOURCES.txt   2012-03-04 
08:50:49.000000000 +0100
+++ new/gunicorn-0.14.2/gunicorn.egg-info/SOURCES.txt   2012-03-16 
21:34:35.000000000 +0100
@@ -172,7 +172,6 @@
 gunicorn/workers/base.py
 gunicorn/workers/geventlet.py
 gunicorn/workers/ggevent.py
-gunicorn/workers/ggevent_wsgi.py
 gunicorn/workers/gtornado.py
 gunicorn/workers/sync.py
 gunicorn/workers/workertmp.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-0.14.1/gunicorn.egg-info/entry_points.txt 
new/gunicorn-0.14.2/gunicorn.egg-info/entry_points.txt
--- old/gunicorn-0.14.1/gunicorn.egg-info/entry_points.txt      2012-03-04 
08:50:49.000000000 +0100
+++ new/gunicorn-0.14.2/gunicorn.egg-info/entry_points.txt      2012-03-16 
21:34:35.000000000 +0100
@@ -1,5 +1,5 @@
 
-    
+
     [console_scripts]
     gunicorn=gunicorn.app.wsgiapp:run
     gunicorn_django=gunicorn.app.djangoapp:run
@@ -9,7 +9,7 @@
     sync=gunicorn.workers.sync:SyncWorker
     eventlet=gunicorn.workers.geventlet:EventletWorker
     gevent=gunicorn.workers.ggevent:GeventWorker
-    gevent_wsgi=gunicorn.workers.ggevent_wsgi:GeventWSGIWorker
+    gevent_wsgi=gunicorn.workers.ggevent:GeventPyWSGIWorker
     gevent_pywsgi=gunicorn.workers.ggevent:GeventPyWSGIWorker
     tornado=gunicorn.workers.gtornado:TornadoWorker
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/gunicorn-0.14.1/setup.py new/gunicorn-0.14.2/setup.py
--- old/gunicorn-0.14.1/setup.py        2012-01-11 02:43:36.000000000 +0100
+++ new/gunicorn-0.14.2/setup.py        2012-03-16 21:10:31.000000000 +0100
@@ -1,6 +1,6 @@
 # -*- coding: utf-8 -
 #
-# This file is part of gunicorn released under the MIT license. 
+# This file is part of gunicorn released under the MIT license.
 # See the NOTICE for more information.
 
 
@@ -45,9 +45,9 @@
     zip_safe = False,
     packages = find_packages(exclude=['examples', 'tests']),
     include_package_data = True,
-    
+
     entry_points="""
-    
+
     [console_scripts]
     gunicorn=gunicorn.app.wsgiapp:run
     gunicorn_django=gunicorn.app.djangoapp:run
@@ -57,7 +57,7 @@
     sync=gunicorn.workers.sync:SyncWorker
     eventlet=gunicorn.workers.geventlet:EventletWorker
     gevent=gunicorn.workers.ggevent:GeventWorker
-    gevent_wsgi=gunicorn.workers.ggevent_wsgi:GeventWSGIWorker
+    gevent_wsgi=gunicorn.workers.ggevent:GeventPyWSGIWorker
     gevent_pywsgi=gunicorn.workers.ggevent:GeventPyWSGIWorker
     tornado=gunicorn.workers.gtornado:TornadoWorker
 

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

Reply via email to