code: def identical_signature_wrapper(original_function, wrapped_function):
      '''
      Return a function with identical signature as ``original_function``'s which
      will call the ``wrapped_function``.
      '''
      context = {'__wrapped__': wrapped_function}
      function_def = compile(
          'def {0}({1}):\n'
          '    return __wrapped__({2})'.format(
              # Keep the original function name
              original_function.__name__,
              # The function signature including defaults, i.e., 'timeout=1'
              inspect.formatargspec(
                  *salt.utils.args.get_function_argspec(original_function)
              )[1:-1],
              # The function signature without the defaults
              inspect.formatargspec(
                  formatvalue=lambda val: '',
                  *salt.utils.args.get_function_argspec(original_function)
              )[1:-1]
          ),
          '<string>',
          'exec'
      )
      six.exec_(function_def, context)
      return wraps(original_function)(context[original_function.__name__]f identical_signature_wrapper(original_function, wrapped_function):
      '''
      Return a function with identical signature as ``original_function``'s which
      will call the ``wrapped_function``.
      '''
      context = {'__wrapped__': wrapped_function}
      function_def = compile(
          'def {0}({1}):\n'
          '    return __wrapped__({2})'.format(
              # Keep the original function name
              original_function.__name__,
              # The function signature including defaults, i.e., 'timeout=1'
              inspect.formatargspec(
                  *salt.utils.args.get_function_argspec(original_function)
              )[1:-1],
              # The function signature without the defaults
              inspect.formatargspec(
                  formatvalue=lambda val: '',
                  *salt.utils.args.get_function_argspec(original_function)
              )[1:-1]
          ),
          '<string>',
          'exec'
      )
      six.exec_(function_def, context)
      return wraps(original_function)(context[original_function.__name__])
docs: Return a function with identical signature as ``original_function``'s which
      will call the ``wrapped_function``.