You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.2 KiB
78 lines
2.2 KiB
"""
|
|
Control global computation context
|
|
"""
|
|
from __future__ import absolute_import, division, print_function
|
|
|
|
import threading
|
|
from functools import partial
|
|
from . import config
|
|
|
|
_globals = config.config
|
|
|
|
|
|
thread_state = threading.local()
|
|
|
|
|
|
def set_options(*args, **kwargs):
|
|
""" Deprecated: see dask.config.set instead """
|
|
raise TypeError("The dask.set_options function has been deprecated.\n"
|
|
"Please use dask.config.set instead\n\n"
|
|
" Before: with dask.set_options(foo='bar'):\n"
|
|
" ...\n"
|
|
" After: with dask.config.set(foo='bar'):\n"
|
|
" ...")
|
|
|
|
|
|
def globalmethod(default=None, key=None, falsey=None):
|
|
""" Allow function to be taken over by globals
|
|
|
|
This modifies a method so that occurrences of it may be taken over by
|
|
functions registered in the global options. Can be used as a decorator or a
|
|
function.
|
|
|
|
Parameters
|
|
----------
|
|
default : callable
|
|
The default callable to use.
|
|
key : str
|
|
Key under which we register this function in the global parameters
|
|
falsey : callable, None, optional
|
|
A function to use if the option is falsey. If not provided, the default
|
|
is used instead.
|
|
|
|
Examples
|
|
--------
|
|
>>> import dask
|
|
>>> class Foo(object):
|
|
... @globalmethod(key='bar', falsey=lambda: 3)
|
|
... def bar():
|
|
... return 1
|
|
>>> f = Foo()
|
|
>>> f.bar()
|
|
1
|
|
>>> with dask.config.set(bar=lambda: 2):
|
|
... print(f.bar())
|
|
2
|
|
>>> with dask.config.set(bar=False):
|
|
... print(f.bar())
|
|
3
|
|
"""
|
|
if default is None:
|
|
return partial(globalmethod, key=key, falsey=falsey)
|
|
return GlobalMethod(default=default, key=key, falsey=falsey)
|
|
|
|
|
|
class GlobalMethod(object):
|
|
def __init__(self, default, key, falsey=None):
|
|
self._default = default
|
|
self._key = config.normalize_key(key)
|
|
self._falsey = falsey
|
|
|
|
def __get__(self, instance, owner=None):
|
|
if self._key in _globals:
|
|
if _globals[self._key]:
|
|
return _globals[self._key]
|
|
elif self._falsey is not None:
|
|
return self._falsey
|
|
return self._default
|