code: def get_driver_info() -> _nvml_driver_info:
      global _driver_info
  
      _init_nvml()
      if _nvml_lib is None:
          return None
      if _driver_info is not None:
          return _driver_info
  
      version_buf = create_string_buffer(100)
      cuda_version = c_uint()
  
      _nvml_check_error(
          _nvml_lib.nvmlSystemGetDriverVersion(
              version_buf, len(version_buf)
          )
      )
      _nvml_check_error(
          _nvml_lib.nvmlSystemGetCudaDriverVersion(byref(cuda_version))
      )
  
      _driver_info = _nvml_driver_info(
          driver_version=version_buf.value.decode(),
          cuda_version=".".join(
              str(v) for v in divmod(cuda_version.value, 1000)
          ),
      )
      return _driver_info
  
imports: import dataclasses
  import logging
  import os
  import subprocess
  import sys
  import uuid
  from collections import namedtuple
  from ctypes import c_char, c_char_p, c_int, c_uint, c_ulonglong, byref, create_string_buffer, Structure, POINTER, CDLL
  from typing import List, Tuple, Optional, Union
  from ..utils import parse_readable_size
label_desc: Use image node_id 11 for calling a global function with example usage: get_driver_info() and returns: _driver_info, None, _driver_info