from autoarray.dataset import preprocess
from autoarray.dataset.imaging import SettingsImaging
from autoarray.dataset.imaging import Imaging
from autoarray.dataset.interferometer import Interferometer
from autoarray.dataset.interferometer import SettingsInterferometer
from autoarray.instruments import acs
from autoarray.instruments import euclid
from autoarray.inversion import pixelizations as pix
from autoarray.inversion import regularization as reg
from autoarray.inversion.inversion.settings import SettingsInversion
from autoarray.inversion.inversion.factory import inversion_from as Inversion
from autoarray.inversion.inversion.factory import (
    inversion_imaging_unpacked_from as InversionImaging,
)
from autoarray.inversion.inversion.factory import (
    inversion_interferometer_unpacked_from as InversionInterferometer,
)
from autoarray.inversion.mappers.factory import mapper_from as Mapper
from autoarray.inversion.pixelizations.settings import SettingsPixelization
from autoarray.mask.mask_1d import Mask1D
from autoarray.mask.mask_2d import Mask2D
from autoarray.operators.convolver import Convolver
from autoarray.operators.convolver import Convolver
from autoarray.operators.transformer import TransformerDFT
from autoarray.operators.transformer import TransformerNUFFT
from autoarray.layout.layout import Layout2D
from autoarray.structures.arrays.uniform_1d import Array1D
from autoarray.structures.arrays.uniform_2d import Array2D
from autoarray.structures.values import ValuesIrregular
from autoarray.structures.header import Header
from autoarray.structures.grids.uniform_1d import Grid1D
from autoarray.structures.grids.uniform_2d import Grid2D
from autoarray.structures.grids.sparse_2d import Grid2DSparse
from autoarray.structures.grids.iterate_2d import Grid2DIterate
from autoarray.structures.grids.irregular_2d import Grid2DIrregular
from autoarray.structures.grids.irregular_2d import Grid2DIrregularUniform
from autoarray.structures.grids.grid_2d_pixelization import Grid2DRectangular
from autoarray.structures.grids.grid_2d_pixelization import Grid2DVoronoi
from autoarray.structures.vectors.uniform import VectorYX2D
from autoarray.structures.vectors.irregular import VectorYX2DIrregular
from autoarray.layout.region import Region1D
from autoarray.layout.region import Region2D
from autoarray.structures.arrays.kernel_2d import Kernel2D
from autoarray.structures.visibilities import Visibilities
from autoarray.structures.visibilities import VisibilitiesNoiseMap

from .analysis.maker import FitMaker
from .analysis.preloads import Preloads
from . import aggregator as agg
from . import plot
from . import util
from .operate.image import OperateImage
from .operate.image import OperateImageList
from .operate.image import OperateImageGalaxies
from .operate.deflections import OperateDeflections
from .imaging.fit_imaging import FitImaging
from .imaging.model.analysis import AnalysisImaging
from .imaging.imaging import SimulatorImaging
from .interferometer.interferometer import SimulatorInterferometer
from .interferometer.fit_interferometer import FitInterferometer
from .interferometer.model.analysis import AnalysisInterferometer

from .quantity.fit_quantity import FitQuantity
from .quantity.model.analysis import AnalysisQuantity
from .quantity.dataset_quantity import DatasetQuantity
from .galaxy.galaxy import Galaxy, HyperGalaxy, Redshift
from .galaxy.stellar_dark_decomp import StellarDarkDecomp
from .hyper import hyper_data
from .analysis.setup import SetupHyper
from .plane.plane import Plane
from .profiles.geometry_profiles import EllProfile
from .profiles import (
    point_sources as ps,
    light_profiles as lp,
    mass_profiles as mp,
    light_and_mass_profiles as lmp,
    scaling_relations as sr,
)
from .profiles.light_profiles import light_profiles_init as lp_init
from .profiles.light_profiles import light_profiles_snr as lp_snr
from . import convert
from . import mock as m
from .util.shear_field import ShearYX2D
from .util.shear_field import ShearYX2DIrregular

from .analysis.clump_model import ClumpModel

from autoconf import conf

conf.instance.register(__file__)

__version__ = "2022.05.02.1"
