# coding: utf-8

"""
    node-server

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)  # noqa: E501

    The version of the OpenAPI document: 0.0.237
    Generated by: https://openapi-generator.tech
"""

from datetime import date, datetime  # noqa: F401
import decimal  # noqa: F401
import functools  # noqa: F401
import io  # noqa: F401
import re  # noqa: F401
import typing  # noqa: F401
import typing_extensions  # noqa: F401
import uuid  # noqa: F401

import frozendict  # noqa: F401

from tensorleap_openapi_client import schemas  # noqa: F401


class UnderRepresentationInsight(
    schemas.DictSchema
):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """


    class MetaOapg:
        required = {
            "filter",
            "over_representation_n_samples",
            "over_representation_dataset",
            "under_representation_n_samples",
            "under_representation_dataset",
            "type",
        }
        
        class properties:
        
            @staticmethod
            def type() -> typing.Type['ScatterInsightType']:
                return ScatterInsightType
        
            @staticmethod
            def filter() -> typing.Type['ScatterFilter']:
                return ScatterFilter
        
            @staticmethod
            def under_representation_dataset() -> typing.Type['DataStateType']:
                return DataStateType
            under_representation_n_samples = schemas.Float64Schema
        
            @staticmethod
            def over_representation_dataset() -> typing.Type['DataStateType']:
                return DataStateType
            over_representation_n_samples = schemas.Float64Schema
            __annotations__ = {
                "type": type,
                "filter": filter,
                "under_representation_dataset": under_representation_dataset,
                "under_representation_n_samples": under_representation_n_samples,
                "over_representation_dataset": over_representation_dataset,
                "over_representation_n_samples": over_representation_n_samples,
            }
        additional_properties = schemas.NotAnyTypeSchema
    
    filter: 'ScatterFilter'
    over_representation_n_samples: MetaOapg.properties.over_representation_n_samples
    over_representation_dataset: 'DataStateType'
    under_representation_n_samples: MetaOapg.properties.under_representation_n_samples
    under_representation_dataset: 'DataStateType'
    type: 'ScatterInsightType'
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["filter"]) -> 'ScatterFilter': ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["over_representation_n_samples"]) -> MetaOapg.properties.over_representation_n_samples: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["over_representation_dataset"]) -> 'DataStateType': ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["under_representation_n_samples"]) -> MetaOapg.properties.under_representation_n_samples: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["under_representation_dataset"]) -> 'DataStateType': ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["type"]) -> 'ScatterInsightType': ...
    
    def __getitem__(self, name: typing.Union[typing_extensions.Literal["filter"], typing_extensions.Literal["over_representation_n_samples"], typing_extensions.Literal["over_representation_dataset"], typing_extensions.Literal["under_representation_n_samples"], typing_extensions.Literal["under_representation_dataset"], typing_extensions.Literal["type"], ]):
        # dict_instance[name] accessor
        return super().__getitem__(name)
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["filter"]) -> 'ScatterFilter': ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["over_representation_n_samples"]) -> MetaOapg.properties.over_representation_n_samples: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["over_representation_dataset"]) -> 'DataStateType': ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["under_representation_n_samples"]) -> MetaOapg.properties.under_representation_n_samples: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["under_representation_dataset"]) -> 'DataStateType': ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["type"]) -> 'ScatterInsightType': ...
    
    def get_item_oapg(self, name: typing.Union[typing_extensions.Literal["filter"], typing_extensions.Literal["over_representation_n_samples"], typing_extensions.Literal["over_representation_dataset"], typing_extensions.Literal["under_representation_n_samples"], typing_extensions.Literal["under_representation_dataset"], typing_extensions.Literal["type"], ]):
        return super().get_item_oapg(name)

    def __new__(
        cls,
        *args: typing.Union[dict, frozendict.frozendict, ],
        filter: 'ScatterFilter',
        over_representation_n_samples: typing.Union[MetaOapg.properties.over_representation_n_samples, decimal.Decimal, int, float, ],
        over_representation_dataset: 'DataStateType',
        under_representation_n_samples: typing.Union[MetaOapg.properties.under_representation_n_samples, decimal.Decimal, int, float, ],
        under_representation_dataset: 'DataStateType',
        type: 'ScatterInsightType',
        _configuration: typing.Optional[schemas.Configuration] = None,
    ) -> 'UnderRepresentationInsight':
        return super().__new__(
            cls,
            *args,
            filter=filter,
            over_representation_n_samples=over_representation_n_samples,
            over_representation_dataset=over_representation_dataset,
            under_representation_n_samples=under_representation_n_samples,
            under_representation_dataset=under_representation_dataset,
            type=type,
            _configuration=_configuration,
        )

from tensorleap_openapi_client.model.data_state_type import DataStateType
from tensorleap_openapi_client.model.scatter_filter import ScatterFilter
from tensorleap_openapi_client.model.scatter_insight_type import ScatterInsightType
