示例#1
0
def test_tokenize_object():
    o = object()
    # Defaults to non-deterministic tokenization
    assert normalize_token(o) != normalize_token(o)

    with dask.config.set({"tokenize.ensure-deterministic": True}):
        with pytest.raises(RuntimeError, match="cannot be deterministically hashed"):
            normalize_token(o)
示例#2
0
def tokenize_calibration(self):
    '''
        This function will first inherit the tokenization from Calibration
        then run it for the RQConv case.
        It then runs it for the new arguments and appends to the args list.

        It will return something like:
            'list, [1,1,1], 'list', [1,3,4] etc
            it looks messy but at least it is hashable
    '''
    # inherit dispatch from Calibration object
    # calib_norm = normalize_token.dispatch(Calibration)
    # args = calib_norm(self)
    args = tokenize_calibration_base(self)
    # finally now tokenize the rest
    newargs = list()
    # round
    newargs.append(roundbydigits(self.det_orient, 3))
    newargs.append(roundbydigits(self.det_tilt, 3))
    newargs.append(roundbydigits(self.det_phi, 3))
    newargs.append(roundbydigits(self.incident_angle, 3))
    newargs.append(roundbydigits(self.sample_normal, 3))
    newargs.append(roundbydigits(self.rot_matrix, 3))
    newargs = normalize_token(newargs)
    args = (args, newargs)

    return args
示例#3
0
文件: test_base.py 项目: fortizc/dask
def test_tokenize_partial_func_args_kwargs_consistent():
    f = tz.partial(f3, f2, c=f1)
    res = normalize_token(f)
    sol = (b'cdask.tests.test_base\nf3\np0\n.',
           (b'cdask.tests.test_base\nf2\np0\n.',),
           (('c', b'cdask.tests.test_base\nf1\np0\n.'),))
    assert res == sol
示例#4
0
def tokenize_calibration_base(self):
    # function to allow for intelligent caching
    # all all computations of data and submethods
    # need to specify pure=True flag
    args = [self.wavelength_A, self.distance_m]
    args.append(self.pixel_size_um)
    if self.width is not None:
        args.append(self.width)
    if self.height is not None:
        args.append(self.height)

    # round these by 3 digits
    if self.x0 is not None:
        args.append(roundbydigits(self.x0, 3))
    if self.y0 is not None:
        args.append(roundbydigits(self.y0, 3))
    if self.angle_map_data is not None:
        args.append(roundbydigits(self.angle_map_data, 3))
    if self.q_map_data is not None:
        args.append(roundbydigits(self.q_map_data, 3))
    if self.qr_map_data is not None:
        args.append(roundbydigits(self.qr_map_data, 3))
    if self.qx_map_data is not None:
        args.append(roundbydigits(self.qx_map_data, 3))
    if self.qy_map_data is not None:
        args.append(roundbydigits(self.qy_map_data, 3))
    if self.qz_map_data is not None:
        args.append(roundbydigits(self.qz_map_data, 3))

    return normalize_token(args)
示例#5
0
    def __dask_tokenize__(self):
        "Produce a deterministic, content-based hash for dask."
        from dask.base import normalize_token

        return normalize_token(
            (type(self), self.coords, self.data, self.shape, self.fill_value)
        )
示例#6
0
def test_tokenize_partial_func_args_kwargs_consistent():
    f = tz.partial(f3, f2, c=f1)
    res = normalize_token(f)
    sol = (b'cdask.tests.test_base\nf3\np0\n.',
           (b'cdask.tests.test_base\nf2\np0\n.',),
           (('c', b'cdask.tests.test_base\nf1\np0\n.'),))
    assert res == sol
示例#7
0
 def __dask_tokenize__(self):
     import uuid
     from dask.base import normalize_token
     if not hasattr(self, "_unique_id"): self._unique_id = str(uuid.uuid4())
         
     return normalize_token(
         (type(self), self.lattice, self.field_type, self._unique_id)
     )
示例#8
0
def test_tokenize_partial_func_args_kwargs_consistent():
    f = partial(f3, f2, c=f1)
    res = normalize_token(f)
    sol = (
        b"cdask.tests.test_base\nf3\np0\n.",
        (b"cdask.tests.test_base\nf2\np0\n.", ),
        (("c", b"cdask.tests.test_base\nf1\np0\n."), ),
    )
    assert res == sol
