[Checkins] SVN: Sandbox/cklinger/megrok.resource/trunk/ Package Layout

Christian Klinger cklinger at novareto.de
Tue Oct 13 11:32:41 EDT 2009


Log message for revision 105047:
  Package Layout

Changed:
  A   Sandbox/cklinger/megrok.resource/trunk/HISTORY.txt
  A   Sandbox/cklinger/megrok.resource/trunk/README.txt
  A   Sandbox/cklinger/megrok.resource/trunk/bootstrap.py
  A   Sandbox/cklinger/megrok.resource/trunk/buildout.cfg
  A   Sandbox/cklinger/megrok.resource/trunk/setup.py
  A   Sandbox/cklinger/megrok.resource/trunk/src/
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/__init__.py
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/__init__.py
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/components.py
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/configure.zcml
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/directive.py
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/event.py
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftesting.zcml
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/__init__.py
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/css/
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/css/a.js
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/css/b.css
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/css/b.js
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/templates/
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/templates/myview.pt
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/test_inclusion.py
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/meta.py
  A   Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/utils.py
  A   Sandbox/cklinger/megrok.resource/trunk/versions.cfg

-=-
Added: Sandbox/cklinger/megrok.resource/trunk/HISTORY.txt
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/HISTORY.txt	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/HISTORY.txt	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,8 @@
+Changelog
+=========
+
+0.1 - Unreleased
+----------------
+
+* Initial release
+

Added: Sandbox/cklinger/megrok.resource/trunk/README.txt
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/README.txt	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/README.txt	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,4 @@
+Introduction
+============
+
+

Added: Sandbox/cklinger/megrok.resource/trunk/bootstrap.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/bootstrap.py	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/bootstrap.py	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,84 @@
+##############################################################################
+#
+# 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()
+
+is_jython = sys.platform.startswith('java')
+
+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
+
+if sys.platform == 'win32':
+    def quote(c):
+        if ' ' in c:
+            return '"%s"' % c # work around spawn lamosity on windows
+        else:
+            return c
+else:
+    def quote (c):
+        return c
+
+cmd = 'from setuptools.command.easy_install import main; main()'
+ws  = pkg_resources.working_set
+
+if len(sys.argv) > 2 and sys.argv[1] == '--version':
+    VERSION = '==%s' % sys.argv[2]
+    args = sys.argv[3:] + ['bootstrap']
+else:
+    VERSION = ''
+    args = sys.argv[1:] + ['bootstrap']
+
+if is_jython:
+    import subprocess
+
+    assert subprocess.Popen([sys.executable] + ['-c', quote(cmd), '-mqNxd',
+           quote(tmpeggs), 'zc.buildout' + VERSION],
+           env=dict(os.environ,
+               PYTHONPATH=
+               ws.find(pkg_resources.Requirement.parse('setuptools')).location
+               ),
+           ).wait() == 0
+
+else:
+    assert os.spawnle(
+        os.P_WAIT, sys.executable, quote (sys.executable),
+        '-c', quote (cmd), '-mqNxd', quote (tmpeggs), 'zc.buildout' + VERSION,
+        dict(os.environ,
+            PYTHONPATH=
+            ws.find(pkg_resources.Requirement.parse('setuptools')).location
+            ),
+        ) == 0
+
+ws.add_entry(tmpeggs)
+ws.require('zc.buildout' + VERSION)
+import zc.buildout.buildout
+zc.buildout.buildout.main(args)
+shutil.rmtree(tmpeggs)

Added: Sandbox/cklinger/megrok.resource/trunk/buildout.cfg
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/buildout.cfg	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/buildout.cfg	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,16 @@
+[buildout]
+extends = versions.cfg
+develop = .
+parts = test omelette
+newest = false
+versions = versions
+
+[test]
+recipe = zc.recipe.testrunner
+eggs = megrok.resource
+defaults = ['--tests-pattern', '^f?tests$', '-v', '-c']
+
+[omelette]
+recipe = collective.recipe.omelette
+eggs = ${test:eggs}
+

