text: from __future__ import absolute_import
  import queue
  import threading
  import time
  
  try:
      from simple_websocket import Server, ConnectionClosed
      _websocket_available = True
  except ImportError:  # pragma: no cover
      _websocket_available = False
  
  
  class WebSocketWSGI(object):  # pragma: no cover
      """
      This wrapper class provides a threading WebSocket interface that is
      compatible with eventlet's implementation.
      """
      def __init__(self, app):
          self.app = app
  
      def __call__(self, environ, start_response):
          self.ws = Server(environ)
          return self.app(self)
  
      def close(self):
          return self.ws.close()
  
      def send(self, message):
          try:
              return self.ws.send(message)
          except ConnectionClosed:
              raise IOError()
  
      def wait(self):
          try:
              return self.ws.receive()
          except ConnectionClosed:
              raise IOError()
  
  
  _async = {
      'thread': threading.Thread,
      'queue': queue.Queue,
      'queue_empty': queue.Empty,
      'event': threading.Event,
      'websocket': WebSocketWSGI if _websocket_available else None,
      'sleep': time.sleep,
  }
  