summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.txt6
-rw-r--r--LICENSE.txt53
-rw-r--r--pyramid/compat.py8
-rw-r--r--pyramid/compat/__init__.py157
-rw-r--r--pyramid/config.py4
-rw-r--r--pyramid/tests/test_compat.py9
-rw-r--r--pyramid/tests/test_config.py4
-rw-r--r--pyramid/urldispatch.py1
-rw-r--r--pyramid/wsgi.py2
9 files changed, 18 insertions, 226 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 09e6139cc..609f62bd3 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,6 +1,12 @@
Next release
============
+Internals
+---------
+
+- Remove ``compat`` code that served only the purpose of providing backwards
+ compatibility with Python 2.4.
+
Documentation
-------------
diff --git a/LICENSE.txt b/LICENSE.txt
index 28824ee3f..f7ace1698 100644
--- a/LICENSE.txt
+++ b/LICENSE.txt
@@ -98,59 +98,6 @@ under the ZPL):
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
-Portions of the code in Pyramid are supplied under the Python Software
-Foundation License version 2 (headers within individiual files indicate that
-these portions are so licensed):
-
- PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
- --------------------------------------------
-
- 1. This LICENSE AGREEMENT is between the Python Software Foundation
- ("PSF"), and the Individual or Organization ("Licensee") accessing and
- otherwise using this software ("Python") in source or binary form and
- its associated documentation.
-
- 2. Subject to the terms and conditions of this License Agreement, PSF
- hereby grants Licensee a nonexclusive, royalty-free, world-wide
- license to reproduce, analyze, test, perform and/or display publicly,
- prepare derivative works, distribute, and otherwise use Python
- alone or in any derivative version, provided, however, that PSF's
- License Agreement and PSF's notice of copyright, i.e., "Copyright (c)
- 2001, 2002, 2003, 2004, 2005, 2006, 2007 Python Software Foundation;
- All Rights Reserved" are retained in Python alone or in any derivative
- version prepared by Licensee.
-
- 3. In the event Licensee prepares a derivative work that is based on
- or incorporates Python or any part thereof, and wants to make
- the derivative work available to others as provided herein, then
- Licensee hereby agrees to include in any such work a brief summary of
- the changes made to Python.
-
- 4. PSF is making Python available to Licensee on an "AS IS"
- basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
- IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
- DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
- FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
- INFRINGE ANY THIRD PARTY RIGHTS.
-
- 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
- FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
- A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
- OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
-
- 6. This License Agreement will automatically terminate upon a material
- breach of its terms and conditions.
-
- 7. Nothing in this License Agreement shall be deemed to create any
- relationship of agency, partnership, or joint venture between PSF and
- Licensee. This License Agreement does not grant permission to use PSF
- trademarks or trade name in a trademark sense to endorse or promote
- products or services of Licensee, or any third party.
-
- 8. By copying, installing or otherwise using Python, Licensee
- agrees to be bound by the terms and conditions of this License
- Agreement.
-
The documentation portion of Pyramid (the rendered contents of the
"docs" directory of a software distribution or checkout) is supplied
under the Creative Commons Attribution-Noncommercial-Share Alike 3.0
diff --git a/pyramid/compat.py b/pyramid/compat.py
new file mode 100644
index 000000000..7d723715e
--- /dev/null
+++ b/pyramid/compat.py
@@ -0,0 +1,8 @@
+try:
+ import json
+except ImportError: # pragma: no cover
+ try:
+ import simplejson as json
+ except NotImplementedError:
+ from django.utils import simplejson as json # GAE
+
diff --git a/pyramid/compat/__init__.py b/pyramid/compat/__init__.py
deleted file mode 100644
index 096fb3ddf..000000000
--- a/pyramid/compat/__init__.py
+++ /dev/null
@@ -1,157 +0,0 @@
-# Some code in this file was lifted wholesale from Django
-# <http://djangoproject.com> (see
-# http://code.djangoproject.com/browser/django/trunk/LICENSE for
-# license text; BSD-like)
-
-# License for code in this file that was taken from Python 2.5.
-
-# PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
-# --------------------------------------------
-#
-# 1. This LICENSE AGREEMENT is between the Python Software Foundation
-# ("PSF"), and the Individual or Organization ("Licensee") accessing and
-# otherwise using this software ("Python") in source or binary form and
-# its associated documentation.
-#
-# 2. Subject to the terms and conditions of this License Agreement, PSF
-# hereby grants Licensee a nonexclusive, royalty-free, world-wide
-# license to reproduce, analyze, test, perform and/or display publicly,
-# prepare derivative works, distribute, and otherwise use Python
-# alone or in any derivative version, provided, however, that PSF's
-# License Agreement and PSF's notice of copyright, i.e., "Copyright (c)
-# 2001, 2002, 2003, 2004, 2005, 2006, 2007 Python Software Foundation;
-# All Rights Reserved" are retained in Python alone or in any derivative
-# version prepared by Licensee.
-#
-# 3. In the event Licensee prepares a derivative work that is based on
-# or incorporates Python or any part thereof, and wants to make
-# the derivative work available to others as provided herein, then
-# Licensee hereby agrees to include in any such work a brief summary of
-# the changes made to Python.
-#
-# 4. PSF is making Python available to Licensee on an "AS IS"
-# basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
-# IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
-# DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
-# FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
-# INFRINGE ANY THIRD PARTY RIGHTS.
-#
-# 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
-# FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
-# A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
-# OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
-#
-# 6. This License Agreement will automatically terminate upon a material
-# breach of its terms and conditions.
-#
-# 7. Nothing in this License Agreement shall be deemed to create any
-# relationship of agency, partnership, or joint venture between PSF and
-# Licensee. This License Agreement does not grant permission to use PSF
-# trademarks or trade name in a trademark sense to endorse or promote
-# products or services of Licensee, or any third party.
-#
-# 8. By copying, installing or otherwise using Python, Licensee
-# agrees to be bound by the terms and conditions of this License
-# Agreement.
-
-
-try: # pragma: no cover
- from functools import wraps
-except ImportError: #pragma no cover
- # < 2.5
- def curry(_curried_func, *args, **kwargs):
- def _curried(*moreargs, **morekwargs):
- return _curried_func(*(args+moreargs), **dict(kwargs, **morekwargs))
- return _curried
-
- ### Begin from Python 2.5 functools.py ###################################
- # Summary of changes made to the Python 2.5 code below:
- # * swapped ``partial`` for ``curry`` to maintain backwards-compatibility
- # in Django.
- # * Wrapped the ``setattr`` call in ``update_wrapper`` with a try-except
- # block to make it compatible with Python 2.3, which doesn't allow
- # assigning to ``__name__``.
-
- # Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007 Python Software
- # Foundation.
- # All Rights Reserved.
- ##########################################################################
-
- # update_wrapper() and wraps() are tools to help write
- # wrapper functions that can handle naive introspection
-
- WRAPPER_ASSIGNMENTS = ('__module__', '__name__', '__doc__')
- WRAPPER_UPDATES = ('__dict__',)
- def update_wrapper(wrapper,
- wrapped,
- assigned = WRAPPER_ASSIGNMENTS,
- updated = WRAPPER_UPDATES):
- """Update a wrapper function to look like the wrapped function
-
- wrapper is the function to be updated
- wrapped is the original function
- assigned is a tuple naming the attributes assigned directly
- from the wrapped function to the wrapper function (defaults to
- functools.WRAPPER_ASSIGNMENTS)
- updated is a tuple naming the attributes off the wrapper that
- are updated with the corresponding attribute from the wrapped
- function (defaults to functools.WRAPPER_UPDATES)
- """
- for attr in assigned:
- setattr(wrapper, attr, getattr(wrapped, attr))
-
- for attr in updated:
- getattr(wrapper, attr).update(getattr(wrapped, attr))
- # Return the wrapper so this can be used as a decorator via curry()
- return wrapper
-
- def wraps(wrapped,
- assigned = WRAPPER_ASSIGNMENTS,
- updated = WRAPPER_UPDATES):
- """Decorator factory to apply update_wrapper() to a wrapper function
-
- Returns a decorator that invokes update_wrapper() with the decorated
- function as the wrapper argument and the arguments to wraps() as the
- remaining arguments. Default arguments are as for update_wrapper().
- This is a convenience function to simplify applying curry() to
- update_wrapper().
- """
- return curry(update_wrapper, wrapped=wrapped,
- assigned=assigned, updated=updated)
-
-### End from Python 2.5 functools.py ##########################################
-
-try:
- all = all
-except NameError: # pragma: no cover
- def all(iterable):
- for element in iterable:
- if not element:
- return False
- return True
-
-try:
- import json
-except ImportError: # pragma: no cover
- try:
- import simplejson as json
- except NotImplementedError:
- from django.utils import simplejson as json # GAE
-
-
-
-try:
- from hashlib import md5
-except ImportError: # pragma: no cover
- import md5
- md5 = md5.new
-
-try:
- any = any # make importable
-except NameError: # pragma: no cover
- def any(L):
- for thing in L:
- if thing:
- return True
- return False
-
diff --git a/pyramid/config.py b/pyramid/config.py
index 29da51875..59ecd5bc8 100644
--- a/pyramid/config.py
+++ b/pyramid/config.py
@@ -5,6 +5,7 @@ import sys
import types
import traceback
import warnings
+from hashlib import md5
import venusian
@@ -52,9 +53,6 @@ from pyramid.interfaces import IViewMapperFactory
from pyramid import renderers
from pyramid.authorization import ACLAuthorizationPolicy
-from pyramid.compat import all
-from pyramid.compat import md5
-from pyramid.compat import any
from pyramid.events import ApplicationCreated
from pyramid.exceptions import ConfigurationError
from pyramid.exceptions import PredicateMismatch
diff --git a/pyramid/tests/test_compat.py b/pyramid/tests/test_compat.py
deleted file mode 100644
index 16fc28826..000000000
--- a/pyramid/tests/test_compat.py
+++ /dev/null
@@ -1,9 +0,0 @@
-import unittest
-
-class TestAliases(unittest.TestCase):
- def test_all(self):
- from pyramid.compat import all
- self.assertEqual(all([True, True]), True)
- self.assertEqual(all([False, False]), False)
- self.assertEqual(all([False, True]), False)
-
diff --git a/pyramid/tests/test_config.py b/pyramid/tests/test_config.py
index a50434f7e..ff226617e 100644
--- a/pyramid/tests/test_config.py
+++ b/pyramid/tests/test_config.py
@@ -1017,7 +1017,7 @@ class ConfiguratorTests(unittest.TestCase):
self.assertEqual(wrapper, view)
def test_add_view_same_phash_overrides_existing_single_view(self):
- from pyramid.compat import md5
+ from hashlib import md5
from zope.interface import Interface
from pyramid.interfaces import IRequest
from pyramid.interfaces import IView
@@ -1040,7 +1040,7 @@ class ConfiguratorTests(unittest.TestCase):
self.assertEqual(wrapper(None, request), 'OK')
def test_add_view_exc_same_phash_overrides_existing_single_view(self):
- from pyramid.compat import md5
+ from hashlib import md5
from zope.interface import implementedBy
from pyramid.interfaces import IRequest
from pyramid.interfaces import IView
diff --git a/pyramid/urldispatch.py b/pyramid/urldispatch.py
index 230b18e54..2cbbb8709 100644
--- a/pyramid/urldispatch.py
+++ b/pyramid/urldispatch.py
@@ -5,7 +5,6 @@ from zope.interface import implements
from pyramid.interfaces import IRoutesMapper
from pyramid.interfaces import IRoute
-from pyramid.compat import all
from pyramid.encode import url_quote
from pyramid.exceptions import URLDecodeError
from pyramid.traversal import traversal_path
diff --git a/pyramid/wsgi.py b/pyramid/wsgi.py
index e4c61ff63..3bbe31790 100644
--- a/pyramid/wsgi.py
+++ b/pyramid/wsgi.py
@@ -1,4 +1,4 @@
-from pyramid.compat import wraps
+from functools import wraps
from pyramid.request import call_app_with_subpath_as_path_info
def wsgiapp(wrapped):