1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import json
- from os import path
- from pycs.interfaces.LabelProvider import LabelProvider as LabelProviderInterface
- class LabelProvider:
- """
- database class for label providers
- """
- def __init__(self, database, row):
- self.database = database
- self.identifier = row[0]
- self.name = row[1]
- self.description = row[2]
- self.root_folder = row[3]
- self.configuration_file = row[4]
- @property
- def configuration_path(self):
- return path.join(self.root_folder, self.configuration_file)
- def load(self) -> LabelProviderInterface:
- """
- load configuration.json and create an instance from the included code object
- :return: LabelProvider instance
- """
- # load configuration.json
- with open(self.configuration_path, 'r') as configuration_file:
- configuration = json.load(configuration_file)
- # load code
- code_path = path.join(self.root_folder, configuration['code']['module'])
- module_name = code_path.replace('/', '.').replace('\\', '.')
- class_name = configuration['code']['class']
- imported_module = __import__(module_name, fromlist=[class_name])
- class_attr = getattr(imported_module, class_name)
- # return instance
- return class_attr(self.root_folder, configuration)
|