code: def modify_context(
      self,
      uris: List[str],
      runtime_env_dict: Dict,
      context: RuntimeEnvContext,
      logger: Optional[logging.Logger] = default_logger,
  ):
      module_dirs = []
      for uri in uris:
          module_dir = self._get_local_dir_from_uri(uri)
          if not module_dir.exists():
              raise ValueError(
                  f"Local directory {module_dir} for URI {uri} does "
                  "not exist on the cluster. Something may have gone wrong while "
                  "downloading, unpacking or installing the py_modules files."
              )
          module_dirs.append(str(module_dir))
      set_pythonpath_in_context(os.pathsep.join(module_dirs), context)
  
file_path: ray/python/ray/_private/runtime_env/py_modules.py
imports: import logging
  import os
  from pathlib import Path
  from types import ModuleType
  from typing import Any, Dict, List, Optional
  from ray._private.runtime_env.context import RuntimeEnvContext
  from ray._private.runtime_env.packaging import Protocol, delete_package, download_and_unpack_package, get_local_dir_from_uri, get_uri_for_directory, get_uri_for_package, install_wheel_package, is_whl_uri, package_exists, parse_uri, upload_package_if_needed, upload_package_to_gcs
  from ray._private.runtime_env.plugin import RuntimeEnvPlugin
  from ray._private.runtime_env.working_dir import set_pythonpath_in_context
  from ray._private.utils import get_directory_size_bytes, try_to_create_directory
  from ray.exceptions import RuntimeEnvSetupError
label_desc: Use image node_id 5 for calling the PyModulesPlugin obj's underlying member method code with example usage: obj.modify_context(uris, runtime_env_dict, context, logger) without return types