# coding: utf-8

"""
    Collibra Data Governance Center Core API

    <p>The Core REST API allows you to create your own integrations with Collibra Data Governance Center.</p><p><i>Create custom applications to help users get access to the right data.</i></p>  # noqa: E501

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


class ExportComplexRelationsToCSVRequest(
    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 = {
            "complexRelationTypeId",
        }
        
        class properties:
            complexRelationTypeId = schemas.UUIDSchema
            domainId = schemas.UUIDSchema
            storeAsAttachment = schemas.BoolSchema
            fileName = schemas.StrSchema
            includeHeaderRow = schemas.BoolSchema
            supportRoundtrip = schemas.BoolSchema
            removeFormatting = schemas.BoolSchema
            separator = schemas.StrSchema
            quote = schemas.StrSchema
            escape = schemas.StrSchema
            __annotations__ = {
                "complexRelationTypeId": complexRelationTypeId,
                "domainId": domainId,
                "storeAsAttachment": storeAsAttachment,
                "fileName": fileName,
                "includeHeaderRow": includeHeaderRow,
                "supportRoundtrip": supportRoundtrip,
                "removeFormatting": removeFormatting,
                "separator": separator,
                "quote": quote,
                "escape": escape,
            }
    
    complexRelationTypeId: MetaOapg.properties.complexRelationTypeId
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["complexRelationTypeId"]) -> MetaOapg.properties.complexRelationTypeId: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["domainId"]) -> MetaOapg.properties.domainId: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["storeAsAttachment"]) -> MetaOapg.properties.storeAsAttachment: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["fileName"]) -> MetaOapg.properties.fileName: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["includeHeaderRow"]) -> MetaOapg.properties.includeHeaderRow: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["supportRoundtrip"]) -> MetaOapg.properties.supportRoundtrip: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["removeFormatting"]) -> MetaOapg.properties.removeFormatting: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["separator"]) -> MetaOapg.properties.separator: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["quote"]) -> MetaOapg.properties.quote: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["escape"]) -> MetaOapg.properties.escape: ...
    
    @typing.overload
    def __getitem__(self, name: str) -> schemas.UnsetAnyTypeSchema: ...
    
    def __getitem__(self, name: typing.Union[typing_extensions.Literal["complexRelationTypeId", "domainId", "storeAsAttachment", "fileName", "includeHeaderRow", "supportRoundtrip", "removeFormatting", "separator", "quote", "escape", ], str]):
        # dict_instance[name] accessor
        return super().__getitem__(name)
    
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["complexRelationTypeId"]) -> MetaOapg.properties.complexRelationTypeId: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["domainId"]) -> typing.Union[MetaOapg.properties.domainId, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["storeAsAttachment"]) -> typing.Union[MetaOapg.properties.storeAsAttachment, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["fileName"]) -> typing.Union[MetaOapg.properties.fileName, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["includeHeaderRow"]) -> typing.Union[MetaOapg.properties.includeHeaderRow, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["supportRoundtrip"]) -> typing.Union[MetaOapg.properties.supportRoundtrip, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["removeFormatting"]) -> typing.Union[MetaOapg.properties.removeFormatting, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["separator"]) -> typing.Union[MetaOapg.properties.separator, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["quote"]) -> typing.Union[MetaOapg.properties.quote, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["escape"]) -> typing.Union[MetaOapg.properties.escape, schemas.Unset]: ...
    
    @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["complexRelationTypeId", "domainId", "storeAsAttachment", "fileName", "includeHeaderRow", "supportRoundtrip", "removeFormatting", "separator", "quote", "escape", ], str]):
        return super().get_item_oapg(name)
    

    def __new__(
        cls,
        *args: typing.Union[dict, frozendict.frozendict, ],
        complexRelationTypeId: typing.Union[MetaOapg.properties.complexRelationTypeId, str, uuid.UUID, ],
        domainId: typing.Union[MetaOapg.properties.domainId, str, uuid.UUID, schemas.Unset] = schemas.unset,
        storeAsAttachment: typing.Union[MetaOapg.properties.storeAsAttachment, bool, schemas.Unset] = schemas.unset,
        fileName: typing.Union[MetaOapg.properties.fileName, str, schemas.Unset] = schemas.unset,
        includeHeaderRow: typing.Union[MetaOapg.properties.includeHeaderRow, bool, schemas.Unset] = schemas.unset,
        supportRoundtrip: typing.Union[MetaOapg.properties.supportRoundtrip, bool, schemas.Unset] = schemas.unset,
        removeFormatting: typing.Union[MetaOapg.properties.removeFormatting, bool, schemas.Unset] = schemas.unset,
        separator: typing.Union[MetaOapg.properties.separator, str, schemas.Unset] = schemas.unset,
        quote: typing.Union[MetaOapg.properties.quote, str, schemas.Unset] = schemas.unset,
        escape: typing.Union[MetaOapg.properties.escape, str, schemas.Unset] = schemas.unset,
        _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],
    ) -> 'ExportComplexRelationsToCSVRequest':
        return super().__new__(
            cls,
            *args,
            complexRelationTypeId=complexRelationTypeId,
            domainId=domainId,
            storeAsAttachment=storeAsAttachment,
            fileName=fileName,
            includeHeaderRow=includeHeaderRow,
            supportRoundtrip=supportRoundtrip,
            removeFormatting=removeFormatting,
            separator=separator,
            quote=quote,
            escape=escape,
            _configuration=_configuration,
            **kwargs,
        )
