class_docstr: Class for custom operators in PyTorch.
  
  Use the CustomOp API to create user-defined custom operators that behave
  just like regular PyTorch operators (e.g. torch.sin, torch.mm) when it
  comes to various PyTorch subsystems (like torch.compile).
  
  To construct a `CustomOp`, use `custom_op`.
code: def _check_doesnt_have_library_meta_impl(self):
      if self._has_impl("abstract"):
          return
  
      # If the user's operator is CompositeExplicitAutograd,
      # allow them to impl_abstract. This is being pragmatic
      # (existing custom ops may have CompositeExplicitAutograd
      # registration that don't work with Meta kernels, so this
      # gives them an escape hatch).
      if _C._dispatch_has_kernel_for_dispatch_key(
          self._qualname, "CompositeExplicitAutograd"
      ) and not _C._dispatch_has_kernel_for_dispatch_key(
          self._qualname, "Meta"
      ):
          return
  
      # Otherwise, if the user's already has a Meta kernel or their
      # op is CompositeImplicitAutograd or some other alias dispatch key,
      # raise.
  
      # Special case for CompositeImplicitAutograd
      if _C._dispatch_has_kernel_for_dispatch_key(
          self._qualname, "CompositeImplicitAutograd"
      ):
          raise RuntimeError(
              f"impl_abstract(...): the operator {self._qualname} "
              f"already has an implementation for this device type via a "
              f"pre-existing registration to DispatchKey::CompositeImplicitAutograd."
              f"CompositeImplicitAutograd operators do not need an abstract impl; "
              f"instead, the operator will decompose into its constituents and those "
              f"can have abstract impls defined on them."
          )
  
      if _C._dispatch_has_kernel_for_dispatch_key(
          self._qualname, "Meta"
      ):
          raise RuntimeError(
              f"impl_abstract(...): the operator {self._qualname} "
              f"already has an DispatchKey::Meta implementation via a "
              f"pre-existing torch.library or TORCH_LIBRARY registration. "
              f"Please either remove that registration or don't call impl_abstract."
          )
  
imports: import dataclasses
  import functools
  import inspect
  import sys
  import typing
  import weakref
  from torchgen.model import FunctionSchema, OperatorName, SchemaKind, BaseType, ListType, BaseTy
  import torch
  import torch._C
  import torch.library
  from torch._library.abstract_impl import AbstractImplCtx
  from torch.library import get_ctx
  from .autograd import autograd_kernel_indirection, construct_autograd_kernel
label_desc: Use image node_id 15 for calling the CustomOp obj's underlying member method code with example usage: obj._check_doesnt_have_library_meta_impl() without return types