docs: def _create_handler(self, config):
          """
          Creates a handler from its config.
  
          Params:
              config:      handler config
          Returns:
              handler instance
          """
          if config is None:
              raise ValueError('No handler config to create handler from.')
  
          if 'name' not in config:
              raise ValueError('Handler name is required.')
  
          handler_name = config['name']
          # try to create handler
          module_name = handler_name.rsplit('.', 1)[0]
          class_name = handler_name.rsplit('.', 1)[-1]
          module = import_module(module_name)
          handler_class = getattr(module, class_name)
          instance = handler_class(**config)
  
          return instance