code: def on_trial_complete(self,
                            trial_id,
                            result=None,
                            error=False,
                            early_terminated=False):
          
          if result:
              self.conn.experiments(self.experiment.id).observations().create(
                  suggestion=self._live_trial_mapping[trial_id].id,
                  value=result[self._reward_attr],
              )
              # Update the experiment object
              self.experiment = self.conn.experiments(self.experiment.id).fetch()
          elif error or early_terminated:
              # Reports a failed Observation
              self.conn.experiments(self.experiment.id).observations().create(
                  failed=True, suggestion=self._live_trial_mapping[trial_id].id)
          del self._live_trial_mapping[trial_id]
docs: Passes the result to SigOpt unless early terminated or errored.
  
          If a trial fails, it will be reported as a failed Observation, telling
          the optimizer that the Suggestion led to a metric failure, which
          updates the feasible region and improves parameter recommendation.
  
          Creates SigOpt Observation object for trial.