<classResult _class='hudson.tasks.junit.ClassResult'><child><age>1</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>2.003</duration><errorDetails>AttributeError: module 'omero.model' has no attribute 'NoneAnnotationLinkI'</errorDetails><errorStackTrace>self = &lt;test.integration.gatewaytest.test_get_objects.TestGetObject object at 0x7f4747e5f850&gt;

    def testAnnotationAnnotationLinks(self):
        """
        Test various annotations methods when parent is an Annotation or Group
        """
    
        group = self.new_group(perms='rwra--')
        client, user = self.new_client_and_user(group=group)
    
        conn = BlitzGateway(client_obj=client)
    
        parent = omero.gateway.TagAnnotationWrapper(conn)
        parent.setNs("test.annotation.parent")
        parent.setValue("parent Tag")
        parent.save()
    
        COMMENT_TEXT = "test annotation child Comment"
        child = omero.gateway.CommentAnnotationWrapper(conn)
        child.setNs("test.annotation.child")
        child.setValue(COMMENT_TEXT)
        child.save()
        child2 = omero.gateway.LongAnnotationWrapper(conn)
        child2.setNs("test.annotation.child")
        child2.setValue(123)
        child2.save()
    
        # link child to parent
&gt;       parent.linkAnnotation(child)

test/integration/gatewaytest/test_get_objects.py:817: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../../../.venv3/lib64/python3.11/site-packages/omero/gateway/__init__.py:1133: in linkAnnotation
    ann = self._linkAnnotation(ann)
          ^^^^^^^^^^^^^^^^^^^^^^^^^
../../../../.venv3/lib64/python3.11/site-packages/omero/gateway/__init__.py:1065: in _linkAnnotation
    return self._linkObject(ann, "%sAnnotationLinkI" % self.OMERO_CLASS)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = &lt;TagAnnotationWrapper id=5387&gt;, obj = &lt;CommentAnnotationWrapper id=5388&gt;
lnkobjtype = 'NoneAnnotationLinkI'

    def _linkObject(self, obj, lnkobjtype):
        """
        Saves the object to DB if needed - setting the permissions manually.
        Creates the object link and saves it, setting permissions manually.
        TODO: Can't set permissions manually in 4.2
            - Assumes world &amp; group writable
    
        :param obj:     The object to link
        :type obj:      :class:`BlitzObjectWrapper`
        """
        ctx = self._conn.SERVICE_OPTS.copy()
        ctx.setOmeroGroup(self.details.group.id.val)
        if not obj.getId():
            # Not yet in db, save it
            obj = obj.__class__(
                self._conn,
                self._conn.getUpdateService().saveAndReturnObject(
                    obj._obj, ctx))
&gt;       lnk = getattr(omero.model, lnkobjtype)()
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       AttributeError: module 'omero.model' has no attribute 'NoneAnnotationLinkI'

../../../../.venv3/lib64/python3.11/site-packages/omero/gateway/__init__.py:1049: AttributeError</errorStackTrace><failedSince>71</failedSince><name>testAnnotationAnnotationLinks</name><properties></properties><skipped>false</skipped><status>FAILED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>2.083</duration><failedSince>0</failedSince><name>testFindExperimenterWithGroups</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>1</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>10.065</duration><errorDetails>AttributeError: module 'omero.model' has no attribute 'NoneAnnotationLinkI'</errorDetails><errorStackTrace>self = &lt;test.integration.gatewaytest.test_get_objects.TestGetObject object at 0x7f4747e5ecd0&gt;
gatewaywrapper = &lt;omero.gateway.pytest_fixtures.GatewayWrapper object at 0x7f47195d8d10&gt;
author_testimg_tiny = &lt;_ImageWrapper id=5746&gt;

    def testGetAnnotations(self, gatewaywrapper, author_testimg_tiny):
        obj = author_testimg_tiny
        dataset = gatewaywrapper.getTestDataset()
        ns = "omero.gateway.test.get_objects.test_get_annotations_comment"
        ns_tag = "omero.gateway.test.get_objects.test_get_annotations_tag"
    
        # create Comment
        ann = omero.gateway.CommentAnnotationWrapper(gatewaywrapper.gateway)
        ann.setNs(ns)
        ann.setValue("Test Comment")
        ann = obj.linkAnnotation(ann)
        # create Tag
        tag = omero.gateway.TagAnnotationWrapper(gatewaywrapper.gateway)
        tag.setNs(ns_tag)
        tag.setValue("Test Tag")
        tag = obj.linkAnnotation(tag)
        dataset.linkAnnotation(tag)
        # also link the Tag to the Comment
&gt;       ann.linkAnnotation(tag)

