code: def _check_and_wrap_init(attribute, **kwargs):
      # Check if the decorator has already been added
      if attribute.__dict__.get(_deprecate_pos_args.FLAG_NAME):
          return attribute
  
      # Get the signature to test if all args are keyword only
      sig = signature(attribute)
  
      incorrect_params = [
          n
          for n, p in sig.parameters.items()
          if n != "self"
          and (
              p.kind == Parameter.POSITIONAL_ONLY
              or p.kind == Parameter.POSITIONAL_OR_KEYWORD
          )
      ]
  
      assert len(incorrect_params) == 0, (
          "Error in `{}`!. Positional arguments for estimators (that derive "
          "from `Base`) have been deprecated but parameters '{}' can still "
          "be used as positional arguments. Please specify all parameters "
          "after `self` as keyword only by using the `*` argument"
      ).format(attribute.__qualname__, ", ".join(incorrect_params))
  
      return _deprecate_pos_args(**kwargs)(attribute)
  
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 2 for calling a global function with example usage: _check_and_wrap_init(attribute) and returns: _deprecate_pos_args, attribute