code: def span_in_context(span):
      
  
      # Return a no-op Scope if None was specified.
      if span is None:
          return opentracing.Scope(None, None)
  
      return opentracing.tracer.scope_manager.activate(span, False)
docs: Create a context manager that stores the given span in the thread-local
      request context. This function should only be used in single-threaded
      applications like Flask / uWSGI.
  
      ## Usage example in WSGI middleware:
  
      .. code-block:: python
          from opentracing_instrumentation.http_server import WSGIRequestWrapper
          from opentracing_instrumentation.http_server import before_request
          from opentracing_instrumentation import request_context
  
          def create_wsgi_tracing_middleware(other_wsgi):
  
              def wsgi_tracing_middleware(environ, start_response):
                  request = WSGIRequestWrapper.from_wsgi_environ(environ)
                  span = before_request(request=request, tracer=tracer)
  
                  # Wrapper around the real start_response object to log
                  # additional information to opentracing Span
                  def start_response_wrapper(status, response_headers,
                                             exc_info=None):
                      if exc_info is not None:
                          span.log(event='exception', payload=exc_info)
                      span.finish()
  
                      return start_response(status, response_headers)
  
                  with request_context.span_in_context(span):
                      return other_wsgi(environ, start_response_wrapper)
  
              return wsgi_tracing_middleware
  
      :param span: OpenTracing Span
      :return:
          Return context manager that wraps the request context.