diff options
| author | Chris McDonough <chrism@agendaless.com> | 2009-01-22 08:59:51 +0000 |
|---|---|---|
| committer | Chris McDonough <chrism@agendaless.com> | 2009-01-22 08:59:51 +0000 |
| commit | 74db82d177093f4b1102d70832f8abd9b894dd61 (patch) | |
| tree | 0125dfd8974a79b1a5a925afc0637a787af9f466 /repoze | |
| parent | 5b9105ad8de57f21269608b1536720a5425a1fd1 (diff) | |
| download | pyramid-74db82d177093f4b1102d70832f8abd9b894dd61.tar.gz pyramid-74db82d177093f4b1102d70832f8abd9b894dd61.tar.bz2 pyramid-74db82d177093f4b1102d70832f8abd9b894dd61.zip | |
- The ``unicode_path_segments`` configuration variable and the
``BFG_UNICODE_PATH_SEGMENTS`` configuration variable have been
removed. Path segments are now always passed to model
``__getitem__`` methods as unicode. "True" has been the default for
this setting since 0.5.4, but changing this configuration setting to
false allowed you to go back to passing raw path element strings to
model ``__getitem__`` methods. This services a speed goal (we get
about +80 req/s by removing the check), and it's clearer just to
always expect unicode path segments in model ``__getitem__``
methods.
Diffstat (limited to 'repoze')
| -rw-r--r-- | repoze/bfg/settings.py | 4 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_settings.py | 17 | ||||
| -rw-r--r-- | repoze/bfg/tests/test_traversal.py | 14 | ||||
| -rw-r--r-- | repoze/bfg/traversal.py | 22 |
4 files changed, 7 insertions, 50 deletions
diff --git a/repoze/bfg/settings.py b/repoze/bfg/settings.py index b4414bb34..795b5932a 100644 --- a/repoze/bfg/settings.py +++ b/repoze/bfg/settings.py @@ -33,14 +33,10 @@ def get_options(kw, environ=os.environ): config_reload_templates = kw.get('reload_templates', '') effective_reload_templates = asbool(eget('BFG_RELOAD_TEMPLATES', config_reload_templates)) - config_unicode_path_segments = kw.get('unicode_path_segments', 't') - effective_unicode_path_segments = asbool(eget('BFG_UNICODE_PATH_SEGMENTS', - config_unicode_path_segments)) update = { 'debug_authorization': effective_debug_all or effective_debug_auth, 'debug_notfound': effective_debug_all or effective_debug_notfound, 'reload_templates': effective_reload_templates, - 'unicode_path_segments': effective_unicode_path_segments, } kw.update(update) diff --git a/repoze/bfg/tests/test_settings.py b/repoze/bfg/tests/test_settings.py index 8c1fe2c39..97fe9d026 100644 --- a/repoze/bfg/tests/test_settings.py +++ b/repoze/bfg/tests/test_settings.py @@ -14,14 +14,12 @@ class TestSettings(unittest.TestCase): self.assertEqual(settings.reload_templates, False) self.assertEqual(settings.debug_notfound, False) self.assertEqual(settings.debug_authorization, False) - self.assertEqual(settings.unicode_path_segments, True) def test_with_option(self): settings = self._makeOne(reload_templates=True) self.assertEqual(settings.reload_templates, True) self.assertEqual(settings.debug_notfound, False) self.assertEqual(settings.debug_authorization, False) - self.assertEqual(settings.unicode_path_segments, True) class TestGetOptions(unittest.TestCase): def _callFUT(self, *arg, **kw): @@ -94,21 +92,6 @@ class TestGetOptions(unittest.TestCase): self.assertEqual(result['debug_notfound'], True) self.assertEqual(result['debug_authorization'], True) - def test_unicode_path_segments(self): - result = self._callFUT({}) - self.assertEqual(result['unicode_path_segments'], True) - result = self._callFUT({'unicode_path_segments':'false'}) - self.assertEqual(result['unicode_path_segments'], False) - result = self._callFUT({'unicode_path_segments':'t'}) - self.assertEqual(result['unicode_path_segments'], True) - result = self._callFUT({'unicode_path_segments':'1'}) - self.assertEqual(result['unicode_path_segments'], True) - result = self._callFUT({}, {'BFG_UNICODE_PATH_SEGMENTS':'1'}) - self.assertEqual(result['unicode_path_segments'], True) - result = self._callFUT({'unicode_path_segments':'false'}, - {'BFG_UNICODE_PATH_SEGMENTS':'1'}) - self.assertEqual(result['unicode_path_segments'], True) - def test_originals_kept(self): result = self._callFUT({'a':'i am so a'}) self.assertEqual(result['a'], 'i am so a') diff --git a/repoze/bfg/tests/test_traversal.py b/repoze/bfg/tests/test_traversal.py index 873291bb8..b1a94617e 100644 --- a/repoze/bfg/tests/test_traversal.py +++ b/repoze/bfg/tests/test_traversal.py @@ -184,20 +184,6 @@ class ModelGraphTraverserTests(unittest.TestCase): environ = self._getEnviron(PATH_INFO='/%s' % segment) self.assertRaises(TypeError, policy, environ) - def test_non_utf8_path_segment_str_path_segments_succeeds(self): - defaultkw = {'unicode_path_segments':False} - settings = DummySettings(**defaultkw) - from repoze.bfg.interfaces import ISettings - import zope.component - gsm = zope.component.getGlobalSiteManager() - gsm.registerUtility(settings, ISettings) - foo = DummyContext() - root = DummyContext(foo) - policy = self._makeOne(root) - segment = unicode('LaPe\xc3\xb1a', 'utf-8').encode('utf-16') - environ = self._getEnviron(PATH_INFO='/%s' % segment) - ctx, name, subpath = policy(environ) # test is: this doesn't fail - class RoutesModelTraverserTests(unittest.TestCase): def _getTargetClass(self): from repoze.bfg.traversal import RoutesModelTraverser diff --git a/repoze/bfg/traversal.py b/repoze/bfg/traversal.py index a6c86e491..c86e5b457 100644 --- a/repoze/bfg/traversal.py +++ b/repoze/bfg/traversal.py @@ -1,6 +1,5 @@ import urllib -from zope.component import queryUtility from zope.deferredimport import deprecated from zope.interface import classProvides @@ -14,7 +13,6 @@ from repoze.bfg.lru import lru_cache from repoze.bfg.interfaces import ILocation from repoze.bfg.interfaces import ITraverser from repoze.bfg.interfaces import ITraverserFactory -from repoze.bfg.interfaces import ISettings deprecated( "('from repoze.bfg.traversal import model_url' is now " @@ -119,13 +117,12 @@ def split_path(path): clean.append(segment) return clean -def step(ob, name, default, as_unicode=True): - if as_unicode: - try: - name = name.decode('utf-8') - except UnicodeDecodeError: - raise TypeError('Could not decode path segment "%s" using the ' - 'UTF-8 decoding scheme' % name) +def step(ob, name, default): + try: + name = name.decode('utf-8') + except UnicodeDecodeError: + raise TypeError('Could not decode path segment "%s" using the ' + 'UTF-8 decoding scheme' % name) if name.startswith('@@'): return name[2:], default if not hasattr(ob, '__getitem__'): @@ -140,16 +137,11 @@ _marker = object() class ModelGraphTraverser(object): classProvides(ITraverserFactory) implements(ITraverser) - unicode_path_segments = True def __init__(self, root): self.root = root self.locatable = ILocation.providedBy(root) - settings = queryUtility(ISettings) - if settings is not None: - self.unicode_path_segments = settings.unicode_path_segments def __call__(self, environ, _marker=_marker): - unicode_path_segments = self.unicode_path_segments path = environ.get('PATH_INFO', '/') path = list(split_path(path)) locatable = self.locatable @@ -160,7 +152,7 @@ class ModelGraphTraverser(object): while path: segment = path.pop(0) - segment, next = _step(ob, segment, _marker, unicode_path_segments) + segment, next = _step(ob, segment, _marker) if next is _marker: name = segment break |
