code: def federation_auto_trace(func):
      if not _is_tracing_enabled():
  
          def wrapper(*args, **kwargs):
              out = func(*args, **kwargs)
              logger.error(
                  f"function {func.__qualname__} is called on {args} {kwargs}"
              )
              return out
  
          return wrapper
  
      @functools.wraps(func)
      def wrapper(*args, **kwargs):
          import inspect
  
          bounded = inspect.signature(func).bind(*args, **kwargs)
          name = bounded.arguments.get("name")
          tag = bounded.arguments.get("tag")
  
          module_name = func.__module__
          qualname = func.__qualname__
          span_name = f"federation.{qualname}"
          tracer = get_tracer(module_name)
          with tracer.start_as_current_span(span_name) as span:
              import traceback
  
              callstack = "\n".join(
                  [
                      line.strip()
                      for line in traceback.format_stack()[:-2]
                  ]
              )
              span.set_attribute("call_stack", callstack)
              span.set_attribute("qualname", qualname)
              span.set_attribute("module", module_name)
              span.set_attribute("name", name)
              span.set_attribute("tag", tag)
  
              return func(*args, **kwargs)
  
      return wrapper
  
imports: import functools
  import logging
  import os
  import time
  import typing
  from typing import List
  from opentelemetry import trace, context
label_desc: Use image node_id 11 for calling a global function with example usage: federation_auto_trace(func) and returns: wrapper, wrapper, out, func