arxify's picture
Upload folder using huggingface_hub
ba2f5d6
import json
import pytest
try:
from IPython import InteractiveShell
IPYTHON_AVAILABLE = True
except ImportError:
IPYTHON_AVAILABLE = False
pass
from altair.vegalite.v4 import VegaLite
from altair.vega.v5 import Vega
DATA_RECORDS = [
{"amount": 28, "category": "A"},
{"amount": 55, "category": "B"},
{"amount": 43, "category": "C"},
{"amount": 91, "category": "D"},
{"amount": 81, "category": "E"},
{"amount": 53, "category": "F"},
{"amount": 19, "category": "G"},
{"amount": 87, "category": "H"},
]
if IPYTHON_AVAILABLE:
_ipshell = InteractiveShell.instance()
_ipshell.run_cell("%load_ext altair")
_ipshell.run_cell(
"""
import pandas as pd
table = pd.DataFrame.from_records({})
the_data = table
""".format(
DATA_RECORDS
)
)
VEGA_SPEC = {
"$schema": "https://vega.github.io/schema/vega/v5.json",
"axes": [
{"orient": "bottom", "scale": "xscale"},
{"orient": "left", "scale": "yscale"},
],
"data": [{"name": "table", "values": DATA_RECORDS}],
"height": 200,
"marks": [
{
"encode": {
"enter": {
"width": {"band": 1, "scale": "xscale"},
"x": {"field": "category", "scale": "xscale"},
"y": {"field": "amount", "scale": "yscale"},
"y2": {"scale": "yscale", "value": 0},
},
"hover": {"fill": {"value": "red"}},
"update": {"fill": {"value": "steelblue"}},
},
"from": {"data": "table"},
"type": "rect",
},
{
"encode": {
"enter": {
"align": {"value": "center"},
"baseline": {"value": "bottom"},
"fill": {"value": "#333"},
},
"update": {
"fillOpacity": [
{"test": "datum === tooltip", "value": 0},
{"value": 1},
],
"text": {"signal": "tooltip.amount"},
"x": {"band": 0.5, "scale": "xscale", "signal": "tooltip.category"},
"y": {"offset": -2, "scale": "yscale", "signal": "tooltip.amount"},
},
},
"type": "text",
},
],
"padding": 5,
"scales": [
{
"domain": {"data": "table", "field": "category"},
"name": "xscale",
"padding": 0.05,
"range": "width",
"round": True,
"type": "band",
},
{
"domain": {"data": "table", "field": "amount"},
"name": "yscale",
"nice": True,
"range": "height",
},
],
"signals": [
{
"name": "tooltip",
"on": [
{"events": "rect:mouseover", "update": "datum"},
{"events": "rect:mouseout", "update": "{}"},
],
"value": {},
}
],
"width": 400,
}
VEGALITE_SPEC = {
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
"data": {"values": DATA_RECORDS},
"description": "A simple bar chart with embedded data.",
"encoding": {
"x": {"field": "category", "type": "ordinal"},
"y": {"field": "amount", "type": "quantitative"},
},
"mark": "bar",
}
@pytest.mark.skipif(not IPYTHON_AVAILABLE, reason="requires ipython")
def test_vegalite_magic_data_included():
result = _ipshell.run_cell("%%vegalite\n" + json.dumps(VEGALITE_SPEC))
assert isinstance(result.result, VegaLite)
assert VEGALITE_SPEC == result.result.spec
@pytest.mark.skipif(not IPYTHON_AVAILABLE, reason="requires ipython")
def test_vegalite_magic_json_flag():
result = _ipshell.run_cell("%%vegalite --json\n" + json.dumps(VEGALITE_SPEC))
assert isinstance(result.result, VegaLite)
assert VEGALITE_SPEC == result.result.spec
@pytest.mark.skipif(not IPYTHON_AVAILABLE, reason="requires ipython")
def test_vegalite_magic_pandas_data():
spec = {key: val for key, val in VEGALITE_SPEC.items() if key != "data"}
result = _ipshell.run_cell("%%vegalite table\n" + json.dumps(spec))
assert isinstance(result.result, VegaLite)
assert VEGALITE_SPEC == result.result.spec
@pytest.mark.skipif(not IPYTHON_AVAILABLE, reason="requires ipython")
def test_vega_magic_data_included():
result = _ipshell.run_cell("%%vega\n" + json.dumps(VEGA_SPEC))
assert isinstance(result.result, Vega)
assert VEGA_SPEC == result.result.spec
@pytest.mark.skipif(not IPYTHON_AVAILABLE, reason="requires ipython")
def test_vega_magic_json_flag():
result = _ipshell.run_cell("%%vega --json\n" + json.dumps(VEGA_SPEC))
assert isinstance(result.result, Vega)
assert VEGA_SPEC == result.result.spec
@pytest.mark.skipif(not IPYTHON_AVAILABLE, reason="requires ipython")
def test_vega_magic_pandas_data():
spec = {key: val for key, val in VEGA_SPEC.items() if key != "data"}
result = _ipshell.run_cell("%%vega table\n" + json.dumps(spec))
assert isinstance(result.result, Vega)
assert VEGA_SPEC == result.result.spec
@pytest.mark.skipif(not IPYTHON_AVAILABLE, reason="requires ipython")
def test_vega_magic_pandas_data_renamed():
spec = {key: val for key, val in VEGA_SPEC.items() if key != "data"}
result = _ipshell.run_cell("%%vega table:the_data\n" + json.dumps(spec))
assert isinstance(result.result, Vega)
assert VEGA_SPEC == result.result.spec