Added: Sandbox/cklinger/megrok.resource/trunk/setup.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/setup.py	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/setup.py	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,35 @@
+from setuptools import setup, find_packages
+import os
+
+version = '0.1'
+
+setup(name='megrok.resource',
+      version=version,
+      description="Grok Resources based on hurry.resource",
+      long_description=open("README.txt").read() + "\n" +
+                       open("HISTORY.txt").read(),
+      # Get more strings from http://www.python.org/pypi?%3Aaction=list_classifiers
+      classifiers=[
+        "Programming Language :: Python",
+        "Topic :: Software Development :: Libraries :: Python Modules",
+        ],
+      keywords='',
+      author='Christian Klinger',
+      author_email='cklinger at novareto.de',
+      url='',
+      license='GPL',
+      packages=find_packages('src'),
+      package_dir = {'': 'src'},
+      namespace_packages=['megrok'],
+      include_package_data=True,
+      zip_safe=False,
+      install_requires=[
+          'setuptools',
+          'grok',
+	  'hurry.zoperesource',
+          # -*- Extra requirements: -*-
+      ],
+      entry_points="""
+      # -*- Entry points: -*-
+      """,
+      )

Added: Sandbox/cklinger/megrok.resource/trunk/src/megrok/__init__.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/__init__.py	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/__init__.py	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,6 @@
+# See http://peak.telecommunity.com/DevCenter/setuptools#namespace-packages
+try:
+    __import__('pkg_resources').declare_namespace(__name__)
+except ImportError:
+    from pkgutil import extend_path
+    __path__ = extend_path(__path__, __name__)

Added: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/__init__.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/__init__.py	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/__init__.py	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,2 @@
+from directive import *
+from components import *

Added: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/components.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/components.py	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/components.py	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+
+import grok
+from zope import component
+from hurry.resource import ResourceInclusion
+from hurry.resource.interfaces import ILibraryUrl
+from zope.app.component.hooks import getSite
+from grokcore.view.components import DirectoryResource
+from zope.traversing.browser.interfaces import IAbsoluteURL
+from hurry.zoperesource.zopesupport import getRequest
+
+class Library(DirectoryResource):
+    
+    def __init__(self):
+        pass
+
+
+ at grok.adapter(Library)
+ at grok.implementer(ILibraryUrl)
+def library_url(library):
+    request = getRequest()
+    return str(component.getMultiAdapter((getSite(), request),
+                                         IAbsoluteURL)) + '/@@/' + library.name
+        

Added: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/configure.zcml
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/configure.zcml	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/configure.zcml	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,13 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:grok="http://namespaces.zope.org/grok"
+    i18n_domain="zope"
+    >
+    
+    <include package="hurry.zoperesource" />
+    <grok:grok package=".event" />
+    <grok:grok package=".meta" />
+    <grok:grok package=".utils" />
+  
+</configure>
+

Added: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/directive.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/directive.py	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/directive.py	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,29 @@
+import martian
+from martian import util
+from martian.error import GrokImportError
+
+def default_list(factory, module=None, **data):
+    return []
+
+def default_library_name(factory, module=None, **data):
+    return factory.__name__.lower()
+
+
+class inclusion(martian.Directive):
+    scope = martian.CLASS
+    store = martian.MULTIPLE
+
+    def factory(self, name, file, depends=[], bottom=False):
+        return (name, file, depends, bottom)
+
+
+class include(martian.Directive):
+    scope = martian.CLASS
+    store = martian.MULTIPLE
+    
+    def factory(self, value, name, bottom=False):
+        return (value, name)
+
+class bottom(martian.MarkerDirective):
+    store = martian.ONCE
+    scope = martian.CLASS

