summaryrefslogtreecommitdiffstats
path: root/venv/lib/python3.9/site-packages/altair/tests
diff options
context:
space:
mode:
Diffstat (limited to 'venv/lib/python3.9/site-packages/altair/tests')
-rw-r--r--venv/lib/python3.9/site-packages/altair/tests/__init__.py0
-rw-r--r--venv/lib/python3.9/site-packages/altair/tests/test_magics.py176
2 files changed, 176 insertions, 0 deletions
diff --git a/venv/lib/python3.9/site-packages/altair/tests/__init__.py b/venv/lib/python3.9/site-packages/altair/tests/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/venv/lib/python3.9/site-packages/altair/tests/__init__.py
diff --git a/venv/lib/python3.9/site-packages/altair/tests/test_magics.py b/venv/lib/python3.9/site-packages/altair/tests/test_magics.py
new file mode 100644
index 00000000..59ddff11
--- /dev/null
+++ b/venv/lib/python3.9/site-packages/altair/tests/test_magics.py
@@ -0,0 +1,176 @@
+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