A PyQT GUI application for converting InfoLease report outputs into Excel files. Handles parsing and summarizing. Learns where files are meant to be store and compiles monthly and yearly summaries.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
InfoLeaseExtract/venv/Lib/site-packages/pandas/tests/plotting/test_backend.py

111 lines
3.6 KiB

import sys
import types
import pkg_resources
import pytest
import pandas.util._test_decorators as td
import pandas
dummy_backend = types.ModuleType("pandas_dummy_backend")
setattr(dummy_backend, "plot", lambda *args, **kwargs: "used_dummy")
pytestmark = pytest.mark.slow
@pytest.fixture
def restore_backend():
"""Restore the plotting backend to matplotlib"""
pandas.set_option("plotting.backend", "matplotlib")
yield
pandas.set_option("plotting.backend", "matplotlib")
def test_backend_is_not_module():
msg = "Could not find plotting backend 'not_an_existing_module'."
with pytest.raises(ValueError, match=msg):
pandas.set_option("plotting.backend", "not_an_existing_module")
assert pandas.options.plotting.backend == "matplotlib"
def test_backend_is_correct(monkeypatch, restore_backend):
monkeypatch.setitem(sys.modules, "pandas_dummy_backend", dummy_backend)
pandas.set_option("plotting.backend", "pandas_dummy_backend")
assert pandas.get_option("plotting.backend") == "pandas_dummy_backend"
assert (
pandas.plotting._core._get_plot_backend("pandas_dummy_backend") is dummy_backend
)
def test_backend_can_be_set_in_plot_call(monkeypatch, restore_backend):
monkeypatch.setitem(sys.modules, "pandas_dummy_backend", dummy_backend)
df = pandas.DataFrame([1, 2, 3])
assert pandas.get_option("plotting.backend") == "matplotlib"
assert df.plot(backend="pandas_dummy_backend") == "used_dummy"
@td.skip_if_no_mpl
def test_register_entrypoint(restore_backend):
dist = pkg_resources.get_distribution("pandas")
if dist.module_path not in pandas.__file__:
# We are running from a non-installed pandas, and this test is invalid
pytest.skip("Testing a non-installed pandas")
mod = types.ModuleType("my_backend")
mod.plot = lambda *args, **kwargs: 1
backends = pkg_resources.get_entry_map("pandas")
my_entrypoint = pkg_resources.EntryPoint(
"pandas_plotting_backend", mod.__name__, dist=dist
)
backends["pandas_plotting_backends"]["my_backend"] = my_entrypoint
# TODO: the docs recommend importlib.util.module_from_spec. But this works for now.
sys.modules["my_backend"] = mod
result = pandas.plotting._core._get_plot_backend("my_backend")
assert result is mod
# TODO(GH#27517): https://github.com/pandas-dev/pandas/issues/27517
# Remove the td.skip_if_no_mpl
with pandas.option_context("plotting.backend", "my_backend"):
result = pandas.plotting._core._get_plot_backend()
assert result is mod
def test_setting_backend_without_plot_raises():
# GH-28163
module = types.ModuleType("pandas_plot_backend")
sys.modules["pandas_plot_backend"] = module
assert pandas.options.plotting.backend == "matplotlib"
with pytest.raises(
ValueError, match="Could not find plotting backend 'pandas_plot_backend'."
):
pandas.set_option("plotting.backend", "pandas_plot_backend")
assert pandas.options.plotting.backend == "matplotlib"
@td.skip_if_mpl
def test_no_matplotlib_ok():
msg = (
'matplotlib is required for plotting when the default backend "matplotlib" is '
"selected."
)
with pytest.raises(ImportError, match=msg):
pandas.plotting._core._get_plot_backend("matplotlib")
def test_extra_kinds_ok(monkeypatch, restore_backend):
# https://github.com/pandas-dev/pandas/pull/28647
monkeypatch.setitem(sys.modules, "pandas_dummy_backend", dummy_backend)
pandas.set_option("plotting.backend", "pandas_dummy_backend")
df = pandas.DataFrame({"A": [1, 2, 3]})
df.plot(kind="not a real kind")