示例#9
0
文件: test_base.py 项目: m-rossi/dask
def test_normalize_base():
    for i in [
            1,
            1.1,
            "1",
            slice(1, 2, 3),
            datetime.date(2021, 6, 25),
            pathlib.PurePath("/this/that"),
    ]:
        assert normalize_token(i) is i
示例#10
0
def test_tokenize_partial_func_args_kwargs_consistent():
    f = partial(f3, f2, c=f1)
    res = normalize_token(f)
    sol = (
        b"\x80\x04\x95\x1f\x00\x00\x00\x00\x00\x00\x00\x8c\x14dask.tests.test_base\x94\x8c\x02f3\x94\x93\x94.",
        (b"\x80\x04\x95\x1f\x00\x00\x00\x00\x00\x00\x00\x8c\x14dask.tests.test_base\x94\x8c\x02f2\x94\x93\x94.",
         ),
        ((
            "c",
            b"\x80\x04\x95\x1f\x00\x00\x00\x00\x00\x00\x00\x8c\x14dask.tests.test_base\x94\x8c\x02f1\x94\x93\x94.",
        ), ),
    )
    assert res == sol
示例#11
0
def test_use_cloudpickle_to_tokenize_functions_in__main__():
    from textwrap import dedent

    defn = dedent("""
    def inc():
        return x
    """)

    __main__ = sys.modules["__main__"]
    exec(compile(defn, "<test>", "exec"), __main__.__dict__)
    f = __main__.inc

    t = normalize_token(f)
    assert b"cloudpickle" in t
示例#12
0
def test_use_cloudpickle_to_tokenize_functions_in__main__():
    from textwrap import dedent

    defn = dedent("""
    def inc():
        return x
    """)

    __main__ = sys.modules['__main__']
    exec(compile(defn, '<test>', 'exec'), __main__.__dict__)
    f = __main__.inc

    t = normalize_token(f)
    assert b'cloudpickle' in t
示例#13
0
def test_use_cloudpickle_to_tokenize_functions_in__main__():
    import sys
    from textwrap import dedent

    defn = dedent("""
    def inc():
        return x
    """)

    __main__ = sys.modules['__main__']
    exec(compile(defn, '<test>', 'exec'), __main__.__dict__)
    f = __main__.inc

    t = normalize_token(f)
    assert b'__main__' not in t
示例#14
0
def test_normalize_function():
    def f1(a, b, c=1):
        pass
    cf1 = curry(f1)
    def f2(a, b=1, c=2):
        pass
    def f3(a):
        pass
    assert normalize_function(f2) == str(f2)
    f = lambda a: a
    assert normalize_function(f) == str(f)
    comp = compose(partial(f2, b=2), f3)
    assert normalize_function(comp) == ((str(f2), (), (('b', 2),)), str(f3))
    assert normalize_function(cf1) == (str(f1), (), ())
    assert normalize_function(cf1(2, c=2)) == (str(f1), (2,), (('c', 2),))
    assert normalize_token(cf1) == normalize_function(cf1)
示例#15
0
def test_normalize_function():
    def f1(a, b, c=1):
        pass
    cf1 = curry(f1)
    def f2(a, b=1, c=2):
        pass
    def f3(a):
        pass
    assert normalize_function(f2) == str(f2)
    f = lambda a: a
    assert normalize_function(f) == str(f)
    comp = compose(partial(f2, b=2), f3)
    assert normalize_function(comp) == ((str(f2), (), (('b', 2),)), str(f3))
    assert normalize_function(cf1) == (str(f1), (), ())
    assert normalize_function(cf1(2, c=2)) == (str(f1), (2,), (('c', 2),))
    assert normalize_token(cf1) == normalize_function(cf1)
示例#16
0
def normalize_estimator(est):
    """Normalize an estimator.

    Note: Since scikit-learn requires duck-typing, but not sub-typing from
    ``BaseEstimator``, we sometimes need to call this function directly."""
    base = [type(est).__name__, normalize_token(est.get_params())]
    # fitted attributes: https://github.com/dask/dask-ml/issues/658
    attrs = [x for x in dir(est) if x.endswith("_") and not x.startswith("_")]
    exclude = {"cv_results_", "model_history_", "history_", "refit_time_"}

    with warnings.catch_warnings():
        warnings.simplefilter("ignore", FutureWarning)
        for attr in attrs:
            if attr in exclude:
                continue
            try:
                val = getattr(est, attr)
            except (sklearn.exceptions.NotFittedError, AttributeError):
                continue
            base.append(val)
    return tuple(base)
