MCPcopy Index your code
hub / github.com/python/cpython / _reconstruct

Function _reconstruct

Lib/copy.py:243–286  ·  view source on GitHub ↗
(x, memo, func, args,
                 state=None, listiter=None, dictiter=None,
                 *, deepcopy=deepcopy)

Source from the content-addressed store, hash-verified

241 memo[id(memo)]=[x]
242
243def _reconstruct(x, memo, func, args,
244 state=None, listiter=None, dictiter=None,
245 *, deepcopy=deepcopy):
246 deep = memo is not None
247 if deep and args:
248 args = [deepcopy(arg, memo) for arg in args]
249 y = func(*args)
250 if deep:
251 memo[id(x)] = y
252
253 if state is not None:
254 if deep:
255 state = deepcopy(state, memo)
256 if hasattr(y, '__setstate__'):
257 y.__setstate__(state)
258 else:
259 if isinstance(state, tuple) and len(state) == 2:
260 state, slotstate = state
261 else:
262 slotstate = None
263 if state is not None:
264 y.__dict__.update(state)
265 if slotstate is not None:
266 for key, value in slotstate.items():
267 setattr(y, key, value)
268
269 if listiter is not None:
270 if deep:
271 for item in listiter:
272 item = deepcopy(item, memo)
273 y.append(item)
274 else:
275 for item in listiter:
276 y.append(item)
277 if dictiter is not None:
278 if deep:
279 for key, value in dictiter:
280 key = deepcopy(key, memo)
281 value = deepcopy(value, memo)
282 y[key] = value
283 else:
284 for key, value in dictiter:
285 y[key] = value
286 return y
287
288del types, weakref
289

Callers 2

copyFunction · 0.85
deepcopyFunction · 0.85

Calls 7

idFunction · 0.85
deepcopyFunction · 0.70
funcFunction · 0.50
__setstate__Method · 0.45
updateMethod · 0.45
itemsMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…