You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When trying to use HexCode objects in plotly (not currently supported), we can run into problems caused by the way that plotly handles color objects; namely, that it uses deepcopy at some point in the figure generation process to create a copy of an input color object. Because of the way we developed HexCode to inherit from str, we don't currently override the __copy__ or __deepcopy__ methods. My guess is that this results in a problem when deepcopy is used on a HexCode object.
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[5], [line 15](vscode-notebook-cell:?execution_count=5&line=15)
[8](vscode-notebook-cell:?execution_count=5&line=8) c = ['A', 'B', 'A', 'A', 'B']
[10](vscode-notebook-cell:?execution_count=5&line=10) cmap = {
[11](vscode-notebook-cell:?execution_count=5&line=11) 'A': apc.teal,
[12](vscode-notebook-cell:?execution_count=5&line=12) 'B': apc.tangerine,
[13](vscode-notebook-cell:?execution_count=5&line=13) }
---> [15](vscode-notebook-cell:?execution_count=5&line=15) px.scatter(x, y, color = c, color_discrete_map=cmap)
File ~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_chart_types.py:66, in scatter(data_frame, x, y, color, symbol, size, hover_name, hover_data, custom_data, text, facet_row, facet_col, facet_col_wrap, facet_row_spacing, facet_col_spacing, error_x, error_x_minus, error_y, error_y_minus, animation_frame, animation_group, category_orders, labels, orientation, color_discrete_sequence, color_discrete_map, color_continuous_scale, range_color, color_continuous_midpoint, symbol_sequence, symbol_map, opacity, size_max, marginal_x, marginal_y, trendline, trendline_options, trendline_color_override, trendline_scope, log_x, log_y, range_x, range_y, render_mode, title, template, width, height)
[12](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_chart_types.py:12) def scatter(
[13](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_chart_types.py:13) data_frame=None,
[14](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_chart_types.py:14) x=None,
(...)
[60](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_chart_types.py:60) height=None,
[61](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_chart_types.py:61) ) -> go.Figure:
[62](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_chart_types.py:62) """
[63](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_chart_types.py:63) In a scatter plot, each row of `data_frame` is represented by a symbol
[64](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_chart_types.py:64) mark in 2D space.
[65](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_chart_types.py:65) """
---> [66](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_chart_types.py:66) return make_figure(args=locals(), constructor=go.Scatter)
File ~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_core.py:2332, in make_figure(args, constructor, trace_patch, layout_patch)
[2323](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_core.py:2323) _set_trace_grid_reference(
[2324](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_core.py:2324) trace,
[2325](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_core.py:2325) fig.layout,
(...)
[2328](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_core.py:2328) trace._subplot_col,
[2329](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_core.py:2329) )
[2331](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_core.py:2331) # Add traces, layout and frames to figure
-> [2332](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_core.py:2332) fig.add_traces(frame_list[0]["data"] if len(frame_list) > 0 else [])
[2333](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_core.py:2333) fig.update_layout(layout_patch)
[2334](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/express/_core.py:2334) if "template" in args and args["template"] is not None:
File ~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_figure.py:980, in Figure.add_traces(self, data, rows, cols, secondary_ys, exclude_empty_subplots)
[904](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_figure.py:904) def add_traces(
[905](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_figure.py:905) self,
[906](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_figure.py:906) data,
(...)
[910](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_figure.py:910) exclude_empty_subplots=False,
[911](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_figure.py:911) ) -> "Figure":
[912](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_figure.py:912) """
[913](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_figure.py:913)
[914](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_figure.py:914) Add traces to the figure
(...)
[978](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_figure.py:978)
[979](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_figure.py:979) """
--> [980](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_figure.py:980) return super(Figure, self).add_traces(
[981](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_figure.py:981) data, rows, cols, secondary_ys, exclude_empty_subplots
[982](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_figure.py:982) )
File ~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:2192, in BaseFigure.add_traces(self, data, rows, cols, secondary_ys, exclude_empty_subplots)
[2124](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:2124) """
[2125](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:2125) Add traces to the figure
[2126](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:2126)
(...)
[2188](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:2188) Figure(...)
[2189](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:2189) """
[2191](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:2191) # Validate traces
-> [2192](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:2192) data = self._data_validator.validate_coerce(data)
[2194](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:2194) # Set trace indexes
[2195](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:2195) for ind, new_trace in enumerate(data):
File ~/miniconda3/envs/apc/lib/python3.12/site-packages/_plotly_utils/basevalidators.py:2684, in BaseDataValidator.validate_coerce(self, v, skip_invalid, _validate)
[2682](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/_plotly_utils/basevalidators.py:2682) invalid_els.append(v_el)
[2683](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/_plotly_utils/basevalidators.py:2683) else:
-> [2684](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/_plotly_utils/basevalidators.py:2684) trace = self.get_trace_class(trace_type)(
[2685](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/_plotly_utils/basevalidators.py:2685) skip_invalid=skip_invalid, _validate=_validate, **v_el
[2686](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/_plotly_utils/basevalidators.py:2686) )
[2687](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/_plotly_utils/basevalidators.py:2687) res.append(trace)
[2689](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/_plotly_utils/basevalidators.py:2689) if type_in_v_el:
[2690](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/_plotly_utils/basevalidators.py:2690) # Restore type in v_el
File ~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_scatter.py:3386, in Scatter.__init__(self, arg, alignmentgroup, cliponaxis, connectgaps, customdata, customdatasrc, dx, dy, error_x, error_y, fill, fillcolor, fillpattern, groupnorm, hoverinfo, hoverinfosrc, hoverlabel, hoveron, hovertemplate, hovertemplatesrc, hovertext, hovertextsrc, ids, idssrc, legend, legendgroup, legendgrouptitle, legendrank, legendwidth, line, marker, meta, metasrc, mode, name, offsetgroup, opacity, orientation, selected, selectedpoints, showlegend, stackgaps, stackgroup, stream, text, textfont, textposition, textpositionsrc, textsrc, texttemplate, texttemplatesrc, uid, uirevision, unselected, visible, x, x0, xaxis, xcalendar, xhoverformat, xperiod, xperiod0, xperiodalignment, xsrc, y, y0, yaxis, ycalendar, yhoverformat, yperiod, yperiod0, yperiodalignment, ysrc, **kwargs)
[3384](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_scatter.py:3384) _v = marker if marker is not None else _v
[3385](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_scatter.py:3385) if _v is not None:
-> [3386](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_scatter.py:3386) self["marker"] = _v
[3387](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_scatter.py:3387) _v = arg.pop("meta", None)
[3388](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/graph_objs/_scatter.py:3388) _v = meta if meta is not None else _v
File ~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:4868, in BasePlotlyType.__setitem__(self, prop, value)
[4866](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:4866) # ### Handle compound property ###
[4867](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:4867) if isinstance(validator, CompoundValidator):
-> [4868](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:4868) self._set_compound_prop(prop, value)
[4870](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:4870) # ### Handle compound array property ###
[4871](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:4871) elif isinstance(validator, (CompoundArrayValidator, BaseDataValidator)):
File ~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:5290, in BasePlotlyType._set_compound_prop(self, prop, val)
[5287](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:5287) curr_dict_val = None
[5289](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:5289) if val is not None:
-> [5290](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:5290) new_dict_val = deepcopy(val._props)
[5291](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:5291) else:
[5292](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/site-packages/plotly/basedatatypes.py:5292) new_dict_val = None
File ~/miniconda3/envs/apc/lib/python3.12/copy.py:136, in deepcopy(x, memo, _nil)
[134](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:134) copier = _deepcopy_dispatch.get(cls)
[135](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:135) if copier is not None:
--> [136](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:136) y = copier(x, memo)
[137](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:137) else:
[138](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:138) if issubclass(cls, type):
File ~/miniconda3/envs/apc/lib/python3.12/copy.py:221, in _deepcopy_dict(x, memo, deepcopy)
[219](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:219) memo[id(x)] = y
[220](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:220) for key, value in x.items():
--> [221](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:221) y[deepcopy(key, memo)] = deepcopy(value, memo)
[222](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:222) return y
File ~/miniconda3/envs/apc/lib/python3.12/copy.py:162, in deepcopy(x, memo, _nil)
[160](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:160) y = x
[161](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:161) else:
--> [162](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:162) y = _reconstruct(x, memo, *rv)
[164](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:164) # If is its own copy, don't memoize.
[165](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:165) if y is not x:
File ~/miniconda3/envs/apc/lib/python3.12/copy.py:253, in _reconstruct(x, memo, func, args, state, listiter, dictiter, deepcopy)
[251](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:251) if deep and args:
[252](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:252) args = (deepcopy(arg, memo) for arg in args)
--> [253](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:253) y = func(*args)
[254](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:254) if deep:
[255](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:255) memo[id(x)] = y
File ~/miniconda3/envs/apc/lib/python3.12/copyreg.py:99, in __newobj__(cls, *args)
[98](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copyreg.py:98) def __newobj__(cls, *args):
---> [99](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copyreg.py:99) return cls.__new__(cls, *args)
TypeError: HexCode.__new__() missing 1 required positional argument: 'hex_code'
Solution
For now, users can use the .hex_code property of a HexCode object to circumvent this limitation of our implementation. In the long term, we should consider implementing overrides of __copy__ and __deepcopy__ into HexCode to more easily support plotly.
The text was updated successfully, but these errors were encountered:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[6], [line 3](vscode-notebook-cell:?execution_count=6&line=3)
[1](vscode-notebook-cell:?execution_count=6&line=1) from copy import deepcopy
----> [3](vscode-notebook-cell:?execution_count=6&line=3) deepcopy(apc.teal)
File ~/miniconda3/envs/apc/lib/python3.12/copy.py:162, in deepcopy(x, memo, _nil)
[160](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:160) y = x
[161](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:161) else:
--> [162](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:162) y = _reconstruct(x, memo, *rv)
[164](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:164) # If is its own copy, don't memoize.
[165](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:165) if y is not x:
File ~/miniconda3/envs/apc/lib/python3.12/copy.py:253, in _reconstruct(x, memo, func, args, state, listiter, dictiter, deepcopy)
[251](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:251) if deep and args:
[252](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:252) args = (deepcopy(arg, memo) for arg in args)
--> [253](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:253) y = func(*args)
[254](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:254) if deep:
[255](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copy.py:255) memo[id(x)] = y
File ~/miniconda3/envs/apc/lib/python3.12/copyreg.py:99, in __newobj__(cls, *args)
[98](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copyreg.py:98) def __newobj__(cls, *args):
---> [99](https://file+.vscode-resource.vscode-cdn.net/Users/dennis/Code/arcadia-pycolor/~/miniconda3/envs/apc/lib/python3.12/copyreg.py:99) return cls.__new__(cls, *args)
TypeError: HexCode.__new__() missing 1 required positional argument: 'hex_code'
Overview
When trying to use
HexCode
objects inplotly
(not currently supported), we can run into problems caused by the way thatplotly
handles color objects; namely, that it usesdeepcopy
at some point in the figure generation process to create a copy of an input color object. Because of the way we developedHexCode
to inherit fromstr
, we don't currently override the__copy__
or__deepcopy__
methods. My guess is that this results in a problem whendeepcopy
is used on aHexCode
object.Example
Example Plotly code that causes an error:
Full traceback of error:
Solution
For now, users can use the
.hex_code
property of aHexCode
object to circumvent this limitation of our implementation. In the long term, we should consider implementing overrides of__copy__
and__deepcopy__
intoHexCode
to more easily supportplotly
.The text was updated successfully, but these errors were encountered: