code: def sync_all_containers(
      self, base_path: Path, project_name: Optional[str]
  ) -> None:
      self.sync_all_registered_containers(base_path)
      self.sync_all_offline_containers(
          base_path=base_path,
          project_name=QualifiedName(project_name)
          if project_name is not None
          else None,
      )
  
imports: import logging
  import os
  import threading
  import time
  from pathlib import Path
  from typing import Any, Callable, Dict, Iterable, List, Optional, Sequence
  from neptune.cli.abstract_backend_runner import AbstractBackendRunner
  from neptune.cli.utils import get_metadata_container, get_offline_dirs, get_project, get_qualified_name, is_container_synced_and_remove_junk, iterate_containers, split_dir_name
  from neptune.common.exceptions import NeptuneConnectionLostException
  from neptune.constants import ASYNC_DIRECTORY, OFFLINE_DIRECTORY, OFFLINE_NAME_PREFIX
  from neptune.envs import NEPTUNE_SYNC_BATCH_TIMEOUT_ENV
  from neptune.exceptions import CannotSynchronizeOfflineRunsWithoutProject
  from neptune.internal.backends.api_model import ApiExperiment, Project
  from neptune.internal.container_type import ContainerType
  from neptune.internal.disk_queue import DiskQueue
  from neptune.internal.id_formats import QualifiedName, UniqueId
  from neptune.internal.operation import Operation
  from neptune.internal.operation_processors.operation_storage import OperationStorage
  from neptune.internal.utils.logger import logger
label_desc: Use image node_id 12 for calling the SyncRunner obj's underlying member method code with example usage: obj.sync_all_containers(base_path, project_name) without return types