summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-05-21 02:47:43 +0000
committerChris McDonough <chrism@agendaless.com>2009-05-21 02:47:43 +0000
commit385084582eeff5f2f1a93f3b90c091dc1a4ad50e (patch)
tree2eb1a6e84ebb7dc4337794bef12ba6dc72acb9c2
parent42b75b897add6ab295c18dfc4ce9937e4a212b3e (diff)
downloadpyramid-385084582eeff5f2f1a93f3b90c091dc1a4ad50e.tar.gz
pyramid-385084582eeff5f2f1a93f3b90c091dc1a4ad50e.tar.bz2
pyramid-385084582eeff5f2f1a93f3b90c091dc1a4ad50e.zip
Remove cacheability voodoo.
-rw-r--r--repoze/bfg/push.py2
-rw-r--r--repoze/bfg/tests/test_integration.py5
-rw-r--r--repoze/bfg/tests/test_view.py2
-rw-r--r--repoze/bfg/tests/test_zcml.py38
-rw-r--r--repoze/bfg/view.py13
-rw-r--r--repoze/bfg/wsgi.py4
-rw-r--r--repoze/bfg/zcml.py18
7 files changed, 18 insertions, 64 deletions
diff --git a/repoze/bfg/push.py b/repoze/bfg/push.py
index cefa19efc..67a60f7f6 100644
--- a/repoze/bfg/push.py
+++ b/repoze/bfg/push.py
@@ -37,4 +37,4 @@ class pushpage(object):
def _curried(context, request):
kw = wrapped(context, request)
return render_template_to_response(path, **kw)
- return wraps(wrapped)(_curried) # pickleability and grokkability
+ return wraps(wrapped)(_curried) # grokkability
diff --git a/repoze/bfg/tests/test_integration.py b/repoze/bfg/tests/test_integration.py
index fb07d76a5..8c088fce0 100644
--- a/repoze/bfg/tests/test_integration.py
+++ b/repoze/bfg/tests/test_integration.py
@@ -141,7 +141,7 @@ class TestGrokkedApp(unittest.TestCase):
def tearDown(self):
cleanUp()
- def test_registry_actions_cannot_be_pickled_and_unpickled(self):
+ def test_it(self):
import repoze.bfg.tests.grokkedapp as package
from zope.configuration import config
@@ -151,8 +151,7 @@ class TestGrokkedApp(unittest.TestCase):
context.package = package
xmlconfig.include(context, 'configure.zcml', package)
actions = context.actions
- import cPickle
- self.assertRaises(cPickle.PicklingError, cPickle.dumps, actions, -1)
+ self.failUnless(actions)
class DummyContext:
pass
diff --git a/repoze/bfg/tests/test_view.py b/repoze/bfg/tests/test_view.py
index cb2336f2a..a96051226 100644
--- a/repoze/bfg/tests/test_view.py
+++ b/repoze/bfg/tests/test_view.py
@@ -457,7 +457,7 @@ class TestBFGViewDecorator(unittest.TestCase):
self.assertEqual(wrapped.__permission__, None)
self.assertEqual(wrapped.__for__, Interface)
self.assertEqual(wrapped.__request_type__, IRequest)
- self.assertEqual(wrapped.__grok_module__, foo.__module__)
+ self.assertEqual(wrapped.__module__, foo.__module__)
self.assertEqual(wrapped.__name__, foo.__name__)
self.assertEqual(wrapped.__doc__, foo.__doc__)
for k, v in foo.__dict__.items():
diff --git a/repoze/bfg/tests/test_zcml.py b/repoze/bfg/tests/test_zcml.py
index 0a1103b26..c2703f7c1 100644
--- a/repoze/bfg/tests/test_zcml.py
+++ b/repoze/bfg/tests/test_zcml.py
@@ -48,7 +48,7 @@ class TestViewDirective(unittest.TestCase):
self.assertEqual(permission['args'][5], None)
regadapt = actions[1]
- regadapt_discriminator = ('view', IFoo, '', IRequest, IView, True)
+ regadapt_discriminator = ('view', IFoo, '', IRequest, IView)
self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
self.assertEqual(regadapt['callable'], handler)
self.assertEqual(regadapt['args'][0], 'registerAdapter')
@@ -87,32 +87,7 @@ class TestViewDirective(unittest.TestCase):
self.assertEqual(permission['args'][5], None)
regadapt = actions[1]
- regadapt_discriminator = ('view', IFoo, '', IDummy, IView, True)
- self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
- self.assertEqual(regadapt['callable'], handler)
- self.assertEqual(regadapt['args'][0], 'registerAdapter')
- self.assertEqual(regadapt['args'][1], view)
- self.assertEqual(regadapt['args'][2], (IFoo, IDummy))
- self.assertEqual(regadapt['args'][3], IView)
- self.assertEqual(regadapt['args'][4], '')
- self.assertEqual(regadapt['args'][5], None)
-
- def test_uncacheable(self):
- context = DummyContext()
- class IFoo:
- pass
- view = lambda *arg: None
- self._callFUT(context, 'repoze.view', IFoo, view=view,
- request_type=IDummy, cacheable=False)
- actions = context.actions
- from repoze.bfg.interfaces import IView
- from repoze.bfg.zcml import handler
- from repoze.bfg.zcml import Uncacheable
-
- self.assertEqual(len(actions), 2)
-
- regadapt = actions[1]
- regadapt_discriminator = ('view', IFoo, '', IDummy, IView, Uncacheable)
+ regadapt_discriminator = ('view', IFoo, '', IDummy, IView)
self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
self.assertEqual(regadapt['callable'], handler)
self.assertEqual(regadapt['args'][0], 'registerAdapter')
@@ -146,7 +121,7 @@ class TestViewDirective(unittest.TestCase):
self.assertEqual(len(actions), 1)
regadapt = actions[0]
- regadapt_discriminator = ('view', IFoo, '', IBar, IView, True)
+ regadapt_discriminator = ('view', IFoo, '', IBar, IView)
self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
self.assertEqual(regadapt['callable'], handler)
@@ -181,7 +156,7 @@ class TestViewDirective(unittest.TestCase):
self.assertEqual(len(actions), 1)
regadapt = actions[0]
- regadapt_discriminator = ('view', IFoo, '', IBar, IView, True)
+ regadapt_discriminator = ('view', IFoo, '', IBar, IView)
self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
self.assertEqual(regadapt['callable'], handler)
@@ -217,7 +192,7 @@ class TestViewDirective(unittest.TestCase):
self.assertEqual(len(actions), 1)
regadapt = actions[0]
- regadapt_discriminator = ('view', None, '', IRequest, IView, True)
+ regadapt_discriminator = ('view', None, '', IRequest, IView)
self.assertEqual(regadapt['discriminator'], regadapt_discriminator)
self.assertEqual(regadapt['callable'], handler)
@@ -427,13 +402,12 @@ class TestRoute(unittest.TestCase):
view_discriminator = view_action['discriminator']
view_args = view_action['args']
self.assertEqual(view_callable, handler)
- self.assertEqual(len(view_discriminator), 6)
+ self.assertEqual(len(view_discriminator), 5)
self.assertEqual(view_discriminator[0], 'view')
self.assertEqual(view_discriminator[1], IRoutesContext)
self.assertEqual(view_discriminator[2],'name')
self.assertEqual(view_discriminator[3], IRequest)
self.assertEqual(view_discriminator[4], IView)
- self.assertEqual(view_discriminator[5], True)
self.assertEqual(view_args, ('registerAdapter', view,
(IRoutesContext, IRequest), IView,
'name', None))
diff --git a/repoze/bfg/view.py b/repoze/bfg/view.py
index 924bb35fc..a9a7cb973 100644
--- a/repoze/bfg/view.py
+++ b/repoze/bfg/view.py
@@ -235,14 +235,6 @@ class bfg_view(object):
self.permission = permission
def __call__(self, wrapped):
- # We intentionally return a do-little un-functools-wrapped
- # decorator here so as to make the decorated function
- # unpickleable; applications which use bfg_view decorators
- # should never be able to load actions from an actions cache;
- # instead they should rerun the file_configure function each
- # time the application starts in case any of the decorators
- # has been changed. Disallowing these functions from being
- # pickled enforces that.
def _bfg_view(context, request):
return wrapped(context, request)
_bfg_view.__is_bfg_view__ = True
@@ -250,10 +242,7 @@ class bfg_view(object):
_bfg_view.__for__ = self.for_
_bfg_view.__view_name__ = self.name
_bfg_view.__request_type__ = self.request_type
- # we assign to __grok_module__ here rather than __module__ to
- # make it unpickleable but allow for the grokker to be able to
- # find it
- _bfg_view.__grok_module__ = wrapped.__module__
+ _bfg_view.__module__ = wrapped.__module__
_bfg_view.__name__ = wrapped.__name__
_bfg_view.__doc__ = wrapped.__doc__
_bfg_view.__dict__.update(wrapped.__dict__)
diff --git a/repoze/bfg/wsgi.py b/repoze/bfg/wsgi.py
index a74ccecca..abe7ebead 100644
--- a/repoze/bfg/wsgi.py
+++ b/repoze/bfg/wsgi.py
@@ -39,7 +39,7 @@ def wsgiapp(wrapped):
"""
def decorator(context, request):
return request.get_response(wrapped)
- return wraps(wrapped)(decorator) # pickleability
+ return wraps(wrapped)(decorator) # grokkability
def wsgiapp2(wrapped):
""" Decorator to turn a WSGI application into a repoze.bfg view
@@ -100,7 +100,7 @@ def wsgiapp2(wrapped):
script_name = script_name[:-1]
request.environ['SCRIPT_NAME'] = script_name
return request.get_response(wrapped)
- return wraps(wrapped)(decorator) # pickleability
+ return wraps(wrapped)(decorator) # grokkability
class HTTPException(object):
def __call__(self, environ, start_response, exc_info=False):
diff --git a/repoze/bfg/zcml.py b/repoze/bfg/zcml.py
index 7ea6eae8d..34b071676 100644
--- a/repoze/bfg/zcml.py
+++ b/repoze/bfg/zcml.py
@@ -33,8 +33,8 @@ def handler(methodName, *args, **kwargs):
method(*args, **kwargs)
class Uncacheable(object):
- """ Include in discriminators of actions which are not cacheable """
- pass
+ """ Include in discriminators of actions which are not cacheable;
+ this class only exists for backwards compatibility (<0.8.1)"""
def view(_context,
permission=None,
@@ -42,7 +42,7 @@ def view(_context,
view=None,
name="",
request_type=None,
- cacheable=True,
+ cacheable=True, # not used, here for b/w compat < 0.8
):
if not view:
@@ -80,10 +80,8 @@ def view(_context,
_context.info),
)
- cacheable = cacheable or Uncacheable
-
_context.action(
- discriminator = ('view', for_, name, request_type, IView, cacheable),
+ discriminator = ('view', for_, name, request_type, IView),
callable = handler,
args = ('registerAdapter',
view, (for_, request_type), IView, name,
@@ -164,14 +162,8 @@ class BFGViewFunctionGrokker(martian.InstanceGrokker):
name = obj.__view_name__
request_type = obj.__request_type__
context = kw['context']
- # we dont technically need to pass "Uncacheable" here; any
- # view function decorated with an __is_bfg_view__ attr via
- # repoze.bfg.view.bfg_view is unpickleable; but the
- # uncacheable bit helps pickling fail more quickly
- # (pickling is never attempted)
view(context, permission=permission, for_=for_,
- view=obj, name=name, request_type=request_type,
- cacheable=Uncacheable)
+ view=obj, name=name, request_type=request_type)
return True
return False