summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris McDonough <chrism@plope.com>2011-08-08 03:12:42 -0400
committerChris McDonough <chrism@plope.com>2011-08-08 03:12:42 -0400
commit2ab791347cfd7e82179b6f55cd5913af7337f625 (patch)
treeba0bd4cdf8940a6d07bf7a63836ceb38b7c06843
parent98dbaf4a9a369e28020c33f239135190dc44a086 (diff)
downloadpyramid-2ab791347cfd7e82179b6f55cd5913af7337f625.tar.gz
pyramid-2ab791347cfd7e82179b6f55cd5913af7337f625.tar.bz2
pyramid-2ab791347cfd7e82179b6f55cd5913af7337f625.zip
convert below/atop to under/over
-rw-r--r--pyramid/config.py21
-rw-r--r--pyramid/tests/test_config.py26
-rw-r--r--pyramid/tests/test_tweens.py56
-rw-r--r--pyramid/tweens.py20
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'