code: def deprecated(wrapped=None, version=None, explanation=None):
      """
      Decorator which can be used for indicating that a function/class is deprecated and going to be removed.
      Tracks down which function/class printed the warning and will print it only once per call.
  
      Args:
        version: Version in which the function/class will be removed (optional).
        explanation: Additional explanation, e.g. "Please, ``use another_function`` instead." (optional).
      """
  
      if wrapped is None:
          return functools.partial(
              deprecated, version=version, explanation=explanation
          )
  
      @wrapt.decorator
      def wrapper(wrapped, instance, args, kwargs):
          # Check if we already warned about that function.
          if wrapped.__name__ not in _PRINTED_WARNING.keys():
              # Add to list so we won't print it again.
              _PRINTED_WARNING[wrapped.__name__] = True
  
              # Prepare the warning message.
              entity_name = (
                  "Class" if inspect.isclass(wrapped) else "Function"
              )
              msg = (
                  f"{entity_name} ``{wrapped.__name__}`` is deprecated."
              )
  
              # Optionally, add version and explanation.
              if version is not None:
                  msg = f"{msg} It is going to be removed in the {version} version."
  
              if explanation is not None:
                  msg = f"{msg} {explanation}"
  
              # Display the deprecated warning.
              logging.warning(msg)
  
          # Call the function.
          return wrapped(*args, **kwargs)
  
      return wrapper(wrapped)
  
imports: import functools
  import inspect
  import wrapt
  from nemo.utils import logging
label_desc: Use image node_id 1 for calling a global function with example usage: deprecated(wrapped, version, explanation) and returns: wrapper, functools, wrapped