Error Upgrading SENAITE.LIMS

Hi there,

I’m trying to upgrade from SENAITE.LIMS 1.3.1 to 1.3.3.1 but have been getting errors. I’ve tried 1.3.1 directly to 1.3.3.1 as well as moving to 1.3.2 first, but no luck.

I get some errors when running buildout:
Updating instance.
Getting distribution for ‘senaite.lims==1.3.3.1’.
Got senaite.lims 1.3.3.1.
Getting distribution for ‘senaite.jsonapi==1.2.2’.
Got senaite.jsonapi 1.2.2.
Getting distribution for ‘senaite.impress==1.2.3’.
Got senaite.impress 1.2.3.
Getting distribution for ‘senaite.core.spotlight==1.0.2’.
Got senaite.core.spotlight 1.0.2.
Getting distribution for ‘senaite.core.listing==1.4.0’.
warning: no files found matching ‘docs’
warning: no files found matching ‘.rst’
warning: no previously-included files matching '
.pyc’ found under directory ‘src/senaite/core/listing’
warning: no previously-included files matching ‘’ found under directory ‘src/senaite/core/listing/tests’
warning: no previously-included files matching '
’ found under directory ‘src/senaite/core/listing/react’
warning: no previously-included files matching ‘’ found under directory ‘node_modules’
Got senaite.core.listing 1.4.0.
Getting distribution for ‘senaite.core==1.3.3’.
warning: no previously-included files matching '
’ found under directory ‘docs’
warning: no previously-included files matching ‘*.pyc’ found under directory ‘bika’
File “build/bdist.linux-x86_64/egg/bika/lims/skins/bika/member_is_client.py”, line 16
return ‘Clients’ in member_groups
SyntaxError: ‘return’ outside function

  File "build/bdist.linux-x86_64/egg/bika/lims/skins/bika/guard_attach_transition.py", line 19
    return False
SyntaxError: 'return' outside function

  File "build/bdist.linux-x86_64/egg/bika/lims/skins/bika/guard_handler.py", line 10
    return wf_guard_handler(context, transition_id)
SyntaxError: 'return' outside function

  File "/home/meadmin/Plone/zinstance/eggs/tmp1X6n_R/senaite.core-1.3.3-py2.7.egg/bika/lims/skins/bika/member_is_client.py", line 16
    return 'Clients' in member_groups
SyntaxError: 'return' outside function

  File "/home/meadmin/Plone/zinstance/eggs/tmp1X6n_R/senaite.core-1.3.3-py2.7.egg/bika/lims/skins/bika/guard_attach_transition.py", line 19
    return False
SyntaxError: 'return' outside function

  File "/home/meadmin/Plone/zinstance/eggs/tmp1X6n_R/senaite.core-1.3.3-py2.7.egg/bika/lims/skins/bika/guard_handler.py", line 10
    return wf_guard_handler(context, transition_id)
SyntaxError: 'return' outside function

Got senaite.core 1.3.3.
Getting distribution for 'more-itertools<6.0.0'.
warning: no files found matching 'fabfile.py'
zip_safe flag not set; analyzing archive contents...
Got more-itertools 5.0.0.
Getting distribution for 'collective.indexing'.
Got collective.indexing 2.1.
Generated script '/home/meadmin/Plone/zinstance/bin/instance'.
Generated interpreter '/home/meadmin/Plone/zinstance/parts/instance/bin/interpreter'.
Updating repozo.
Updating backup.
Updating zopepy.
Generated interpreter '/home/meadmin/Plone/zinstance/bin/zopepy'.
Updating unifiedinstaller.
Versions had to be automatically picked.
The following part definition lists the versions picked:
[versions]
Chameleon = 3.6.2
Products.ATExtensions = 1.1
Pyphen = 0.9.5
Werkzeug = 0.15.5
backports.functools-lru-cache = 1.5
cffi = 1.12.3
cssselect2 = 0.2.1
html5lib = 1.0.1
more-itertools = 5.0.0
pdfrw = 0.4
senaite.core.supermodel = 1.2.1
soupsieve = 1.9.2
sourcecodegen = 0.6.14
tinycss2 = 0.6.1
webencodings = 0.5.1
z3c.pt = 3.2.0