test/integration/gatewaytest/test_get_objects.py:549: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../../../.venv3/lib64/python3.11/site-packages/omero/gateway/__init__.py:1133: in linkAnnotation
    ann = self._linkAnnotation(ann)
          ^^^^^^^^^^^^^^^^^^^^^^^^^
../../../../.venv3/lib64/python3.11/site-packages/omero/gateway/__init__.py:1065: in _linkAnnotation
    return self._linkObject(ann, "%sAnnotationLinkI" % self.OMERO_CLASS)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = &lt;CommentAnnotationWrapper id=5283&gt;, obj = &lt;TagAnnotationWrapper id=5284&gt;
lnkobjtype = 'NoneAnnotationLinkI'

    def _linkObject(self, obj, lnkobjtype):
        """
        Saves the object to DB if needed - setting the permissions manually.
        Creates the object link and saves it, setting permissions manually.
        TODO: Can't set permissions manually in 4.2
            - Assumes world &amp; group writable
    
        :param obj:     The object to link
        :type obj:      :class:`BlitzObjectWrapper`
        """
        ctx = self._conn.SERVICE_OPTS.copy()
        ctx.setOmeroGroup(self.details.group.id.val)
        if not obj.getId():
            # Not yet in db, save it
            obj = obj.__class__(
                self._conn,
                self._conn.getUpdateService().saveAndReturnObject(
                    obj._obj, ctx))
&gt;       lnk = getattr(omero.model, lnkobjtype)()
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       AttributeError: module 'omero.model' has no attribute 'NoneAnnotationLinkI'

