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.
ORPA-pyOpenRPA/Resources/WPy64-3720/python-3.7.2.amd64/Lib/site-packages/dask/context.py

78 lines
2.2 KiB

6 years ago
"""
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