From 2ab791347cfd7e82179b6f55cd5913af7337f625 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Mon, 8 Aug 2011 03:12:42 -0400 Subject: convert below/atop to under/over --- pyramid/config.py | 21 ++++++++++------- pyramid/tests/test_config.py | 26 ++++++++++++++++++++ pyramid/tests/test_tweens.py | 56 ++++++++++++++++++++++---------------------- pyramid/tweens.py | 20 ++++++++-------- 4 files changed, 77 insertions(+), 46 deletions(-) diff --git a/pyramid/config.py b/pyramid/config.py index d947376c8..d6a07e43c 100644 --- a/pyramid/config.py +++ b/pyramid/config.py @@ -82,7 +82,7 @@ from pyramid.traversal import traversal_path from pyramid.tweens import excview_tween_factory from pyramid.tweens import Tweens from pyramid.tweens import tween_factory_name -from pyramid.tweens import MAIN +from pyramid.tweens import MAIN, INGRESS, EXCVIEW from pyramid.urldispatch import RoutesMapper from pyramid.util import DottedNameResolver from pyramid.util import WeakOrderedSet @@ -905,7 +905,7 @@ class Configurator(object): return self._derive_view(view, attr=attr, renderer=renderer) @action_method - def add_tween(self, tween_factory, alias=None, below=None, atop=None): + def add_tween(self, tween_factory, alias=None, under=None, over=None): """ Add a 'tween factory'. A :term:`tween` (think: 'between') is a bit of code that sits between the Pyramid router's main request handling @@ -922,27 +922,32 @@ class Configurator(object): .. note:: This feature is new as of Pyramid 1.1.1. """ - return self._add_tween(tween_factory, alias=alias, below=below, - atop=atop, explicit=False) + return self._add_tween(tween_factory, alias=alias, under=under, + over=over, explicit=False) - def _add_tween(self, tween_factory, alias=None, below=None, atop=None, + def _add_tween(self, tween_factory, alias=None, under=None, over=None, explicit=False): tween_factory = self.maybe_dotted(tween_factory) name = tween_factory_name(tween_factory) + if alias in (MAIN, INGRESS): + raise ConfigurationError('%s is a reserved tween name' % alias) + registry = self.registry tweens = registry.queryUtility(ITweens) if tweens is None: tweens = Tweens() registry.registerUtility(tweens, ITweens) tweens.add_implicit(tween_factory_name(excview_tween_factory), - excview_tween_factory, alias='excview', - below=MAIN) + excview_tween_factory, alias=EXCVIEW, + under=MAIN) if explicit: tweens.add_explicit(name, tween_factory) else: tweens.add_implicit(name, tween_factory, alias=alias, - below=below, atop=atop) + under=under, over=over) self.action(('tween', name, explicit)) + if not explicit and alias is not None: + self.action(('tween', alias, explicit)) @action_method def add_request_handler(self, factory, name): # pragma: no cover diff --git a/pyramid/tests/test_config.py b/pyramid/tests/test_config.py index 598362ccb..8e9ce3c4b 100644 --- a/pyramid/tests/test_config.py +++ b/pyramid/tests/test_config.py @@ -685,6 +685,22 @@ pyramid.tests.test_config.dummy_include2""", config = self._makeOne() self.assertRaises(ConfigurationError, config.add_tween, pyramid.tests) + def test_add_tween_alias_ingress(self): + from pyramid.exceptions import ConfigurationError + from pyramid.tweens import INGRESS + config = self._makeOne() + self.assertRaises(ConfigurationError, + config.add_tween, 'pyramid.tests.test_config.dummy_tween_factory', + alias=INGRESS) + + def test_add_tween_alias_main(self): + from pyramid.exceptions import ConfigurationError + from pyramid.tweens import MAIN + config = self._makeOne() + self.assertRaises(ConfigurationError, + config.add_tween, 'pyramid.tests.test_config.dummy_tween_factory', + alias=MAIN) + def test_add_tweens_conflict(self): from zope.configuration.config import ConfigurationConflictError config = self._makeOne() @@ -692,6 +708,16 @@ pyramid.tests.test_config.dummy_include2""", config.add_tween('pyramid.tests.test_config.dummy_tween_factory') self.assertRaises(ConfigurationConflictError, config.commit) + def test_add_tweens_conflict_same_alias(self): + from zope.configuration.config import ConfigurationConflictError + class ATween(object): pass + atween1 = ATween() + atween2 = ATween() + config = self._makeOne() + config.add_tween(atween1, alias='a') + config.add_tween(atween2, alias='a') + self.assertRaises(ConfigurationConflictError, config.commit) + def test_add_subscriber_defaults(self): from zope.interface import implements from zope.interface import Interface diff --git a/pyramid/tests/test_tweens.py b/pyramid/tests/test_tweens.py index ba04b4e53..7fe800f00 100644 --- a/pyramid/tests/test_tweens.py +++ b/pyramid/tests/test_tweens.py @@ -35,7 +35,7 @@ class TestTweens(unittest.TestCase): self.assertEqual(tweens.order, [('name', INGRESS), ('name2', INGRESS)]) self.assertEqual(tweens.ingress_alias_names, ['name', 'name2']) - tweens.add_implicit('name3', 'factory3', below='name2') + tweens.add_implicit('name3', 'factory3', under='name2') self.assertEqual(tweens.names, ['name', 'name2', 'name3']) self.assertEqual(tweens.factories, @@ -68,7 +68,7 @@ class TestTweens(unittest.TestCase): self.assertEqual(tweens.order, [('n1', INGRESS), ('n2', INGRESS)]) self.assertEqual(tweens.ingress_alias_names, ['n1', 'n2']) - tweens.add_implicit('name3', 'factory3', alias='n3', below='name2') + tweens.add_implicit('name3', 'factory3', alias='n3', under='name2') self.assertEqual(tweens.names, ['name1', 'name2', 'name3']) self.assertEqual(tweens.factories, @@ -125,7 +125,7 @@ class TestTweens(unittest.TestCase): from pyramid.tweens import MAIN tweens = self._makeOne() tweens.add_implicit('name1', 'factory1') - tweens.add_implicit('name2', 'factory2', below=MAIN) + tweens.add_implicit('name2', 'factory2', under=MAIN) self.assertEqual(tweens.implicit(), [('name2', 'factory2'), ('name1', 'factory1')]) @@ -133,12 +133,12 @@ class TestTweens(unittest.TestCase): from pyramid.tweens import MAIN tweens = self._makeOne() add = tweens.add_implicit - add('auth', 'auth_factory', atop='browserid') + add('auth', 'auth_factory', over='browserid') add('dbt', 'dbt_factory') - add('retry', 'retry_factory', below='txnmgr', atop='exceptionview') + add('retry', 'retry_factory', under='txnmgr', over='exceptionview') add('browserid', 'browserid_factory') - add('txnmgr', 'txnmgr_factory', atop='exceptionview') - add('exceptionview', 'excview_factory', below=MAIN) + add('txnmgr', 'txnmgr_factory', over='exceptionview') + add('exceptionview', 'excview_factory', under=MAIN) self.assertEqual(tweens.implicit(), [('txnmgr', 'txnmgr_factory'), ('retry', 'retry_factory'), @@ -151,11 +151,11 @@ class TestTweens(unittest.TestCase): from pyramid.tweens import MAIN tweens = self._makeOne() add = tweens.add_implicit - add('exceptionview', 'excview_factory', below=MAIN) - add('auth', 'auth_factory', atop='browserid') - add('retry', 'retry_factory', below='txnmgr', atop='exceptionview') + add('exceptionview', 'excview_factory', under=MAIN) + add('auth', 'auth_factory', over='browserid') + add('retry', 'retry_factory', under='txnmgr', over='exceptionview') add('browserid', 'browserid_factory') - add('txnmgr', 'txnmgr_factory', atop='exceptionview') + add('txnmgr', 'txnmgr_factory', over='exceptionview') add('dbt', 'dbt_factory') self.assertEqual(tweens.implicit(), [('txnmgr', 'txnmgr_factory'), @@ -169,11 +169,11 @@ class TestTweens(unittest.TestCase): from pyramid.tweens import MAIN tweens = self._makeOne() add = tweens.add_implicit - add('exceptionview', 'excview_factory', alias='e', below=MAIN) - add('auth', 'auth_factory', atop='b') - add('retry', 'retry_factory', below='t', atop='exceptionview') + add('exceptionview', 'excview_factory', alias='e', under=MAIN) + add('auth', 'auth_factory', over='b') + add('retry', 'retry_factory', under='t', over='exceptionview') add('browserid', 'browserid_factory', alias='b') - add('txnmgr', 'txnmgr_factory', alias='t', atop='exceptionview') + add('txnmgr', 'txnmgr_factory', alias='t', over='exceptionview') add('dbt', 'dbt_factory') self.assertEqual(tweens.implicit(), [('txnmgr', 'txnmgr_factory'), @@ -187,9 +187,9 @@ class TestTweens(unittest.TestCase): from pyramid.tweens import MAIN tweens = self._makeOne() add = tweens.add_implicit - add('exceptionview', 'excview_factory', below=MAIN) - add('auth', 'auth_factory', atop='browserid') - add('retry', 'retry_factory', below='txnmgr', atop='exceptionview') + add('exceptionview', 'excview_factory', under=MAIN) + add('auth', 'auth_factory', over='browserid') + add('retry', 'retry_factory', under='txnmgr', over='exceptionview') add('browserid', 'browserid_factory') add('dbt', 'dbt_factory') self.assertEqual(tweens.implicit(), @@ -203,8 +203,8 @@ class TestTweens(unittest.TestCase): tweens = self._makeOne() add = tweens.add_implicit add('dbt', 'dbt_factory') - add('auth', 'auth_factory', atop='browserid') - add('retry', 'retry_factory', below='txnmgr', atop='exceptionview') + add('auth', 'auth_factory', over='browserid') + add('retry', 'retry_factory', under='txnmgr', over='exceptionview') add('browserid', 'browserid_factory') self.assertEqual(tweens.implicit(), [('dbt', 'dbt_factory'), @@ -216,8 +216,8 @@ class TestTweens(unittest.TestCase): from pyramid.tweens import MAIN tweens = self._makeOne() add = tweens.add_implicit - add('exceptionview', 'excview_factory', below=MAIN) - add('retry', 'retry_factory', below='txnmgr', atop='exceptionview') + add('exceptionview', 'excview_factory', under=MAIN) + add('retry', 'retry_factory', under='txnmgr', over='exceptionview') add('browserid', 'browserid_factory') self.assertEqual(tweens.implicit(), [('retry', 'retry_factory'), @@ -228,8 +228,8 @@ class TestTweens(unittest.TestCase): from pyramid.tweens import MAIN tweens = self._makeOne() add = tweens.add_implicit - add('exceptionview', 'excview_factory', alias='e', below=MAIN) - add('retry', 'retry_factory', below='txnmgr', atop='e') + add('exceptionview', 'excview_factory', alias='e', under=MAIN) + add('retry', 'retry_factory', under='txnmgr', over='e') add('browserid', 'browserid_factory') self.assertEqual(tweens.implicit(), [('retry', 'retry_factory'), @@ -241,7 +241,7 @@ class TestTweens(unittest.TestCase): tweens = self._makeOne() add = tweens.add_implicit add('browserid', 'browserid_factory') - add('auth', 'auth_factory', atop='browserid', below='browserid') + add('auth', 'auth_factory', over='browserid', under='browserid') self.assertRaises(CyclicDependencyError, tweens.implicit) def test_implicit_ordering_conflict_indirect(self): @@ -249,8 +249,8 @@ class TestTweens(unittest.TestCase): tweens = self._makeOne() add = tweens.add_implicit add('browserid', 'browserid_factory') - add('auth', 'auth_factory', atop='browserid') - add('dbt', 'dbt_factory', below='browserid', atop='auth') + add('auth', 'auth_factory', over='browserid') + add('dbt', 'dbt_factory', under='browserid', over='auth') self.assertRaises(CyclicDependencyError, tweens.implicit) class TestCyclicDependencyError(unittest.TestCase): @@ -262,5 +262,5 @@ class TestCyclicDependencyError(unittest.TestCase): exc = self._makeOne({'a':['c', 'd'], 'c':['a']}) result = str(exc) self.assertEqual(result, - "'a' sorts atop ['c', 'd']; 'c' sorts atop ['a']") + "'a' sorts over ['c', 'd']; 'c' sorts over ['a']") diff --git a/pyramid/tweens.py b/pyramid/tweens.py index c6e386bfe..1cb62999d 100644 --- a/pyramid/tweens.py +++ b/pyramid/tweens.py @@ -53,7 +53,7 @@ class CyclicDependencyError(Exception): for cycle in cycles: dependent = cycle dependees = cycles[cycle] - L.append('%r sorts atop %r' % (dependent, dependees)) + L.append('%r sorts over %r' % (dependent, dependees)) msg = '; '.join(L) return msg @@ -71,7 +71,7 @@ class Tweens(object): def add_explicit(self, name, factory): self.explicit.append((name, factory)) - def add_implicit(self, name, factory, alias=None, below=None, atop=None): + def add_implicit(self, name, factory, alias=None, under=None, over=None): if alias is not None: self.alias_to_name[alias] = name self.name_to_alias[name] = alias @@ -79,13 +79,13 @@ class Tweens(object): alias = name self.names.append(name) self.factories[name] = factory - if below is None and atop is None: - atop = INGRESS + if under is None and over is None: + over = INGRESS self.ingress_alias_names.append(alias) - if below is not None: - self.order.append((below, alias)) - if atop is not None: - self.order.append((alias, atop)) + if under is not None: + self.order.append((under, alias)) + if over is not None: + self.order.append((alias, over)) def implicit(self): order = [] @@ -127,7 +127,7 @@ class Tweens(object): for v in aliases: # any alias that doesn't have an ordering after we detect all # nodes with orders should get an ordering relative to INGRESS, - # as if it were added with no below or atop in add_implicit + # as if it were added with no under or over in add_implicit if (not v in has_order) and (v not in (INGRESS, MAIN)): order.append((v, INGRESS)) ingress_alias_names.append(v) @@ -208,5 +208,5 @@ def tween_factory_name(factory): MAIN = 'MAIN' INGRESS = 'INGRESS' -EXCVIEW = tween_factory_name(excview_tween_factory) +EXCVIEW = 'excview' -- cgit v1.2.3