You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I tried to deepcopy a bmb.Model and find out that we face a cannot pickle '_thread.lock' object.
After investigation, this is due to saving of thread locked objects within formulae.Environment objects.
Indeed many, locked variables are fetched while calling Environment.capture().
My dummy workaround was to just replace the return cls([frame.f_locals, frame.f_globals])
if isinstance(env, cls):
return env
elif isinstance(env, numbers.Integral):
depth = env + reference
else:
raise TypeError("'env' must be either an integer or an instance of Environment.")
frame = inspect.currentframe()
try:
for _ in range(depth + 1):
if frame is None:
raise ValueError("call-stack is not that deep!")
frame = frame.f_back
# return cls([frame.f_locals, frame.f_globals])
return cls([])
finally:
del frame
I'm not experienced enough on Bambi formulae, a good workaround would be to keep only what is necessary for formulae to work in output of the capture() function
I hope it would be helpful
The text was updated successfully, but these errors were encountered:
Hello !
I tried to deepcopy a bmb.Model and find out that we face a
cannot pickle '_thread.lock' object
.After investigation, this is due to saving of thread locked objects within
formulae.Environment
objects.Indeed many, locked variables are fetched while calling
Environment.capture()
.My dummy workaround was to just replace the
return cls([frame.f_locals, frame.f_globals])
I'm not experienced enough on Bambi formulae, a good workaround would be to keep only what is necessary for formulae to work in output of the capture() function
I hope it would be helpful
The text was updated successfully, but these errors were encountered: