zope.browserpage is included in the configure.zcml of the "browser" module. Should we introduce "browser-only" dependencies, for this module, by adding a 'browser' section in the setup.py requires ? That would permit people that don't use the "browser" module to have lighter dependencies, but, at the same time, it's a bit opaque at first glance.
2011/3/25 Souheil CHELFOUH <souh...@chelfouh.com>: > Log message for revision 121128: > Standard cleanup : > - Removed unused imports > - Removed unused dependency on zope.tal > - Added missing dependency on zope.browserpage > - Cosmetics including pep8 normalization > > > > Changed: > U zope.traversing/trunk/setup.py > U zope.traversing/trunk/src/zope/traversing/adapters.py > U zope.traversing/trunk/src/zope/traversing/api.py > U zope.traversing/trunk/src/zope/traversing/browser/absoluteurl.py > U zope.traversing/trunk/src/zope/traversing/browser/interfaces.py > U zope.traversing/trunk/src/zope/traversing/browser/tests.py > U zope.traversing/trunk/src/zope/traversing/namespace.py > U zope.traversing/trunk/src/zope/traversing/publicationtraverse.py > U zope.traversing/trunk/src/zope/traversing/testing.py > > -=- > Modified: zope.traversing/trunk/setup.py > =================================================================== > --- zope.traversing/trunk/setup.py 2011-03-25 16:29:46 UTC (rev 121127) > +++ zope.traversing/trunk/setup.py 2011-03-25 17:06:56 UTC (rev 121128) > @@ -36,28 +36,30 @@ > packages=find_packages('src'), > package_dir = {'': 'src'}, > namespace_packages=['zope',], > - extras_require = dict(test=['zope.browserpage', > - 'zope.browserresource[zcml]>=3.12', > - 'zope.component[zcml]', > - 'zope.configuration', > - 'zope.container', > - 'zope.pagetemplate', > - 'zope.security[zcml]>=3.8', > - 'zope.site', > - 'zope.tal >= 3.5.0', > - 'zope.testing', > - 'ZODB3', > - ]), > - install_requires=['setuptools', > - 'zope.component', > - 'zope.i18n', > - 'zope.i18nmessageid', > - 'zope.interface', > - 'zope.proxy', > - 'zope.publisher', > - 'zope.security', > - 'zope.location>=3.7.0', > - ], > + extras_require = dict(test=[ > + 'ZODB3', > + 'zope.annotation', > + 'zope.browserresource[zcml]>=3.12', > + 'zope.component[zcml]', > + 'zope.configuration', > + 'zope.container', > + 'zope.pagetemplate', > + 'zope.security[zcml]>=3.8', > + 'zope.site', > + 'zope.testing', > + ]), > + install_requires=[ > + 'setuptools', > + 'zope.browserpage', > + 'zope.component', > + 'zope.i18n', > + 'zope.i18nmessageid', > + 'zope.interface', > + 'zope.location>=3.7.0', > + 'zope.proxy', > + 'zope.publisher', > + 'zope.security', > + ], > include_package_data = True, > zip_safe = False, > ) > > Modified: zope.traversing/trunk/src/zope/traversing/adapters.py > =================================================================== > --- zope.traversing/trunk/src/zope/traversing/adapters.py 2011-03-25 > 16:29:46 UTC (rev 121127) > +++ zope.traversing/trunk/src/zope/traversing/adapters.py 2011-03-25 > 17:06:56 UTC (rev 121128) > @@ -16,19 +16,18 @@ > from types import StringTypes > > import zope.interface > -import zope.component > > from zope.location.interfaces import ILocationInfo, LocationError > from zope.traversing.interfaces import ITraversable, ITraverser > - > from zope.traversing.namespace import namespaceLookup > -from zope.traversing.namespace import UnexpectedParameters > from zope.traversing.namespace import nsParse > > -from zope.location.traversing import RootPhysicallyLocatable # BBB > +from zope.location.traversing import RootPhysicallyLocatable # BBB > > + > _marker = object() # opaque marker that doesn't get security proxied > > + > class DefaultTraversable(object): > """Traverses objects via attribute and item lookup""" > zope.interface.implements(ITraversable) > @@ -49,6 +48,7 @@ > pass > raise LocationError(subject, name) > > + > class Traverser(object): > """Provide traverse features""" > > @@ -119,7 +119,7 @@ > > if name == '..': > return obj.__parent__ > - > + > if name and name[:1] in '@+': > ns, nm = nsParse(name) > if ns: > > Modified: zope.traversing/trunk/src/zope/traversing/api.py > =================================================================== > --- zope.traversing/trunk/src/zope/traversing/api.py 2011-03-25 16:29:46 > UTC (rev 121127) > +++ zope.traversing/trunk/src/zope/traversing/api.py 2011-03-25 17:06:56 > UTC (rev 121128) > @@ -14,7 +14,7 @@ > """Convenience functions for traversing the object tree. > """ > from zope.interface import moduleProvides > -from zope.location.interfaces import ILocationInfo, IRoot, LocationError > +from zope.location.interfaces import ILocationInfo, IRoot > from zope.traversing.interfaces import ITraversalAPI, ITraverser > > > @@ -23,6 +23,7 @@ > > _marker = object() > > + > def joinPath(path, *args): > """Join the given relative paths to the given path. > > @@ -54,16 +55,19 @@ > raise ValueError("Leading or trailing slashes in path elements") > return _normalizePath(path + u'/'.join(args)) > > + > def getPath(obj): > """Returns a string representing the physical path to the object. > """ > return ILocationInfo(obj).getPath() > > + > def getRoot(obj): > """Returns the root of the traversal for the given object. > """ > return ILocationInfo(obj).getRoot() > > + > def traverse(object, path, default=_marker, request=None): > """Traverse 'path' relative to the given object. > > @@ -86,6 +90,7 @@ > else: > return traverser.traverse(path, default=default, request=request) > > + > def traverseName(obj, name, default=_marker, traversable=None, request=None): > """Traverse a single step 'name' relative to the given object. > > @@ -115,11 +120,13 @@ > else: > return obj > > + > def getName(obj): > """Get the name an object was traversed via > """ > return ILocationInfo(obj).getName() > > + > def getParent(obj): > """Returns the container the object was traversed via. > > @@ -185,6 +192,7 @@ > > return prefix + u'/'.join(new_segments) > > + > def canonicalPath(path_or_object): > """Returns a canonical absolute unicode path for the given path or object. > > > Modified: zope.traversing/trunk/src/zope/traversing/browser/absoluteurl.py > =================================================================== > --- zope.traversing/trunk/src/zope/traversing/browser/absoluteurl.py > 2011-03-25 16:29:46 UTC (rev 121127) > +++ zope.traversing/trunk/src/zope/traversing/browser/absoluteurl.py > 2011-03-25 17:06:56 UTC (rev 121128) > @@ -27,11 +27,13 @@ > "This is probably due to a bug in setting up location " > "information.") > > -_safe = '@+' # Characters that we don't want to have quoted > +_safe = '@+' # Characters that we don't want to have quoted > > + > def absoluteURL(ob, request): > return zope.component.getMultiAdapter((ob, request), IAbsoluteURL)() > > + > class AbsoluteURL(BrowserView): > implements(IAbsoluteURL) > > @@ -92,7 +94,7 @@ > > if sameProxiedObjects(context, request.getVirtualHostRoot()) or \ > isinstance(context, Exception): > - return ({'name':'', 'url': self.request.getApplicationURL()}, ) > + return ({'name': '', 'url': self.request.getApplicationURL()}, ) > > base = tuple(zope.component.getMultiAdapter( > (container, request), IAbsoluteURL).breadcrumbs()) > @@ -110,6 +112,7 @@ > > return base > > + > class SiteAbsoluteURL(BrowserView): > implements(IAbsoluteURL) > > @@ -138,9 +141,9 @@ > request = self.request > > if sameProxiedObjects(context, request.getVirtualHostRoot()): > - return ({'name':'', 'url': self.request.getApplicationURL()}, ) > + return ({'name': '', 'url': self.request.getApplicationURL()}, ) > > - base = ({'name':'', 'url': self.request.getApplicationURL()}, ) > + base = ({'name': '', 'url': self.request.getApplicationURL()}, ) > > name = getattr(context, '__name__', None) > if name: > > Modified: zope.traversing/trunk/src/zope/traversing/browser/interfaces.py > =================================================================== > --- zope.traversing/trunk/src/zope/traversing/browser/interfaces.py > 2011-03-25 16:29:46 UTC (rev 121127) > +++ zope.traversing/trunk/src/zope/traversing/browser/interfaces.py > 2011-03-25 17:06:56 UTC (rev 121128) > @@ -15,6 +15,7 @@ > """ > from zope.interface import Interface > > + > class IAbsoluteURL(Interface): > > def __unicode__(): > @@ -36,6 +37,7 @@ > URL is the link for that segment of the breadcrumbs. > """ > > + > class IAbsoluteURLAPI(Interface): > > def absoluteURL(ob, request): > > Modified: zope.traversing/trunk/src/zope/traversing/browser/tests.py > =================================================================== > --- zope.traversing/trunk/src/zope/traversing/browser/tests.py 2011-03-25 > 16:29:46 UTC (rev 121127) > +++ zope.traversing/trunk/src/zope/traversing/browser/tests.py 2011-03-25 > 17:06:56 UTC (rev 121128) > @@ -31,21 +31,27 @@ > > from zope.container.contained import contained > > + > class IRoot(Interface): > pass > > + > class Root(object): > implements(IRoot) > > + > class TrivialContent(object): > """Trivial content object, used because instances of object are rocks.""" > > + > class AdaptedContent(object): > """A simple content object that has an ILocation adapter for it.""" > - > + > + > class FooContent(object): > """Class whose location will be provided by an adapter.""" > > + > class FooLocation(object): > """Adapts FooAdapter to the ILocation protocol.""" > implements(ILocation) > @@ -62,6 +68,7 @@ > def __parent__(self): > return contained(TrivialContent(), Root(), name='bar') > > + > class TestAbsoluteURL(PlacelessSetup, TestCase): > > def setUp(self): > @@ -79,7 +86,7 @@ > # don't define a more specific adapter > zope.component.provideAdapter(LocationProxy, (Interface,), > ILocation) > - > + > def tearDown(self): > PlacelessSetup.tearDown(self) > > @@ -121,7 +128,6 @@ > {'name': 'c', 'url': 'http://127.0.0.1/a/b/c'}, > )) > > - > def testParentButNoLocation(self): > request = TestRequest() > > @@ -141,7 +147,7 @@ > self.assertEqual(str(view), 'http://127.0.0.1/a/b/c') > self.assertEqual(absoluteURL(content3, request), > 'http://127.0.0.1/a/b/c') > - > + > def testAdaptedContext(self): > request = TestRequest() > > @@ -164,17 +170,15 @@ > # adapter > request = TestRequest() > > - > content = FooContent() > content.__parent__ = Root() > content.__name__ = 'foo' > - > + > view = getMultiAdapter((content, request), name='absolute_url') > self.assertEqual(str(view), 'http://127.0.0.1/foo') > self.assertEqual(absoluteURL(content, request), > 'http://127.0.0.1/foo') > > - > def testBasicContext_unicode(self): > #Tests so that AbsoluteURL handle unicode names as well > request = TestRequest() > @@ -289,7 +293,6 @@ > self.assertEqual(str(view), 'http://127.0.0.1') > self.assertEqual(absoluteURL(None, request), 'http://127.0.0.1') > > - > def testVirtualHostingWithoutContextInformation(self): > request = TestRequest() > request._vh_root = contained(TrivialContent(), Root(), name='a') > @@ -301,5 +304,5 @@ > def test_suite(): > return makeSuite(TestAbsoluteURL) > > -if __name__=='__main__': > +if __name__ == '__main__': > main(defaultTest='test_suite') > > Modified: zope.traversing/trunk/src/zope/traversing/namespace.py > =================================================================== > --- zope.traversing/trunk/src/zope/traversing/namespace.py 2011-03-25 > 16:29:46 UTC (rev 121127) > +++ zope.traversing/trunk/src/zope/traversing/namespace.py 2011-03-25 > 17:06:56 UTC (rev 121128) > @@ -21,8 +21,8 @@ > import zope.interface > from zope.i18n.interfaces import IModifiableUserPreferredLanguages > from zope.component.interfaces import ComponentLookupError > -from zope.interface import providedBy, directlyProvides, directlyProvidedBy > -from zope.location.interfaces import IRoot, LocationError > +from zope.interface import providedBy, directlyProvides > +from zope.location.interfaces import LocationError > from zope.publisher.interfaces.browser import IBrowserSkinType > from zope.publisher.skinnable import applySkin > from zope.security.proxy import removeSecurityProxy > @@ -34,9 +34,11 @@ > class UnexpectedParameters(LocationError): > "Unexpected namespace parameters were provided." > > + > class ExcessiveDepth(LocationError): > "Too many levels of containment. We don't believe them." > > + > def namespaceLookup(ns, name, object, request=None): > """Lookup a value from a namespace > > @@ -114,6 +116,7 @@ > > namespace_pattern = re.compile('[+][+]([a-zA-Z0-9_]+)[+][+]') > > + > def nsParse(name): > """Parse a namespace-qualified name into a namespace name and a > name. Returns the namespace name and a name. > @@ -154,12 +157,14 @@ > > return ns, name > > + > def getResource(site, name, request): > resource = queryResource(site, name, request) > if resource is None: > raise LocationError(site, name) > return resource > > + > def queryResource(site, name, request, default=None): > resource = zope.component.queryAdapter(request, name=name) > if resource is None: > @@ -174,6 +179,7 @@ > > return resource > > + > # ---- namespace processors below ---- > > class SimpleHandler(object): > @@ -194,6 +200,7 @@ > """ > self.context = context > > + > class acquire(SimpleHandler): > """Traversal adapter for the acquire namespace > """ > @@ -262,6 +269,7 @@ > > raise ExcessiveDepth(self.context, name) > > + > class attr(SimpleHandler): > > def traverse(self, name, ignored): > @@ -277,6 +285,7 @@ > """ > return getattr(self.context, name) > > + > class item(SimpleHandler): > > def traverse(self, name, ignored): > @@ -291,6 +300,7 @@ > """ > return self.context[name] > > + > class etc(SimpleHandler): > > def traverse(self, name, ignored): > @@ -330,6 +340,7 @@ > > return view > > + > class resource(view): > > def traverse(self, name, ignored): > @@ -337,6 +348,7 @@ > # resource, which is needed to generate the absolute URL. > return getResource(self.context, name, self.request) > > + > class lang(view): > > def traverse(self, name, ignored): > @@ -345,6 +357,7 @@ > languages.setPreferredLanguages([name]) > return self.context > > + > class skin(view): > > def traverse(self, name, ignored): > @@ -356,6 +369,7 @@ > applySkin(self.request, skin) > return self.context > > + > class vh(view): > > def traverse(self, name, ignored): > @@ -511,7 +525,7 @@ > # if we want to enable tracebacks when also trying to > # debug a different skin? > skin = zope.component.getUtility(IBrowserSkinType, > 'Debug') > - directlyProvides(request, providedBy(request)+skin) > + directlyProvides(request, providedBy(request) + skin) > else: > raise ValueError("Unknown debug flag: %s" % flag) > return self.context > > Modified: zope.traversing/trunk/src/zope/traversing/publicationtraverse.py > =================================================================== > --- zope.traversing/trunk/src/zope/traversing/publicationtraverse.py > 2011-03-25 16:29:46 UTC (rev 121127) > +++ zope.traversing/trunk/src/zope/traversing/publicationtraverse.py > 2011-03-25 17:06:56 UTC (rev 121128) > @@ -25,6 +25,7 @@ > from zope.publisher.interfaces import IPublishTraverse > from zope.publisher.interfaces.browser import IBrowserPublisher > > + > class PublicationTraverser(object): > """Traversal used for publication. > > @@ -45,7 +46,7 @@ > return ProxyFactory(ob) > > def traverseName(self, request, ob, name): > - nm = name # the name to look up the object with > + nm = name # the name to look up the object with > > if name and name[:1] in '@+': > # Process URI segment parameters. > @@ -92,9 +93,9 @@ > # Remove double dots > while '..' in path: > l = path.index('..') > - if l < 0 or l+2 > len(path): > + if l < 0 or l + 2 > len(path): > break > - del path[l:l+2] > + del path[l:l + 2] > > pop = path.pop > > @@ -119,9 +120,11 @@ > > ob = self.traversePath(request, ob, path) > > + > # alternate spelling > PublicationTraverse = PublicationTraverser > > + > class PublicationTraverserWithoutProxy(PublicationTraverse): > > def proxy(self, ob): > > Modified: zope.traversing/trunk/src/zope/traversing/testing.py > =================================================================== > --- zope.traversing/trunk/src/zope/traversing/testing.py 2011-03-25 > 16:29:46 UTC (rev 121127) > +++ zope.traversing/trunk/src/zope/traversing/testing.py 2011-03-25 > 17:06:56 UTC (rev 121128) > @@ -28,6 +28,7 @@ > from zope.traversing.browser.interfaces import IAbsoluteURL > from zope.traversing.namespace import etc > > + > def setUp(): > zope.component.provideAdapter(Traverser, (None,), ITraverser) > zope.component.provideAdapter(DefaultTraversable, (None,), ITraversable) > @@ -50,6 +51,7 @@ > zope.component.provideAdapter(factory, (for_, IDefaultBrowserLayer), > providing, name=name) > > + > def browserResource(name, factory, providing=zope.interface.Interface): > zope.component.provideAdapter(factory, (IDefaultBrowserLayer,), > providing, name=name) > > _______________________________________________ > checkins mailing list > check...@zope.org > https://mail.zope.org/mailman/listinfo/checkins > _______________________________________________ Zope-Dev maillist - Zope-Dev@zope.org https://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - https://mail.zope.org/mailman/listinfo/zope-announce https://mail.zope.org/mailman/listinfo/zope )