From b1b9dba8a1cd11f9a5e18ed38d4fd5acf3961ca7 Mon Sep 17 00:00:00 2001 From: Jon Mease Date: Fri, 22 Mar 2024 10:02:24 -0400 Subject: [PATCH] fix: Don't error when embed_options are None (#3376) * Fix error when embed_options are None * Add changelog entry --- altair/utils/mimebundle.py | 2 +- doc/releases/changes.rst | 1 + tests/vegalite/v5/test_renderers.py | 15 +++++++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/altair/utils/mimebundle.py b/altair/utils/mimebundle.py index a06f1f199..49a1f5557 100644 --- a/altair/utils/mimebundle.py +++ b/altair/utils/mimebundle.py @@ -320,7 +320,7 @@ def preprocess_embed_options(embed_options: dict) -> dict: embed_opts : dict The preprocessed embed options dictionary. """ - embed_options = embed_options.copy() + embed_options = (embed_options or {}).copy() # Convert locale strings to objects compatible with Vega Embed using vl-convert format_locale = embed_options.get("formatLocale", None) diff --git a/doc/releases/changes.rst b/doc/releases/changes.rst index be354bb36..816901550 100644 --- a/doc/releases/changes.rst +++ b/doc/releases/changes.rst @@ -26,6 +26,7 @@ Enhancements Bug Fixes ~~~~~~~~~ +- Fix error when embed_options are None (#3376) - Fix type hints for libraries such as Polars where Altair uses the dataframe interchange protocol (#3297) - Fix anywidget deprecation warning (#3364) diff --git a/tests/vegalite/v5/test_renderers.py b/tests/vegalite/v5/test_renderers.py index 998a958c9..7201c41d2 100644 --- a/tests/vegalite/v5/test_renderers.py +++ b/tests/vegalite/v5/test_renderers.py @@ -65,6 +65,21 @@ def test_json_renderer_embed_options(chart, renderer="json"): assert metadata == {mimetype: {"option": "foo"}} +def test_renderer_with_none_embed_options(chart, renderer="mimetype"): + # Check that setting embed_options to None doesn't crash + from altair.utils.mimebundle import spec_to_mimebundle + + spec = chart.to_dict() + with alt.renderers.enable(renderer, embed_options=None): + bundle = spec_to_mimebundle( + spec=spec, + mode="vega-lite", + format="svg", + embed_options=None, + ) + assert bundle["image/svg+xml"].startswith("