"""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:

    ribs.archives.CategoricalArchive
    ribs.archives.CVTArchive
    ribs.archives.DensityArchive
    ribs.archives.GridArchive
    ribs.archives.ProximityArchive
    ribs.archives.SlidingBoundariesArchive
    ribs.archives.ArchiveBase

Utilities
---------

This subpackage also contains several utilities associated with the archives.

.. autosummary::
    :toctree:

    ribs.archives.ArrayStore
    ribs.archives.AddStatus
    ribs.archives.ArchiveDataFrame
    ribs.archives.ArchiveStats
    ribs.archives.cqd_score
    ribs.archives.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",
]
