diff --git a/datawrapper/charts/column.py b/datawrapper/charts/column.py index f00270a..941cf23 100644 --- a/datawrapper/charts/column.py +++ b/datawrapper/charts/column.py @@ -127,6 +127,13 @@ class ColumnChart( description="List defining the order in which categories appear in the chart and legend", ) + #: A list of columns to exclude from the color key + exclude_from_color_key: list[str] = Field( + default_factory=list, + alias="exclude-from-color-key", + description="A list of columns to exclude from the color key", + ) + #: The padding between bars as a percentage of the bar width bar_padding: int = Field( default=30, @@ -332,6 +339,7 @@ def serialize_model(self) -> dict: self.color_category, self.category_labels, self.category_order, + self.exclude_from_color_key, ), "color-by-column": bool(self.color_category), **PlotHeight.serialize( diff --git a/datawrapper/charts/serializers/value_labels.py b/datawrapper/charts/serializers/value_labels.py index 2ad8622..1082248 100644 --- a/datawrapper/charts/serializers/value_labels.py +++ b/datawrapper/charts/serializers/value_labels.py @@ -185,9 +185,6 @@ def deserialize( result["value_labels_format"] = "" result["value_labels_placement"] = "outside" - # Derive value_labels_always from show mode - result["value_labels_always"] = show == "always" - else: # Simple format field (line, arrow, stacked-bar) if "value-label-format" in api_obj: diff --git a/tests/unit/serializers/test_value_labels.py b/tests/unit/serializers/test_value_labels.py index 1789627..00b9f20 100644 --- a/tests/unit/serializers/test_value_labels.py +++ b/tests/unit/serializers/test_value_labels.py @@ -119,7 +119,6 @@ def test_deserialize_hover_mode(self): "show_value_labels": "hover", "value_labels_format": "", "value_labels_placement": "outside", - "value_labels_always": False, } def test_deserialize_always_mode(self): @@ -137,7 +136,6 @@ def test_deserialize_always_mode(self): "show_value_labels": "always", "value_labels_format": "0,0", "value_labels_placement": "inside", - "value_labels_always": True, } def test_deserialize_off_mode(self): @@ -154,7 +152,6 @@ def test_deserialize_off_mode(self): "show_value_labels": "off", "value_labels_format": "", "value_labels_placement": "outside", - "value_labels_always": False, } def test_deserialize_multiple_column_chart(self): @@ -172,7 +169,6 @@ def test_deserialize_multiple_column_chart(self): "show_value_labels": "always", "value_labels_format": "0.0a", "value_labels_placement": "below", - "value_labels_always": True, } def test_deserialize_missing_value_labels_object(self): @@ -183,7 +179,6 @@ def test_deserialize_missing_value_labels_object(self): "show_value_labels": "hover", "value_labels_format": "", "value_labels_placement": "outside", - "value_labels_always": False, } def test_deserialize_with_custom_format(self): @@ -200,7 +195,6 @@ def test_deserialize_with_custom_format(self): "show_value_labels": "hover", "value_labels_format": "$0,0.00", "value_labels_placement": "outside", - "value_labels_always": False, } @@ -227,7 +221,6 @@ def test_round_trip_hover_mode(self): assert deserialized["show_value_labels"] == original["show"] assert deserialized["value_labels_format"] == original["format_str"] assert deserialized["value_labels_placement"] == original["placement"] - assert deserialized["value_labels_always"] == original["always"] def test_round_trip_always_mode(self): """Test round-trip for always mode.""" @@ -249,7 +242,6 @@ def test_round_trip_always_mode(self): assert deserialized["show_value_labels"] == original["show"] assert deserialized["value_labels_format"] == original["format_str"] assert deserialized["value_labels_placement"] == original["placement"] - assert deserialized["value_labels_always"] == original["always"] def test_round_trip_off_mode(self): """Test round-trip for off mode.""" @@ -271,4 +263,3 @@ def test_round_trip_off_mode(self): assert deserialized["show_value_labels"] == original["show"] assert deserialized["value_labels_format"] == original["format_str"] assert deserialized["value_labels_placement"] == original["placement"] - assert deserialized["value_labels_always"] == original["always"]