示例#17
0
文件: utils.py 项目: jenssss/xarray
    def __dask_tokenize__(self):
        from dask.base import normalize_token

        return normalize_token((type(self), self._value))
示例#18
0
 def __dask_tokenize__(self):
     from dask.base import normalize_token
         
     return normalize_token(
         (type(self), self.dims, self.dofs, self.properties)
     )
示例#19
0
 def tokenize_foo(self):
     return normalize_token((self.a, self.b))
示例#20
0
def test_normalize_base():
    for i in [1, 1.1, '1', slice(1, 2, 3)]:
        assert normalize_token(i) is i
示例#21
0
def test_tokenize():
    a = (1, 2, 3)
    b = {'a': 1, 'b': 2, 'c': 3}
    assert tokenize(a) == '4889c6ccd7099fc2fd19f4be468fcfa0'
    assert tokenize(a, b) == tokenize(normalize_token(a), normalize_token(b))
示例#22
0
def test_normalize():
    assert normalize_token((1, 2, 3)) == (1, 2, 3)
    assert normalize_token('a') == 'a'
    assert normalize_token({'a': 1, 'b': 2, 'c': 3}) ==\
            (('a', 1), ('b', 2), ('c', 3))
示例#23
0
 def normalize_gridder_config_wrapper(gc):
     return normalize_token((gc.nx, gc.ny, gc.csx, gc.csy, gc.eps))
示例#24
0
def normalize_BaseEstimator(est):
    return type(est).__name__, normalize_token(vars(est))
示例#25
0
文件: test_base.py 项目: roxyboy/dask
def test_normalize():
    assert normalize_token((1, 2, 3)) == (1, 2, 3)
    assert normalize_token("a") == "a"
    assert normalize_token({"a": 1, "b": 2, "c": 3}) == (("a", 1), ("b", 2), ("c", 3))
示例#26
0
def tokenize_sdoc(sdoc):
    return normalize_token((sdoc['args'], sdoc['kwargs']))
示例#27
0
def normalize_estimator(est):
    """Normalize an estimator.

    Note: Since scikit-learn requires duck-typing, but not sub-typing from
    ``BaseEstimator``, we sometimes need to call this function directly."""
    return type(est).__name__, normalize_token(est.get_params())
示例#28
0
文件: test_base.py 项目: roxyboy/dask
def test_tokenize():
    a = (1, 2, 3)
    b = {"a": 1, "b": 2, "c": 3}
    assert tokenize(a) == "4889c6ccd7099fc2fd19f4be468fcfa0"
    assert tokenize(a, b) == tokenize(normalize_token(a), normalize_token(b))
示例#29
0
def test_matrix(mats, sol):
    dsk = dict((('test', i), m) for i, m in enumerate(mats))
    mat = dm.Matrix(dsk, 'test', 3)
    assert normalize_token(mat) == mat.name
    res = mat.compute()
    assert eq(res, sol)
示例#30
0
def test_normalize_base():
    for i in [1, long(1), 1.1, "1", slice(1, 2, 3)]:
        assert normalize_token(i) is i
示例#31
0
def test_normalize_base():
    for i in [1, 1.1, "1", slice(1, 2, 3), datetime.date(2021, 6, 25)]:
        assert normalize_token(i) is i
示例#32
0
def test_normalize():
    assert normalize_token((1, 2, 3)) == (1, 2, 3)
    assert normalize_token('a') == 'a'
    assert normalize_token({'a': 1, 'b': 2, 'c': 3}) ==\
            (('a', 1), ('b', 2), ('c', 3))
示例#33
0
文件: ma.py 项目: m-rossi/dask
def normalize_masked_array(x):
    data = normalize_token(x.data)
    mask = normalize_token(x.mask)
    fill_value = normalize_token(x.fill_value)
    return (data, mask, fill_value)
示例#34
0
def test_normalize_base():
    for i in [1, 1.1, '1', slice(1, 2, 3)]:
        assert normalize_token(i) is i
示例#35
0
def test_tokenize():
    a = (1, 2, 3)
    b = {'a': 1, 'b': 2, 'c': 3}
    assert tokenize(a) == '4889c6ccd7099fc2fd19f4be468fcfa0'
    assert tokenize(a, b) == tokenize(normalize_token(a), normalize_token(b))