MCPcopy Create free account
hub / github.com/catboost/catboost / _do_apply

Function _do_apply

library/python/testing/yatest_lib/external.py:18–40  ·  view source on GitHub ↗
(func, value, apply_to_keys, value_path)

Source from the content-addressed store, hash-verified

16
17
18def _do_apply(func, value, apply_to_keys, value_path):
19 if value_path is None:
20 value_path = []
21
22 if isinstance(value, list) or isinstance(value, tuple):
23 res = []
24 for ind, item in enumerate(value):
25 path = copy.copy(value_path)
26 path.append(ind)
27 res.append(_do_apply(func, item, apply_to_keys, path))
28 elif isinstance(value, dict):
29 if is_external(value):
30 # this is a special serialized object pointing to some external place
31 res = func(value, value_path)
32 else:
33 res = {}
34 for key, val in sorted(value.items(), key=lambda dict_item: dict_item[0]):
35 path = copy.copy(value_path)
36 path.append(key)
37 res[_do_apply(func, key, apply_to_keys, path) if apply_to_keys else key] = _do_apply(func, val, apply_to_keys, path)
38 else:
39 res = func(value, value_path)
40 return res
41
42
43def apply(func, value, apply_to_keys=False):

Callers 1

applyFunction · 0.85

Calls 5

isinstanceFunction · 0.85
is_externalFunction · 0.85
funcFunction · 0.85
copyMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected