# 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 Demo(
    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 = {
            "spaceId",
            "versionId",
            "task",
            "subTitle",
            "datatype",
            "modelId",
            "domain",
            "imageUrl",
            "description",
            "title",
            "projectId",
        }
        
        class properties:
            imageUrl = schemas.StrSchema
            title = schemas.StrSchema
            subTitle = schemas.StrSchema
            description = schemas.StrSchema
            domain = schemas.StrSchema
            datatype = schemas.StrSchema
            task = schemas.StrSchema
            projectId = schemas.StrSchema
            versionId = schemas.StrSchema
            modelId = schemas.StrSchema
            spaceId = schemas.StrSchema
            
            
            class demoStepsGuide(
                schemas.ListSchema
            ):
            
            
                class MetaOapg:
                    items = schemas.StrSchema
            
                def __new__(
                    cls,
                    arg: typing.Union[typing.Tuple[typing.Union[MetaOapg.items, str, ]], typing.List[typing.Union[MetaOapg.items, str, ]]],
                    _configuration: typing.Optional[schemas.Configuration] = None,
                ) -> 'demoStepsGuide':
                    return super().__new__(
                        cls,
                        arg,
                        _configuration=_configuration,
                    )
            
                def __getitem__(self, i: int) -> MetaOapg.items:
                    return super().__getitem__(i)
        
            @staticmethod
            def tours() -> typing.Type['PartialRecordTourPageTourStepDefinitionArray']:
                return PartialRecordTourPageTourStepDefinitionArray
            __annotations__ = {
                "imageUrl": imageUrl,
                "title": title,
                "subTitle": subTitle,
                "description": description,
                "domain": domain,
                "datatype": datatype,
                "task": task,
                "projectId": projectId,
                "versionId": versionId,
                "modelId": modelId,
                "spaceId": spaceId,
                "demoStepsGuide": demoStepsGuide,
                "tours": tours,
            }
        additional_properties = schemas.NotAnyTypeSchema
    
    spaceId: MetaOapg.properties.spaceId
    versionId: MetaOapg.properties.versionId
    task: MetaOapg.properties.task
    subTitle: MetaOapg.properties.subTitle
    datatype: MetaOapg.properties.datatype
    modelId: MetaOapg.properties.modelId
    domain: MetaOapg.properties.domain
    imageUrl: MetaOapg.properties.imageUrl
    description: MetaOapg.properties.description
    title: MetaOapg.properties.title
    projectId: MetaOapg.properties.projectId
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["spaceId"]) -> MetaOapg.properties.spaceId: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["versionId"]) -> MetaOapg.properties.versionId: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["task"]) -> MetaOapg.properties.task: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["subTitle"]) -> MetaOapg.properties.subTitle: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["datatype"]) -> MetaOapg.properties.datatype: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["modelId"]) -> MetaOapg.properties.modelId: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["domain"]) -> MetaOapg.properties.domain: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["imageUrl"]) -> MetaOapg.properties.imageUrl: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["description"]) -> MetaOapg.properties.description: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["title"]) -> MetaOapg.properties.title: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["projectId"]) -> MetaOapg.properties.projectId: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["demoStepsGuide"]) -> MetaOapg.properties.demoStepsGuide: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["tours"]) -> 'PartialRecordTourPageTourStepDefinitionArray': ...
    
    def __getitem__(self, name: typing.Union[typing_extensions.Literal["spaceId"], typing_extensions.Literal["versionId"], typing_extensions.Literal["task"], typing_extensions.Literal["subTitle"], typing_extensions.Literal["datatype"], typing_extensions.Literal["modelId"], typing_extensions.Literal["domain"], typing_extensions.Literal["imageUrl"], typing_extensions.Literal["description"], typing_extensions.Literal["title"], typing_extensions.Literal["projectId"], typing_extensions.Literal["demoStepsGuide"], typing_extensions.Literal["tours"], ]):
        # dict_instance[name] accessor
        return super().__getitem__(name)
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["spaceId"]) -> MetaOapg.properties.spaceId: ...
    
    @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["task"]) -> MetaOapg.properties.task: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["subTitle"]) -> MetaOapg.properties.subTitle: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["datatype"]) -> MetaOapg.properties.datatype: ...
    
    @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["domain"]) -> MetaOapg.properties.domain: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["imageUrl"]) -> MetaOapg.properties.imageUrl: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["description"]) -> MetaOapg.properties.description: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["title"]) -> MetaOapg.properties.title: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["projectId"]) -> MetaOapg.properties.projectId: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["demoStepsGuide"]) -> typing.Union[MetaOapg.properties.demoStepsGuide, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["tours"]) -> typing.Union['PartialRecordTourPageTourStepDefinitionArray', schemas.Unset]: ...
    
    def get_item_oapg(self, name: typing.Union[typing_extensions.Literal["spaceId"], typing_extensions.Literal["versionId"], typing_extensions.Literal["task"], typing_extensions.Literal["subTitle"], typing_extensions.Literal["datatype"], typing_extensions.Literal["modelId"], typing_extensions.Literal["domain"], typing_extensions.Literal["imageUrl"], typing_extensions.Literal["description"], typing_extensions.Literal["title"], typing_extensions.Literal["projectId"], typing_extensions.Literal["demoStepsGuide"], typing_extensions.Literal["tours"], ]):
        return super().get_item_oapg(name)

    def __new__(
        cls,
        *args: typing.Union[dict, frozendict.frozendict, ],
        spaceId: typing.Union[MetaOapg.properties.spaceId, str, ],
        versionId: typing.Union[MetaOapg.properties.versionId, str, ],
        task: typing.Union[MetaOapg.properties.task, str, ],
        subTitle: typing.Union[MetaOapg.properties.subTitle, str, ],
        datatype: typing.Union[MetaOapg.properties.datatype, str, ],
        modelId: typing.Union[MetaOapg.properties.modelId, str, ],
        domain: typing.Union[MetaOapg.properties.domain, str, ],
        imageUrl: typing.Union[MetaOapg.properties.imageUrl, str, ],
        description: typing.Union[MetaOapg.properties.description, str, ],
        title: typing.Union[MetaOapg.properties.title, str, ],
        projectId: typing.Union[MetaOapg.properties.projectId, str, ],
        demoStepsGuide: typing.Union[MetaOapg.properties.demoStepsGuide, list, tuple, schemas.Unset] = schemas.unset,
        tours: typing.Union['PartialRecordTourPageTourStepDefinitionArray', schemas.Unset] = schemas.unset,
        _configuration: typing.Optional[schemas.Configuration] = None,
    ) -> 'Demo':
        return super().__new__(
            cls,
            *args,
            spaceId=spaceId,
            versionId=versionId,
            task=task,
            subTitle=subTitle,
            datatype=datatype,
            modelId=modelId,
            domain=domain,
            imageUrl=imageUrl,
            description=description,
            title=title,
            projectId=projectId,
            demoStepsGuide=demoStepsGuide,
            tours=tours,
            _configuration=_configuration,
        )

from openapi_client.model.partial_record_tour_page_tour_step_definition_array import PartialRecordTourPageTourStepDefinitionArray
