|
7 | 7 | from importlib import import_module
|
8 | 8 | import copy
|
9 | 9 | import io
|
10 |
| -from copy import deepcopy |
11 | 10 | import re
|
12 | 11 | import sys
|
13 | 12 |
|
@@ -2662,34 +2661,34 @@ def validate_coerce(self, v, skip_invalid=False, _validate=True):
|
2662 | 2661 | for v_el in v:
|
2663 | 2662 |
|
2664 | 2663 | if isinstance(v_el, BaseTraceType):
|
2665 |
| - # Clone input traces |
2666 |
| - v_el = v_el.to_plotly_json() |
| 2664 | + if isinstance(v_el, Histogram2dcontour): |
| 2665 | + v_el = dict(type="histogram2dcontour", **v_el._props) |
| 2666 | + else: |
| 2667 | + v_el = v_el._props |
2667 | 2668 |
|
2668 | 2669 | if isinstance(v_el, dict):
|
2669 |
| - v_copy = deepcopy(v_el) |
2670 |
| - |
2671 |
| - if "type" in v_copy: |
2672 |
| - trace_type = v_copy.pop("type") |
2673 |
| - elif isinstance(v_el, Histogram2dcontour): |
2674 |
| - trace_type = "histogram2dcontour" |
2675 |
| - else: |
2676 |
| - trace_type = "scatter" |
| 2670 | + type_in_v_el = "type" in v_el |
| 2671 | + trace_type = v_el.pop("type", "scatter") |
2677 | 2672 |
|
2678 | 2673 | if trace_type not in self.class_strs_map:
|
2679 | 2674 | if skip_invalid:
|
2680 | 2675 | # Treat as scatter trace
|
2681 | 2676 | trace = self.get_trace_class("scatter")(
|
2682 |
| - skip_invalid=skip_invalid, _validate=_validate, **v_copy |
| 2677 | + skip_invalid=skip_invalid, _validate=_validate, **v_el |
2683 | 2678 | )
|
2684 | 2679 | res.append(trace)
|
2685 | 2680 | else:
|
2686 | 2681 | res.append(None)
|
2687 | 2682 | invalid_els.append(v_el)
|
2688 | 2683 | else:
|
2689 | 2684 | trace = self.get_trace_class(trace_type)(
|
2690 |
| - skip_invalid=skip_invalid, _validate=_validate, **v_copy |
| 2685 | + skip_invalid=skip_invalid, _validate=_validate, **v_el |
2691 | 2686 | )
|
2692 | 2687 | res.append(trace)
|
| 2688 | + |
| 2689 | + if type_in_v_el: |
| 2690 | + # Restore type in v_el |
| 2691 | + v_el["type"] = trace_type |
2693 | 2692 | else:
|
2694 | 2693 | if skip_invalid:
|
2695 | 2694 | # Add empty scatter trace
|
|
0 commit comments