Hello,
I have some issues with deepcopy, if objects are not pickable, e.g.
Traceback (most recent call last):
File "mappings.py", line 45, in merge_mapping
return dict(merge(*(p.dict() for p in outputs_sequence), strategy=Strategy.ADDITIVE))
File "/home/user/.virtualenvs/dt_launcher/lib/python3.8/site-packages/mergedeep/mergedeep.py", line 100, in merge
return reduce(partial(_deepmerge, strategy=strategy), sources, destination)
File "/home/user/.virtualenvs/dt_launcher/lib/python3.8/site-packages/mergedeep/mergedeep.py", line 87, in _deepmerge
dst[key] = deepcopy(src[key])
File "/usr/lib/python3.8/copy.py", line 146, in deepcopy
y = copier(x, memo)
File "/usr/lib/python3.8/copy.py", line 230, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/lib/python3.8/copy.py", line 172, in deepcopy
y = _reconstruct(x, memo, *rv)
File "/usr/lib/python3.8/copy.py", line 270, in _reconstruct
state = deepcopy(state, memo)
File "/usr/lib/python3.8/copy.py", line 146, in deepcopy
y = copier(x, memo)
File "/usr/lib/python3.8/copy.py", line 230, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/lib/python3.8/copy.py", line 172, in deepcopy
y = _reconstruct(x, memo, *rv)
File "/usr/lib/python3.8/copy.py", line 270, in _reconstruct
state = deepcopy(state, memo)
File "/usr/lib/python3.8/copy.py", line 146, in deepcopy
y = copier(x, memo)
File "/usr/lib/python3.8/copy.py", line 230, in _deepcopy_dict
y[deepcopy(key, memo)] = deepcopy(value, memo)
File "/usr/lib/python3.8/copy.py", line 161, in deepcopy
rv = reductor(4)
TypeError: cannot pickle '_thread.lock' object
I see two ways to approach that:
- Use "normal" copy, i.e.
target = source, which afaik uses references as default
- Maybe add a parameter
copy_fun with can default do deepcopy but can be overwritten by a function which uses shallow copy.
Hello,
I have some issues with deepcopy, if objects are not pickable, e.g.
I see two ways to approach that:
target = source, which afaik uses references as defaultcopy_funwith can default dodeepcopybut can be overwritten by a function which uses shallow copy.