<classResult _class='hudson.tasks.junit.ClassResult'><child><age>1</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>2.321</duration><errorDetails>AttributeError: 'NoneType' object has no attribute 'id'</errorDetails><errorStackTrace>self = &lt;test.integration.gatewaytest.test_get_objects.TestGetObject object at 0x7f76b5ef3510&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()
    
        child = omero.gateway.CommentAnnotationWrapper(conn)
        child.setNs("test.annotation.child")
        child.setValue("test annotation child Comment")
        child.save()
        child2 = omero.gateway.LongAnnotationWrapper(conn)
        child2.setNs("test.annotation.child")
        child2.setValue(123)
        child2.save()
    
        # link child to parent
        parent.linkAnnotation(child)
        parent.linkAnnotation(child2)
        group = conn.getGroupFromContext()
        # Also annotate the Group
&gt;       group.linkAnnotation(child)

test/integration/gatewaytest/test_get_objects.py:820: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../../../../.venv3/lib64/python3.11/site-packages/omero/gateway/__init__.py:1158: in linkAnnotation
    ann = self._linkAnnotation(ann)
          ^^^^^^^^^^^^^^^^^^^^^^^^^
../../../../.venv3/lib64/python3.11/site-packages/omero/gateway/__init__.py:1090: in _linkAnnotation
    return self._linkObject(ann, "%sI" % link_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = &lt;_ExperimenterGroupWrapper id=2745&gt;
obj = &lt;CommentAnnotationWrapper id=5395&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:1066: AttributeError</errorStackTrace><failedSince>63</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.308</duration><failedSince>0</failedSince><name>testFindExperimenterWithGroups</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>9.07</duration><failedSince>0</failedSince><name>testGetAnnotations</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.027</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>2.582</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.384</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.985</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.161</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.032</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.034</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.035</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.043</duration><failedSince>0</failedSince><name>testGetImageLoadPixels[True-True]</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><child><age>2</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>3.156</duration><errorDetails>AttributeError: 'NoneType' object has no attribute 'id'</errorDetails><errorStackTrace>self = &lt;test.integration.gatewaytest.test_get_objects.TestGetObject object at 0x7f76b5ef3150&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:1158: in linkAnnotation
    ann = self._linkAnnotation(ann)
          ^^^^^^^^^^^^^^^^^^^^^^^^^
../../../../.venv3/lib64/python3.11/site-packages/omero/gateway/__init__.py:1090: in _linkAnnotation
    return self._linkObject(ann, "%sI" % link_name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = &lt;_ExperimenterGroupWrapper id=2744&gt;
obj = &lt;omero.gateway.TagAnnotationWrapper object at 0x7f76c8b0d150&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:1066: AttributeError</errorStackTrace><failedSince>62</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.449</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>3.061</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.822</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>3.154</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>2.654</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.02</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.006</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.908</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.699</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.624</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.052</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.525</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.549</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.017</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.443</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>4.372</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.079</duration><failedSince>0</failedSince><name>testTraversal</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><failCount>2</failCount><name>TestGetObject</name><passCount>29</passCount><skipCount>0</skipCount></classResult>