|
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