import matplotlib
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties, fontManager

from core.tools.provider.builtin_tool_provider import BuiltinToolProviderController


def set_chinese_font():
    to_find_fonts = [
        "PingFang SC",
        "SimHei",
        "Microsoft YaHei",
        "STSong",
        "SimSun",
        "Arial Unicode MS",
        "Noto Sans CJK SC",
        "Noto Sans CJK JP",
    ]
    installed_fonts = frozenset(fontInfo.name for fontInfo in fontManager.ttflist)
    for font in to_find_fonts:
        if font in installed_fonts:
            return FontProperties(font)

    return FontProperties()


# use non-interactive backend to prevent `RuntimeError: main thread is not in main loop`
matplotlib.use("Agg")
# use a business theme
plt.style.use("seaborn-v0_8-darkgrid")
plt.rcParams["axes.unicode_minus"] = False
font_properties = set_chinese_font()
plt.rcParams["font.family"] = font_properties.get_name()


class ChartProvider(BuiltinToolProviderController):
    def _validate_credentials(self, credentials: dict) -> None:
        pass
