# 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 openapi_client import schemas  # noqa: F401


class OverfittingInsight(
    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",
            "avg_loss_training",
            "n_samples_training",
            "avg_loss_validation",
            "n_samples_validation",
            "type",
        }
        
        class properties:
        
            @staticmethod
            def type() -> typing.Type['ScatterInsightType']:
                return ScatterInsightType
        
            @staticmethod
            def filter() -> typing.Type['ScatterFilter']:
                return ScatterFilter
            n_samples_validation = schemas.Float64Schema
            n_samples_training = schemas.Float64Schema
            avg_loss_validation = schemas.Float64Schema
            avg_loss_training = schemas.Float64Schema
            __annotations__ = {
                "type": type,
                "filter": filter,
                "n_samples_validation": n_samples_validation,
                "n_samples_training": n_samples_training,
                "avg_loss_validation": avg_loss_validation,
                "avg_loss_training": avg_loss_training,
            }
        additional_properties = schemas.NotAnyTypeSchema
    
    filter: 'ScatterFilter'
    avg_loss_training: MetaOapg.properties.avg_loss_training
    n_samples_training: MetaOapg.properties.n_samples_training
    avg_loss_validation: MetaOapg.properties.avg_loss_validation
    n_samples_validation: MetaOapg.properties.n_samples_validation
    type: 'ScatterInsightType'
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["filter"]) -> 'ScatterFilter': ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["avg_loss_training"]) -> MetaOapg.properties.avg_loss_training: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["n_samples_training"]) -> MetaOapg.properties.n_samples_training: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["avg_loss_validation"]) -> MetaOapg.properties.avg_loss_validation: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["n_samples_validation"]) -> MetaOapg.properties.n_samples_validation: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["type"]) -> 'ScatterInsightType': ...
    
    def __getitem__(self, name: typing.Union[typing_extensions.Literal["filter"], typing_extensions.Literal["avg_loss_training"], typing_extensions.Literal["n_samples_training"], typing_extensions.Literal["avg_loss_validation"], typing_extensions.Literal["n_samples_validation"], 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["avg_loss_training"]) -> MetaOapg.properties.avg_loss_training: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["n_samples_training"]) -> MetaOapg.properties.n_samples_training: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["avg_loss_validation"]) -> MetaOapg.properties.avg_loss_validation: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["n_samples_validation"]) -> MetaOapg.properties.n_samples_validation: ...
    
    @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["avg_loss_training"], typing_extensions.Literal["n_samples_training"], typing_extensions.Literal["avg_loss_validation"], typing_extensions.Literal["n_samples_validation"], typing_extensions.Literal["type"], ]):
        return super().get_item_oapg(name)

    def __new__(
        cls,
        *args: typing.Union[dict, frozendict.frozendict, ],
        filter: 'ScatterFilter',
        avg_loss_training: typing.Union[MetaOapg.properties.avg_loss_training, decimal.Decimal, int, float, ],
        n_samples_training: typing.Union[MetaOapg.properties.n_samples_training, decimal.Decimal, int, float, ],
        avg_loss_validation: typing.Union[MetaOapg.properties.avg_loss_validation, decimal.Decimal, int, float, ],
        n_samples_validation: typing.Union[MetaOapg.properties.n_samples_validation, decimal.Decimal, int, float, ],
        type: 'ScatterInsightType',
        _configuration: typing.Optional[schemas.Configuration] = None,
    ) -> 'OverfittingInsight':
        return super().__new__(
            cls,
            *args,
            filter=filter,
            avg_loss_training=avg_loss_training,
            n_samples_training=n_samples_training,
            avg_loss_validation=avg_loss_validation,
            n_samples_validation=n_samples_validation,
            type=type,
            _configuration=_configuration,
        )

from openapi_client.model.scatter_filter import ScatterFilter
from openapi_client.model.scatter_insight_type import ScatterInsightType
