[Checkins] SVN: z3c.noop/trunk/ initial import

Wolfgang Schnerring wosc at wosc.de
Mon Jun 15 07:14:34 EDT 2009


Log message for revision 100976:
  initial import
  

Changed:
  A   z3c.noop/trunk/CHANGES.txt
  A   z3c.noop/trunk/bootstrap.py
  A   z3c.noop/trunk/buildout.cfg
  A   z3c.noop/trunk/setup.py
  A   z3c.noop/trunk/src/
  A   z3c.noop/trunk/src/z3c/
  A   z3c.noop/trunk/src/z3c/__init__.py
  A   z3c.noop/trunk/src/z3c/noop/
  A   z3c.noop/trunk/src/z3c/noop/README.txt
  A   z3c.noop/trunk/src/z3c/noop/__init__.py
  A   z3c.noop/trunk/src/z3c/noop/configure.zcml
  A   z3c.noop/trunk/src/z3c/noop/ftesting.zcml
  A   z3c.noop/trunk/src/z3c/noop/tests.py
  A   z3c.noop/trunk/src/z3c/noop/traverser.py

-=-
Added: z3c.noop/trunk/CHANGES.txt
===================================================================
--- z3c.noop/trunk/CHANGES.txt	                        (rev 0)
+++ z3c.noop/trunk/CHANGES.txt	2009-06-15 11:14:34 UTC (rev 100976)
@@ -0,0 +1,8 @@
+=======
+CHANGES
+=======
+
+0.1 (unreleased)
+================
+
+- first released version

