"""This module is only here for backwards compatibility with v<0.4.0 of ome-types.

Most of the types defined here are also exported from `ome_types.model`.  But for
now, you can also import them from here.
"""
from enum import Enum

from ome_types._autogenerated.ome_2016_06 import (
    Binning,
    Marker,
    NamingConvention,
    PixelType,
    UnitsElectricPotential,
    UnitsFrequency,
    UnitsLength,
    UnitsPower,
    UnitsPressure,
    UnitsTemperature,
    UnitsTime,
)
from ome_types._autogenerated.ome_2016_06.shape import FontFamily
from ome_types.model._color import Color

__all__ = [
    "PixelType",
    "Binning",
    "FontFamily",
    "Hex40",
    "LSID",
    "Marker",
    "Color",
    "NamingConvention",
    "NonNegativeFloat",
    "NonNegativeInt",
    "NonNegativeLong",
    "PercentFraction",
    "PixelType",
    "PositiveFloat",
    "PositiveInt",
    "UnitsAngle",
    "UnitsElectricPotential",
    "UnitsFrequency",
    "UnitsLength",
    "UnitsPower",
    "UnitsPressure",
    "UnitsTemperature",
    "UnitsTime",
    "UniversallyUniqueIdentifier",
    "AnnotationID",
    "ChannelID",
    "DatasetID",
    "DetectorID",
    "DichroicID",
    "ExperimenterGroupID",
    "ExperimenterID",
    "ExperimentID",
    "FilterID",
    "FilterSetID",
    "FolderID",
    "ImageID",
    "InstrumentID",
    "LightSourceID",
    "MicrobeamManipulationID",
    "ModuleID",
    "ObjectiveID",
    "PixelsID",
    "PlateAcquisitionID",
    "PlateID",
    "ProjectID",
    "ReagentID",
    "ROIID",
    "ScreenID",
    "ShapeID",
    "WellID",
    "WellSampleID",
]


Hex40 = bytes
NonNegativeFloat = float
NonNegativeInt = int
NonNegativeLong = int
PercentFraction = float
PositiveFloat = float
PositiveInt = int
UniversallyUniqueIdentifier = str

# IDs

LSID = str
AnnotationID = str
ChannelID = str
DatasetID = str
DetectorID = str
DichroicID = str
ExperimenterGroupID = str
ExperimenterID = str
ExperimentID = str
FilterID = str
FilterSetID = str
FolderID = str
ImageID = str
InstrumentID = str
LightSourceID = str
MicrobeamManipulationID = str
ModuleID = str
ObjectiveID = str
PixelsID = str
ROIID = str
PlateAcquisitionID = str
PlateID = str
ProjectID = str
ReagentID = str
ScreenID = str
ShapeID = str
WellID = str
WellSampleID = str


class UnitsAngle(Enum):
    """The units used to represent an angle."""

    DEGREE = "deg"
    GRADIAN = "gon"
    RADIAN = "rad"
