From 3bf816d076f46f34219c8acdd0b56dc77e981773 Mon Sep 17 00:00:00 2001 From: palewire Date: Thu, 13 Nov 2025 16:31:15 -0500 Subject: [PATCH 1/3] refactor: remove unused @model_serializer decorators across chart classes Remove @model_serializer decorator from serialize_model methods in all chart classes (area, arrow, bar, column, line, multiple_column, etc.) and update pydantic imports accordingly. The serialize_model methods are still present but no longer decorated, suggesting a change in serialization strategy or that explicit decoration is no longer needed for the current implementation. This cleanup reduces unnecessary decorator usage while maintaining the serialization functionality. --- datawrapper/charts/area.py | 3 +-- datawrapper/charts/arrow.py | 3 +-- datawrapper/charts/bar.py | 3 +-- datawrapper/charts/base.py | 3 +-- datawrapper/charts/column.py | 3 +-- datawrapper/charts/line.py | 2 -- datawrapper/charts/multiple_column.py | 2 -- datawrapper/charts/scatter.py | 3 +-- datawrapper/charts/stacked_bar.py | 3 +-- 9 files changed, 7 insertions(+), 18 deletions(-) diff --git a/datawrapper/charts/area.py b/datawrapper/charts/area.py index a78ed5e..2d842c7 100644 --- a/datawrapper/charts/area.py +++ b/datawrapper/charts/area.py @@ -1,7 +1,7 @@ from typing import Any, Literal import pandas as pd -from pydantic import ConfigDict, Field, field_validator, model_serializer +from pydantic import ConfigDict, Field, field_validator from .base import BaseChart from .enums import ( @@ -233,7 +233,6 @@ def validate_plot_height_mode(cls, v: PlotHeightMode | str) -> PlotHeightMode | raise ValueError(f"Invalid value: {v}. Must be one of {valid_values}") return v - @model_serializer def serialize_model(self) -> dict: """Serialize the model to a dictionary.""" # Call the parent class's serialize_model method diff --git a/datawrapper/charts/arrow.py b/datawrapper/charts/arrow.py index d32228a..1c94de7 100644 --- a/datawrapper/charts/arrow.py +++ b/datawrapper/charts/arrow.py @@ -1,7 +1,7 @@ from typing import Any, Literal import pandas as pd -from pydantic import ConfigDict, Field, field_validator, model_serializer +from pydantic import ConfigDict, Field, field_validator from .base import BaseChart from .enums import DateFormat, NumberFormat, ReplaceFlagsType @@ -200,7 +200,6 @@ def validate_replace_flags( ) return v - @model_serializer def serialize_model(self) -> dict: """Serialize the model to a dictionary.""" # Call the parent class's serialize_model method diff --git a/datawrapper/charts/bar.py b/datawrapper/charts/bar.py index 849bc30..3fbbd59 100644 --- a/datawrapper/charts/bar.py +++ b/datawrapper/charts/bar.py @@ -1,7 +1,7 @@ from typing import Any, Literal import pandas as pd -from pydantic import BaseModel, ConfigDict, Field, field_validator, model_serializer +from pydantic import BaseModel, ConfigDict, Field, field_validator from .base import BaseChart from .enums import DateFormat, NumberFormat, ReplaceFlagsType, ValueLabelAlignment @@ -398,7 +398,6 @@ def validate_replace_flags( ) return v - @model_serializer def serialize_model(self) -> dict: """Serialize the model to a dictionary.""" # Call the parent class's serialize_model method diff --git a/datawrapper/charts/base.py b/datawrapper/charts/base.py index 184fe4c..2ed3301 100644 --- a/datawrapper/charts/base.py +++ b/datawrapper/charts/base.py @@ -5,7 +5,7 @@ import pandas as pd from IPython.display import IFrame -from pydantic import BaseModel, ConfigDict, Field, model_serializer, model_validator +from pydantic import BaseModel, ConfigDict, Field, model_validator from datawrapper.__main__ import Datawrapper from datawrapper.charts.models import Annotate, Describe, Publish, Transform, Visualize @@ -250,7 +250,6 @@ class BaseChart(BaseModel): # Serialization methods for preparing data for API upload # - @model_serializer def serialize_model(self) -> dict[str, Any]: # Create a dict with the bare minimum provided by the base chart class # This will be supplemented by subclasses tailored to individual chart types diff --git a/datawrapper/charts/column.py b/datawrapper/charts/column.py index 941cf23..89a2e03 100644 --- a/datawrapper/charts/column.py +++ b/datawrapper/charts/column.py @@ -1,7 +1,7 @@ from typing import Any, Literal import pandas as pd -from pydantic import ConfigDict, Field, field_validator, model_serializer +from pydantic import ConfigDict, Field, field_validator from .base import BaseChart from .enums import ( @@ -312,7 +312,6 @@ def _deserialize_custom_ticks(cls, visualize: dict) -> dict: # Call the parent deserializer with the modified dict return super()._deserialize_custom_ticks(modified_visualize) - @model_serializer def serialize_model(self) -> dict: """Serialize the model to a dictionary.""" # Call the parent class's serialize_model method diff --git a/datawrapper/charts/line.py b/datawrapper/charts/line.py index a395405..840e7b1 100644 --- a/datawrapper/charts/line.py +++ b/datawrapper/charts/line.py @@ -6,7 +6,6 @@ ConfigDict, Field, field_validator, - model_serializer, model_validator, ) @@ -771,7 +770,6 @@ def validate_plot_height_mode(cls, v: PlotHeightMode | str) -> PlotHeightMode | raise ValueError(f"Invalid value: {v}. Must be one of {valid_values}") return v - @model_serializer def serialize_model(self) -> dict: """Serialize the model to a dictionary.""" # Call the parent class's serialize_model method diff --git a/datawrapper/charts/multiple_column.py b/datawrapper/charts/multiple_column.py index d23e303..b8433eb 100644 --- a/datawrapper/charts/multiple_column.py +++ b/datawrapper/charts/multiple_column.py @@ -6,7 +6,6 @@ ConfigDict, Field, field_validator, - model_serializer, model_validator, ) @@ -654,7 +653,6 @@ def convert_range_annotations( description="Show label for all panels", ) - @model_serializer def serialize_model(self) -> dict: """Serialize the model to a dictionary.""" # Call the parent class's serialize_model method diff --git a/datawrapper/charts/scatter.py b/datawrapper/charts/scatter.py index d8f0402..2e1a1db 100644 --- a/datawrapper/charts/scatter.py +++ b/datawrapper/charts/scatter.py @@ -1,7 +1,7 @@ from typing import Any, Literal import pandas as pd -from pydantic import ConfigDict, Field, field_validator, model_serializer +from pydantic import ConfigDict, Field, field_validator from .base import BaseChart from .enums import ( @@ -515,7 +515,6 @@ def validate_plot_height_mode(cls, v: PlotHeightMode | str) -> PlotHeightMode | description="Whether the tooltip is sticky on click", ) - @model_serializer def serialize_model(self) -> dict: """Serialize the model to a dictionary.""" # Call the parent class's serialize_model method diff --git a/datawrapper/charts/stacked_bar.py b/datawrapper/charts/stacked_bar.py index fd98067..cfa64e7 100644 --- a/datawrapper/charts/stacked_bar.py +++ b/datawrapper/charts/stacked_bar.py @@ -2,7 +2,7 @@ from typing import Any, Literal -from pydantic import ConfigDict, Field, field_validator, model_serializer +from pydantic import ConfigDict, Field, field_validator from .base import BaseChart from .enums import DateFormat, NumberFormat, ReplaceFlagsType, ValueLabelMode @@ -174,7 +174,6 @@ def validate_value_label_mode(cls, v: ValueLabelMode | str) -> ValueLabelMode | ) return v - @model_serializer def serialize_model(self) -> dict: """Serialize the model to a dictionary.""" # Call the parent class's serialize_model method From 27fa7053c609d6574984816531193b648086a837 Mon Sep 17 00:00:00 2001 From: palewire Date: Fri, 14 Nov 2025 14:22:12 -0500 Subject: [PATCH 2/3] refactor(tests): replace model_dump() with serialize_model() Replace all instances of `model_dump()` and `model_dump(by_alias=True)` with the new `serialize_model()` method across integration tests. This standardizes serialization to use a consistent custom method that handles aliasing and other serialization requirements internally. Changes: - Updated test_base_metadata_structure.py - Updated test_base_serialization.py - Updated test_multiple_column_chart.py This improves code maintainability by centralizing serialization logic and provides a cleaner API for converting chart models to dictionaries. --- .../test_base_metadata_structure.py | 4 +-- tests/integration/test_base_serialization.py | 12 +++---- .../integration/test_multiple_column_chart.py | 36 +++++++++---------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/tests/integration/test_base_metadata_structure.py b/tests/integration/test_base_metadata_structure.py index 0ecde10..2ff7da1 100644 --- a/tests/integration/test_base_metadata_structure.py +++ b/tests/integration/test_base_metadata_structure.py @@ -20,7 +20,7 @@ def test_metadata_section_order(): ) # Serialize the chart - serialized = chart.model_dump() + serialized = chart.serialize_model() # Check that root-level fields are present assert "type" in serialized @@ -68,7 +68,7 @@ def test_metadata_content_structure(): } ) - serialized = chart.model_dump() + serialized = chart.serialize_model() metadata = serialized["metadata"] # Check data section structure diff --git a/tests/integration/test_base_serialization.py b/tests/integration/test_base_serialization.py index 0fc9746..a4ac1a6 100644 --- a/tests/integration/test_base_serialization.py +++ b/tests/integration/test_base_serialization.py @@ -18,7 +18,7 @@ def test_base_chart_serialization_includes_root_metadata(): ) # Serialize the chart - serialized = chart.model_dump() + serialized = chart.serialize_model() # Verify root-level metadata is present assert "type" in serialized @@ -43,7 +43,7 @@ def test_base_chart_serialization_with_empty_theme(): } ) - serialized = chart.model_dump() + serialized = chart.serialize_model() # Empty theme should be omitted from serialization (our fix for Datawrapper API compatibility) assert "theme" not in serialized @@ -53,7 +53,7 @@ def test_base_chart_serialization_with_default_values(): """Test that BaseChart serialization works with default values.""" chart = datawrapper.BaseChart.model_validate({"chart-type": "d3-area"}) - serialized = chart.model_dump() + serialized = chart.serialize_model() # Verify root-level metadata with defaults assert serialized["type"] == "d3-area" @@ -72,7 +72,7 @@ def test_base_chart_serialization_structure(): } ) - serialized = chart.model_dump() + serialized = chart.serialize_model() # Verify all expected root-level sections are present expected_root_sections = [ @@ -108,7 +108,7 @@ def test_base_chart_field_name_is_type_not_chart_type(): """Test that the serialized field is 'type', not 'chart-type' or 'chart_type'.""" chart = datawrapper.BaseChart.model_validate({"chart-type": "d3-scatter-plot"}) - serialized = chart.model_dump() + serialized = chart.serialize_model() # Should use "type" as the field name in serialized output assert "type" in serialized @@ -132,7 +132,7 @@ def test_base_chart_serialization_with_data(): } ) - serialized = chart.model_dump() + serialized = chart.serialize_model() # Root metadata should still be present assert serialized["type"] == "d3-bars" diff --git a/tests/integration/test_multiple_column_chart.py b/tests/integration/test_multiple_column_chart.py index 3b70967..7839ffc 100644 --- a/tests/integration/test_multiple_column_chart.py +++ b/tests/integration/test_multiple_column_chart.py @@ -152,7 +152,7 @@ def test_serialize_basic_chart(self): data = pd.DataFrame({"Year": [2020, 2021], "Value": [100, 110]}) chart = MultipleColumnChart(title="Test", data=data) - serialized = chart.model_dump(by_alias=True) + serialized = chart.serialize_model() assert serialized["type"] == "multiple-columns" assert serialized["title"] == "Test" @@ -172,7 +172,7 @@ def test_serialize_layout_fields(self): grid_row_height=150, ) - serialized = chart.model_dump(by_alias=True) + serialized = chart.serialize_model() viz = serialized["metadata"]["visualize"] assert viz["gridLayout"] == "minimumWidth" @@ -192,7 +192,7 @@ def test_serialize_sort_object(self): sort_by="range", ) - serialized = chart.model_dump(by_alias=True) + serialized = chart.serialize_model() sort_obj = serialized["metadata"]["visualize"]["sort"] assert sort_obj["enabled"] is True @@ -209,7 +209,7 @@ def test_serialize_custom_ticks(self): custom_ticks_y=[10, 20, 30], ) - serialized = chart.model_dump(by_alias=True) + serialized = chart.serialize_model() viz = serialized["metadata"]["visualize"] assert viz["custom-ticks-x"] == "0,50,100" @@ -221,7 +221,7 @@ def test_serialize_grid_lines_x(self): # Test with x_grid off chart_off = MultipleColumnChart(title="Test", data=data, x_grid="off") - serialized_off = chart_off.model_dump(by_alias=True) + serialized_off = chart_off.serialize_model() grid_lines_x_off = serialized_off["metadata"]["visualize"]["grid-lines-x"] assert grid_lines_x_off["enabled"] is False @@ -229,7 +229,7 @@ def test_serialize_grid_lines_x(self): # Test with x_grid on chart_on = MultipleColumnChart(title="Test", data=data, x_grid="ticks") - serialized_on = chart_on.model_dump(by_alias=True) + serialized_on = chart_on.serialize_model() grid_lines_x_on = serialized_on["metadata"]["visualize"]["grid-lines-x"] assert grid_lines_x_on["enabled"] is True @@ -246,7 +246,7 @@ def test_serialize_y_axis_labels(self): y_grid_labels="inside", y_grid_label_align="right", ) - serialized_on = chart_on.model_dump(by_alias=True) + serialized_on = chart_on.serialize_model() y_labels_on = serialized_on["metadata"]["visualize"]["yAxisLabels"] assert y_labels_on["enabled"] is True @@ -255,7 +255,7 @@ def test_serialize_y_axis_labels(self): # Test with labels off chart_off = MultipleColumnChart(title="Test", data=data, y_grid_labels="off") - serialized_off = chart_off.model_dump(by_alias=True) + serialized_off = chart_off.serialize_model() y_labels_off = serialized_off["metadata"]["visualize"]["yAxisLabels"] assert y_labels_off["enabled"] is False @@ -269,7 +269,7 @@ def test_serialize_negative_color(self): chart_enabled = MultipleColumnChart( title="Test", data=data, negative_color="#FF0000" ) - serialized_enabled = chart_enabled.model_dump(by_alias=True) + serialized_enabled = chart_enabled.serialize_model() neg_color_enabled = serialized_enabled["metadata"]["visualize"]["negativeColor"] assert neg_color_enabled["enabled"] is True @@ -279,7 +279,7 @@ def test_serialize_negative_color(self): chart_disabled = MultipleColumnChart( title="Test", data=data, negative_color=None ) - serialized_disabled = chart_disabled.model_dump(by_alias=True) + serialized_disabled = chart_disabled.serialize_model() neg_color_disabled = serialized_disabled["metadata"]["visualize"][ "negativeColor" ] @@ -295,7 +295,7 @@ def test_serialize_color_category(self): color_category={"Series A": "#FF0000", "Series B": "#00FF00"}, ) - serialized = chart.model_dump(by_alias=True) + serialized = chart.serialize_model() viz = serialized["metadata"]["visualize"] assert viz["color-category"]["map"] == { @@ -316,7 +316,7 @@ def test_serialize_panels(self): ], ) - serialized = chart.model_dump(by_alias=True) + serialized = chart.serialize_model() panels = serialized["metadata"]["visualize"]["panels"] assert isinstance(panels, dict) @@ -336,7 +336,7 @@ def test_serialize_value_labels(self): value_labels_format="0,0", value_labels_placement="inside", ) - serialized_always = chart_always.model_dump(by_alias=True) + serialized_always = chart_always.serialize_model() val_labels_always = serialized_always["metadata"]["visualize"]["valueLabels"] assert val_labels_always["show"] == "always" @@ -356,7 +356,7 @@ def test_serialize_value_labels(self): show_value_labels="hover", value_labels_format="0.0a", ) - serialized_hover = chart_hover.model_dump(by_alias=True) + serialized_hover = chart_hover.serialize_model() val_labels_hover = serialized_hover["metadata"]["visualize"]["valueLabels"] assert val_labels_hover["show"] == "hover" @@ -373,7 +373,7 @@ def test_serialize_value_labels(self): chart_off = MultipleColumnChart( title="Test", data=data, show_value_labels="off" ) - serialized_off = chart_off.model_dump(by_alias=True) + serialized_off = chart_off.serialize_model() val_labels_off = serialized_off["metadata"]["visualize"]["valueLabels"] assert val_labels_off["show"] == "" @@ -530,7 +530,7 @@ def test_round_trip_basic_chart(self): ) # Serialize - serialized = original.model_dump(by_alias=True) + serialized = original.serialize_model() # Parse back (simulating API response) chart_metadata = { @@ -585,7 +585,7 @@ def test_round_trip_with_all_options(self): ) # Serialize - serialized = original.model_dump(by_alias=True) + serialized = original.serialize_model() # Parse back chart_metadata = { @@ -644,7 +644,7 @@ def test_metadata_structure_matches(self): negative_color="#00FF00", ) - serialized = chart.model_dump(by_alias=True) + serialized = chart.serialize_model() viz = serialized["metadata"]["visualize"] # Check structure matches expected format From 3b3f4898a21fe89fd872d38853b0fb2cad880200 Mon Sep 17 00:00:00 2001 From: palewire Date: Fri, 14 Nov 2025 14:36:20 -0500 Subject: [PATCH 3/3] test: replace model_dump with serialize_model in chart tests Refactor scatter chart and stacked bar chart integration tests to use the new `serialize_model()` method instead of directly calling `model_dump(by_alias=True)`. This change standardizes serialization across the test suite and uses the proper abstraction layer for model serialization. --- tests/integration/test_scatter_chart.py | 26 ++++++++++----------- tests/integration/test_stacked_bar_chart.py | 22 ++++++++--------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/tests/integration/test_scatter_chart.py b/tests/integration/test_scatter_chart.py index c1c179f..58bee71 100644 --- a/tests/integration/test_scatter_chart.py +++ b/tests/integration/test_scatter_chart.py @@ -221,7 +221,7 @@ def test_serialize_basic_chart(self): y_column="Y", ) - serialized = chart.model_dump(by_alias=True) + serialized = chart.serialize_model() assert serialized["type"] == "d3-scatter-plot" assert serialized["title"] == "Test Chart" @@ -246,7 +246,7 @@ def test_serialize_axes_objects(self): y_ticks=[0, 10, 20], ) - serialized = chart.model_dump(by_alias=True) + serialized = chart.serialize_model() visualize = serialized["metadata"]["visualize"] assert "x-axis" in visualize @@ -276,7 +276,7 @@ def test_serialize_axis_formatting(self): y_grid_lines="off", ) - serialized = chart.model_dump(by_alias=True) + serialized = chart.serialize_model() visualize = serialized["metadata"]["visualize"] assert visualize["x-format"] == "0a" @@ -302,7 +302,7 @@ def test_serialize_color_fields(self): show_color_key=True, ) - serialized = chart.model_dump(by_alias=True) + serialized = chart.serialize_model() visualize = serialized["metadata"]["visualize"] assert visualize["base-color"] == "#ff0000" @@ -327,7 +327,7 @@ def test_serialize_size_fields(self): responsive_symbol_size=True, ) - serialized = chart.model_dump(by_alias=True) + serialized = chart.serialize_model() visualize = serialized["metadata"]["visualize"] assert visualize["size"] == "dynamic" @@ -361,7 +361,7 @@ def test_serialize_size_legend(self): size_legend_title_width=150, ) - serialized = chart.model_dump(by_alias=True) + serialized = chart.serialize_model() visualize = serialized["metadata"]["visualize"] assert visualize["show-size-legend"] is True @@ -391,7 +391,7 @@ def test_serialize_shape_fields(self): fixed_shape="symbolSquare", ) - serialized = chart.model_dump(by_alias=True) + serialized = chart.serialize_model() visualize = serialized["metadata"]["visualize"] assert visualize["shape"] == "dynamic" @@ -411,7 +411,7 @@ def test_serialize_regression(self): regression_method="exponential", ) - serialized = chart.model_dump(by_alias=True) + serialized = chart.serialize_model() visualize = serialized["metadata"]["visualize"] assert visualize["regression"] is True @@ -432,7 +432,7 @@ def test_serialize_tooltip(self): tooltip_sticky=True, ) - serialized = chart.model_dump(by_alias=True) + serialized = chart.serialize_model() visualize = serialized["metadata"]["visualize"] assert "tooltip" in visualize @@ -457,7 +457,7 @@ def test_serialize_labeling(self): highlight_labeled=False, ) - serialized = chart.model_dump(by_alias=True) + serialized = chart.serialize_model() visualize = serialized["metadata"]["visualize"] assert serialized["metadata"]["axes"]["labels"] == "Label" @@ -656,7 +656,7 @@ def test_round_trip_basic_chart(self): ) # Serialize - serialized = original.model_dump(by_alias=True) + serialized = original.serialize_model() # Parse back (simulating API response) chart_metadata = { @@ -721,7 +721,7 @@ def test_round_trip_with_all_options(self): ) # Serialize - serialized = original.model_dump(by_alias=True) + serialized = original.serialize_model() # Parse back chart_metadata = { @@ -774,7 +774,7 @@ def test_metadata_structure_matches(self): y_column="Y", ) - serialized = chart.model_dump(by_alias=True) + serialized = chart.serialize_model() # Check top-level structure assert "metadata" in serialized diff --git a/tests/integration/test_stacked_bar_chart.py b/tests/integration/test_stacked_bar_chart.py index 5c809c2..1bc000c 100644 --- a/tests/integration/test_stacked_bar_chart.py +++ b/tests/integration/test_stacked_bar_chart.py @@ -139,7 +139,7 @@ def test_serialize_minimal(self): title="Test", data=df, ) - serialized = chart.model_dump(mode="json", by_alias=True, exclude_none=True) + serialized = chart.serialize_model() assert serialized["title"] == "Test" assert serialized["type"] == "d3-bars-stacked" @@ -154,7 +154,7 @@ def test_serialize_color_category(self): data=df, color_category={"Series A": "#ff0000", "Series B": "#00ff00"}, ) - serialized = chart.model_dump(mode="json", by_alias=True, exclude_none=True) + serialized = chart.serialize_model() color_cat = serialized["metadata"]["visualize"]["color-category"] assert color_cat == {"map": {"Series A": "#ff0000", "Series B": "#00ff00"}} @@ -167,7 +167,7 @@ def test_serialize_replace_flags_enabled(self): data=df, replace_flags="4x3", ) - serialized = chart.model_dump(mode="json", by_alias=True, exclude_none=True) + serialized = chart.serialize_model() flags = serialized["metadata"]["visualize"]["replace-flags"] assert flags["enabled"] is True @@ -181,7 +181,7 @@ def test_serialize_replace_flags_disabled(self): data=df, replace_flags="off", ) - serialized = chart.model_dump(mode="json", by_alias=True, exclude_none=True) + serialized = chart.serialize_model() flags = serialized["metadata"]["visualize"]["replace-flags"] assert flags["enabled"] is False @@ -195,7 +195,7 @@ def test_serialize_negative_color(self): data=df, negative_color="#ff0000", ) - serialized = chart.model_dump(mode="json", by_alias=True, exclude_none=True) + serialized = chart.serialize_model() neg_color = serialized["metadata"]["visualize"]["negativeColor"] assert neg_color["enabled"] is True @@ -209,7 +209,7 @@ def test_serialize_with_groups(self): data=df, groups_column="Description", ) - serialized = chart.model_dump(mode="json", by_alias=True, exclude_none=True) + serialized = chart.serialize_model() assert "axes" in serialized["metadata"] assert serialized["metadata"]["axes"]["groups"] == "Description" @@ -226,7 +226,7 @@ def test_serialize_describe_section(self): source_url="https://example.com", aria_description="Test aria", ) - serialized = chart.model_dump(mode="json", by_alias=True, exclude_none=True) + serialized = chart.serialize_model() describe = serialized["metadata"]["describe"] assert describe["intro"] == "Test intro" @@ -398,7 +398,7 @@ def mock_get(url): chart = StackedBarChart.get("test-id", access_token="test-token") # Serialize back - serialized = chart.model_dump(mode="json", by_alias=True, exclude_none=True) + serialized = chart.serialize_model() # Parse again chart_metadata2 = { @@ -445,7 +445,7 @@ def mock_get(url): with patch("datawrapper.charts.base.Datawrapper", return_value=mock_client): chart = StackedBarChart.get("test-id", access_token="test-token") - serialized = chart.model_dump(mode="json", by_alias=True, exclude_none=True) + serialized = chart.serialize_model() chart_metadata2 = { "type": serialized["type"], @@ -487,7 +487,7 @@ def mock_get(url): with patch("datawrapper.charts.base.Datawrapper", return_value=mock_client): chart = StackedBarChart.get("test-id", access_token="test-token") - serialized = chart.model_dump(mode="json", by_alias=True, exclude_none=True) + serialized = chart.serialize_model() chart_metadata2 = { "type": serialized["type"], @@ -529,7 +529,7 @@ def mock_get(url): with patch("datawrapper.charts.base.Datawrapper", return_value=mock_client): chart = StackedBarChart.get("test-id", access_token="test-token") - serialized = chart.model_dump(mode="json", by_alias=True, exclude_none=True) + serialized = chart.serialize_model() chart_metadata2 = { "type": serialized["type"],