code: def update_wrapper_extended(wrapper, wrapped):
      """Update a `wrapper` function to look like the `wrapped` function. This is an extension of
      `functools.update_wrapper` that applies the docstring *and* signature of `wrapped` to
      `wrapper`, producing a new function.
  
      Returns:
          A new function with the same implementation as `wrapper` and the same docstring
          & signature as `wrapped`.
      """
      updated_wrapper = functools.update_wrapper(wrapper, wrapped)
      # Assign the signature of the `wrapped` function to the updated wrapper function.
      # Certain frameworks may disallow signature inspection, causing `inspect.signature()` to throw.
      # One such example is the `tensorflow.estimator.Estimator.export_savedmodel()` function
      try:
          updated_wrapper.__signature__ = inspect.signature(wrapped)
      except Exception:
          _logger.debug(
              "Failed to restore original signature for wrapper around %s",
              wrapped,
          )
      return updated_wrapper
  
imports: import abc
  import functools
  import inspect
  import itertools
  import typing
  import uuid
  from abc import abstractmethod
  from contextlib import contextmanager
  import mlflow
  import mlflow.utils.autologging_utils
  from mlflow.entities.run_status import RunStatus
  from mlflow.environment_variables import _MLFLOW_AUTOLOGGING_TESTING
  from mlflow.tracking.client import MlflowClient
  from mlflow.utils import gorilla, is_iterator
  from mlflow.utils.autologging_utils import _logger
  from mlflow.utils.autologging_utils.events import AutologgingEventLogger
  from mlflow.utils.autologging_utils.logging_and_warnings import set_mlflow_events_and_warnings_behavior_globally, set_non_mlflow_warnings_behavior_for_current_thread
  from mlflow.utils.mlflow_tags import MLFLOW_AUTOLOGGING
label_desc: Use image node_id 9 for calling a global function with example usage: update_wrapper_extended(wrapper, wrapped) and returns: updated_wrapper