from typing import List class LabelProvider: """ label provider interface that should be implemented by label provider developers """ def __init__(self, root_folder, configuration): """ prepare everything needed to provide labels :param root_folder: relative path to label folder :param configuration: object parsed from configuration.json """ raise NotImplementedError def close(self): """ is called everytime a label provider is not used anymore :return: """ raise NotImplementedError def get_labels(self) -> List[dict]: """ return all available labels :return: """ raise NotImplementedError @staticmethod def create_label(identifier, name, parent_identifier=None): """ create a label result :param identifier: label identifier :param name: label name :param parent_identifier: parent's identifier :return: """ return { 'id': identifier, 'name': name, 'parent': parent_identifier }