def protect_libraries_from_patching():
    """
    In this function we delete some modules from `sys.modules` dictionary and import them again inside
      `_pydev_saved_modules` in order to save their original copies there. After that we can use these
      saved modules within the debugger to protect them from patching by external libraries (e.g. gevent).
    """
    patched = ['threading', 'thread', '_thread', 'time', 'socket', 'Queue', 'queue', 'select',
               'xmlrpclib', 'SimpleXMLRPCServer', 'BaseHTTPServer', 'SocketServer',
               'xmlrpc.client', 'xmlrpc.server', 'http.server', 'socketserver']

    for name in patched:
        try:
            __import__(name)
        except:
            pass

    patched_modules = dict([(k, v) for k, v in sys.modules.items()
                            if k in patched])

    for name in patched_modules:
        del sys.modules[name]

    # import for side effects
    import _pydev_imps._pydev_saved_modules

    for name in patched_modules:
        sys.modules[name] = patched_modules[name]
def protect_libraries_from_patching ( ) : patched = [ 'threading' , 'thread' , '_thread' , 'time' , 'socket' , 'Queue' , 'queue' , 'select' , 'xmlrpclib' , 'SimpleXMLRPCServer' , 'BaseHTTPServer' , 'SocketServer' , 'xmlrpc.client' , 'xmlrpc.server' , 'http.server' , 'socketserver' ] for name in patched : try : __import__ ( name ) except : pass patched_modules = dict ( [ ( k , v ) for k , v in sys . modules . items ( ) if k in patched ] ) for name in patched_modules : del sys . modules [ name ] import _pydev_imps . _pydev_saved_modules for name in patched_modules : sys . modules [ name ] = patched_modules [ name ]
In this function we delete some modules from `sys.modules` dictionary and import them again inside
      `_pydev_saved_modules` in order to save their original copies there. After that we can use these
      saved modules within the debugger to protect them from patching by external libraries (e.g. gevent).