<classResult _class='hudson.tasks.junit.ClassResult'><child><age>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>2.405</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>9.395</duration><errorDetails>AttributeError: 'function' object has no attribute 'ann_link_name'</errorDetails><errorStackTrace>self = &lt;test.integration.gatewaytest.test_get_objects.TestGetObject object at 0x7fb460f46550&gt;
gatewaywrapper = &lt;omero.gateway.pytest_fixtures.GatewayWrapper object at 0x7fb475fda590&gt;
author_testimg_tiny = &lt;_ImageWrapper id=5744&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
        ann.linkAnnotation(tag)
    
        # get the Comment
        annotation = gatewaywrapper.gateway.getObject(
            "CommentAnnotation", ann.id)
        assert "Test Comment" == annotation.textValue
        assert ann.OMERO_TYPE == annotation.OMERO_TYPE
    
        # test getObject throws exception if more than 1 returned
        threw = True
        try:
            gatewaywrapper.gateway.getObject("Annotation")
            threw = False
        except Exception:
            threw = True
        assert threw, "getObject() didn't throw exception with &gt;1 result"
    
        # get the Comment and Tag
        annGen = gatewaywrapper.gateway.getObjects(
            "Annotation", [ann.id, tag.id])
        anns = list(annGen)
        assert len(anns) == 2
        assert anns[0].ns in [ns, ns_tag]
        assert anns[1].ns in [ns, ns_tag]
        assert anns[0].OMERO_TYPE != anns[1].OMERO_TYPE
    
        # get all available annotation links on the image
        annLinks = gatewaywrapper.gateway.getAnnotationLinks("Image")
        for al in annLinks:
            assert isinstance(al.getAnnotation(),
                              omero.gateway.AnnotationWrapper)
            assert al.parent.__class__ == omero.model.ImageI
    
        # get selected links - On image only
        annLinks = gatewaywrapper.gateway.getAnnotationLinks(
            "Image", parent_ids=[obj.getId()])
        for al in annLinks:
            assert obj.getId() == al.parent.id.val
            assert al.parent.__class__ == omero.model.ImageI
    
        # get selected links - On image only
        annLinks = gatewaywrapper.gateway.getAnnotationLinks(
            "Image", parent_ids=[obj.getId()])
        for al in annLinks:
            assert obj.getId() == al.parent.id.val
            assert al.parent.__class__ == omero.model.ImageI
    
        # Check links to Tag on the Comment
        for obj_type in ["CommentAnnotation", "Annotation"]:
&gt;           annLinks = list(gatewaywrapper.gateway.getAnnotationLinks(
                obj_type, parent_ids=[ann.getId()]))

test/integration/gatewaytest/test_get_objects.py:598: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = &lt;omero.gateway._BlitzGateway object at 0x7fb415c8d650&gt;
parent_type = 'Annotation', parent_ids = [5290], ann_ids = None, ns = None
params = None

    def getAnnotationLinks(self, parent_type, parent_ids=None, ann_ids=None,
                           ns=None, params=None):
        """
        Retrieve Annotation Links by parent_type E.g. "Image". Not Ordered.
        Returns generator of :class:`AnnotationLinkWrapper`
        If parent_ids is None, all available objects will be returned.
        i.e. listObjects()
    
        :param obj_type:    Object type, e.g. "Project" see above
        :type obj_type:     String
        :param ids:         object IDs
        :type ids:          List of Long
        :return:            Generator yielding wrapped objects.
        """
    
        if parent_type.lower() not in KNOWN_WRAPPERS:
            wrapper_types = ", ".join(list(KNOWN_WRAPPERS.keys()))
            err_msg = ("getAnnotationLinks() does not support type: '%s'. "
                       "Must be one of: %s" % (parent_type, wrapper_types))
            raise AttributeError(err_msg)
        wrapper = KNOWN_WRAPPERS.get(parent_type.lower(), None)
&gt;       link_name = wrapper.ann_link_name()
                    ^^^^^^^^^^^^^^^^^^^^^
E       AttributeError: 'function' object has no attribute 'ann_link_name'

../../../../.venv3/lib64/python3.11/site-packages/omero/gateway/__init__.py:3556: AttributeError</errorStackTrace><failedSince>60</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.029</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.955</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.815</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>5.021</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.153</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.037</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.038</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>0</age><className>OmeroPy.test.integration.gatewaytest.test_get_objects.TestGetObject</className><duration>3.836</duration><failedSince>0</failedSince><name>testGetObjectsAnnotation</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.487</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.671</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.361</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.382</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.055</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.021</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>3.026</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.839</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.78</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.218</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.575</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.593</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.02</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.447</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.551</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.083</duration><failedSince>0</failedSince><name>testTraversal</name><properties></properties><skipped>false</skipped><status>PASSED</status></child><failCount>1</failCount><name>TestGetObject</name><passCount>29</passCount><skipCount>0</skipCount></classResult>