code: def humantime(time):
      
      try:
          time = float(time)
      except (ValueError, TypeError):
          raise ValueError("Input must be numeric")
  
      # weeks
      if time >= 7 * 60 * 60 * 24:
          weeks = math.floor(time / (7 * 60 * 60 * 24))
          timestr = "{:g} weeks, ".format(weeks) + humantime(time % (7 * 60 * 60 * 24))
  
      # days
      elif time >= 60 * 60 * 24:
          days = math.floor(time / (60 * 60 * 24))
          timestr = "{:g} days, ".format(days) + humantime(time % (60 * 60 * 24))
  
      # hours
      elif time >= 60 * 60:
          hours = math.floor(time / (60 * 60))
          timestr = "{:g} hours, ".format(hours) + humantime(time % (60 * 60))
  
      # minutes
      elif time >= 60:
          minutes = math.floor(time / 60.)
          timestr = "{:g} min., ".format(minutes) + humantime(time % 60)
  
      # seconds
      elif (time >= 1) | (time == 0):
          timestr = "{:g} s".format(time)
  
      # milliseconds
      elif time >= 1e-3:
          timestr = "{:g} ms".format(time * 1e3)
  
      # microseconds
      elif time >= 1e-6:
          timestr = "{:g} \u03BCs".format(time * 1e6)
  
      # nanoseconds or smaller
      else:
          timestr = "{:g} ns".format(time * 1e9)
  
      return timestr
docs: Converts a time in seconds to a reasonable human readable time
  
      Parameters
      ----------
      t : float
          The number of seconds
  
      Returns
      -------
      time : string
          The human readable formatted value of the given time