class_docstr: This wraps any returned IR values into an `OpsValue` instance, so that we
  can overload the magic methods for writing mathematical expressions fluently.
class_docstr_tok: ["This","wraps","any","returned","IR","values","into","an","`","OpsValue","`","instance",",","so","that","we","can","overload","the","magic","methods","for","writing","mathematical","expressions","fluently","."]
code: def __getattr__(self, name):
      def inner(*args, **kwargs):
          new_args = [OpsWrapper._unwrap(a) for a in args]
          new_kwargs = {
              k: OpsWrapper._unwrap(v) for k, v in kwargs.items()
          }
          return OpsWrapper._wrap(
              getattr(_ops, name)(*new_args, **new_kwargs)
          )
  
      return inner
  
imports: from __future__ import annotations
  import itertools
  from contextlib import contextmanager
  from itertools import chain
  from threading import local
  from typing import Any, Callable, TYPE_CHECKING, Union
  from unittest.mock import patch
  import sympy
  from torch._inductor.utils import IndentedBuffer
  from torch.fx.graph import inplace_methods, magic_methods
  from .utils import reduction_num_outputs, sympy_str, sympy_symbol
label_desc: Use image node_id 1 for calling the OpsWrapper obj's underlying member method code with example usage: obj.__getattr__(name) and returns: inner, OpsWrapper