Last active
December 9, 2019 20:50
-
-
Save daveleroy/536b0a11280aa6c3ec668f4c980a866f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Handle: | |
def __init__(self, callback, args): | |
self.callback = callback | |
self.args = args | |
def __call__(self): | |
if self.callback: | |
self.callback(*self.args) | |
def cancel(self): | |
self.callback = None | |
self.args = None | |
class SublimeEventLoop (asyncio.AbstractEventLoop): | |
def run_forever(self): | |
raise NotImplementedError | |
def run_until_complete(self, future): | |
raise NotImplementedError | |
def stop(self): | |
raise NotImplementedError | |
def is_running(self): | |
raise NotImplementedError | |
def is_closed(self): | |
raise NotImplementedError | |
def close(self): | |
raise NotImplementedError | |
def shutdown_asyncgens(self): | |
raise NotImplementedError | |
# Methods scheduling callbacks. All these return Handles. | |
def _timer_handle_cancelled(self, handle): | |
raise NotImplementedError | |
def call_soon(self, callback, *args): | |
return self.call_later(0, callback, *args) | |
def call_later(self, delay, callback, *args): | |
handle = Handle(callback, args) | |
sublime.set_timeout(handle, delay * 1000) | |
return handle | |
def call_at(self, when, callback, *args): | |
raise NotImplementedError | |
def time(self): | |
raise NotImplementedError | |
def create_future(self): | |
return asyncio.futures.Future(loop=self) | |
# Method scheduling a coroutine object: create a task. | |
def create_task(self, coro): | |
task = asyncio.tasks.Task(coro, loop=self) | |
if task._source_traceback: | |
del task._source_traceback[-1] | |
return task | |
# Methods for interacting with threads. | |
def call_soon_threadsafe(self, callback, *args): | |
return self.call_later(0, callback, *args) | |
def run_in_executor(self, executor, func, *args): | |
raise NotImplementedError | |
def set_default_executor(self, executor): | |
raise NotImplementedError | |
# Task factory. | |
def set_task_factory(self, factory): | |
raise NotImplementedError | |
def get_task_factory(self): | |
raise NotImplementedError | |
# Error handlers. | |
def get_exception_handler(self): | |
raise NotImplementedError | |
def set_exception_handler(self, handler): | |
raise NotImplementedError | |
def default_exception_handler(self, context): | |
raise NotImplementedError | |
def call_exception_handler(self, context): | |
from .log import log_exception | |
from .error import Error | |
try: | |
if 'exception' in context: | |
raise context['exception'] | |
else: | |
raise Error(context['message']) | |
except Exception as e: | |
log_exception() | |
# Debug flag management. | |
def get_debug(self): | |
return False | |
def set_debug(self, enabled): | |
raise NotImplementedError |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment