import sys
import warnings
from pathlib import Path

import numpy as np
import pytest

with warnings.catch_warnings():
    warnings.simplefilter("ignore")
    import matplotlib

REPO_ROOT = Path(__file__).resolve().parent.parent
sys.path.insert(0, str(REPO_ROOT / "src"))

matplotlib.use("Agg")

import supervision as sv  # noqa: E402
from tests.helpers import _create_key_points  # noqa: E402


@pytest.fixture
def scene() -> np.ndarray:
    return np.zeros((100, 100, 3), dtype=np.uint8)


@pytest.fixture
def sample_key_points() -> sv.KeyPoints:
    return _create_key_points(
        xy=[
            [
                [10, 10],
                [20, 20],
                [30, 30],
                [40, 40],
                [50, 50],
                [60, 60],
                [70, 70],
                [80, 80],
                [90, 90],
                [10, 20],
                [20, 30],
                [30, 40],
                [40, 50],
                [50, 60],
                [60, 70],
                [70, 80],
                [80, 90],
            ],
            [
                [10, 40],
                [20, 50],
                [30, 60],
                [40, 70],
                [50, 80],
                [60, 90],
                [70, 10],
                [80, 20],
                [90, 30],
                [10, 50],
                [20, 60],
                [30, 70],
                [40, 80],
                [50, 90],
                [60, 10],
                [70, 20],
                [80, 30],
            ],
        ],
        confidence=[
            [0.8] * 17,
            [0.6] * 17,
        ],
        class_id=[0, 1],
    )


@pytest.fixture
def empty_key_points() -> sv.KeyPoints:
    return sv.KeyPoints.empty()
