MCPcopy Index your code
hub / github.com/RustPython/RustPython / _reconstruct

Function _reconstruct

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

Source from the content-addressed store, hash-verified

226 memo[id(memo)]=[x]
227
228def _reconstruct(x, memo, func, args,
229 state=None, listiter=None, dictiter=None,
230 *, deepcopy=deepcopy):
231 deep = memo is not None
232 if deep and args:
233 args = (deepcopy(arg, memo) for arg in args)
234 y = func(*args)
235 if deep:
236 memo[id(x)] = y
237
238 if state is not None:
239 if deep:
240 state = deepcopy(state, memo)
241 if hasattr(y, '__setstate__'):
242 y.__setstate__(state)
243 else:
244 if isinstance(state, tuple) and len(state) == 2:
245 state, slotstate = state
246 else:
247 slotstate = None
248 if state is not None:
249 y.__dict__.update(state)
250 if slotstate is not None:
251 for key, value in slotstate.items():
252 setattr(y, key, value)
253
254 if listiter is not None:
255 if deep:
256 for item in listiter:
257 item = deepcopy(item, memo)
258 y.append(item)
259 else:
260 for item in listiter:
261 y.append(item)
262 if dictiter is not None:
263 if deep:
264 for key, value in dictiter:
265 key = deepcopy(key, memo)
266 value = deepcopy(value, memo)
267 y[key] = value
268 else:
269 for key, value in dictiter:
270 y[key] = value
271 return y
272
273del types, weakref
274

Callers 2

copyFunction · 0.85
deepcopyFunction · 0.85

Calls 11

deepcopyFunction · 0.85
idFunction · 0.85
hasattrFunction · 0.85
isinstanceFunction · 0.85
lenFunction · 0.85
setattrFunction · 0.85
funcFunction · 0.50
__setstate__Method · 0.45
updateMethod · 0.45
itemsMethod · 0.45
appendMethod · 0.45

Tested by

no test coverage detected