code: def from_json(data):
      if data is None:
          return None
      try:
          total_time_limit = data.get("total_time_limit")
          model_time_limit = data.get("model_time_limit")
          steps = data.get("steps")
          algorithms = data.get("algorithms")
  
          tc = TimeController(
              time.time(),
              total_time_limit,
              model_time_limit,
              steps,
              algorithms,
          )
          tc._spend = data.get("spend")
          tc._start_time -= (
              tc.already_spend()
          )  # update time with already spend
          return tc
      except Exception as e:
          logger.error(f"Cant load TimeController from json, {str(e)}")
          pass
      return None
  
file_path: mljar-supervised/supervised/tuner/time_controller.py
imports: import json
  import logging
  import time
  import numpy
  import pandas
  from supervised.utils.config import LOG_LEVEL
label_desc: Use image node_id 3 for calling the TimeController obj's underlying member method code with example usage: obj.from_json(data) and returns: None, None, tc