# 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 Line(
    schemas.DictSchema
):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.

    Lines are lines in a single line graph
Each line has an optional label in case there is more than one line. This is also the value that will be presented in the chart legend
The dataseries is a list of points representing the line data
    """


    class MetaOapg:
        required = {
            "dataSeries",
            "label",
        }
        
        class properties:
            
            
            class dataSeries(
                schemas.ListSchema
            ):
            
            
                class MetaOapg:
                    
                    @staticmethod
                    def items() -> typing.Type['Point']:
                        return Point
            
                def __new__(
                    cls,
                    arg: typing.Union[typing.Tuple['Point'], typing.List['Point']],
                    _configuration: typing.Optional[schemas.Configuration] = None,
                ) -> 'dataSeries':
                    return super().__new__(
                        cls,
                        arg,
                        _configuration=_configuration,
                    )
            
                def __getitem__(self, i: int) -> 'Point':
                    return super().__getitem__(i)
            label = schemas.StrSchema
            __annotations__ = {
                "dataSeries": dataSeries,
                "label": label,
            }
    
    dataSeries: MetaOapg.properties.dataSeries
    label: MetaOapg.properties.label
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["dataSeries"]) -> MetaOapg.properties.dataSeries: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["label"]) -> MetaOapg.properties.label: ...
    
    @typing.overload
    def __getitem__(self, name: str) -> schemas.UnsetAnyTypeSchema: ...
    
    def __getitem__(self, name: typing.Union[typing_extensions.Literal["dataSeries", "label", ], str]):
        # dict_instance[name] accessor
        return super().__getitem__(name)
    
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["dataSeries"]) -> MetaOapg.properties.dataSeries: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["label"]) -> MetaOapg.properties.label: ...
    
    @typing.overload
    def get_item_oapg(self, name: str) -> typing.Union[schemas.UnsetAnyTypeSchema, schemas.Unset]: ...
    
    def get_item_oapg(self, name: typing.Union[typing_extensions.Literal["dataSeries", "label", ], str]):
        return super().get_item_oapg(name)
    

    def __new__(
        cls,
        *args: typing.Union[dict, frozendict.frozendict, ],
        dataSeries: typing.Union[MetaOapg.properties.dataSeries, list, tuple, ],
        label: typing.Union[MetaOapg.properties.label, str, ],
        _configuration: typing.Optional[schemas.Configuration] = None,
        **kwargs: typing.Union[schemas.AnyTypeSchema, dict, frozendict.frozendict, str, date, datetime, uuid.UUID, int, float, decimal.Decimal, None, list, tuple, bytes],
    ) -> 'Line':
        return super().__new__(
            cls,
            *args,
            dataSeries=dataSeries,
            label=label,
            _configuration=_configuration,
            **kwargs,
        )

from openapi_client.model.point import Point
