# 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 Insight(
    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 = {
            "organizationId",
            "createdAt",
            "data",
            "createdBy",
            "modelId",
            "modelEpoch",
            "visualizationUuid",
            "_id",
            "modelExtId",
            "updatedAt",
        }
        
        class properties:
            _id = schemas.StrSchema
            modelId = schemas.StrSchema
            modelEpoch = schemas.Float64Schema
            modelExtId = schemas.StrSchema
            organizationId = schemas.StrSchema
            createdBy = schemas.StrSchema
            createdAt = schemas.DateTimeSchema
            updatedAt = schemas.DateTimeSchema
            visualizationUuid = schemas.StrSchema
        
            @staticmethod
            def data() -> typing.Type['InsightType']:
                return InsightType
            __annotations__ = {
                "_id": _id,
                "modelId": modelId,
                "modelEpoch": modelEpoch,
                "modelExtId": modelExtId,
                "organizationId": organizationId,
                "createdBy": createdBy,
                "createdAt": createdAt,
                "updatedAt": updatedAt,
                "visualizationUuid": visualizationUuid,
                "data": data,
            }
        additional_properties = schemas.NotAnyTypeSchema
    
    organizationId: MetaOapg.properties.organizationId
    createdAt: MetaOapg.properties.createdAt
    data: 'InsightType'
    createdBy: MetaOapg.properties.createdBy
    modelId: MetaOapg.properties.modelId
    modelEpoch: MetaOapg.properties.modelEpoch
    visualizationUuid: MetaOapg.properties.visualizationUuid
    _id: MetaOapg.properties._id
    modelExtId: MetaOapg.properties.modelExtId
    updatedAt: MetaOapg.properties.updatedAt
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["organizationId"]) -> MetaOapg.properties.organizationId: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["createdAt"]) -> MetaOapg.properties.createdAt: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["data"]) -> 'InsightType': ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["createdBy"]) -> MetaOapg.properties.createdBy: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["modelId"]) -> MetaOapg.properties.modelId: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["modelEpoch"]) -> MetaOapg.properties.modelEpoch: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["visualizationUuid"]) -> MetaOapg.properties.visualizationUuid: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["_id"]) -> MetaOapg.properties._id: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["modelExtId"]) -> MetaOapg.properties.modelExtId: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["updatedAt"]) -> MetaOapg.properties.updatedAt: ...
    
    def __getitem__(self, name: typing.Union[typing_extensions.Literal["organizationId"], typing_extensions.Literal["createdAt"], typing_extensions.Literal["data"], typing_extensions.Literal["createdBy"], typing_extensions.Literal["modelId"], typing_extensions.Literal["modelEpoch"], typing_extensions.Literal["visualizationUuid"], typing_extensions.Literal["_id"], typing_extensions.Literal["modelExtId"], typing_extensions.Literal["updatedAt"], ]):
        # dict_instance[name] accessor
        return super().__getitem__(name)
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["organizationId"]) -> MetaOapg.properties.organizationId: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["createdAt"]) -> MetaOapg.properties.createdAt: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["data"]) -> 'InsightType': ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["createdBy"]) -> MetaOapg.properties.createdBy: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["modelId"]) -> MetaOapg.properties.modelId: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["modelEpoch"]) -> MetaOapg.properties.modelEpoch: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["visualizationUuid"]) -> MetaOapg.properties.visualizationUuid: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["_id"]) -> MetaOapg.properties._id: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["modelExtId"]) -> MetaOapg.properties.modelExtId: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["updatedAt"]) -> MetaOapg.properties.updatedAt: ...
    
    def get_item_oapg(self, name: typing.Union[typing_extensions.Literal["organizationId"], typing_extensions.Literal["createdAt"], typing_extensions.Literal["data"], typing_extensions.Literal["createdBy"], typing_extensions.Literal["modelId"], typing_extensions.Literal["modelEpoch"], typing_extensions.Literal["visualizationUuid"], typing_extensions.Literal["_id"], typing_extensions.Literal["modelExtId"], typing_extensions.Literal["updatedAt"], ]):
        return super().get_item_oapg(name)

    def __new__(
        cls,
        *args: typing.Union[dict, frozendict.frozendict, ],
        organizationId: typing.Union[MetaOapg.properties.organizationId, str, ],
        createdAt: typing.Union[MetaOapg.properties.createdAt, str, datetime, ],
        data: 'InsightType',
        createdBy: typing.Union[MetaOapg.properties.createdBy, str, ],
        modelId: typing.Union[MetaOapg.properties.modelId, str, ],
        modelEpoch: typing.Union[MetaOapg.properties.modelEpoch, decimal.Decimal, int, float, ],
        visualizationUuid: typing.Union[MetaOapg.properties.visualizationUuid, str, ],
        _id: typing.Union[MetaOapg.properties._id, str, ],
        modelExtId: typing.Union[MetaOapg.properties.modelExtId, str, ],
        updatedAt: typing.Union[MetaOapg.properties.updatedAt, str, datetime, ],
        _configuration: typing.Optional[schemas.Configuration] = None,
    ) -> 'Insight':
        return super().__new__(
            cls,
            *args,
            organizationId=organizationId,
            createdAt=createdAt,
            data=data,
            createdBy=createdBy,
            modelId=modelId,
            modelEpoch=modelEpoch,
            visualizationUuid=visualizationUuid,
            _id=_id,
            modelExtId=modelExtId,
            updatedAt=updatedAt,
            _configuration=_configuration,
        )

from openapi_client.model.insight_type import InsightType
