diff options
| author | Chris McDonough <chrism@plope.com> | 2011-06-26 21:00:57 -0400 |
|---|---|---|
| committer | Chris McDonough <chrism@plope.com> | 2011-06-26 21:00:57 -0400 |
| commit | 9395f0747ab5cee6b97674251c586dd662d0dd6d (patch) | |
| tree | b544ea409de2faf59e4a6504e174b0081931a3e0 | |
| parent | a5ad9e9407bdd41681f4cd3b17b884e16681ebe5 (diff) | |
| download | pyramid-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.txt | 12 | ||||
| -rw-r--r-- | pyramid/request.py | 313 | ||||
| -rw-r--r-- | pyramid/testing.py | 3 |
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 |
