MCPcopy
hub / github.com/hyperopt/hyperopt / SONify

Function SONify

hyperopt/base.py:121–160  ·  view source on GitHub ↗
(arg, memo=None)

Source from the content-addressed store, hash-verified

119
120
121def SONify(arg, memo=None):
122 if not have_bson:
123 return arg
124 add_arg_to_raise = True
125 try:
126 if memo is None:
127 memo = {}
128 if id(arg) in memo:
129 rval = memo[id(arg)]
130 if isinstance(arg, ObjectId):
131 rval = arg
132 elif isinstance(arg, datetime.datetime):
133 rval = arg
134 elif isinstance(arg, np.floating):
135 rval = float(arg)
136 elif isinstance(arg, np.integer):
137 rval = int(arg)
138 elif isinstance(arg, (list, tuple)):
139 rval = type(arg)([SONify(ai, memo) for ai in arg])
140 elif isinstance(arg, dict):
141 rval = {SONify(k, memo): SONify(v, memo) for k, v in list(arg.items())}
142 elif isinstance(arg, (basestring, float, int, type(None))):
143 rval = arg
144 elif isinstance(arg, np.ndarray):
145 if arg.ndim == 0:
146 rval = SONify(arg.sum())
147 else:
148 rval = list(map(SONify, arg)) # N.B. memo None
149 # -- put this after ndarray because ndarray not hashable
150 elif isinstance(arg, bool):
151 rval = int(arg)
152 else:
153 add_arg_to_raise = False
154 raise TypeError("SONify", arg)
155 except Exception as e:
156 if add_arg_to_raise:
157 e.args = e.args + (arg,)
158 raise
159 memo[id(rval)] = rval
160 return rval
161
162
163def miscs_update_idxs_vals(miscs, idxs, vals, assert_all_vals_used=True, idxs_map=None):

Callers 5

SONifyMethod · 0.90
test_nested_w_boolMethod · 0.90
insert_trial_docMethod · 0.85
insert_trial_docsMethod · 0.85
run_oneMethod · 0.85

Calls 1

itemsMethod · 0.80

Tested by 2

SONifyMethod · 0.72
test_nested_w_boolMethod · 0.72