from typing import Union

from attrs import field, define
from attrs.validators import instance_of
from src.data_classes.parameters_visualization import PlotParameters


@define
class SurfacePlotParameters(PlotParameters):
    function_name: str = field(validator=instance_of(str))
    x_axis_maximum: Union[int, float] = field(validator=instance_of((int, float)))
    y_axis_maximum: Union[int, float] = field(validator=instance_of((int, float)))
    z_axis_label: str = field(validator=instance_of(str))
    elevation_angle: Union[int, float] = field(validator=instance_of((int, float)))
    azimuth_angle: Union[int, float] = field(validator=instance_of((int, float)))
    dataset: str = "data"
