# Copyright DataStax, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from __future__ import annotations

from dataclasses import dataclass
from typing import Generic

from astrapy.data.cursors.cursor import TRAW


@dataclass
class RerankedResult(Generic[TRAW]):
    """
    A single result coming `find_and_rerank` command, i.e. an item from DB with scores.

    Attributes:
        document: a collection/row as returned by `find_and_rerank` API command.
        scores: a dictionary of score labels to score float values, such as
            `{"$rerank": 0.87, "$vector" : 0.65, "$lexical" : 0.91}`.
    """

    document: TRAW
    scores: dict[str, float]
