Skip to content

Commit 5974cf5

Browse files
committed
Don't auto-import all trace type classes
1 parent ceb9523 commit 5974cf5

File tree

1 file changed

+13
-19
lines changed

1 file changed

+13
-19
lines changed

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

+13-19
Original file line numberDiff line numberDiff line change
@@ -2561,7 +2561,7 @@ def __init__(
25612561
)
25622562

25632563
self.class_strs_map = class_strs_map
2564-
self._class_map = None
2564+
self._class_map = {}
25652565
self.set_uid = set_uid
25662566

25672567
def description(self):
@@ -2597,21 +2597,17 @@ def description(self):
25972597

25982598
return desc
25992599

2600-
@property
2601-
def class_map(self):
2602-
if self._class_map is None:
2603-
2604-
# Initialize class map
2605-
self._class_map = {}
2606-
2607-
# Import trace classes
2600+
def get_trace_class(self, trace_name):
2601+
# Import trace classes
2602+
if trace_name not in self._class_map:
26082603
trace_module = import_module("plotly.graph_objs")
2609-
for k, class_str in self.class_strs_map.items():
2610-
self._class_map[k] = getattr(trace_module, class_str)
2604+
trace_class_name = self.class_strs_map[trace_name]
2605+
self._class_map[trace_name] = getattr(trace_module, trace_class_name)
26112606

2612-
return self._class_map
2607+
return self._class_map[trace_name]
26132608

26142609
def validate_coerce(self, v, skip_invalid=False):
2610+
from plotly.basedatatypes import BaseTraceType
26152611

26162612
# Import Histogram2dcontour, this is the deprecated name of the
26172613
# Histogram2dContour trace.
@@ -2623,13 +2619,11 @@ def validate_coerce(self, v, skip_invalid=False):
26232619
if not isinstance(v, (list, tuple)):
26242620
v = [v]
26252621

2626-
trace_classes = tuple(self.class_map.values())
2627-
26282622
res = []
26292623
invalid_els = []
26302624
for v_el in v:
26312625

2632-
if isinstance(v_el, trace_classes):
2626+
if isinstance(v_el, BaseTraceType):
26332627
# Clone input traces
26342628
v_el = v_el.to_plotly_json()
26352629

@@ -2643,25 +2637,25 @@ def validate_coerce(self, v, skip_invalid=False):
26432637
else:
26442638
trace_type = "scatter"
26452639

2646-
if trace_type not in self.class_map:
2640+
if trace_type not in self.class_strs_map:
26472641
if skip_invalid:
26482642
# Treat as scatter trace
2649-
trace = self.class_map["scatter"](
2643+
trace = self.get_trace_class("scatter")(
26502644
skip_invalid=skip_invalid, **v_copy
26512645
)
26522646
res.append(trace)
26532647
else:
26542648
res.append(None)
26552649
invalid_els.append(v_el)
26562650
else:
2657-
trace = self.class_map[trace_type](
2651+
trace = self.get_trace_class(trace_type)(
26582652
skip_invalid=skip_invalid, **v_copy
26592653
)
26602654
res.append(trace)
26612655
else:
26622656
if skip_invalid:
26632657
# Add empty scatter trace
2664-
trace = self.class_map["scatter"]()
2658+
trace = self.get_trace_class("scatter")()
26652659
res.append(trace)
26662660
else:
26672661
res.append(None)

0 commit comments

Comments
 (0)