Utils.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import logging
  2. logging.basicConfig()
  3. logger = logging.getLogger("kalliope")
  4. class ModuleNotFoundError(Exception):
  5. pass
  6. class Utils(object):
  7. color_list = dict(
  8. PURPLE='\033[95m',
  9. BLUE='\033[94m',
  10. GREEN='\033[92m',
  11. YELLOW='\033[93m',
  12. RED='\033[91m',
  13. ENDLINE='\033[0m',
  14. BOLD='\033[1m',
  15. UNDERLINE='\033[4m'
  16. )
  17. @classmethod
  18. def print_info(cls, text_to_print):
  19. print cls.color_list["BLUE"] + text_to_print + cls.color_list["ENDLINE"]
  20. @classmethod
  21. def print_success(cls, text_to_print):
  22. print cls.color_list["GREEN"] + text_to_print + cls.color_list["ENDLINE"]
  23. @classmethod
  24. def print_warning(cls, text_to_print):
  25. print cls.color_list["YELLOW"] + text_to_print + cls.color_list["ENDLINE"]
  26. @classmethod
  27. def print_danger(cls, text_to_print):
  28. print cls.color_list["RED"] + text_to_print + cls.color_list["ENDLINE"]
  29. @classmethod
  30. def print_header(cls, text_to_print):
  31. print cls.color_list["HEADER"] + text_to_print + cls.color_list["ENDLINE"]
  32. @classmethod
  33. def print_header(cls, text_to_print):
  34. print cls.color_list["PURPLE"] + text_to_print + cls.color_list["ENDLINE"]
  35. @classmethod
  36. def print_bold(cls, text_to_print):
  37. print cls.color_list["BOLD"] + text_to_print + cls.color_list["ENDLINE"]
  38. @classmethod
  39. def print_underline(cls, text_to_print):
  40. print cls.color_list["UNDERLINE"] + text_to_print + cls.color_list["ENDLINE"]
  41. @classmethod
  42. def get_dynamic_class_instantiation(cls, package_name, module_name, parameters=None):
  43. logger.debug("Run plugin %s with parameter %s" % (module_name, parameters))
  44. mod = __import__(package_name, fromlist=[module_name])
  45. try:
  46. klass = getattr(mod, module_name)
  47. except AttributeError:
  48. logger.debug("Error: No module named %s " % module_name)
  49. raise ModuleNotFoundError("The module %s does not exist in package %s" % (module_name, package_name))
  50. if klass is not None:
  51. # run the plugin
  52. if not parameters:
  53. return klass()
  54. elif isinstance(parameters, dict):
  55. return klass(**parameters)
  56. else:
  57. return klass(parameters)
  58. return None
  59. @classmethod
  60. def print_yaml_nicely(cls, to_print):
  61. """
  62. Used for debug
  63. :param to_print: Dict to print nicely
  64. :return:
  65. """
  66. import json
  67. print json.dumps(to_print, indent=2)