from typing import List from typing import Optional 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(reference: str, name: str, parent_id: Optional[int] = None): """ create a label result :param reference: label reference :param name: label name :param parent_id: parent's identifier :return: """ return { 'name': name, 'reference': reference, 'parent_id': parent_id }