code: def _create_thread_local(
      attrs: Dict[str, Any],
      local_class: Type[threading.local] = threading.local,
  ):
      obj = local_class()
      for name, value in attrs.items():
          setattr(obj, name, value)
      return obj
  
imports: import contextlib
  import threading
  from contextvars import ContextVar
  from typing import Any, Callable, Dict, Optional, Type, cast
  from ..None import registry
  from ..compat import cupy, has_cupy
  from ..util import assert_pytorch_installed, assert_tensorflow_installed, get_torch_default_device, is_cupy_array, require_cpu
  from ._cupy_allocators import cupy_pytorch_allocator, cupy_tensorflow_allocator
  from ._param_server import ParamServer
  from .cupy_ops import CupyOps
  from .mps_ops import MPSOps
  from .numpy_ops import NumpyOps
  from .ops import Ops
label_desc: Use image node_id 12 for calling a global function with example usage: _create_thread_local(attrs, local_class) and returns: obj