class_docstr: Simple scheduler which schedules all HPO jobs in sequence without any parallelism.
  The next trial scheduling will be decided based on the available time left within `time_out` setting
  and average time required for a trial to complete multiplied by the fill_factor (0.95) by default to
  accommodate variance in runtimes per HPO run.
  
  Parameters
  ----------
  train_fn : callable
      A task launch function for training.
  resource : dict
      Computation resources. For example, `{'num_cpus':2, 'num_gpus':1}`
  searcher : str
      Searcher (get_config decisions). If str, this is passed to
      searcher_factory along with search_options.
  search_options : dict
      If searcher is str, these arguments are passed to searcher_factory.
  num_trials : int
      Maximum number of jobs run in experiment. One of `num_trials`,
      `time_out` must be given.
  time_out : float
      If given, jobs are started only until this time_out (wall clock time).
      One of `num_trials`, `time_out` must be given.
  reward_attr : str
      Name of reward (i.e., metric to maximize) attribute in data obtained
      from reporter
  time_attr : str
      Name of resource (or time) attribute in data obtained from reporter.
      This attribute is optional for FIFO scheduling, but becomes mandatory
      in multi-fidelity scheduling (e.g., Hyperband).
      Note: The type of resource must be int.
class_docstr_tok: ["Simple","scheduler","which","schedules","all","HPO","jobs","in","sequence","without","any","parallelism",".","The","next","trial","scheduling","will","be","decided","based","on","the","available","time","left","within","`","time_out","`","setting","and","average","time","required","for","a","trial","to","complete","multiplied","by","the","fill_factor","(","0.95",")","by","default","to","accommodate","variance","in","runtimes","per","HPO","run",".","Parameters","--","--","--","--","--","train_fn",":","callable","A","task","launch","function","for","training",".","resource",":","dict","Computation","resources",".","For","example",",","`","{","'num_cpus':2",",","'num_gpus':1","}","`","searcher",":","str","Searcher","(","get_config","decisions",")",".","If","str",",","this","is","passed","to","searcher_factory","along","with","search_options",".","search_options",":","dict","If","searcher","is","str",",","these","arguments","are","passed","to","searcher_factory",".","num_trials",":","int","Maximum","number","of","jobs","run","in","experiment",".","One","of","`","num_trials","`",",","`","time_out","`","must","be","given",".","time_out",":","float","If","given",",","jobs","are","started","only","until","this","time_out","(","wall","clock","time",")",".","One","of","`","num_trials","`",",","`","time_out","`","must","be","given",".","reward_attr",":","str","Name","of","reward","(","i.e.",",","metric","to","maximize",")","attribute","in","data","obtained","from","reporter","time_attr",":","str","Name","of","resource","(","or","time",")","attribute","in","data","obtained","from","reporter",".","This","attribute","is","optional","for","FIFO","scheduling",",","but","becomes","mandatory","in","multi-fidelity","scheduling","(","e.g.",",","Hyperband",")",".","Note",":","The","type","of","resource","must","be","int","."]
docstr: Checks if the remaining time is enough to run another trial.
  
  Parameters
  ----------
  time_out total
      timeout in m
  time_start
      trials start time
  trial_start_time
      last trial start time
  trial_end_time
      last trial end time
  avg_trial_run_time
      running average of all trial runs
  fill_factor: float
      discount of `avg_trial_run_time` allowed for a next trial. Default is 0.95 of `avg_trial_run_time`
  
  Returns
  -------
      True if there is enough time to run another trial give runs statistics and remaining time
docstr_tok: ["Checks","if","the","remaining","time","is","enough","to","run","another","trial",".","Parameters","--","--","--","--","--","time_out","total","timeout","in","m","time_start","trials","start","time","trial_start_time","last","trial","start","time","trial_end_time","last","trial","end","time","avg_trial_run_time","running","average","of","all","trial","runs","fill_factor",":","float","discount","of","`","avg_trial_run_time","`","allowed","for","a","next","trial",".","Default","is","0.95","of","`","avg_trial_run_time","`","Returns","--","--","--","-","True","if","there","is","enough","time","to","run","another","trial","give","runs","statistics","and","remaining","time"]
code: def has_enough_time_for_trial_(
      cls,
      time_out,
      time_start,
      trial_start_time,
      trial_end_time,
      avg_trial_run_time,
      fill_factor=0.95,
  ):
      """
      Checks if the remaining time is enough to run another trial.
  
      Parameters
      ----------
      time_out total
          timeout in m
      time_start
          trials start time
      trial_start_time
          last trial start time
      trial_end_time
          last trial end time
      avg_trial_run_time
          running average of all trial runs
      fill_factor: float
          discount of `avg_trial_run_time` allowed for a next trial. Default is 0.95 of `avg_trial_run_time`
  
      Returns
      -------
          True if there is enough time to run another trial give runs statistics and remaining time
  
      """
      time_spent = trial_end_time - time_start
      is_timeout_exceeded = time_spent >= time_out
      time_left = time_start + time_out - trial_end_time
      is_enough_time_for_another_trial = True
      if avg_trial_run_time:
          is_enough_time_for_another_trial = (
              time_left > avg_trial_run_time * fill_factor
          )
      return (
          is_enough_time_for_another_trial and not is_timeout_exceeded
      )
  
imports: import logging
  import os
  import time
  from collections import OrderedDict
  from copy import deepcopy
  from typing import Tuple
  from tqdm.auto import tqdm
  from ..searcher import searcher_factory
  from ..searcher.exceptions import ExhaustedSearchSpaceError
  from ..searcher.local_searcher import LocalSearcher
  from .reporter import FakeReporter
label_desc: Use image node_id 5 for calling the LocalSequentialScheduler obj's underlying member method code with example usage: obj.has_enough_time_for_trial_(cls, time_out, time_start, trial_start_time, trial_end_time, avg_trial_run_time, fill_factor) and returns: unknown