diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-05-21 02:47:43 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-05-21 02:47:43 +0000 |
| commit | 385084582eeff5f2f1a93f3b90c091dc1a4ad50e (patch) | |
| tree | 2eb1a6e84ebb7dc4337794bef12ba6dc72acb9c2 | |
| parent | 42b75b897add6ab295c18dfc4ce9937e4a212b3e (diff) | |
| download | pyramid-385084582eeff5f2f1a93f3b90c091dc1a4ad50e.tar.gz pyramid-385084582eeff5f2f1a93f3b90c091dc1a4ad50e.tar.bz2 pyramid-385084582eeff5f2f1a93f3b90c091dc1a4ad50e.zip | |
Remove cacheability voodoo.
| -rw-r--r-- | repoze/bfg/push.py | 2 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_integration.py | 5 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_view.py | 2 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_zcml.py | 38 | ||||
| -rw-r--r-- | repoze/bfg/view.py | 13 | ||||
| -rw-r--r-- | repoze/bfg/wsgi.py | 4 | ||||
| -rw-r--r-- | repoze/bfg/zcml.py | 18 |
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 |
