class_docstr: Metaclass for all estimators in cuML. This metaclass will get called for
  estimators deriving from `cuml.common.Base` as well as
  `cuml.dask.common.BaseEstimator`. It serves 2 primary functions:
  
   1. Set the `@_deprecate_pos_args()` decorator on all `__init__` functions
   2. Wrap any functions and properties in the API decorators
      [`cuml.common.Base` only]
code: def __new__(cls, classname, bases, classDict):
      is_dask_module = classDict["__module__"].startswith("cuml.dask")
  
      for attributeName, attribute in classDict.items():
          # If attributeName is `__init__`, wrap in the decorator to
          # deprecate positional args
          if attributeName == "__init__":
              attribute = _check_and_wrap_init(
                  attribute, version="21.06"
              )
              classDict[attributeName] = attribute
  
          # For now, skip all additional processing if we are a dask
          # estimator
          if is_dask_module:
              continue
  
          # Must be a function
          if callable(attribute):
              classDict[attributeName] = _wrap_attribute(
                  classname, attributeName, attribute
              )
  
          elif isinstance(attribute, property):
              # Need to wrap the getter if it exists
              if (
                  hasattr(attribute, "fget")
                  and attribute.fget is not None
              ):
                  classDict[attributeName] = attribute.getter(
                      _wrap_attribute(
                          classname,
                          attributeName,
                          attribute.fget,
                          input_arg=None,
                      )
                  )
  
      return type.__new__(cls, classname, bases, classDict)
  
file_path: cuml/python/cuml/internals/base_helpers.py
imports: from inspect import Parameter, signature
  import typing
  from cuml.internals.api_decorators import api_base_return_generic, api_base_return_array, api_base_return_sparse_array, api_base_return_any, api_return_any, _deprecate_pos_args
  from cuml.internals.array import CumlArray
  from cuml.internals.array_sparse import SparseCumlArray
  from cuml.internals.base_return_types import _get_base_return_type
  from cuml.internals.constants import CUML_WRAPPED_FLAG
label_desc: Use image node_id 1 for calling the BaseMetaClass obj's underlying member method code with example usage: obj.__new__(cls, classname, bases, classDict) and returns: type