diff --git a/altair/utils/save.py b/altair/utils/save.py index af2c7a981..1784cc43e 100644 --- a/altair/utils/save.py +++ b/altair/utils/save.py @@ -142,7 +142,9 @@ def perform_save(): if format == "json": json_spec = json.dumps(spec, **json_kwds) - write_file_or_filename(fp, json_spec, mode="w") + write_file_or_filename( + fp, json_spec, mode="w", encoding=kwargs.get("encoding", "utf-8") + ) elif format == "html": if inline: kwargs["template"] = "inline" @@ -157,7 +159,12 @@ def perform_save(): json_kwds=json_kwds, **kwargs, ) - write_file_or_filename(fp, mimebundle["text/html"], mode="w") + write_file_or_filename( + fp, + mimebundle["text/html"], + mode="w", + encoding=kwargs.get("encoding", "utf-8"), + ) elif format in ["png", "svg", "pdf", "vega"]: mimebundle = spec_to_mimebundle( spec=spec, diff --git a/altair/vegalite/v5/api.py b/altair/vegalite/v5/api.py index 730c2e107..c87c2e85d 100644 --- a/altair/vegalite/v5/api.py +++ b/altair/vegalite/v5/api.py @@ -3247,7 +3247,7 @@ def add_selection(self, *selections) -> Self: def repeat( - repeater: Literal["row", "column", "repeat", "layer"] = "repeat" + repeater: Literal["row", "column", "repeat", "layer"] = "repeat", ) -> core.RepeatRef: """Tie a channel to the row or column within a repeated chart