def metadata(self):
        """
        The build metadata is the union of the metadata in its test runs.
        Common keys with different values are transformed into a list with each
        of the different values.
        """
        if self.__metadata__ is None:
            metadata = {}
            for test_run in self.test_runs.defer(None).all():
                for key, value in test_run.metadata.items():
                    metadata.setdefault(key, [])
                    if value not in metadata[key]:
                        metadata[key].append(value)
            for key in metadata.keys():
                if len(metadata[key]) == 1:
                    metadata[key] = metadata[key][0]
                else:
                    metadata[key] = sorted(metadata[key], key=str)
            self.__metadata__ = metadata
        return self.__metadata__
def metadata ( self ) : if self . __metadata__ is None : metadata = { } for test_run in self . test_runs . defer ( None ) . all ( ) : for key , value in test_run . metadata . items ( ) : metadata . setdefault ( key , [ ] ) if value not in metadata [ key ] : metadata [ key ] . append ( value ) for key in metadata . keys ( ) : if len ( metadata [ key ] ) == 1 : metadata [ key ] = metadata [ key ] [ 0 ] else : metadata [ key ] = sorted ( metadata [ key ] , key = str ) self . __metadata__ = metadata return self . __metadata__
The build metadata is the union of the metadata in its test runs.
        Common keys with different values are transformed into a list with each
        of the different values.