Added: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/event.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/event.py	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/event.py	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,19 @@
+import grok
+import hurry.resource
+
+from zope.app.publication.interfaces import IBeforeTraverseEvent
+from zope.security.proxy import removeSecurityProxy
+from megrok.resource import include, bottom
+
+ at grok.subscribe(grok.View, IBeforeTraverseEvent)
+def handle(view, event):
+    view = removeSecurityProxy(view)
+    includes = include.bind().get(view)
+    for lib, name in includes:
+        inn = getattr(lib, name)
+        inn.need()
+    bot = False    
+    bot = bottom.bind().get(view)
+    if bot:
+        
+        hurry.resource.bottom()

Added: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftesting.zcml
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftesting.zcml	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftesting.zcml	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,37 @@
+<configure
+    xmlns="http://namespaces.zope.org/zope"
+    xmlns:grok="http://namespaces.zope.org/grok"
+    i18n_domain="zope"
+    >
+  
+  <include package="grok"/>
+
+  <include package="megrok.resource" />
+  <grok:grok package="megrok.resource.ftests" />
+   
+
+  <securityPolicy
+      component="zope.securitypolicy.zopepolicy.ZopeSecurityPolicy"
+      />
+
+  <unauthenticatedPrincipal
+      id="zope.anybody"
+      title="Unauthenticated User"
+      />
+  <grant
+      permission="zope.View"
+      principal="zope.anybody"
+      />
+
+  <principal
+      id="zope.mgr"
+      title="Manager"
+      login="mgr"
+      password="mgrpw"
+      />
+
+  <role id="zope.Manager" title="Site Manager" />
+  <grantAll role="zope.Manager" />
+  <grant role="zope.Manager" principal="zope.mgr" />
+
+</configure>

Added: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/__init__.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/__init__.py	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/__init__.py	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,9 @@
+import os.path
+import megrok.resource
+
+from zope.app.testing.functional import ZCMLLayer
+ftesting_zcml = os.path.join(os.path.dirname(megrok.resource.__file__),
+                             'ftesting.zcml')
+FunctionalLayer = ZCMLLayer(ftesting_zcml, __name__, 'FunctionalLayer',
+                            allow_teardown=True)
+

Added: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/css/a.js
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/css/a.js	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/css/a.js	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1 @@
+/* Simple JS */

Added: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/css/b.css
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/css/b.css	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/css/b.css	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,3 @@
+body {
+    color: red;    
+}

Added: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/css/b.js
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/css/b.js	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/css/b.js	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1 @@
+/* Simple JS */

Added: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/templates/myview.pt
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/templates/myview.pt	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/templates/myview.pt	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,6 @@
+<html>
+  <head> </head>
+  <body>
+     <h1> HI GROK </h1>
+  </body>
+</html>  

Added: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/test_inclusion.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/test_inclusion.py	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/ftests/test_inclusion.py	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,94 @@
+"""
+megrok.resource
+===============
+
+
+Setup
+-----
+
+  >>> from zope.app.testing.functional import getRootFolder
+  >>> root = getRootFolder()
+  >>> root['app'] = grok.Application()
+
+ResourceDirectory
+-----------------
+
+If we create a Library we should get an fully registerd ResourceDirectory.
+
+  >>> from zope.testbrowser.testing import Browser
+  >>> browser = Browser()
+  >>> browser.handleErrors = False 
+  >>> browser.open('http://localhost/@@/styles/a.js')
+  >>> print browser.contents
+  /* Simple JS */ 
+
+Inclusion
+---------
+
+Now let's look if we can include the a.js File in a
+
+  >>> browser.open('http://localhost/app/simple')
+  >>> print browser.contents
+  <html>
+    <head>
+      <script type="text/javascript" src="http://localhost/app/@@/styles/a.js"></script>
+   </head>
+    <body>
+       <h1> HI GROK </h1>
+    </body>
+  </html>  
+
+AdvanceInclusion
+================
+
+  >>> browser.open('http://localhost/app/advanced')
+  >>> print browser.contents
+  <html>
+    <head>
+      <script type="text/javascript" src="http://localhost/app/@@/styles/a.js"></script>
+   </head>
+    <body>
+       <h1> HI GROK </h1>
+    <script type="text/javascript" src="http://localhost/app/@@/styles/b.js"></script></body>
+  </html>    
+
+"""
+import grok
+
+from zope.interface import Interface
+from megrok.resource import Library, include, inclusion, bottom
+from hurry.resource import ResourceInclusion
+
+
+class Styles(Library):
+    grok.path('css')
+    grok.name('styles')
+    
+    inclusion(name='JS', file='a.js')
+    inclusion(name='JSBottom', file='b.js', bottom=True)
+
+
+class Simple(grok.View):
+    grok.context(Interface)
+    include(Styles, 'JS')
+    template = grok.PageTemplateFile('templates/myview.pt')
+
+
+class Advanced(grok.View):
+    grok.context(Interface)
+    include(Styles, 'JS')
+    include(Styles, 'JSBottom')
+    bottom()
+    template = grok.PageTemplateFile('templates/myview.pt')
+
+
+###TestSetup
+def test_suite():
+    from zope.testing import doctest
+    from megrok.resource.ftests import FunctionalLayer
+    suite = doctest.DocTestSuite(
+        optionflags=doctest.NORMALIZE_WHITESPACE|doctest.ELLIPSIS
+        )
+    suite.layer = FunctionalLayer
+    return suite
+

