code: def __init__(
      self,
      *,
      job_id: str,
      job_key: str,
      server: Server,
      command: str,
      env_vars: Dict[str, str],
      tags: List[str],
      pid: Optional[int] = None,
      exit_code: Optional[int] = None,
      started: bool = False,
      stopped: bool = False,
  ):
      self.tags = set(tags)
      self.job_key = job_key
      self.env_vars = env_vars
      self.command = command
      self.server = server
      self.job_id = job_id
      self.path = Configs.get().project_jobs_folder / self.job_id
      self.pid = pid
      self.exit_code = exit_code
      self.started = started
      self.stopped = stopped
      self.out_tail_offset = -1
      self.err_tail_offset = -1
      if not self.path.exists():
          self.path.mkdir(parents=True)
          self.save()
  
      self.update_stopped()
  
imports: import io
  import sys
  from pathlib import Path
  from typing import Dict, Optional, List, Iterable
  import yaml
  from labml import logger
  from labml.logger import Text
  from labml_remote.configs import Configs
  from labml_remote.execute import UIMode
  from labml_remote.server import Server, SERVERS
label_desc: Use image node_id 1 to create a new Job object  with example: obj = Job()