Added: z3c.noop/trunk/bootstrap.py
===================================================================
--- z3c.noop/trunk/bootstrap.py	                        (rev 0)
+++ z3c.noop/trunk/bootstrap.py	2009-06-15 11:14:34 UTC (rev 100976)
@@ -0,0 +1,55 @@
+##############################################################################
+#
+# Copyright (c) 2006 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Bootstrap a buildout-based project
+
+Simply run this script in a directory containing a buildout.cfg.
+The script accepts buildout command-line options, so you can
+use the -c option to specify an alternate configuration file.
+
+$Id$
+"""
+
+import os, shutil, sys, tempfile, urllib2
+
+tmpeggs = tempfile.mkdtemp()
+
+try:
+    import pkg_resources
+except ImportError:
+    ez = {}
+    exec urllib2.urlopen('http://peak.telecommunity.com/dist/ez_setup.py'
+                         ).read() in ez
+    ez['use_setuptools'](to_dir=tmpeggs, download_delay=0)
+
+    import pkg_resources
+
+cmd = 'from setuptools.command.easy_install import main; main()'
+if sys.platform == 'win32':
+    cmd = '"%s"' % cmd # work around spawn lamosity on windows
+
+ws = pkg_resources.working_set
+assert os.spawnle(
+    os.P_WAIT, sys.executable, sys.executable,
+    '-c', cmd, '-mqNxd', tmpeggs, 'zc.buildout',
+    dict(os.environ,
+         PYTHONPATH=
+         ws.find(pkg_resources.Requirement.parse('setuptools')).location
+         ),
+    ) == 0
+
+ws.add_entry(tmpeggs)
+ws.require('zc.buildout')
+import zc.buildout.buildout
+zc.buildout.buildout.main(sys.argv[1:] + ['bootstrap'])
+shutil.rmtree(tmpeggs)

Added: z3c.noop/trunk/buildout.cfg
===================================================================
--- z3c.noop/trunk/buildout.cfg	                        (rev 0)
+++ z3c.noop/trunk/buildout.cfg	2009-06-15 11:14:34 UTC (rev 100976)
@@ -0,0 +1,7 @@
+[buildout]
+develop = .
+parts = test
+
+[test]
+recipe = zc.recipe.testrunner
+eggs = z3c.noop[test]

Added: z3c.noop/trunk/setup.py
===================================================================
--- z3c.noop/trunk/setup.py	                        (rev 0)
+++ z3c.noop/trunk/setup.py	2009-06-15 11:14:34 UTC (rev 100976)
@@ -0,0 +1,40 @@
+import os
+from setuptools import setup, find_packages
+
+
+setup(
+    name='z3c.noop',
+    version = '0.1dev',
+    author='Wolfgang Schnerring',
+    author_email='ws at gocept.com',
+    description='z3c.noop provides traverser that simply skips a path element, so /foo/++noop++qux/bar is equivalent to /foo/bar.',
+    url='http://pypi.python.org/pypi/z3c.noop',
+    long_description= (
+        open(os.path.join('src', 'z3c', 'noop', 'README.txt')).read()
+        + '\n\n'
+        + open('CHANGES.txt').read()),
+    classifiers = [
+        'Intended Audience :: Developers',
+        'License :: OSI Approved :: Zope Public License',
+        'Programming Language :: Python',
+        'Operating System :: OS Independent',
+        'Framework :: Zope3'],
+    license='ZPL 2.1',
+    packages=find_packages('src'),
+    package_dir = {'': 'src'},
+    namespace_packages=['z3c'],
+    install_requires=[
+        'setuptools',
+        'zope.component',
+        'zope.interface',
+        'zope.publisher',
+        'zope.traversing',
+        ],
+    extras_require=dict(test=[
+        'zope.app.testing',
+        'zope.app.zcmlfiles',
+        'zope.testing',
+        ]),
+    include_package_data = True,
+    zip_safe = False,
+)

Added: z3c.noop/trunk/src/z3c/__init__.py
===================================================================
--- z3c.noop/trunk/src/z3c/__init__.py	                        (rev 0)
+++ z3c.noop/trunk/src/z3c/__init__.py	2009-06-15 11:14:34 UTC (rev 100976)
@@ -0,0 +1,5 @@
+try:
+    __import__('pkg_resources').declare_namespace(__name__)
+except ImportError, e:
+    from pkgutil import extend_path
+    __path__ = extend_path(__path__, __name__)

Added: z3c.noop/trunk/src/z3c/noop/README.txt
===================================================================
--- z3c.noop/trunk/src/z3c/noop/README.txt	                        (rev 0)
+++ z3c.noop/trunk/src/z3c/noop/README.txt	2009-06-15 11:14:34 UTC (rev 100976)
@@ -0,0 +1,29 @@
+========
+z3c.noop
+========
+
+z3c.noop provides traverser that simply skips a path element,
+so /foo/++noop++qux/bar is equivalent to /foo/bar.
+
+This is useful for example to generate varying URLs to work around browser
+caches[#test-setup]_.
+
+>>> dummy = object()
+>>> root['foo'] = dummy
+>>> traverse('/foo') == dummy
+True
+>>> traverse('/++noop++12345/foo') == dummy
+True
+
+
+
+.. [#test-setup]
+
+    >>> import zope.traversing.api
+    >>> import zope.publisher.browser
+
+    >>> root = getRootFolder()
+    >>> request = zope.publisher.browser.TestRequest()
+
+    >>> def traverse(path):
+    ...     return zope.traversing.api.traverse(root, path, request=request)

Added: z3c.noop/trunk/src/z3c/noop/__init__.py
===================================================================
--- z3c.noop/trunk/src/z3c/noop/__init__.py	                        (rev 0)
+++ z3c.noop/trunk/src/z3c/noop/__init__.py	2009-06-15 11:14:34 UTC (rev 100976)
@@ -0,0 +1 @@
+# python package

Added: z3c.noop/trunk/src/z3c/noop/configure.zcml
===================================================================
--- z3c.noop/trunk/src/z3c/noop/configure.zcml	                        (rev 0)
+++ z3c.noop/trunk/src/z3c/noop/configure.zcml	2009-06-15 11:14:34 UTC (rev 100976)
@@ -0,0 +1,7 @@
+<configure
+  xmlns="http://namespaces.zope.org/zope"
+  xmlns:browser="http://namespaces.zope.org/browser"
+  >
+
+  <adapter factory=".traverser.NoOpTraverser" name="noop"/>
+</configure>
\ No newline at end of file

Added: z3c.noop/trunk/src/z3c/noop/ftesting.zcml
===================================================================
--- z3c.noop/trunk/src/z3c/noop/ftesting.zcml	                        (rev 0)
+++ z3c.noop/trunk/src/z3c/noop/ftesting.zcml	2009-06-15 11:14:34 UTC (rev 100976)
@@ -0,0 +1,8 @@
+<configure
+  xmlns="http://namespaces.zope.org/zope"
+  xmlns:browser="http://namespaces.zope.org/browser"
+  >
+
+  <include package="zope.app.zcmlfiles" />
+  <include package="z3c.noop"/>
+</configure>
\ No newline at end of file

Added: z3c.noop/trunk/src/z3c/noop/tests.py
===================================================================
--- z3c.noop/trunk/src/z3c/noop/tests.py	                        (rev 0)
+++ z3c.noop/trunk/src/z3c/noop/tests.py	2009-06-15 11:14:34 UTC (rev 100976)
@@ -0,0 +1,29 @@
+#############################################################################
+#
+# Copyright (c) 2006-2007 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+
+from zope.testing import doctest
+import pkg_resources
+import zope.app.testing.functional
+
+
+layer = zope.app.testing.functional.ZCMLLayer(
+    pkg_resources.resource_filename(__name__, 'ftesting.zcml'),
+    __name__, 'z3c.noop.tests.layer', allow_teardown=True)
+
+def test_suite():
+    suite = zope.app.testing.functional.FunctionalDocFileSuite(
+        'README.txt',
+        optionflags=doctest.INTERPRET_FOOTNOTES)
+    suite.layer = layer
+    return suite

Added: z3c.noop/trunk/src/z3c/noop/traverser.py
===================================================================
--- z3c.noop/trunk/src/z3c/noop/traverser.py	                        (rev 0)
+++ z3c.noop/trunk/src/z3c/noop/traverser.py	2009-06-15 11:14:34 UTC (rev 100976)
@@ -0,0 +1,37 @@
+#############################################################################
+#
+# Copyright (c) 2006-2007 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+
+from zope.component import adapts
+from zope.interface import implements, Interface
+import zope.publisher.interfaces.browser
+import zope.traversing.interfaces
+
+
+class NoOpTraverser(object):
+    """This traverser simply skips a path element,
+    so /foo/++noop++qux/bar is equivalent to /foo/bar.
+
+    This is useful for example to generate varying URLs to work around browser
+    caches.
+    """
+
+    adapts(Interface,  zope.publisher.interfaces.browser.IDefaultBrowserLayer)
+    implements(zope.traversing.interfaces.ITraversable)
+
+    def __init__(self, context, request):
+        self.context = context
+        self.request = request
+
+    def traverse(self, name, furtherPath):
+        return self.context



More information about the Checkins mailing list