def get_data(self, flatten=False): """Returns the JSON for the plot with non-data elements stripped.""" self.to_graph_objs() class_name = self.__class__.__name__ obj_key = NAME_TO_KEY[class_name] d = dict() for key, val in list(self.items()): if isinstance(val, (PlotlyDict, PlotlyList)): sub_data = val.get_data(flatten=flatten) if flatten: for sub_key, sub_val in sub_data.items(): key_string = "{0}.{1}".format(key, sub_key) d[key_string] = sub_val else: d[key] = sub_data else: try: # TODO: Update the JSON if graph_objs_tools.value_is_data(obj_key, key, val): d[key] = val except KeyError: pass keys = list(d.keys()) for key in keys: if isinstance(d[key], (dict, list)): if len(d[key]) == 0: del d[key] return d
def test_unknown_strings(self): self.assertFalse(value_is_data("scatter", "blah", "")) self.assertFalse(value_is_data("huh?", "text", None))
def test_style_value_type(self): self.assertFalse(value_is_data("marker", "color", "red")) self.assertTrue(value_is_data("marker", "color", ["red", "blue"])) self.assertTrue(value_is_data("marker", "opacity", (0.9, 0.5))) self.assertFalse(value_is_data("marker", "symbol", {}))
def test_data_value_type(self): self.assertTrue(value_is_data("scatter", "x", {})) self.assertTrue(value_is_data("bar", "name", "bill")) self.assertTrue(value_is_data("histogram", "x", [5, 5])) self.assertTrue(value_is_data("xaxis", "range", [0, 5]))
def test_style_value_type(self): self.assertFalse(value_is_data('marker', 'color', 'red')) self.assertTrue(value_is_data('marker', 'color', ['red', 'blue'])) self.assertTrue(value_is_data('marker', 'opacity', (.9, .5))) self.assertFalse(value_is_data('marker', 'symbol', {}))
def test_data_value_type(self): self.assertTrue(value_is_data('scatter', 'x', {})) self.assertTrue(value_is_data('bar', 'name', 'bill')) self.assertTrue(value_is_data('histogram', 'x', [5, 5])) self.assertTrue(value_is_data('xaxis', 'range', [0, 5]))
def test_unknown_strings(self): self.assertFalse(value_is_data('scatter', 'blah', '')) self.assertFalse(value_is_data('huh?', 'text', None))