""" FastestLap class """

import datetime
from dataclasses import dataclass

from ergast_py.models.average_speed import AverageSpeed


@dataclass
class FastestLap():
    """
    Representation of a Fastest Lap for a Formula One Driver

    Fastest Laps may contain:
        rank: Integer
        lap: Integer
        time: datetime.time
        average_speed: AverageSpeed
    """

    def __init__(self, rank: int, lap: int, time: datetime.time,
                 average_speed: AverageSpeed) -> None:
        self.rank = rank
        self.lap = lap
        self.time = time
        self.average_speed = average_speed

    def __repr__(self) -> str:
        members = ', '.join(f"{key}={value}" for key, value in self.__dict__.items())
        return f"{type(self).__name__}({members})"

    def __eq__(self, __o: object) -> bool:
        return isinstance(__o, FastestLap) and (
            self.rank == __o.rank and
            self.lap == __o.lap and
            self.time == __o.time and
            self.average_speed == __o.average_speed
        )