diff options
-rw-r--r-- | README.rst | 21 | ||||
-rw-r--r-- | docs/news.txt | 28 | ||||
-rw-r--r-- | paste/auth/digest.py | 2 | ||||
-rw-r--r-- | paste/fixture.py | 2 | ||||
-rwxr-xr-x | paste/httpserver.py | 6 | ||||
-rw-r--r-- | setup.py | 6 | ||||
-rw-r--r-- | tests/test_fileapp.py | 2 | ||||
-rw-r--r-- | tests/test_proxy.py | 8 | ||||
-rw-r--r-- | tox.ini | 2 |
9 files changed, 54 insertions, 23 deletions
@@ -1,3 +1,8 @@ + +*Paste is in maintenance mode and recently moved from bitbucket to github. +Patches are accepted to keep it on life support, but for the most part, please +consider using other options.* + Paste provides several pieces of "middleware" (or filters) that can be nested to build web applications. Each piece of middleware uses the WSGI (`PEP 333`_) interface, and should be compatible with other middleware based on those @@ -5,19 +10,14 @@ interfaces. .. _PEP 333: http://www.python.org/dev/peps/pep-0333.html -* `Paste project at Bitbucket (source code, bug tracker) - <https://bitbucket.org/ianb/paste/>`_ +* `Paste project at GitHub (source code, bug tracker) + <https://github.com/cdent/paste/>`_ * `Paste on the Python Cheeseshop (PyPI) <https://pypi.python.org/pypi/Paste>`_ -* `Paste documentation - <http://pythonpaste.org/>`_ See also: -* `PasteDeploy <http://pythonpaste.org/deploy/>`_ -* `PasteScript <http://pythonpaste.org/script/>`_ -* `WebTest <http://webtest.pythonpaste.org/>`_ -* `WebOb <http://docs.webob.org/>`_ +* `WebOb <https://docs.pylonsproject.org/projects/webob>`_ Includes these features... @@ -103,7 +103,4 @@ Other Tools * A class for generating and traversing URLs, and creating associated HTML code, in ``paste.url`` -The official development repo is at https://bitbucket.org/ianb/paste. - -For the latest changes see the `news file -<http://pythonpaste.org/news.html>`_. +The official development repo is at https://github.com/cdent/paste. diff --git a/docs/news.txt b/docs/news.txt index 83ff121..d17001c 100644 --- a/docs/news.txt +++ b/docs/news.txt @@ -3,6 +3,34 @@ News .. contents:: +2.0.3 +----- + +* #26: Change six requirement to >=1.4.0 + from [Linus Heckemann](https://bitbucket.org/sphalerite/) + https://bitbucket.org/ianb/paste/pull-requests/26/change-six-requirement-to-140/diff + +* #28: Py3k fixes + from [Nils Philippsen](https://bitbucket.org/nilsph/) + https://bitbucket.org/ianb/paste/pull-requests/28/py3k-fixes/diff + +* #29: paste.wsgilib.add_close: Add __next__ method to support using `add_close` objects as iterators on Python 3. + fixes https://bitbucket.org/ianb/pastedeploy/issues/18/py3-test_config_middleware-failed + from [Marc Abramowitz](https://bitbucket.org/msabramo/) + https://bitbucket.org/ianb/paste/pull-requests/29/pastewsgilibadd_close-add-__next__-method/diff + +* #30: tox.ini: Add py35 to envlist + from [Marc Abramowitz](https://bitbucket.org/msabramo/) + https://bitbucket.org/ianb/paste/pull-requests/30/toxini-add-py35-to-envlist/diff + +* #31: Enable testing with pypy + from [Marc Abramowitz](https://bitbucket.org/msabramo/) + https://bitbucket.org/ianb/paste/pull-requests/31/enable-testing-with-pypy/diff + +* #33: tox.ini: Measure test coveraage + from [Marc Abramowitz](https://bitbucket.org/msabramo/) + https://bitbucket.org/ianb/paste/pull-requests/33/toxini-measure-test-coverage/diff + 2.0.2 ----- diff --git a/paste/auth/digest.py b/paste/auth/digest.py index 85e0362..553bd88 100644 --- a/paste/auth/digest.py +++ b/paste/auth/digest.py @@ -57,7 +57,7 @@ def _split_auth_string(auth_string): prev = item yield prev.strip() - raise StopIteration + return def _auth_to_kv_pairs(auth_string): """ split a digest auth string into key, value pairs """ diff --git a/paste/fixture.py b/paste/fixture.py index 363f119..8cff72f 100644 --- a/paste/fixture.py +++ b/paste/fixture.py @@ -852,7 +852,7 @@ class TestResponse(object): print("Actual response (has %r)" % no_s, file=sys.stderr) print(self, file=sys.stderr) raise IndexError( - "Body contains string %r" % s) + "Body contains string %r" % no_s) def __repr__(self): body = self.body diff --git a/paste/httpserver.py b/paste/httpserver.py index 035d818..11489b0 100755 --- a/paste/httpserver.py +++ b/paste/httpserver.py @@ -734,7 +734,11 @@ class ThreadPool(object): raise RuntimeError( "Cannot kill worker; killthread/ctypes not available") thread_obj = threading._active.get(thread_id) - killthread.async_raise(thread_id, SystemExit) + try: + killthread.async_raise(thread_id, SystemExit) + except ValueError: + # invalid thread id -- the thread has died in the mean time + pass try: del self.worker_tracker[thread_id] except KeyError: @@ -7,6 +7,8 @@ # the SCM (Mercurial): update MANIFEST.in if needed # - update changelog: docs/news.txt # +# TODO(cdent): Update for github. +# # - hg ci # - hg tag VERSION # - hg push @@ -16,7 +18,7 @@ # - increment version in setup.py (__version__) # - hg ci && hg push -__version__ = '2.0.2' +__version__ = '2.0.3' from setuptools import setup, find_packages import sys, os @@ -49,7 +51,7 @@ setup(name="Paste", keywords='web application server wsgi', author="Ian Bicking", author_email="ianb@colorstudy.com", - url="http://pythonpaste.org", + url="https://pypi.org/project/Paste/", license="MIT", packages=find_packages(exclude=['ez_setup', 'examples', 'packages', 'tests*']), package_data=finddata.find_package_data( diff --git a/tests/test_fileapp.py b/tests/test_fileapp.py index bdd7510..ee7da6a 100644 --- a/tests/test_fileapp.py +++ b/tests/test_fileapp.py @@ -95,7 +95,7 @@ def test_modified(): assert 400 == res.status and b"ill-formed timestamp" in res.body res = harness.get("/",status=400, headers={'if-modified-since': - 'Thu, 22 Dec 2030 01:01:01 GMT'}) + 'Thu, 22 Dec 3030 01:01:01 GMT'}) assert 400 == res.status and b"check your system clock" in res.body def test_file(): diff --git a/tests/test_proxy.py b/tests/test_proxy.py index 44db9f3..844f9a0 100644 --- a/tests/test_proxy.py +++ b/tests/test_proxy.py @@ -1,12 +1,12 @@ from paste import proxy from paste.fixture import TestApp -def test_paste_website(): +def test_proxy_to_website(): # Not the most robust test... # need to test things like POSTing to pages, and getting from pages # that don't set content-length. - app = proxy.Proxy('http://pythonpaste.org') + app = proxy.Proxy('http://httpbin.org') app = TestApp(app) res = app.get('/') - assert 'documentation' in res - + # httpbin is a react app now, so hard to read + assert '<title>httpbin.org</title>' in res @@ -1,5 +1,5 @@ [tox] -envlist = py26, py27, py34, py35, pypy +envlist = py26, py27, py34, py35, py36, py37, pypy [testenv] deps = |