From 74db82d177093f4b1102d70832f8abd9b894dd61 Mon Sep 17 00:00:00 2001 From: Chris McDonough Date: Thu, 22 Jan 2009 08:59:51 +0000 Subject: - 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. --- repoze/bfg/traversal.py | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) (limited to 'repoze/bfg/traversal.py') 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 -- cgit v1.2.3