summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2011-06-26 21:00:57 -0400
committerChris McDonough <chrism@plope.com>2011-06-26 21:00:57 -0400
commit9395f0747ab5cee6b97674251c586dd662d0dd6d (patch)
treeb544ea409de2faf59e4a6504e174b0081931a3e0
parenta5ad9e9407bdd41681f4cd3b17b884e16681ebe5 (diff)
downloadpyramid-9395f0747ab5cee6b97674251c586dd662d0dd6d.tar.gz
pyramid-9395f0747ab5cee6b97674251c586dd662d0dd6d.tar.bz2
pyramid-9395f0747ab5cee6b97674251c586dd662d0dd6d.zip
- ``pyramid.testing.DummyRequest`` now raises deprecation warnings when
attributes deprecated for ``pyramid.request.Request`` are accessed (like ``response_content_type``). This is for the benefit of folks running unit tests which use DummyRequest instead of a "real" request, so they know things are deprecated without necessarily needing a functional test suite.
-rw-r--r--CHANGES.txt12
-rw-r--r--pyramid/request.py313
-rw-r--r--pyramid/testing.py3
3 files changed, 172 insertions, 156 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index d25b1be66..1f0549895 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,3 +1,15 @@
+Next release
+============
+
+Bug Fixes
+---------
+
+- ``pyramid.testing.DummyRequest`` now raises deprecation warnings when
+ attributes deprecated for ``pyramid.request.Request`` are accessed (like
+ ``response_content_type``). This is for the benefit of folks running unit
+ tests which use DummyRequest instead of a "real" request, so they know
+ things are deprecated without necessarily needing a functional test suite.
+
1.1a3 (2011-06-26)
==================
diff --git a/pyramid/request.py b/pyramid/request.py
index b9dd2dfe9..cc5137869 100644
--- a/pyramid/request.py
+++ b/pyramid/request.py
@@ -21,7 +21,164 @@ from pyramid.url import route_path
class TemplateContext(object):
pass
-class Request(BaseRequest):
+class DeprecatedRequestMethods(object):
+
+ # b/c dict interface for "root factory" code that expects a bare
+ # environ. Explicitly omitted dict methods: clear (unnecessary),
+ # copy (implemented by WebOb), fromkeys (unnecessary); deprecated
+ # as of Pyramid 1.1.
+
+ dictlike = ('Use of the request as a dict-like object is deprecated as '
+ 'of Pyramid 1.1. Use dict-like methods of "request.environ" '
+ 'instead.')
+
+ @deprecate(dictlike)
+ def __contains__(self, k):
+ return self.environ.__contains__(k)
+
+ @deprecate(dictlike)
+ def __delitem__(self, k):
+ return self.environ.__delitem__(k)
+
+ @deprecate(dictlike)
+ def __getitem__(self, k):
+ return self.environ.__getitem__(k)
+
+ @deprecate(dictlike)
+ def __iter__(self):
+ return iter(self.environ)
+
+ @deprecate(dictlike)
+ def __setitem__(self, k, v):
+ self.environ[k] = v
+
+ @deprecate(dictlike)
+ def get(self, k, default=None):
+ return self.environ.get(k, default)
+
+ @deprecate(dictlike)
+ def has_key(self, k):
+ return k in self.environ
+
+ @deprecate(dictlike)
+ def items(self):
+ return self.environ.items()
+
+ @deprecate(dictlike)
+ def iteritems(self):
+ return self.environ.iteritems()
+
+ @deprecate(dictlike)
+ def iterkeys(self):
+ return self.environ.iterkeys()
+
+ @deprecate(dictlike)
+ def itervalues(self):
+ return self.environ.itervalues()
+
+ @deprecate(dictlike)
+ def keys(self):
+ return self.environ.keys()
+
+ @deprecate(dictlike)
+ def pop(self, k):
+ return self.environ.pop(k)
+
+ @deprecate(dictlike)
+ def popitem(self):
+ return self.environ.popitem()
+
+ @deprecate(dictlike)
+ def setdefault(self, v, default):
+ return self.environ.setdefault(v, default)
+
+ @deprecate(dictlike)
+ def update(self, v, **kw):
+ return self.environ.update(v, **kw)
+
+ @deprecate(dictlike)
+ def values(self):
+ return self.environ.values()
+
+ # 1.0 deprecated bw compat code for using response_* values
+
+ rr_dep = ('Accessing and setting "request.response_%s" is '
+ 'deprecated as of Pyramid 1.1; access or set '
+ '"request.response.%s" instead.')
+
+ # response_content_type
+ def _response_content_type_get(self):
+ return self._response_content_type
+ def _response_content_type_set(self, value):
+ self._response_content_type = value
+ def _response_content_type_del(self):
+ del self._response_content_type
+ response_content_type = property(_response_content_type_get,
+ _response_content_type_set,
+ _response_content_type_del)
+ response_content_type = deprecated(
+ response_content_type,
+ rr_dep % ('content_type', 'content_type'))
+
+ # response_headerlist
+ def _response_headerlist_get(self):
+ return self._response_headerlist
+ def _response_headerlist_set(self, value):
+ self._response_headerlist = value
+ def _response_headerlist_del(self):
+ del self._response_headerlist
+ response_headerlist = property(_response_headerlist_get,
+ _response_headerlist_set,
+ _response_headerlist_del)
+ response_headerlist = deprecated(
+ response_headerlist,
+ rr_dep % ('headerlist', 'headerlist'))
+
+ # response_status
+ def _response_status_get(self):
+ return self._response_status
+ def _response_status_set(self, value):
+ self._response_status = value
+ def _response_status_del(self):
+ del self._response_status
+ response_status = property(_response_status_get,
+ _response_status_set,
+ _response_status_del)
+
+ response_status = deprecated(
+ response_status,
+ rr_dep % ('status', 'status'))
+
+ # response_charset
+ def _response_charset_get(self):
+ return self._response_charset
+ def _response_charset_set(self, value):
+ self._response_charset = value
+ def _response_charset_del(self):
+ del self._response_charset
+ response_charset = property(_response_charset_get,
+ _response_charset_set,
+ _response_charset_del)
+ response_charset = deprecated(
+ response_charset,
+ rr_dep % ('charset', 'charset'))
+
+ # response_cache_for
+ def _response_cache_for_get(self):
+ return self._response_cache_for
+ def _response_cache_for_set(self, value):
+ self._response_cache_for = value
+ def _response_cache_for_del(self):
+ del self._response_cache_for
+ response_cache_for = property(_response_cache_for_get,
+ _response_cache_for_set,
+ _response_cache_for_del)
+ response_cache_for = deprecated(
+ response_cache_for,
+ rr_dep % ('cache_for', 'cache_expires'))
+
+
+class Request(BaseRequest, DeprecatedRequestMethods):
"""
A subclass of the :term:`WebOb` Request class. An instance of
this class is created by the :term:`router` and is provided to a
@@ -332,160 +489,6 @@ class Request(BaseRequest):
return False
return adapted is ob
- # b/c dict interface for "root factory" code that expects a bare
- # environ. Explicitly omitted dict methods: clear (unnecessary),
- # copy (implemented by WebOb), fromkeys (unnecessary); deprecated
- # as of Pyramid 1.1.
-
- dictlike = ('Use of the request as a dict-like object is deprecated as '
- 'of Pyramid 1.1. Use dict-like methods of "request.environ" '
- 'instead.')
-
- @deprecate(dictlike)
- def __contains__(self, k):
- return self.environ.__contains__(k)
-
- @deprecate(dictlike)
- def __delitem__(self, k):
- return self.environ.__delitem__(k)
-
- @deprecate(dictlike)
- def __getitem__(self, k):
- return self.environ.__getitem__(k)
-
- @deprecate(dictlike)
- def __iter__(self):
- return iter(self.environ)
-
- @deprecate(dictlike)
- def __setitem__(self, k, v):
- self.environ[k] = v
-
- @deprecate(dictlike)
- def get(self, k, default=None):
- return self.environ.get(k, default)
-
- @deprecate(dictlike)
- def has_key(self, k):
- return k in self.environ
-
- @deprecate(dictlike)
- def items(self):
- return self.environ.items()
-
- @deprecate(dictlike)
- def iteritems(self):
- return self.environ.iteritems()
-
- @deprecate(dictlike)
- def iterkeys(self):
- return self.environ.iterkeys()
-
- @deprecate(dictlike)
- def itervalues(self):
- return self.environ.itervalues()
-
- @deprecate(dictlike)
- def keys(self):
- return self.environ.keys()
-
- @deprecate(dictlike)
- def pop(self, k):
- return self.environ.pop(k)
-
- @deprecate(dictlike)
- def popitem(self):
- return self.environ.popitem()
-
- @deprecate(dictlike)
- def setdefault(self, v, default):
- return self.environ.setdefault(v, default)
-
- @deprecate(dictlike)
- def update(self, v, **kw):
- return self.environ.update(v, **kw)
-
- @deprecate(dictlike)
- def values(self):
- return self.environ.values()
-
- # 1.0 deprecated bw compat code for using response_* values
-
- rr_dep = ('Accessing and setting "request.response_%s" is '
- 'deprecated as of Pyramid 1.1; access or set '
- '"request.response.%s" instead.')
-
- # response_content_type
- def _response_content_type_get(self):
- return self._response_content_type
- def _response_content_type_set(self, value):
- self._response_content_type = value
- def _response_content_type_del(self):
- del self._response_content_type
- response_content_type = property(_response_content_type_get,
- _response_content_type_set,
- _response_content_type_del)
- response_content_type = deprecated(
- response_content_type,
- rr_dep % ('content_type', 'content_type'))
-
- # response_headerlist
- def _response_headerlist_get(self):
- return self._response_headerlist
- def _response_headerlist_set(self, value):
- self._response_headerlist = value
- def _response_headerlist_del(self):
- del self._response_headerlist
- response_headerlist = property(_response_headerlist_get,
- _response_headerlist_set,
- _response_headerlist_del)
- response_headerlist = deprecated(
- response_headerlist,
- rr_dep % ('headerlist', 'headerlist'))
-
- # response_status
- def _response_status_get(self):
- return self._response_status
- def _response_status_set(self, value):
- self._response_status = value
- def _response_status_del(self):
- del self._response_status
- response_status = property(_response_status_get,
- _response_status_set,
- _response_status_del)
-
- response_status = deprecated(
- response_status,
- rr_dep % ('status', 'status'))
-
- # response_charset
- def _response_charset_get(self):
- return self._response_charset
- def _response_charset_set(self, value):
- self._response_charset = value
- def _response_charset_del(self):
- del self._response_charset
- response_charset = property(_response_charset_get,
- _response_charset_set,
- _response_charset_del)
- response_charset = deprecated(
- response_charset,
- rr_dep % ('charset', 'charset'))
-
- # response_cache_for
- def _response_cache_for_get(self):
- return self._response_cache_for
- def _response_cache_for_set(self, value):
- self._response_cache_for = value
- def _response_cache_for_del(self):
- del self._response_cache_for
- response_cache_for = property(_response_cache_for_get,
- _response_cache_for_set,
- _response_cache_for_del)
- response_cache_for = deprecated(
- response_cache_for,
- rr_dep % ('cache_for', 'cache_expires'))
-
def route_request_iface(name, bases=()):
iface = InterfaceClass('%s_IRequest' % name, bases=bases)
# for exception view lookups
diff --git a/pyramid/testing.py b/pyramid/testing.py
index 27942baf5..5b0f37f45 100644
--- a/pyramid/testing.py
+++ b/pyramid/testing.py
@@ -25,6 +25,7 @@ from pyramid.security import Everyone
from pyramid.security import has_permission
from pyramid.threadlocal import get_current_registry
from pyramid.threadlocal import manager
+from pyramid.request import DeprecatedRequestMethods
_marker = object()
@@ -619,7 +620,7 @@ class DummySession(dict):
def get_csrf_token(self):
return self.get('_csrft_', None)
-class DummyRequest(object):
+class DummyRequest(DeprecatedRequestMethods):
""" A DummyRequest object (incompletely) imitates a :term:`request` object.
The ``params``, ``environ``, ``headers``, ``path``, and