LabelProvider.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. from typing import List
  2. from typing import Optional
  3. class LabelProvider:
  4. """
  5. label provider interface that should be implemented by label provider developers
  6. """
  7. def __init__(self, root_folder, configuration):
  8. """
  9. prepare everything needed to provide labels
  10. :param root_folder: relative path to label folder
  11. :param configuration: object parsed from configuration.json
  12. """
  13. raise NotImplementedError
  14. def close(self):
  15. """
  16. is called everytime a label provider is not used anymore
  17. :return:
  18. """
  19. raise NotImplementedError
  20. def get_labels(self) -> List[dict]:
  21. """
  22. return all available labels
  23. :return:
  24. """
  25. raise NotImplementedError
  26. @staticmethod
  27. def create_label(reference: str, name: str,
  28. parent_id: str = None, hierarchy_level: str = None):
  29. """
  30. create a label result
  31. :param reference: label reference
  32. :param name: label name
  33. :param parent_id: parent's identifier
  34. :param hierarchy_level: hierarchy level name
  35. :return:
  36. """
  37. return {
  38. 'name': name,
  39. 'reference': reference,
  40. 'parent_id': parent_id,
  41. 'hierarchy_level': hierarchy_level,
  42. }