6
0

LabelProviderDiscovery.py 1004 B

12345678910111213141516171819202122232425262728293031
  1. from contextlib import closing
  2. from glob import glob
  3. from json import load
  4. from os import path
  5. def discover(database):
  6. """
  7. find label providers in the corresponding folder and add them to the database
  8. :param database:
  9. :return:
  10. """
  11. with closing(database.cursor()) as cursor:
  12. # list folders in labels/
  13. for folder in glob('labels/*'):
  14. # load distribution.json
  15. with open(path.join(folder, 'configuration.json'), 'r') as file:
  16. label = load(file)
  17. # extract data
  18. name = label['name']
  19. description = label['description'] if 'description' in label else None
  20. # save to database
  21. cursor.execute('''
  22. INSERT INTO label_providers (name, description, root_folder)
  23. VALUES (?, ?, ?)
  24. ON CONFLICT (root_folder)
  25. DO UPDATE SET name = ?, description = ?
  26. ''', (name, description, folder, name, description))