code: def stop_trial(self, trial):
          
          error = False
          error_msg = None
  
          if trial.status in [Trial.ERROR, Trial.TERMINATED]:
              return
          elif trial.status in [Trial.PENDING, Trial.PAUSED]:
              self._scheduler_alg.on_trial_remove(self, trial)
              self._search_alg.on_trial_complete(
                  trial.trial_id, early_terminated=True)
          elif trial.status is Trial.RUNNING:
              try:
                  result = self.trial_executor.fetch_result(trial)
                  trial.update_last_result(result, terminate=True)
                  self._scheduler_alg.on_trial_complete(self, trial, result)
                  self._search_alg.on_trial_complete(
                      trial.trial_id, result=result)
              except Exception:
                  error_msg = traceback.format_exc()
                  logger.exception("Error processing event.")
                  self._scheduler_alg.on_trial_error(self, trial)
                  self._search_alg.on_trial_complete(trial.trial_id, error=True)
                  error = True
  
          self.trial_executor.stop_trial(trial, error=error, error_msg=error_msg)
docs: Stops trial.
  
          Trials may be stopped at any time. If trial is in state PENDING
          or PAUSED, calls `on_trial_remove`  for scheduler and
          `on_trial_complete(..., early_terminated=True) for search_alg.
          Otherwise waits for result for the trial and calls
          `on_trial_complete` for scheduler and search_alg if RUNNING.