summaryrefslogtreecommitdiff
path: root/repoze/bfg/traversal.py
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/bfg/traversal.py
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/bfg/traversal.py')
-rw-r--r--repoze/bfg/traversal.py22
1 files changed, 7 insertions, 15 deletions
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