Spaces:
Running
Running
"""Tests of various renderers""" | |
import json | |
import re | |
import pytest | |
import altair.vegalite.v3 as alt | |
def _extract_embedOpt(html): | |
"""Extract an embedOpt definition from an html string. | |
Note: this is very brittle, but works for the specific test in this file. | |
""" | |
result = re.search(r"embedOpt\s+=\s+(?P<embedOpt>\{.*?\})", html) | |
if not result: | |
return None | |
else: | |
return json.loads(result.groupdict()["embedOpt"]) | |
def chart(): | |
return alt.Chart("data.csv").mark_point() | |
def test_colab_renderer_embed_options(chart): | |
"""Test that embed_options in renderer metadata are correctly manifest in html""" | |
def assert_actions_true(chart): | |
bundle = chart._repr_mimebundle_(None, None) | |
embedOpt = _extract_embedOpt(bundle["text/html"]) | |
assert embedOpt == {"actions": True, "mode": "vega-lite"} | |
def assert_actions_false(chart): | |
bundle = chart._repr_mimebundle_(None, None) | |
embedOpt = _extract_embedOpt(bundle["text/html"]) | |
assert embedOpt == {"actions": False, "mode": "vega-lite"} | |
with alt.renderers.enable("colab", embed_options=dict(actions=False)): | |
assert_actions_false(chart) | |
with alt.renderers.enable("colab"): | |
with alt.renderers.enable(embed_options=dict(actions=True)): | |
assert_actions_true(chart) | |
with alt.renderers.set_embed_options(actions=False): | |
assert_actions_false(chart) | |
with alt.renderers.set_embed_options(actions=True): | |
assert_actions_true(chart) | |
def test_default_renderer_embed_options(chart, renderer="default"): | |
# check that metadata is passed appropriately | |
mimetype = alt.display.VEGALITE_MIME_TYPE | |
spec = chart.to_dict() | |
with alt.renderers.enable(renderer, embed_options=dict(actions=False)): | |
bundle, metadata = chart._repr_mimebundle_(None, None) | |
assert set(bundle.keys()) == {mimetype, "text/plain"} | |
assert bundle[mimetype] == spec | |
assert metadata == {mimetype: {"embed_options": {"actions": False}}} | |
# Sanity check: no metadata specified | |
with alt.renderers.enable(renderer): | |
bundle, metadata = chart._repr_mimebundle_(None, None) | |
assert bundle[mimetype] == spec | |
assert metadata == {} | |
def test_json_renderer_embed_options(chart, renderer="json"): | |
"""Test that embed_options in renderer metadata are correctly manifest in html""" | |
mimetype = "application/json" | |
spec = chart.to_dict() | |
with alt.renderers.enable("json", option="foo"): | |
bundle, metadata = chart._repr_mimebundle_(None, None) | |
assert set(bundle.keys()) == {mimetype, "text/plain"} | |
assert bundle[mimetype] == spec | |
assert metadata == {mimetype: {"option": "foo"}} | |
# Sanity check: no options specified | |
with alt.renderers.enable(renderer): | |
bundle, metadata = chart._repr_mimebundle_(None, None) | |
assert bundle[mimetype] == spec | |
assert metadata == {} | |