docs: def load_ems(self, modules_paths: List[str]):
          """
          Load all extraction modules from the path
  
          Args:
              modules_path: str
  
          Returns:
  
          """
          all_em_lst = []
          if modules_paths:
              for modules_path in modules_paths:
                  em_lst = []
                  try:
                      for file_name in os.listdir(modules_path):
                          if file_name.startswith("em_") and file_name.endswith(".py"):
                              sys.path.append(modules_path)  # append module dir path
                              this_module = importlib.import_module(file_name[:-3])
                              for em in self.classes_in_module(this_module):
                                  em_lst.append(em(self))
                  except:
                      self.log("Error when loading etk modules from " + modules_path, "error")
                      raise NotGetETKModuleError("Wrong file path for ETK modules")
                  all_em_lst += em_lst
  
          try:
              all_em_lst = self.topological_sort(all_em_lst)
          except Exception:
              self.log("Topological sort for ETK modules fails", "error")
              raise NotGetETKModuleError("Topological sort for ETK modules fails")
  
          # if not all_em_lst:
          #     self.log("No ETK module in " + str(modules_paths), "error")
          #     raise NotGetETKModuleError("No ETK module in dir, module file should start with em_, end with .py")
          return all_em_lst