# coding: utf-8

"""
    InductivaWebAPI

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)  # noqa: E501

    The version of the OpenAPI document: 0.1.0
    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 inductiva.client import schemas  # noqa: F401


class UserTasksOverview(
    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 = {
            "end_date",
            "avg_task_duration",
            "task_success_rate",
            "total_cost",
            "total_compute_time",
            "total_tasks",
            "total_wait_time",
            "preempted_tasks",
            "start_date",
            "username",
        }
        
        class properties:
            start_date = schemas.DateSchema
            end_date = schemas.DateSchema
            username = schemas.StrSchema
            total_tasks = schemas.IntSchema
            total_cost = schemas.NumberSchema
            total_wait_time = schemas.NumberSchema
            total_compute_time = schemas.NumberSchema
            avg_task_duration = schemas.NumberSchema
            task_success_rate = schemas.NumberSchema
            preempted_tasks = schemas.IntSchema
            __annotations__ = {
                "start_date": start_date,
                "end_date": end_date,
                "username": username,
                "total_tasks": total_tasks,
                "total_cost": total_cost,
                "total_wait_time": total_wait_time,
                "total_compute_time": total_compute_time,
                "avg_task_duration": avg_task_duration,
                "task_success_rate": task_success_rate,
                "preempted_tasks": preempted_tasks,
            }
    
    end_date: MetaOapg.properties.end_date
    avg_task_duration: MetaOapg.properties.avg_task_duration
    task_success_rate: MetaOapg.properties.task_success_rate
    total_cost: MetaOapg.properties.total_cost
    total_compute_time: MetaOapg.properties.total_compute_time
    total_tasks: MetaOapg.properties.total_tasks
    total_wait_time: MetaOapg.properties.total_wait_time
    preempted_tasks: MetaOapg.properties.preempted_tasks
    start_date: MetaOapg.properties.start_date
    username: MetaOapg.properties.username
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["start_date"]) -> MetaOapg.properties.start_date: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["end_date"]) -> MetaOapg.properties.end_date: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["username"]) -> MetaOapg.properties.username: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["total_tasks"]) -> MetaOapg.properties.total_tasks: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["total_cost"]) -> MetaOapg.properties.total_cost: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["total_wait_time"]) -> MetaOapg.properties.total_wait_time: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["total_compute_time"]) -> MetaOapg.properties.total_compute_time: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["avg_task_duration"]) -> MetaOapg.properties.avg_task_duration: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["task_success_rate"]) -> MetaOapg.properties.task_success_rate: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["preempted_tasks"]) -> MetaOapg.properties.preempted_tasks: ...
    
    @typing.overload
    def __getitem__(self, name: str) -> schemas.UnsetAnyTypeSchema: ...
    
    def __getitem__(self, name: typing.Union[typing_extensions.Literal["start_date", "end_date", "username", "total_tasks", "total_cost", "total_wait_time", "total_compute_time", "avg_task_duration", "task_success_rate", "preempted_tasks", ], str]):
        # dict_instance[name] accessor
        return super().__getitem__(name)
    
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["start_date"]) -> MetaOapg.properties.start_date: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["end_date"]) -> MetaOapg.properties.end_date: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["username"]) -> MetaOapg.properties.username: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["total_tasks"]) -> MetaOapg.properties.total_tasks: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["total_cost"]) -> MetaOapg.properties.total_cost: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["total_wait_time"]) -> MetaOapg.properties.total_wait_time: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["total_compute_time"]) -> MetaOapg.properties.total_compute_time: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["avg_task_duration"]) -> MetaOapg.properties.avg_task_duration: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["task_success_rate"]) -> MetaOapg.properties.task_success_rate: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["preempted_tasks"]) -> MetaOapg.properties.preempted_tasks: ...
    
    @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["start_date", "end_date", "username", "total_tasks", "total_cost", "total_wait_time", "total_compute_time", "avg_task_duration", "task_success_rate", "preempted_tasks", ], str]):
        return super().get_item_oapg(name)
    

    def __new__(
        cls,
        *_args: typing.Union[dict, frozendict.frozendict, ],
        end_date: typing.Union[MetaOapg.properties.end_date, str, date, ],
        avg_task_duration: typing.Union[MetaOapg.properties.avg_task_duration, decimal.Decimal, int, float, ],
        task_success_rate: typing.Union[MetaOapg.properties.task_success_rate, decimal.Decimal, int, float, ],
        total_cost: typing.Union[MetaOapg.properties.total_cost, decimal.Decimal, int, float, ],
        total_compute_time: typing.Union[MetaOapg.properties.total_compute_time, decimal.Decimal, int, float, ],
        total_tasks: typing.Union[MetaOapg.properties.total_tasks, decimal.Decimal, int, ],
        total_wait_time: typing.Union[MetaOapg.properties.total_wait_time, decimal.Decimal, int, float, ],
        preempted_tasks: typing.Union[MetaOapg.properties.preempted_tasks, decimal.Decimal, int, ],
        start_date: typing.Union[MetaOapg.properties.start_date, str, date, ],
        username: typing.Union[MetaOapg.properties.username, 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],
    ) -> 'UserTasksOverview':
        return super().__new__(
            cls,
            *_args,
            end_date=end_date,
            avg_task_duration=avg_task_duration,
            task_success_rate=task_success_rate,
            total_cost=total_cost,
            total_compute_time=total_compute_time,
            total_tasks=total_tasks,
            total_wait_time=total_wait_time,
            preempted_tasks=preempted_tasks,
            start_date=start_date,
            username=username,
            _configuration=_configuration,
            **kwargs,
        )
