code: def handle_trial_end(self, data):
          
          trial_job_id = data['trial_job_id']
          _ended_trials.add(trial_job_id)
          if trial_job_id in _trial_history:
              _trial_history.pop(trial_job_id)
              if self.assessor is not None:
                  self.assessor.trial_end(trial_job_id, data['event'] == 'SUCCEEDED')
          if self.tuner is not None:
              self.tuner.trial_end(json_tricks.loads(data['hyper_params'])['parameter_id'], data['event'] == 'SUCCEEDED')
docs: data: it has three keys: trial_job_id, event, hyper_params
               - trial_job_id: the id generated by training service
               - event: the job's state
               - hyper_params: the hyperparameters generated and returned by tuner