../../../../.venv3/lib64/python3.11/site-packages/omero/gateway/__init__.py:1049: AttributeError</errorStackTrace><failedSince>71</failedSince><name>testGetAnnotations</name><properties></properties><skipped>false</skipped><status>FAILED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>0.028</duration><failedSince>0</failedSince><name>testGetDatasetsByProject</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>1.651</duration><failedSince>0</failedSince><name>testGetExperimenter</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>4.582</duration><failedSince>0</failedSince><name>testGetExperimentersByGroup[False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>4.822</duration><failedSince>0</failedSince><name>testGetExperimentersByGroup[True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>0.162</duration><failedSince>0</failedSince><name>testGetImage</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>0.033</duration><failedSince>0</failedSince><name>testGetImageLoadPixels[False-False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>0.035</duration><failedSince>0</failedSince><name>testGetImageLoadPixels[False-True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>0.04</duration><failedSince>0</failedSince><name>testGetImageLoadPixels[True-False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>0.049</duration><failedSince>0</failedSince><name>testGetImageLoadPixels[True-True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>1</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>3.605</duration><errorDetails>AttributeError: 'NoneType' object has no attribute 'id'</errorDetails><errorStackTrace>self = &lt;test.integration.gatewaytest.test_get_objects.TestGetObject object at 0x7f4747e5f150&gt;

    def testGetObjectsAnnotation(self):
    
        # create new group and user - don't rely on existing test user/group
    
        group = self.new_group(perms='rwra--')
        client, user = self.new_client_and_user(group=group)
    
        conn = BlitzGateway(client_obj=client)
    
        ann_types = ["CommentAnnotation", "TagAnnotation",
                     "LongAnnotation", "XmlAnnotation",
                     "DoubleAnnotation", "BooleanAnnotation",
                     "TimestampAnnotation", "TermAnnotation"]
        ns = "test_get_objects_namespace"
        ns_map = "test_get_objects_map_namespace"
        ns_file = "test_get_objects_annotation_file"
    
        def create_dataset_with_annotations(name, dtype="Dataset"):
            if dtype == "Dataset":
                obj = DatasetI()
                wrapper = omero.gateway.DatasetWrapper(conn, obj)
            elif dtype == "Project":
                obj = ProjectI()
                wrapper = omero.gateway.ProjectWrapper(conn, obj)
            wrapper.setName(name)
            wrapper.save()
    
            # Create total of 10 annotations on the object...
            # create Comment, Tag, Xml, etc
            for ann_type in ann_types:
                ann = getattr(omero.gateway, ann_type + "Wrapper")(conn)
                ann.setNs(ns)
                if ann_type in ("LongAnnotation", "DoubleAnnotation",
                                "TimestampAnnotation"):
                    ann.setValue(100.0)
                elif ann_type == "BooleanAnnotation":
                    ann.setValue(True)
                else:
                    ann.setValue("Test %s: %s" % (ann_type, name))
                wrapper.linkAnnotation(ann)
    
            # create MapAnnotation
            mapAnn = omero.gateway.MapAnnotationWrapper(conn)
            mapAnn.setNs(ns)
            mapAnn.setValue([("key1", "value1"), ("key2", "value2")])
            mapAnn.setNs(ns_map)
            mapAnn.save()
            wrapper.linkAnnotation(mapAnn)
    
            # create FileAnnotation
            fileAnn = omero.gateway.FileAnnotationWrapper(conn)
            fileObj = omero.model.OriginalFileI()
            fileObj = omero.gateway.OriginalFileWrapper(conn, fileObj)
            fileObj.setName(omero.rtypes.rstring('fileName'))
            fileObj.setPath(omero.rtypes.rstring('path/to/file'))
            fileObj.setHash(omero.rtypes.rstring('a'))
            fileObj.setSize(omero.rtypes.rlong(0))
            fileObj.save()
            fileAnn.setFile(fileObj)
            fileAnn.setNs(ns_file)
            fileAnn.save()
            wrapper.linkAnnotation(fileAnn)
    
            return wrapper
    
        dataset1 = create_dataset_with_annotations("Dataset 1")
        dataset2 = create_dataset_with_annotations("Dataset 2")
        create_dataset_with_annotations("Project 1", dtype="Project")
    
        # Add Tag to Group
        tag = omero.gateway.TagAnnotationWrapper(conn)
        tag.setNs("test_get_objects_group_tag")
        tag.setValue("Test Tag on Group")
        group = conn.getGroupFromContext()
&gt;       group.linkAnnotation(tag)

test/integration/gatewaytest/test_get_objects.py:725: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../../../.venv3/lib64/python3.11/site-packages/omero/gateway/__init__.py:1133: in linkAnnotation
    ann = self._linkAnnotation(ann)
          ^^^^^^^^^^^^^^^^^^^^^^^^^
../../../../.venv3/lib64/python3.11/site-packages/omero/gateway/__init__.py:1065: in _linkAnnotation
    return self._linkObject(ann, "%sAnnotationLinkI" % self.OMERO_CLASS)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = &lt;_ExperimenterGroupWrapper id=2745&gt;
obj = &lt;omero.gateway.TagAnnotationWrapper object at 0x7f4731e456d0&gt;
lnkobjtype = 'ExperimenterGroupAnnotationLinkI'

    def _linkObject(self, obj, lnkobjtype):
        """
        Saves the object to DB if needed - setting the permissions manually.
        Creates the object link and saves it, setting permissions manually.
        TODO: Can't set permissions manually in 4.2
            - Assumes world &amp; group writable
    
        :param obj:     The object to link
        :type obj:      :class:`BlitzObjectWrapper`
        """
        ctx = self._conn.SERVICE_OPTS.copy()
&gt;       ctx.setOmeroGroup(self.details.group.id.val)
                          ^^^^^^^^^^^^^^^^^^^^^
E       AttributeError: 'NoneType' object has no attribute 'id'

../../../../.venv3/lib64/python3.11/site-packages/omero/gateway/__init__.py:1042: AttributeError</errorStackTrace><failedSince>71</failedSince><name>testGetObjectsAnnotation</name><properties></properties><skipped>false</skipped><status>FAILED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>2.999</duration><failedSince>0</failedSince><name>testGetObjectsByMapAnnotations[Dataset]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>2.462</duration><failedSince>0</failedSince><name>testGetObjectsByMapAnnotations[Image]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>4.163</duration><failedSince>0</failedSince><name>testGetObjectsByMapAnnotations[Plate]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>2.41</duration><failedSince>0</failedSince><name>testGetObjectsByMapAnnotations[Project]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>3.071</duration><failedSince>0</failedSince><name>testGetObjectsByMapAnnotations[Screen]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>0.019</duration><failedSince>0</failedSince><name>testGetProject</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>0.005</duration><failedSince>0</failedSince><name>testListColleagues</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>2.821</duration><failedSince>0</failedSince><name>testListExperimentersAndGroups[False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>3.126</duration><failedSince>0</failedSince><name>testListExperimentersAndGroups[True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>0.668</duration><failedSince>0</failedSince><name>testListOrphans[False0-False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>1.088</duration><failedSince>0</failedSince><name>testListOrphans[False0-True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>0.57</duration><failedSince>0</failedSince><name>testListOrphans[False1-False]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>0.551</duration><failedSince>0</failedSince><name>testListOrphans[False1-True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>0.018</duration><failedSince>0</failedSince><name>testListProjects</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>0.401</duration><failedSince>0</failedSince><name>testOrderById</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>0.01</duration><failedSince>0</failedSince><name>testPagination</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>3.715</duration><failedSince>0</failedSince><name>testSearchObjects</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>0.076</duration><failedSince>0</failedSince><name>testTraversal</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><failCount>3</failCount><name>TestGetObject</name><passCount>28</passCount><skipCount>0</skipCount></classResult>