"""Archive implementations and associated utilities.

Archives
--------

The archive is a data structure that stores solutions generated by the QD algorithm,
along with any information relevant to solutions, such as objective and measure values.
The archives in this subpackage are arranged in a one-layer hierarchy, with all archives
inheriting from :class:`~ribs.archives.ArchiveBase`.

.. autosummary::
    :toctree:

    CategoricalArchive
    CVTArchive
    DensityArchive
    GridArchive
    ProximityArchive
    SlidingBoundariesArchive
    ArchiveBase

Utilities
---------

This subpackage also contains several utilities associated with the archives.

.. autosummary::
    :toctree:

    ArrayStore
    AddStatus
    ArchiveDataFrame
    ArchiveStats
    cqd_score
    CQDScoreResult
"""

from ribs.archives._add_status import AddStatus
from ribs.archives._archive_base import ArchiveBase
from ribs.archives._archive_data_frame import ArchiveDataFrame
from ribs.archives._archive_stats import ArchiveStats
from ribs.archives._array_store import ArrayStore
from ribs.archives._categorical_archive import CategoricalArchive
from ribs.archives._cqd_score import CQDScoreResult, cqd_score
from ribs.archives._cvt_archive import CVTArchive
from ribs.archives._density_archive import DensityArchive
from ribs.archives._grid_archive import GridArchive
from ribs.archives._proximity_archive import ProximityArchive
from ribs.archives._sliding_boundaries_archive import SlidingBoundariesArchive

__all__ = [
    "CategoricalArchive",
    "CVTArchive",
    "DensityArchive",
    "GridArchive",
    "ProximityArchive",
    "SlidingBoundariesArchive",
    "ArchiveBase",
    "ArrayStore",
    "AddStatus",
    "ArchiveDataFrame",
    "ArchiveStats",
    "CQDScoreResult",
    "cqd_score",
]
