diff --git a/pyramid/compat.py b/pyramid/compat.py index 8c8645460b..8a1e899099 100644 --- a/pyramid/compat.py +++ b/pyramid/compat.py @@ -17,6 +17,12 @@ except ImportError: # pragma: no cover import pickle +try: + from functools import lru_cache + +except ImportError: + from repoze.lru import lru_cache + # PY3 is left as bw-compat but PY2 should be used for most checks. PY2 = sys.version_info[0] == 2 PY3 = sys.version_info[0] == 3 diff --git a/pyramid/static.py b/pyramid/static.py index a8088129ec..70fdf877b9 100644 --- a/pyramid/static.py +++ b/pyramid/static.py @@ -17,14 +17,15 @@ resource_isdir, ) -from repoze.lru import lru_cache - from pyramid.asset import ( abspath_from_asset_spec, resolve_asset_spec, ) -from pyramid.compat import text_ +from pyramid.compat import ( + lru_cache, + text_, +) from pyramid.httpexceptions import ( HTTPNotFound, diff --git a/pyramid/traversal.py b/pyramid/traversal.py index 6414450673..d8f4690fd0 100644 --- a/pyramid/traversal.py +++ b/pyramid/traversal.py @@ -1,8 +1,6 @@ from zope.interface import implementer from zope.interface.interfaces import IInterface -from repoze.lru import lru_cache - from pyramid.interfaces import ( IResourceURL, IRequestFactory, @@ -20,6 +18,7 @@ is_nonstr_iter, decode_path_info, unquote_bytes_to_wsgi, + lru_cache, ) from pyramid.encode import url_quote diff --git a/pyramid/url.py b/pyramid/url.py index 2e964dc7e8..917a3c675b 100644 --- a/pyramid/url.py +++ b/pyramid/url.py @@ -2,8 +2,6 @@ import os -from repoze.lru import lru_cache - from pyramid.interfaces import ( IResourceURL, IRoutesMapper, @@ -12,6 +10,7 @@ from pyramid.compat import ( bytes_, + lru_cache, string_types, ) from pyramid.encode import ( diff --git a/setup.py b/setup.py index 2af0535c3a..3a7f7e1611 100644 --- a/setup.py +++ b/setup.py @@ -12,6 +12,8 @@ # ############################################################################## +import sys + from setuptools import setup, find_packages def readfile(name): @@ -24,7 +26,6 @@ def readfile(name): install_requires = [ 'setuptools', 'WebOb >= 1.7.0rc2', # Response.has_body - 'repoze.lru >= 0.4', # py3 compat 'zope.interface >= 3.8.0', # has zope.interface.registry 'zope.deprecation >= 3.5.0', # py3 compat 'venusian >= 1.0a3', # ``ignore`` @@ -87,6 +88,7 @@ def readfile(name): python_requires='>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*', install_requires=install_requires, extras_require={ + ':python_version<"3.2"': ['repoze.lru >= 0.4'], 'testing': testing_extras, 'docs': docs_extras, },