Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: Fix deprecation warning from ipywidgets #3557

Merged
merged 1 commit into from
Aug 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 26 additions & 25 deletions tests/test_jupyter_chart.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
from importlib.metadata import version as importlib_version

import pandas as pd
import pytest
from packaging.version import Version

import altair as alt
from vega_datasets import data
Expand All @@ -17,6 +20,10 @@
else:
jupyter_chart = None # type: ignore

skip_requires_anywidget = pytest.mark.skipif(
not has_anywidget, reason="anywidget not importable"
)


try:
import vegafusion # type: ignore # noqa: F401
Expand All @@ -25,13 +32,23 @@
except ImportError:
transformers = ["default"]

param_transformers = pytest.mark.parametrize("transformer", transformers)


if Version(importlib_version("ipywidgets")) < Version("8.1.4"):
# See https://github.com/vega/altair/issues/3234#issuecomment-2268515312
_filterwarn = pytest.mark.filterwarnings(
"ignore:Deprecated in traitlets 4.1.*:DeprecationWarning"
)
jupyter_marks: pytest.MarkDecorator = skip_requires_anywidget(
_filterwarn(param_transformers)
)
else:
jupyter_marks = skip_requires_anywidget(param_transformers)

@pytest.mark.filterwarnings("ignore:Deprecated in traitlets 4.1.*:DeprecationWarning")
@pytest.mark.parametrize("transformer", transformers)
def test_chart_with_no_interactivity(transformer):
if not has_anywidget:
pytest.skip("anywidget not importable; skipping test")

@jupyter_marks
def test_chart_with_no_interactivity(transformer):
with alt.data_transformers.enable(transformer):
source = pd.DataFrame(
{
Expand All @@ -56,12 +73,8 @@ def test_chart_with_no_interactivity(transformer):
assert len(widget.params.trait_values()) == 0


@pytest.mark.filterwarnings("ignore:Deprecated in traitlets 4.1.*:DeprecationWarning")
@pytest.mark.parametrize("transformer", transformers)
@jupyter_marks
def test_interval_selection_example(transformer):
if not has_anywidget:
pytest.skip("anywidget not importable; skipping test")

with alt.data_transformers.enable(transformer):
source = data.cars()
brush = alt.selection_interval(name="interval")
Expand Down Expand Up @@ -128,12 +141,8 @@ def test_interval_selection_example(transformer):
assert selection.store == store


@pytest.mark.filterwarnings("ignore:Deprecated in traitlets 4.1.*:DeprecationWarning")
@pytest.mark.parametrize("transformer", transformers)
@jupyter_marks
def test_index_selection_example(transformer):
if not has_anywidget:
pytest.skip("anywidget not importable; skipping test")

with alt.data_transformers.enable(transformer):
source = data.cars()
brush = alt.selection_point(name="index")
Expand Down Expand Up @@ -192,12 +201,8 @@ def test_index_selection_example(transformer):
assert selection.store == store


@pytest.mark.filterwarnings("ignore:Deprecated in traitlets 4.1.*:DeprecationWarning")
@pytest.mark.parametrize("transformer", transformers)
@jupyter_marks
def test_point_selection(transformer):
if not has_anywidget:
pytest.skip("anywidget not importable; skipping test")

with alt.data_transformers.enable(transformer):
source = data.cars()
brush = alt.selection_point(name="point", encodings=["color"], bind="legend")
Expand Down Expand Up @@ -259,12 +264,8 @@ def test_point_selection(transformer):
assert selection.store == store


@pytest.mark.filterwarnings("ignore:Deprecated in traitlets 4.1.*:DeprecationWarning")
@pytest.mark.parametrize("transformer", transformers)
@jupyter_marks
def test_param_updates(transformer):
if not has_anywidget:
pytest.skip("anywidget not importable; skipping test")

with alt.data_transformers.enable(transformer):
source = data.cars()
size_param = alt.param(
Expand Down
21 changes: 17 additions & 4 deletions tests/vegalite/v5/test_renderers.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
"""Tests of various renderers."""

import json
from importlib.metadata import version as importlib_version

import pytest
from packaging.version import Version

import altair.vegalite.v5 as alt

Expand All @@ -18,6 +20,20 @@
anywidget = None # type: ignore


skip_requires_anywidget = pytest.mark.skipif(
not anywidget, reason="anywidget not importable"
)
if Version(importlib_version("ipywidgets")) < Version("8.1.4"):
# See https://github.com/vega/altair/issues/3234#issuecomment-2268515312
jupyter_marks = skip_requires_anywidget(
pytest.mark.filterwarnings(
"ignore:Deprecated in traitlets 4.1.*:DeprecationWarning"
)
)
else:
jupyter_marks = skip_requires_anywidget


@pytest.fixture
def chart():
return alt.Chart("data.csv").mark_point()
Expand Down Expand Up @@ -94,12 +110,9 @@ def test_renderer_with_none_embed_options(chart, renderer="mimetype"):
assert bundle["image/svg+xml"].startswith("<svg")


@pytest.mark.filterwarnings("ignore:Deprecated in traitlets 4.1.*:DeprecationWarning")
@jupyter_marks
def test_jupyter_renderer_mimetype(chart, renderer="jupyter") -> None:
"""Test that we get the expected widget mimetype when the jupyter renderer is enabled."""
if not anywidget:
pytest.skip("anywidget not importable; skipping test")

with alt.renderers.enable(renderer):
assert (
"application/vnd.jupyter.widget-view+json"
Expand Down