Skip to content

Commit 655382e

Browse files
Make all Element with Template pickable natively (#144)
* Make _parse_size robust to already parsed values (needed for unpickling a folium Map) * Add the _template_str to recover all the Elements * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * __setstate__ simplification * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * More change cleaning, keep only the Element change * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Clean verbosity & set attribute privates * Remove one action in Element setstate _template is already in self, no need to update it if not in state. --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent ce17e54 commit 655382e

1 file changed

Lines changed: 9 additions & 0 deletions

File tree

branca/element.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ def __init__(self, template=None, template_name=None):
5757
self._env = ENV
5858
self._children = OrderedDict()
5959
self._parent = None
60+
self._template_str = template
61+
self._template_name = template_name
6062

6163
if template is not None:
6264
self._template = Template(template)
@@ -71,11 +73,18 @@ def __getstate__(self):
7173
"""
7274
state: dict = self.__dict__.copy()
7375
state["_env"] = None
76+
state.pop("_template", None)
7477
return state
7578

7679
def __setstate__(self, state: dict):
7780
"""Re-add ._env attribute when unpickling"""
7881
state["_env"] = ENV
82+
83+
if state["_template_str"] is not None:
84+
state["_template"] = Template(state["_template_str"])
85+
elif state["_template_name"] is not None:
86+
state["_template"] = ENV.get_template(state["_template_name"])
87+
7988
self.__dict__.update(state)
8089

8190
def get_name(self):

0 commit comments

Comments
 (0)