code: def scan(self):
      self.size = 0
      self.size_checkpoints = 0
      self.complete = False
  
      for p in self.paths:
          run = RunInfo.from_path(p)
  
          self.size += self._folder_size(run.run_path)
          self.size_checkpoints += self._folder_size(
              run.checkpoint_path
          )
  
          if run.run_log_path.exists():
              with open(str(run.run_log_path), "r") as f:
                  lines = f.read().split("\n")
                  for l in lines:
                      if not l:
                          continue
                      d = json.loads(l)
                      if d["status"] in COMPLETED_STATUSES:
                          self.complete = True
  
      self.last_scanned = time.time()
  
      self.save_cache()
  
file_path: labml/client/labml/internal/computer/projects/run_summary.py
imports: import json
  import time
  from pathlib import Path
  from typing import List
  from labml.internal import util
  from labml.internal.experiment.experiment_run import RunInfo
label_desc: Use image node_id 7 for calling the RunSummary obj's underlying member method code with example usage: obj.scan() without return types