Added: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/meta.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/meta.py	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/meta.py	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,28 @@
+import martian
+import megrok.resource as mr
+import grokcore.component as grok
+import grokcore.view
+import grokcore.security
+
+from hurry.resource import ResourceInclusion
+
+from megrok.resource.directive import default_library_name, default_list
+from zope.publisher.interfaces.browser import (IDefaultBrowserLayer,
+                                               IBrowserRequest)
+
+class LibraryGrokker(martian.ClassGrokker):
+    martian.component(mr.Library)
+    martian.directive(grok.name, get_default=default_library_name)
+    martian.directive(mr.inclusion, get_default=default_list)
+    martian.directive(grokcore.view.layer, default=IDefaultBrowserLayer)
+    martian.directive(grokcore.security.require, name='permission')
+
+
+    def execute(self, class_, config, name, inclusion, layer, permission, **kw):
+        setattr(class_, 'name', name)
+        print inclusion
+        for name, file, depends, bottom in inclusion:
+            print bottom
+            RI = ResourceInclusion(class_, file, depends=depends, bottom=bottom)
+            setattr(class_, name, RI)
+        return True    

Added: Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/utils.py
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/utils.py	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/src/megrok/resource/utils.py	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+
+import grok
+from zope import component
+from hurry.resource import ResourceInclusion
+from hurry.resource.interfaces import ILibraryUrl
+from zope.app.component.hooks import getSite
+from grokcore.view.components import DirectoryResource
+from zope.traversing.browser.interfaces import IAbsoluteURL
+from hurry.zoperesource.zopesupport import getRequest
+
+from megrok.resource import Library
+from zope.interface import Interface
+
+
+ at grok.adapter(Interface)
+ at grok.implementer(ILibraryUrl)
+def library_url(library):
+    request = getRequest()
+    return str(component.getMultiAdapter((getSite(), request),
+                                         IAbsoluteURL)) + '/@@/' + library.name
+        

