from autoconf.dictable import from_dict, from_json, output_to_json, to_dict
from autoarray import preprocess
from autoarray.dataset.imaging.w_tilde import WTildeImaging
from autoarray.dataset.imaging.dataset import Imaging
from autoarray.dataset.interferometer.dataset import (
    Interferometer,
)
from autoarray.dataset.over_sampling import OverSamplingDataset
from autoarray.dataset.grids import GridsInterface
from autoarray.dataset.dataset_model import DatasetModel
from autoarray.mask.mask_1d import Mask1D
from autoarray.mask.mask_2d import Mask2D
from autoarray.operators.convolver import Convolver
from autoarray.operators.over_sampling.uniform import OverSamplingUniform  # noqa
from autoarray.operators.over_sampling.uniform import OverSamplerUniform  # noqa
from autoarray.operators.over_sampling.iterate import OverSamplingIterate
from autoarray.operators.over_sampling.iterate import OverSamplerIterate
from autoarray.inversion.inversion.dataset_interface import DatasetInterface
from autoarray.inversion.pixelization import image_mesh
from autoarray.inversion.pixelization import mesh
from autoarray.inversion import regularization as reg
from autoarray.inversion.pixelization.image_mesh.abstract import AbstractImageMesh
from autoarray.inversion.pixelization.mesh.abstract import AbstractMesh
from autoarray.inversion.regularization.abstract import AbstractRegularization
from autoarray.inversion.pixelization.pixelization import Pixelization
from autoarray.inversion.inversion.settings import SettingsInversion
from autoarray.inversion.inversion.factory import inversion_from as Inversion
from autoarray.inversion.pixelization.mappers.abstract import AbstractMapper
from autoarray.inversion.pixelization.mappers.mapper_grids import MapperGrids
from autoarray.inversion.pixelization.mappers.factory import mapper_from as Mapper
from autoarray.inversion.pixelization.border_relocator import BorderRelocator
from autoarray.operators.transformer import TransformerDFT
from autoarray.operators.transformer import TransformerNUFFT
from autoarray.structures.arrays.uniform_1d import Array1D
from autoarray.structures.arrays.uniform_2d import Array2D
from autoarray.structures.arrays.irregular import ArrayIrregular
from autoarray.structures.grids.uniform_1d import Grid1D
from autoarray.structures.grids.uniform_2d import Grid2D
from autoarray.structures.grids.irregular_2d import Grid2DIrregular
from autoarray.structures.grids.irregular_2d import Grid2DIrregularUniform
from autoarray.operators.over_sampling.iterate import OverSamplingIterate
from autoarray.structures.mesh.rectangular_2d import Mesh2DRectangular
from autoarray.structures.mesh.voronoi_2d import Mesh2DVoronoi
from autoarray.structures.mesh.delaunay_2d import Mesh2DDelaunay
from autoarray.structures.vectors.uniform import VectorYX2D
from autoarray.structures.vectors.irregular import VectorYX2DIrregular
from autoarray.structures.arrays.kernel_2d import Kernel2D
from autoarray.structures.visibilities import Visibilities
from autoarray.structures.visibilities import VisibilitiesNoiseMap

from autogalaxy import cosmology as cosmo
from autogalaxy.analysis.adapt_images.adapt_images import AdaptImages
from autogalaxy.analysis.adapt_images.adapt_image_maker import AdaptImageMaker
from autogalaxy.gui.clicker import Clicker
from autogalaxy.gui.scribbler import Scribbler
from autogalaxy.galaxy.galaxy import Galaxy
from autogalaxy.galaxy.galaxies import Galaxies
from autogalaxy.galaxy.redshift import Redshift
from autogalaxy.analysis.clump_model import ClumpModel
from autogalaxy.analysis.clump_model import ClumpModelDisabled

from autogalaxy.quantity.dataset_quantity import DatasetQuantity
from autogalaxy.profiles.geometry_profiles import EllProfile
from autogalaxy.profiles import (
    point_sources as ps,
    mass as mp,
    light_and_mass_profiles as lmp,
    light_linear_and_mass_profiles as lmp_linear,
    scaling_relations as sr,
)
from autogalaxy.profiles.light.abstract import LightProfile
from autogalaxy.profiles.light import standard as lp
from autogalaxy.profiles.light import snr as lp_snr
from autogalaxy.profiles.light import linear as lp_linear
from autogalaxy.profiles.light import operated as lp_operated
from autogalaxy.profiles import basis as lp_basis
from autogalaxy.profiles.light import (
    linear_operated as lp_linear_operated,
)
from autogalaxy.operate.image import OperateImage
from autogalaxy.operate.deflections import OperateDeflections
from autogalaxy.quantity.dataset_quantity import DatasetQuantity
from autogalaxy import convert

from . import plot
from . import aggregator as agg
from .lens import subhalo
from .lens.tracer import Tracer
from .lens.sensitivity import SubhaloSensitivityResult
from .lens.to_inversion import TracerToInversion
from .analysis.positions import PositionsLHResample
from .analysis.positions import PositionsLHPenalty
from .analysis.preloads import Preloads
from .imaging.simulator import SimulatorImaging
from .imaging.fit_imaging import FitImaging
from .imaging.model.analysis import AnalysisImaging
from .interferometer.simulator import SimulatorInterferometer
from .interferometer.fit_interferometer import FitInterferometer
from .interferometer.model.analysis import AnalysisInterferometer
from .point.dataset import PointDataset
from .point.fit.dataset import FitPointDataset
from .point.fit.fluxes import FitFluxes
from .point.fit.positions.image.abstract import AbstractFitPositionsImagePair
from .point.fit.positions.image.pair import FitPositionsImagePair
from .point.fit.positions.image.pair_all import FitPositionsImagePairAll
from .point.fit.positions.image.pair_repeat import FitPositionsImagePairRepeat
from .point.fit.positions.source.separations import FitPositionsSource
from .point.fit.positions.source.max_separation import FitPositionsSourceMaxSeparation
from .point.model.analysis import AnalysisPoint
from .point.solver import PointSolver
from .quantity.fit_quantity import FitQuantity
from .quantity.model.analysis import AnalysisQuantity
from . import exc
from . import mock as m
from . import util

from autoconf import conf

conf.instance.register(__file__)

__version__ = "2024.9.21.2"
