Upgrading from 4.0.4 to 4.0.10 - TypeError: Can't use implementer with classes. Use one of the class-declaration functions instead
Question: I have a (working) Plone 4.0.4 site that uses Dexterity. I am trying to
upgrade it to 4.0.10. When I start an instance on the new (4.0.10) site, I get
the error:

    
    
        TypeError: Can't use implementer with classes.  Use one of the class-declaration functions instead.
    

(Full backtrace below) This error seems to come from `zope.interface`, and
obviously it must be caused by some problem with the new site's version set,
because everything else is the same. The versions of `plone.app.dexterity` and
`zope.interface` are the same on both sites.

I don't know where to look for a solution, any suggestion welcome!

traceback: <http://pastie.org/8506203>

bin/instance: <http://pastie.org/8506250>

Thanks!

    
    
    Traceback (most recent call last):
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/OFS/Application.py", line 671, in install_product
        initmethod(context)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/Products/Five/__init__.py", line 31, in initialize
        zcml.load_site()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/Products/Five/zcml.py", line 51, in load_site
        _context = xmlconfig.file(file)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 647, in file
        include(context, name, package)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 546, in include
        processxmlfile(f, context)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 378, in processxmlfile
        parser.parse(src)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 107, in parse
        xmlreader.IncrementalParser.parse(self, source)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/xmlreader.py", line 123, in parse
        self.feed(buffer)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 207, in feed
        self._parser.Parse(data, isFinal)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 349, in end_element_ns
        self._cont_handler.endElementNS(pair, None)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 357, in endElementNS
        self.context.end()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 537, in end
        self.stack.pop().finish()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 685, in finish
        actions = self.handler(context, **args)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/Products/Five/fiveconfigure.py", line 74, in loadProducts
        handleBrokenProduct(product)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/Products/Five/fiveconfigure.py", line 72, in loadProducts
        xmlconfig.include(_context, zcml, package=product)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 546, in include
        processxmlfile(f, context)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 378, in processxmlfile
        parser.parse(src)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 107, in parse
        xmlreader.IncrementalParser.parse(self, source)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/xmlreader.py", line 123, in parse
        self.feed(buffer)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 207, in feed
        self._parser.Parse(data, isFinal)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 349, in end_element_ns
        self._cont_handler.endElementNS(pair, None)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 357, in endElementNS
        self.context.end()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 537, in end
        self.stack.pop().finish()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 685, in finish
        actions = self.handler(context, **args)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/z3c.autoinclude-0.3.5-py2.6.egg/z3c/autoinclude/zcml.py", line 104, in includePluginsDirective
        includeZCMLGroup(_context, info, filename)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/z3c.autoinclude-0.3.5-py2.6.egg/z3c/autoinclude/zcml.py", line 30, in includeZCMLGroup
        include(_context, filename, includable_package)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 546, in include
        processxmlfile(f, context)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 378, in processxmlfile
        parser.parse(src)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 107, in parse
        xmlreader.IncrementalParser.parse(self, source)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/xmlreader.py", line 123, in parse
        self.feed(buffer)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 207, in feed
        self._parser.Parse(data, isFinal)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 349, in end_element_ns
        self._cont_handler.endElementNS(pair, None)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 357, in endElementNS
        self.context.end()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 537, in end
        self.stack.pop().finish()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 685, in finish
        actions = self.handler(context, **args)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/z3c.autoinclude-0.3.5-py2.6.egg/z3c/autoinclude/zcml.py", line 54, in includeDependenciesDirective
        includeZCMLGroup(_context, info, 'configure.zcml')
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/z3c.autoinclude-0.3.5-py2.6.egg/z3c/autoinclude/zcml.py", line 30, in includeZCMLGroup
        include(_context, filename, includable_package)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 546, in include
        processxmlfile(f, context)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 378, in processxmlfile
        parser.parse(src)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 107, in parse
        xmlreader.IncrementalParser.parse(self, source)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/xmlreader.py", line 123, in parse
        self.feed(buffer)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 207, in feed
        self._parser.Parse(data, isFinal)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 349, in end_element_ns
        self._cont_handler.endElementNS(pair, None)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 357, in endElementNS
        self.context.end()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 537, in end
        self.stack.pop().finish()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 685, in finish
        actions = self.handler(context, **args)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 546, in include
        processxmlfile(f, context)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 378, in processxmlfile
        parser.parse(src)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 107, in parse
        xmlreader.IncrementalParser.parse(self, source)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/xmlreader.py", line 123, in parse
        self.feed(buffer)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 207, in feed
        self._parser.Parse(data, isFinal)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 349, in end_element_ns
        self._cont_handler.endElementNS(pair, None)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 357, in endElementNS
        self.context.end()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 537, in end
        self.stack.pop().finish()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 684, in finish
        args = toargs(context, *self.argdata)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 1376, in toargs
        args[str(name)] = field.fromUnicode(s)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/fields.py", line 139, in fromUnicode
        value = self.context.resolve(name)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 180, in resolve
        mod = __import__(mname, *_import_chickens)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/plone.app.dexterity-1.2.1-py2.6.egg/plone/app/dexterity/browser/types.py", line 14, in <module>
        from plone.z3cform.crud import crud
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/plone.z3cform-0.7.8-py2.6.egg/plone/z3cform/crud/crud.py", line 14, in <module>
        import z3c.batching.batch
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/z3c.batching-2.0.0-py2.6.egg/z3c/batching/batch.py", line 27, in <module>
        class Batch(object):
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.interface-3.5.3-py2.6-linux-x86_64.egg/zope/interface/declarations.py", line 496, in __call__
        raise TypeError("Can't use implementer with classes.  Use one of "
    ZopeXMLConfigurationError: File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/parts/instance1/etc/site.zcml", line 16.2-16.23
        ZopeXMLConfigurationError: File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Plone-4.0.10-py2.6.egg/Products/CMFPlone/configure.zcml", line 94.4-98.10
        ZopeXMLConfigurationError: File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/src/ecobuilding.content/ecobuilding/content/configure.zcml", line 10.4-10.39
        ZopeXMLConfigurationError: File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/plone.app.dexterity-1.2.1-py2.6.egg/plone/app/dexterity/configure.zcml", line 33.4-33.34
        ZopeXMLConfigurationError: File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/plone.app.dexterity-1.2.1-py2.6.egg/plone/app/dexterity/browser/configure.zcml", line 47.4-52.51
        TypeError: Can't use implementer with classes.  Use one of the class-declaration functions instead.
    Traceback (most recent call last):
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/Zope2/Startup/run.py", line 56, in <module>
        run()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/Zope2/Startup/run.py", line 21, in run
        starter.prepare()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/Zope2/Startup/__init__.py", line 87, in prepare
        self.startZope()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/Zope2/Startup/__init__.py", line 264, in startZope
        Zope2.startup()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/Zope2/__init__.py", line 47, in startup
        _startup()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/Zope2/App/startup.py", line 116, in startup
        OFS.Application.initialize(application)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/OFS/Application.py", line 251, in initialize
        initializer.initialize()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/OFS/Application.py", line 279, in initialize
        self.install_products()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/OFS/Application.py", line 492, in install_products
        return install_products(app)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/OFS/Application.py", line 523, in install_products
        folder_permissions, raise_exc=debug_mode)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/OFS/Application.py", line 671, in install_product
        initmethod(context)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/Products/Five/__init__.py", line 31, in initialize
        zcml.load_site()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/Products/Five/zcml.py", line 51, in load_site
        _context = xmlconfig.file(file)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 647, in file
        include(context, name, package)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 546, in include
        processxmlfile(f, context)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 378, in processxmlfile
        parser.parse(src)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 107, in parse
        xmlreader.IncrementalParser.parse(self, source)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/xmlreader.py", line 123, in parse
        self.feed(buffer)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 207, in feed
        self._parser.Parse(data, isFinal)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 349, in end_element_ns
        self._cont_handler.endElementNS(pair, None)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 357, in endElementNS
        self.context.end()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 537, in end
        self.stack.pop().finish()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 685, in finish
        actions = self.handler(context, **args)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/Products/Five/fiveconfigure.py", line 74, in loadProducts
        handleBrokenProduct(product)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Zope2-2.12.20-py2.6-linux-x86_64.egg/Products/Five/fiveconfigure.py", line 72, in loadProducts
        xmlconfig.include(_context, zcml, package=product)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 546, in include
        processxmlfile(f, context)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 378, in processxmlfile
        parser.parse(src)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 107, in parse
        xmlreader.IncrementalParser.parse(self, source)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/xmlreader.py", line 123, in parse
        self.feed(buffer)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 207, in feed
        self._parser.Parse(data, isFinal)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 349, in end_element_ns
        self._cont_handler.endElementNS(pair, None)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 357, in endElementNS
        self.context.end()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 537, in end
        self.stack.pop().finish()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 685, in finish
        actions = self.handler(context, **args)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/z3c.autoinclude-0.3.5-py2.6.egg/z3c/autoinclude/zcml.py", line 104, in includePluginsDirective
        includeZCMLGroup(_context, info, filename)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/z3c.autoinclude-0.3.5-py2.6.egg/z3c/autoinclude/zcml.py", line 30, in includeZCMLGroup
        include(_context, filename, includable_package)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 546, in include
        processxmlfile(f, context)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 378, in processxmlfile
        parser.parse(src)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 107, in parse
        xmlreader.IncrementalParser.parse(self, source)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/xmlreader.py", line 123, in parse
        self.feed(buffer)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 207, in feed
        self._parser.Parse(data, isFinal)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 349, in end_element_ns
        self._cont_handler.endElementNS(pair, None)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 357, in endElementNS
        self.context.end()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 537, in end
        self.stack.pop().finish()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 685, in finish
        actions = self.handler(context, **args)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/z3c.autoinclude-0.3.5-py2.6.egg/z3c/autoinclude/zcml.py", line 54, in includeDependenciesDirective
        includeZCMLGroup(_context, info, 'configure.zcml')
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/z3c.autoinclude-0.3.5-py2.6.egg/z3c/autoinclude/zcml.py", line 30, in includeZCMLGroup
        include(_context, filename, includable_package)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 546, in include
        processxmlfile(f, context)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 378, in processxmlfile
        parser.parse(src)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 107, in parse
        xmlreader.IncrementalParser.parse(self, source)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/xmlreader.py", line 123, in parse
        self.feed(buffer)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 207, in feed
        self._parser.Parse(data, isFinal)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 349, in end_element_ns
        self._cont_handler.endElementNS(pair, None)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 357, in endElementNS
        self.context.end()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 537, in end
        self.stack.pop().finish()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 685, in finish
        actions = self.handler(context, **args)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 546, in include
        processxmlfile(f, context)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 378, in processxmlfile
        parser.parse(src)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 107, in parse
        xmlreader.IncrementalParser.parse(self, source)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/xmlreader.py", line 123, in parse
        self.feed(buffer)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 207, in feed
        self._parser.Parse(data, isFinal)
      File "/usr/local/python_git/parts/opt/lib/python2.6/xml/sax/expatreader.py", line 349, in end_element_ns
        self._cont_handler.endElementNS(pair, None)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/xmlconfig.py", line 357, in endElementNS
        self.context.end()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 537, in end
        self.stack.pop().finish()
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 684, in finish
        args = toargs(context, *self.argdata)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 1376, in toargs
        args[str(name)] = field.fromUnicode(s)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/fields.py", line 139, in fromUnicode
        value = self.context.resolve(name)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.configuration-3.6.0-py2.6.egg/zope/configuration/config.py", line 180, in resolve
        mod = __import__(mname, *_import_chickens)
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/plone.app.dexterity-1.2.1-py2.6.egg/plone/app/dexterity/browser/types.py", line 14, in <module>
        from plone.z3cform.crud import crud
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/plone.z3cform-0.7.8-py2.6.egg/plone/z3cform/crud/crud.py", line 14, in <module>
        import z3c.batching.batch
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/z3c.batching-2.0.0-py2.6.egg/z3c/batching/batch.py", line 27, in <module>
        class Batch(object):
      File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/zope.interface-3.5.3-py2.6-linux-x86_64.egg/zope/interface/declarations.py", line 496, in __call__
        raise TypeError("Can't use implementer with classes.  Use one of "
    zope.configuration.xmlconfig.ZopeXMLConfigurationError: File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/parts/instance1/etc/site.zcml", line 16.2-16.23
        ZopeXMLConfigurationError: File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/Plone-4.0.10-py2.6.egg/Products/CMFPlone/configure.zcml", line 94.4-98.10
        ZopeXMLConfigurationError: File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/src/ecobuilding.content/ecobuilding/content/configure.zcml", line 10.4-10.39
        ZopeXMLConfigurationError: File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/plone.app.dexterity-1.2.1-py2.6.egg/plone/app/dexterity/configure.zcml", line 33.4-33.34
        ZopeXMLConfigurationError: File "/usr/local/zope/prod/Zope-2.12.20/plone4.0.10/eggs/plone.app.dexterity-1.2.1-py2.6.egg/plone/app/dexterity/browser/configure.zcml", line 47.4-52.51
        TypeError: Can't use implementer with classes.  Use one of the class-declaration functions instead.
    


Answer: This error refers to the use of 'implementer' as a class decorator, e.g.:

    
    
    @implementer(IBatch)
    class Batch(object):
        ...
    

'implementer' as a class decorator was introduced in zope.interface 4.0.0 in
order to support Python 3, where the classic "class advice" mechanism used by
'implements' no longer works.

Plone 4.0 does not use such a new version of zope.interface. Your problem is
happening because you're ending up with too new a version of z3c.batching,
which tries to use 'implementer.' This suggests that you haven't correctly
pinned the set of versions for Dexterity with Plone 4.0.10.

You can find the correct set of pins here: <http://good-
py.appspot.com/release/dexterity/1.2.1?plone=4.0.10>