# Required by:
# senaite.core==1.3.3
Products.DataGridField = 1.9.6

# Required by:
# senaite.core==1.3.3
Products.TextIndexNG3 = 3.4.14

# Required by:
# senaite.impress==1.2.3
beautifulsoup4 = 4.8.0

# Required by:
# senaite.core==1.3.3
collective.indexing = 2.1

# Required by:
# senaite.core==1.3.3
collective.progressbar = 0.5

# Required by:
# plone.jsonapi.core==0.6
dicttoxml = 1.7.4

# Required by:
# senaite.core==1.3.3
jarn.jsi18n = 1.1

# Required by:
# senaite.core==1.3.3
magnitude = 0.9.4

# Required by:
# senaite.core==1.3.3
plone.jsonapi.core = 0.6

# Required by:
# cffi==1.12.3
pycparser = 2.19

# Required by:
# senaite.core==1.3.3
z3c.jbot = 0.8

# Required by:
# Products.TextIndexNG3==3.4.14
zopyx.txng3.core = 3.6.2

And get the following when I attempt to start the instance:

2020-12-15 22:55:58 INFO ZServer HTTP server started at Tue Dec 15 22:55:58 2020
        Hostname: 0.0.0.0
        Port: 8080
Traceback (most recent call last):
  File "/home/meadmin/Plone/zinstance/parts/instance/bin/interpreter", line 328, in <module>
    exec(compile(__file__f.read(), __file__, "exec"))
  File "/home/meadmin/Plone/zinstance/eggs/Zope2-2.13.28-py2.7.egg/Zope2/Startup/run.py", line 76, in <module>
    run()
  File "/home/meadmin/Plone/zinstance/eggs/Zope2-2.13.28-py2.7.egg/Zope2/Startup/run.py", line 22, in run
    starter.prepare()
  File "/home/meadmin/Plone/zinstance/eggs/Zope2-2.13.28-py2.7.egg/Zope2/Startup/__init__.py", line 92, in prepare
    self.startZope()
  File "/home/meadmin/Plone/zinstance/eggs/Zope2-2.13.28-py2.7.egg/Zope2/Startup/__init__.py", line 268, in startZope
    Zope2.startup()
  File "/home/meadmin/Plone/zinstance/eggs/Zope2-2.13.28-py2.7.egg/Zope2/__init__.py", line 47, in startup
    _startup()
  File "/home/meadmin/Plone/zinstance/eggs/Zope2-2.13.28-py2.7.egg/Zope2/App/startup.py", line 120, in startup
    load_zcml()
  File "/home/meadmin/Plone/zinstance/eggs/Zope2-2.13.28-py2.7.egg/Zope2/App/startup.py", line 52, in load_zcml
    load_site()
  File "/home/meadmin/Plone/zinstance/eggs/Zope2-2.13.28-py2.7.egg/Zope2/App/zcml.py", line 46, in load_site
    _context = xmlconfig.file(site_zcml)
  File "/home/meadmin/Plone/zinstance/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 649, in file
    include(context, name, package)
  File "/home/meadmin/Plone/zinstance/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 548, in include
    processxmlfile(f, context)
  File "/home/meadmin/Plone/zinstance/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 380, in processxmlfile
    parser.parse(src)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 111, in parse
    xmlreader.IncrementalParser.parse(self, source)
  File "/usr/lib/python2.7/xml/sax/xmlreader.py", line 123, in parse
    self.feed(buffer)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 220, in feed
    self._parser.Parse(data, isFinal)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 384, in end_element_ns
    self._cont_handler.endElementNS(pair, None)
  File "/home/meadmin/Plone/zinstance/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 359, in endElementNS
    self.context.end()
  File "/home/meadmin/Plone/zinstance/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 558, in end
    self.stack.pop().finish()
  File "/home/meadmin/Plone/zinstance/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 706, in finish
    actions = self.handler(context, **args)
  File "/home/meadmin/Plone/zinstance/eggs/Zope2-2.13.28-py2.7.egg/OFS/metaconfigure.py", line 46, in loadProducts
    xmlconfig.include(_context, zcml, package=product)
  File "/home/meadmin/Plone/zinstance/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 548, in include
    processxmlfile(f, context)
  File "/home/meadmin/Plone/zinstance/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 380, in processxmlfile
    parser.parse(src)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 111, in parse
    xmlreader.IncrementalParser.parse(self, source)
  File "/usr/lib/python2.7/xml/sax/xmlreader.py", line 123, in parse
    self.feed(buffer)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 220, in feed
    self._parser.Parse(data, isFinal)
  File "/usr/lib/python2.7/xml/sax/expatreader.py", line 384, in end_element_ns
    self._cont_handler.endElementNS(pair, None)
  File "/home/meadmin/Plone/zinstance/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/xmlconfig.py", line 359, in endElementNS
    self.context.end()
  File "/home/meadmin/Plone/zinstance/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 558, in end
    self.stack.pop().finish()
  File "/home/meadmin/Plone/zinstance/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 706, in finish
    actions = self.handler(context, **args)
  File "/home/meadmin/Plone/zinstance/eggs/z3c.autoinclude-0.3.7-py2.7.egg/z3c/autoinclude/zcml.py", line 101, in includePluginsDirective
    info = PluginFinder(dotted_name).includableInfo(zcml_to_look_for)
  File "/home/meadmin/Plone/zinstance/eggs/z3c.autoinclude-0.3.7-py2.7.egg/z3c/autoinclude/plugin.py", line 18, in includableInfo
    groups = zcml_to_include(plugin_dottedname, zcml_to_look_for)
  File "/home/meadmin/Plone/zinstance/eggs/z3c.autoinclude-0.3.7-py2.7.egg/z3c/autoinclude/plugin.py", line 36, in zcml_to_include
    filename = resource_filename(dotted_name, zcmlgroup)
  File "/home/meadmin/Plone/buildout-cache/eggs/setuptools-27.3.0-py2.7.egg/pkg_resources/__init__.py", line 1202, in resource_filename
    return get_provider(package_or_requirement).get_resource_filename(
  File "/home/meadmin/Plone/buildout-cache/eggs/setuptools-27.3.0-py2.7.egg/pkg_resources/__init__.py", line 435, in get_provider
    __import__(moduleOrReq)
  File "/home/meadmin/Plone/zinstance/eggs/senaite.core.listing-1.4.0-py2.7.egg/senaite/core/listing/__init__.py", line 31, in <module>
    from senaite.core.listing.view import ListingView  # noqa
  File "/home/meadmin/Plone/zinstance/eggs/senaite.core.listing-1.4.0-py2.7.egg/senaite/core/listing/view.py", line 51, in <module>
    from senaite.core.supermodel import SuperModel
  File "/home/meadmin/Plone/zinstance/eggs/senaite.core.supermodel-1.2.1-py2.7.egg/senaite/core/supermodel/__init__.py", line 32, in <module>
    from senaite.core.supermodel.model import SuperModel  # noqa
  File "/home/meadmin/Plone/zinstance/eggs/senaite.core.supermodel-1.2.1-py2.7.egg/senaite/core/supermodel/model.py", line 30, in <module>
    from senaite.core.supermodel.decorators import returns_super_model
  File "/home/meadmin/Plone/zinstance/eggs/senaite.core.supermodel-1.2.1-py2.7.egg/senaite/core/supermodel/decorators.py", line 21, in <module>
    from senaite import api
zope.configuration.xmlconfig.ZopeXMLConfigurationError: File "/home/meadmin/Plone/zinstance/parts/instance/etc/site.zcml", line 12.2-12.39
    ZopeXMLConfigurationError: File "/home/meadmin/Plone/zinstance/eggs/Products.CMFPlone-4.3.18-py2.7.egg/Products/CMFPlone/meta.zcml", line 42.4-46.10
    ImportError: cannot import name api

Thanks for the help!

Good catch @alexanderstrand,
it seems like we did not pin senaite.core.supermodel to a proper version.
Please pin this version to 1.2.4: https://pypi.org/project/senaite.core.supermodel
Thanks, Ramon

No problem, I’m very good at breaking things.

So I just add senaite.core.supermodel to my buildout?

[versions]
senaite.core.supermodel = 1.2.4
...etc...

Yes, that should work, because in 1.2.3 we removed the dependency to senaite.api from senaite.core-supermodel.
Ramon