# 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 LossMessageParams(
    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 = {
            "module",
            "message",
            "loss_name",
            "node_id",
        }
        
        class properties:
            message = schemas.StrSchema
            loss_name = schemas.StrSchema
            node_id = schemas.StrSchema
        
            @staticmethod
            def module() -> typing.Type['Module']:
                return Module
            message_code = schemas.StrSchema
            __annotations__ = {
                "message": message,
                "loss_name": loss_name,
                "node_id": node_id,
                "module": module,
                "message_code": message_code,
            }
        additional_properties = schemas.NotAnyTypeSchema
    
    module: 'Module'
    message: MetaOapg.properties.message
    loss_name: MetaOapg.properties.loss_name
    node_id: MetaOapg.properties.node_id
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["module"]) -> 'Module': ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["message"]) -> MetaOapg.properties.message: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["loss_name"]) -> MetaOapg.properties.loss_name: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["node_id"]) -> MetaOapg.properties.node_id: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["message_code"]) -> MetaOapg.properties.message_code: ...
    
    def __getitem__(self, name: typing.Union[typing_extensions.Literal["module"], typing_extensions.Literal["message"], typing_extensions.Literal["loss_name"], typing_extensions.Literal["node_id"], typing_extensions.Literal["message_code"], ]):
        # dict_instance[name] accessor
        return super().__getitem__(name)
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["module"]) -> 'Module': ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["message"]) -> MetaOapg.properties.message: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["loss_name"]) -> MetaOapg.properties.loss_name: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["node_id"]) -> MetaOapg.properties.node_id: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["message_code"]) -> typing.Union[MetaOapg.properties.message_code, schemas.Unset]: ...
    
    def get_item_oapg(self, name: typing.Union[typing_extensions.Literal["module"], typing_extensions.Literal["message"], typing_extensions.Literal["loss_name"], typing_extensions.Literal["node_id"], typing_extensions.Literal["message_code"], ]):
        return super().get_item_oapg(name)

    def __new__(
        cls,
        *args: typing.Union[dict, frozendict.frozendict, ],
        module: 'Module',
        message: typing.Union[MetaOapg.properties.message, str, ],
        loss_name: typing.Union[MetaOapg.properties.loss_name, str, ],
        node_id: typing.Union[MetaOapg.properties.node_id, str, ],
        message_code: typing.Union[MetaOapg.properties.message_code, str, schemas.Unset] = schemas.unset,
        _configuration: typing.Optional[schemas.Configuration] = None,
    ) -> 'LossMessageParams':
        return super().__new__(
            cls,
            *args,
            module=module,
            message=message,
            loss_name=loss_name,
            node_id=node_id,
            message_code=message_code,
            _configuration=_configuration,
        )

from openapi_client.model.module import Module
