From 355dee533bb34a571b9367820a63cccb668cf866 Mon Sep 17 00:00:00 2001 From: noptuno Date: Thu, 27 Apr 2023 20:29:30 -0400 Subject: Merging PR_218 openai_rev package with new streamlit chat app --- .../site-packages/altair/tests/__init__.py | 0 .../site-packages/altair/tests/test_magics.py | 176 +++++++++++++++++++++ 2 files changed, 176 insertions(+) create mode 100644 venv/lib/python3.9/site-packages/altair/tests/__init__.py create mode 100644 venv/lib/python3.9/site-packages/altair/tests/test_magics.py (limited to 'venv/lib/python3.9/site-packages/altair/tests') 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 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 -- cgit v1.2.3