Added: Sandbox/cklinger/megrok.resource/trunk/versions.cfg
===================================================================
--- Sandbox/cklinger/megrok.resource/trunk/versions.cfg	                        (rev 0)
+++ Sandbox/cklinger/megrok.resource/trunk/versions.cfg	2009-10-13 15:32:40 UTC (rev 105047)
@@ -0,0 +1,114 @@
+[versions]
+ClientForm = 0.2.9
+grokcore.annotation = 1.1
+grokcore.component = 1.7
+grokcore.formlib = 1.4
+grokcore.security = 1.2
+grokcore.site = 1.1
+grokcore.startup = 0.4
+grokcore.view = 1.12.2
+grokcore.viewlet = 1.3
+grokui.admin = 0.3.2
+martian = 0.11.1
+mechanize = 0.1.7b
+pytz = 2009l
+RestrictedPython = 3.4.2
+simplejson = 2.0.9
+z3c.autoinclude = 0.2.2
+z3c.flashmessage = 1.0
+z3c.recipe.eggbasket = 0.4.3
+z3c.testsetup = 0.4
+zc.catalog = 1.2.0
+ZConfig = 2.5.1
+zc.recipe.testrunner = 1.0.0
+zdaemon = 2.0.2
+ZODB3 = 3.8.3
+zodbcode = 3.4.0
+zope.annotation = 3.4.1
+zope.app.apidoc = 3.4.3
+zope.app.applicationcontrol = 3.4.3
+zope.app.appsetup = 3.4.1
+zope.app.authentication = 3.4.4
+zope.app.basicskin = 3.4.0
+zope.app.broken = 3.4.0
+zope.app.catalog = 3.5.1
+zope.app.component = 3.4.1
+zope.app.container = 3.5.6
+zope.app.content = 3.4.0
+zope.app.debug = 3.4.1
+zope.app.dependable = 3.4.0
+zope.app.error = 3.5.1
+zope.app.exception = 3.4.1
+zope.app.file = 3.4.4
+zope.app.folder = 3.4.0
+zope.app.form = 3.4.1
+zope.app.generations = 3.4.1
+zope.app.http = 3.4.1
+zope.app.i18n = 3.4.4
+zope.app.interface = 3.4.0
+zope.app.intid = 3.4.1
+zope.app.keyreference = 3.4.1
+zope.app.locales = 3.4.5
+zope.app.onlinehelp = 3.4.1
+zope.app.pagetemplate = 3.4.1
+zope.app.preference = 3.4.1
+zope.app.principalannotation = 3.4.0
+zope.app.publication = 3.4.3
+zope.app.publisher = 3.5.1
+zope.app.renderer = 3.4.0
+zope.app.rotterdam = 3.4.1
+zope.app.schema = 3.4.0
+zope.app.security = 3.5.2
+zope.app.securitypolicy = 3.4.6
+zope.app.server = 3.4.2
+zope.app.session = 3.5.1
+zope.app.skins = 3.4.0
+zope.app.testing = 3.4.3
+zope.app.tree = 3.4.0
+zope.app.twisted = 3.4.1
+zope.app.wsgi = 3.4.2
+zope.app.zapi = 3.4.0
+zope.app.zcmlfiles = 3.4.3
+zope.app.zopeappgenerations = 3.4.0
+zope.cachedescriptors = 3.4.1
+zope.component = 3.4.0
+zope.configuration = 3.4.0
+zope.contentprovider = 3.4.0
+zope.contenttype = 3.4.0
+zope.copypastemove = 3.4.0
+zope.datetime = 3.4.0
+zope.deferredimport = 3.4.0
+zope.deprecation = 3.4.0
+zope.dottedname = 3.4.2
+zope.dublincore = 3.4.0
+zope.error = 3.5.1
+zope.event = 3.4.0
+zope.exceptions = 3.4.0
+zope.filerepresentation = 3.4.0
+zope.formlib = 3.4.0
+zope.hookable = 3.4.0
+zope.i18n = 3.4.0
+zope.i18nmessageid = 3.4.3
+zope.index = 3.4.1
+zope.interface = 3.4.1
+zope.lifecycleevent = 3.4.0
+zope.location = 3.4.0
+zope.minmax = 1.1.0
+zope.modulealias = 3.4.0
+zope.pagetemplate = 3.4.0
+zope.proxy = 3.4.2
+zope.publisher = 3.4.9
+zope.schema = 3.4.0
+zope.security = 3.4.1
+zope.securitypolicy = 3.4.1
+zope.server = 3.4.3
+zope.session = 3.4.1
+zope.size = 3.4.0
+zope.structuredtext = 3.4.0
+zope.tal = 3.4.1
+zope.tales = 3.4.0
+zope.testbrowser = 3.4.2
+zope.testing = 3.7.6
+zope.thread = 3.4
+zope.traversing = 3.4.1
+zope.viewlet = 3.4.2



More information about the checkins mailing list