MCPcopy Create free account
hub / github.com/RT-Thread/env-windows / _reconstruct

Function _reconstruct

tools/python-3.11.9-amd64/Lib/copy.py:259–302  ·  view source on GitHub ↗
(x, memo, func, args,
                 state=None, listiter=None, dictiter=None,
                 *, deepcopy=deepcopy)

Source from the content-addressed store, hash-verified

257 memo[id(memo)]=[x]
258
259def _reconstruct(x, memo, func, args,
260 state=None, listiter=None, dictiter=None,
261 *, deepcopy=deepcopy):
262 deep = memo is not None
263 if deep and args:
264 args = (deepcopy(arg, memo) for arg in args)
265 y = func(*args)
266 if deep:
267 memo[id(x)] = y
268
269 if state is not None:
270 if deep:
271 state = deepcopy(state, memo)
272 if hasattr(y, '__setstate__'):
273 y.__setstate__(state)
274 else:
275 if isinstance(state, tuple) and len(state) == 2:
276 state, slotstate = state
277 else:
278 slotstate = None
279 if state is not None:
280 y.__dict__.update(state)
281 if slotstate is not None:
282 for key, value in slotstate.items():
283 setattr(y, key, value)
284
285 if listiter is not None:
286 if deep:
287 for item in listiter:
288 item = deepcopy(item, memo)
289 y.append(item)
290 else:
291 for item in listiter:
292 y.append(item)
293 if dictiter is not None:
294 if deep:
295 for key, value in dictiter:
296 key = deepcopy(key, memo)
297 value = deepcopy(value, memo)
298 y[key] = value
299 else:
300 for key, value in dictiter:
301 y[key] = value
302 return y
303
304del types, weakref, PyStringMap

Callers 2

copyFunction · 0.85
deepcopyFunction · 0.85

Calls 6

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

Tested by

no test coverage detected