def _uninstrument_channel_functions(channel: BlockingChannel) -> None:
     for function_name in _FUNCTIONS_TO_UNINSTRUMENT:
         if not hasattr(channel, function_name):
             continue
         function = getattr(channel, function_name)
         if hasattr(function, "_original_function"):
             channel.__setattr__(function_name, function._original_function)
     unwrap(channel, "basic_consume")
 def _instrument_basic_publish(
     channel: BlockingChannel,
     tracer: Tracer,
     publish_hook: utils.HookT = utils.dummy_callback,
 ) -> None:
     original_function = getattr(channel, "basic_publish")
     decorated_function = utils._decorate_basic_publish(
         original_function, channel, tracer, publish_hook)
     setattr(decorated_function, "_original_function", original_function)
     channel.__setattr__("basic_publish", decorated_function)
     channel.basic_publish = decorated_function