Add tomorrow to repo rather than dependency
This commit is contained in:
@@ -21,7 +21,7 @@ import urllib
|
||||
from cStringIO import StringIO
|
||||
|
||||
from sqlalchemy.orm import reconstructor
|
||||
from tomorrow import threads
|
||||
from eos.tomorrow import threads
|
||||
|
||||
|
||||
class Crest(object):
|
||||
|
||||
44
eos/tomorrow.py
Normal file
44
eos/tomorrow.py
Normal file
@@ -0,0 +1,44 @@
|
||||
# https://github.com/madisonmay/Tomorrow
|
||||
|
||||
from functools import wraps
|
||||
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
|
||||
|
||||
class Tomorrow():
|
||||
|
||||
def __init__(self, future, timeout):
|
||||
self._future = future
|
||||
self._timeout = timeout
|
||||
|
||||
def __getattr__(self, name):
|
||||
result = self._wait()
|
||||
return result.__getattribute__(name)
|
||||
|
||||
def _wait(self):
|
||||
return self._future.result(self._timeout)
|
||||
|
||||
|
||||
def async(n, base_type, timeout=None):
|
||||
def decorator(f):
|
||||
if isinstance(n, int):
|
||||
pool = base_type(n)
|
||||
elif isinstance(n, base_type):
|
||||
pool = n
|
||||
else:
|
||||
raise TypeError(
|
||||
"Invalid type: %s"
|
||||
% type(base_type)
|
||||
)
|
||||
@wraps(f)
|
||||
def wrapped(*args, **kwargs):
|
||||
return Tomorrow(
|
||||
pool.submit(f, *args, **kwargs),
|
||||
timeout=timeout
|
||||
)
|
||||
return wrapped
|
||||
return decorator
|
||||
|
||||
|
||||
def threads(n, timeout=None):
|
||||
return async(n, ThreadPoolExecutor, timeout)
|
||||
Reference in New Issue
Block a user