# 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 TrainFromInitialWeightsParams(
    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 = {
            "fromEpoch",
            "fromModelId",
            "modelName",
            "versionId",
            "trainingParams",
            "shouldRunPopulationExploration",
        }
        
        class properties:
            versionId = schemas.StrSchema
            fromModelId = schemas.StrSchema
            fromEpoch = schemas.Float64Schema
            modelName = schemas.StrSchema
        
            @staticmethod
            def trainingParams() -> typing.Type['TrainingParams']:
                return TrainingParams
            shouldRunPopulationExploration = schemas.BoolSchema
            __annotations__ = {
                "versionId": versionId,
                "fromModelId": fromModelId,
                "fromEpoch": fromEpoch,
                "modelName": modelName,
                "trainingParams": trainingParams,
                "shouldRunPopulationExploration": shouldRunPopulationExploration,
            }
        additional_properties = schemas.NotAnyTypeSchema
    
    fromEpoch: MetaOapg.properties.fromEpoch
    fromModelId: MetaOapg.properties.fromModelId
    modelName: MetaOapg.properties.modelName
    versionId: MetaOapg.properties.versionId
    trainingParams: 'TrainingParams'
    shouldRunPopulationExploration: MetaOapg.properties.shouldRunPopulationExploration
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["fromEpoch"]) -> MetaOapg.properties.fromEpoch: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["fromModelId"]) -> MetaOapg.properties.fromModelId: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["modelName"]) -> MetaOapg.properties.modelName: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["versionId"]) -> MetaOapg.properties.versionId: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["trainingParams"]) -> 'TrainingParams': ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["shouldRunPopulationExploration"]) -> MetaOapg.properties.shouldRunPopulationExploration: ...
    
    def __getitem__(self, name: typing.Union[typing_extensions.Literal["fromEpoch"], typing_extensions.Literal["fromModelId"], typing_extensions.Literal["modelName"], typing_extensions.Literal["versionId"], typing_extensions.Literal["trainingParams"], typing_extensions.Literal["shouldRunPopulationExploration"], ]):
        # dict_instance[name] accessor
        return super().__getitem__(name)
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["fromEpoch"]) -> MetaOapg.properties.fromEpoch: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["fromModelId"]) -> MetaOapg.properties.fromModelId: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["modelName"]) -> MetaOapg.properties.modelName: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["versionId"]) -> MetaOapg.properties.versionId: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["trainingParams"]) -> 'TrainingParams': ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["shouldRunPopulationExploration"]) -> MetaOapg.properties.shouldRunPopulationExploration: ...
    
    def get_item_oapg(self, name: typing.Union[typing_extensions.Literal["fromEpoch"], typing_extensions.Literal["fromModelId"], typing_extensions.Literal["modelName"], typing_extensions.Literal["versionId"], typing_extensions.Literal["trainingParams"], typing_extensions.Literal["shouldRunPopulationExploration"], ]):
        return super().get_item_oapg(name)

    def __new__(
        cls,
        *args: typing.Union[dict, frozendict.frozendict, ],
        fromEpoch: typing.Union[MetaOapg.properties.fromEpoch, decimal.Decimal, int, float, ],
        fromModelId: typing.Union[MetaOapg.properties.fromModelId, str, ],
        modelName: typing.Union[MetaOapg.properties.modelName, str, ],
        versionId: typing.Union[MetaOapg.properties.versionId, str, ],
        trainingParams: 'TrainingParams',
        shouldRunPopulationExploration: typing.Union[MetaOapg.properties.shouldRunPopulationExploration, bool, ],
        _configuration: typing.Optional[schemas.Configuration] = None,
    ) -> 'TrainFromInitialWeightsParams':
        return super().__new__(
            cls,
            *args,
            fromEpoch=fromEpoch,
            fromModelId=fromModelId,
            modelName=modelName,
            versionId=versionId,
            trainingParams=trainingParams,
            shouldRunPopulationExploration=shouldRunPopulationExploration,
            _configuration=_configuration,
        )

from openapi_client.model.training_params import TrainingParams
