Skip to content

Commit 0ccd082

Browse files
authored
Propagate empty templates (#1892)
* Propagate empty templates * Treat "none" template as {"data": {"scatter": [{}]}} as well
1 parent 085372a commit 0ccd082

File tree

5 files changed

+11
-4
lines changed

5 files changed

+11
-4
lines changed

Diff for: packages/python/plotly/_plotly_utils/basevalidators.py

+7
Original file line numberDiff line numberDiff line change
@@ -2712,6 +2712,13 @@ def validate_coerce(self, v, skip_invalid=False):
27122712
# v is un-hashable
27132713
pass
27142714

2715+
# Check for empty template
2716+
if v == {} or isinstance(v, self.data_class) and v.to_plotly_json() == {}:
2717+
# Replace empty template with {'data': {'scatter': [{}]}} so that we can
2718+
# tell the difference between an un-initialized template and a template
2719+
# explicitly set to empty.
2720+
return self.data_class(data_scatter=[{}])
2721+
27152722
return super(BaseTemplateValidator, self).validate_coerce(
27162723
v, skip_invalid=skip_invalid
27172724
)

Diff for: packages/python/plotly/plotly/basedatatypes.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1939,7 +1939,7 @@ def _initialize_layout_template(self):
19391939
if pio.templates.default is not None:
19401940
self._layout_obj.template = pio.templates.default
19411941
else:
1942-
self._layout_obj.template = {}
1942+
self._layout_obj.template = None
19431943

19441944
@property
19451945
def layout(self):

Diff for: packages/python/plotly/plotly/io/_templates.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ def __getitem__(self, item):
7979

8080
if template_name == "none":
8181
# "none" is a special built-in named template that applied no defaults
82-
template = Template()
82+
template = Template(data_scatter=[{}])
8383
self._templates[template_name] = template
8484
else:
8585
# Load template from package data

Diff for: packages/python/plotly/plotly/tests/test_core/test_graph_objs/test_template.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ def test_template_default_override(self):
154154
def test_template_default_override_empty(self):
155155
pio.templates.default = "test_template"
156156
fig = go.Figure(layout={"template": {}})
157-
self.assertEqual(fig.layout.template, go.layout.Template())
157+
self.assertEqual(fig.layout.template, go.layout.Template(data_scatter=[{}]))
158158

159159
def test_delete_default_template(self):
160160
pio.templates.default = "test_template"

Diff for: packages/python/plotly/plotly/tests/test_core/test_px/test_px.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def test_px_templates():
8080

8181
# accept objects in args
8282
fig = px.scatter(template={})
83-
assert fig.layout.template == go.layout.Template()
83+
assert fig.layout.template == go.layout.Template(data_scatter=[{}])
8484

8585
# read colorway from the template
8686
fig = px.scatter(

0 commit comments

Comments
 (0)