summaryrefslogtreecommitdiff
path: root/repoze
diff options
context:
space:
mode:
authorChris McDonough <chrism@agendaless.com>2009-01-22 08:59:51 +0000
committerChris McDonough <chrism@agendaless.com>2009-01-22 08:59:51 +0000
commit74db82d177093f4b1102d70832f8abd9b894dd61 (patch)
tree0125dfd8974a79b1a5a925afc0637a787af9f466 /repoze
parent5b9105ad8de57f21269608b1536720a5425a1fd1 (diff)
downloadpyramid-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.py4
-rw-r--r--repoze/bfg/tests/test_settings.py17
-rw-r--r--repoze/bfg/tests/test_traversal.py14
-rw-r--r--repoze/bfg/traversal.py22
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