code: def sync(self):
      self.load()
  
      from labml import logger
      from labml.logger import Text
  
      response = self.sync_caller.send(
          {"runs": [r.to_dict() for r in self.runs.values()]}
      )
  
      status = response["runs"]
      # for k, v in status.items():
      #     logger.log(k, Text.title)
      #     inspect(v)
  
      for r in status["deleted"]:
          remove_run(self.runs[r].path)
          self.runs[r].clear_cache()
  
      if status["deleted"]:
          logger.log("Removed runs:")
          for r in status["deleted"]:
              logger.log(
                  [r, ": ", (str(self.runs[r].path), Text.subtle)]
              )
      if status["unknown"]:
          logger.log("Not synced:", Text.warning)
          for r in status["unknown"]:
              logger.log(
                  [r, ": ", (str(self.runs[r].path), Text.subtle)]
              )
  
file_path: labml/client/labml/internal/computer/projects/sync.py
imports: from typing import Dict, Optional, List
  from labml.internal.computer.projects import Projects
  from labml.internal.computer.projects.run_summary import RunSummary
  from labml.internal.manage.runs import remove_run
label_desc: Use image node_id 4 for calling the SyncRuns obj's underlying member method code with example usage: obj.sync() without return types