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

    Do not edit the class manually.

    Represents one field in the form.
    """


    class MetaOapg:
        
        class properties:
            id = schemas.StrSchema
            name = schemas.StrSchema
            type = schemas.StrSchema
            value = schemas.StrSchema
            writable = schemas.BoolSchema
            required = schemas.BoolSchema
            
            
            class enumValues(
                schemas.ListSchema
            ):
            
            
                class MetaOapg:
                    
                    @staticmethod
                    def items() -> typing.Type['DropdownValue']:
                        return DropdownValue
            
                def __new__(
                    cls,
                    arg: typing.Union[typing.Tuple['DropdownValue'], typing.List['DropdownValue']],
                    _configuration: typing.Optional[schemas.Configuration] = None,
                ) -> 'enumValues':
                    return super().__new__(
                        cls,
                        arg,
                        _configuration=_configuration,
                    )
            
                def __getitem__(self, i: int) -> 'DropdownValue':
                    return super().__getitem__(i)
            
            
            class checkButtons(
                schemas.ListSchema
            ):
            
            
                class MetaOapg:
                    
                    @staticmethod
                    def items() -> typing.Type['OptionValue']:
                        return OptionValue
            
                def __new__(
                    cls,
                    arg: typing.Union[typing.Tuple['OptionValue'], typing.List['OptionValue']],
                    _configuration: typing.Optional[schemas.Configuration] = None,
                ) -> 'checkButtons':
                    return super().__new__(
                        cls,
                        arg,
                        _configuration=_configuration,
                    )
            
                def __getitem__(self, i: int) -> 'OptionValue':
                    return super().__getitem__(i)
            
            
            class radioButtons(
                schemas.ListSchema
            ):
            
            
                class MetaOapg:
                    
                    @staticmethod
                    def items() -> typing.Type['OptionValue']:
                        return OptionValue
            
                def __new__(
                    cls,
                    arg: typing.Union[typing.Tuple['OptionValue'], typing.List['OptionValue']],
                    _configuration: typing.Optional[schemas.Configuration] = None,
                ) -> 'radioButtons':
                    return super().__new__(
                        cls,
                        arg,
                        _configuration=_configuration,
                    )
            
                def __getitem__(self, i: int) -> 'OptionValue':
                    return super().__getitem__(i)
            
            
            class defaultDropdownValues(
                schemas.ListSchema
            ):
            
            
                class MetaOapg:
                    
                    @staticmethod
                    def items() -> typing.Type['DropdownValue']:
                        return DropdownValue
            
                def __new__(
                    cls,
                    arg: typing.Union[typing.Tuple['DropdownValue'], typing.List['DropdownValue']],
                    _configuration: typing.Optional[schemas.Configuration] = None,
                ) -> 'defaultDropdownValues':
                    return super().__new__(
                        cls,
                        arg,
                        _configuration=_configuration,
                    )
            
                def __getitem__(self, i: int) -> 'DropdownValue':
                    return super().__getitem__(i)
            
            
            class proposedDropdownValues(
                schemas.ListSchema
            ):
            
            
                class MetaOapg:
                    
                    @staticmethod
                    def items() -> typing.Type['DropdownValue']:
                        return DropdownValue
            
                def __new__(
                    cls,
                    arg: typing.Union[typing.Tuple['DropdownValue'], typing.List['DropdownValue']],
                    _configuration: typing.Optional[schemas.Configuration] = None,
                ) -> 'proposedDropdownValues':
                    return super().__new__(
                        cls,
                        arg,
                        _configuration=_configuration,
                    )
            
                def __getitem__(self, i: int) -> 'DropdownValue':
                    return super().__getitem__(i)
            dateTimeType = schemas.StrSchema
            multiValue = schemas.BoolSchema
            proposedFixed = schemas.BoolSchema
            defaultFromResource = schemas.BoolSchema
            
            
            class multiDefaultDropdownValues(
                schemas.DictSchema
            ):
            
            
                class MetaOapg:
                    
                    
                    class additional_properties(
                        schemas.ListSchema
                    ):
                    
                    
                        class MetaOapg:
                            
                            @staticmethod
                            def items() -> typing.Type['DropdownValue']:
                                return DropdownValue
                    
                        def __new__(
                            cls,
                            arg: typing.Union[typing.Tuple['DropdownValue'], typing.List['DropdownValue']],
                            _configuration: typing.Optional[schemas.Configuration] = None,
                        ) -> 'additional_properties':
                            return super().__new__(
                                cls,
                                arg,
                                _configuration=_configuration,
                            )
                    
                        def __getitem__(self, i: int) -> 'DropdownValue':
                            return super().__getitem__(i)
                
                def __getitem__(self, name: typing.Union[str, ]) -> MetaOapg.additional_properties:
                    # dict_instance[name] accessor
                    return super().__getitem__(name)
                
                def get_item_oapg(self, name: typing.Union[str, ]) -> MetaOapg.additional_properties:
                    return super().get_item_oapg(name)
            
                def __new__(
                    cls,
                    *args: typing.Union[dict, frozendict.frozendict, ],
                    _configuration: typing.Optional[schemas.Configuration] = None,
                    **kwargs: typing.Union[MetaOapg.additional_properties, list, tuple, ],
                ) -> 'multiDefaultDropdownValues':
                    return super().__new__(
                        cls,
                        *args,
                        _configuration=_configuration,
                        **kwargs,
                    )
            
            
            class multiProposedDropdownValues(
                schemas.DictSchema
            ):
            
            
                class MetaOapg:
                    
                    
                    class additional_properties(
                        schemas.ListSchema
                    ):
                    
                    
                        class MetaOapg:
                            
                            @staticmethod
                            def items() -> typing.Type['DropdownValue']:
                                return DropdownValue
                    
                        def __new__(
                            cls,
                            arg: typing.Union[typing.Tuple['DropdownValue'], typing.List['DropdownValue']],
                            _configuration: typing.Optional[schemas.Configuration] = None,
                        ) -> 'additional_properties':
                            return super().__new__(
                                cls,
                                arg,
                                _configuration=_configuration,
                            )
                    
                        def __getitem__(self, i: int) -> 'DropdownValue':
                            return super().__getitem__(i)
                
                def __getitem__(self, name: typing.Union[str, ]) -> MetaOapg.additional_properties:
                    # dict_instance[name] accessor
                    return super().__getitem__(name)
                
                def get_item_oapg(self, name: typing.Union[str, ]) -> MetaOapg.additional_properties:
                    return super().get_item_oapg(name)
            
                def __new__(
                    cls,
                    *args: typing.Union[dict, frozendict.frozendict, ],
                    _configuration: typing.Optional[schemas.Configuration] = None,
                    **kwargs: typing.Union[MetaOapg.additional_properties, list, tuple, ],
                ) -> 'multiProposedDropdownValues':
                    return super().__new__(
                        cls,
                        *args,
                        _configuration=_configuration,
                        **kwargs,
                    )
        
            @staticmethod
            def assetType() -> typing.Type['ResourceReference']:
                return ResourceReference
            
            
            class communityIds(
                schemas.ListSchema
            ):
            
            
                class MetaOapg:
                    items = schemas.UUIDSchema
            
                def __new__(
                    cls,
                    arg: typing.Union[typing.Tuple[typing.Union[MetaOapg.items, str, uuid.UUID, ]], typing.List[typing.Union[MetaOapg.items, str, uuid.UUID, ]]],
                    _configuration: typing.Optional[schemas.Configuration] = None,
                ) -> 'communityIds':
                    return super().__new__(
                        cls,
                        arg,
                        _configuration=_configuration,
                    )
            
                def __getitem__(self, i: int) -> MetaOapg.items:
                    return super().__getitem__(i)
            
            
            class domainIds(
                schemas.ListSchema
            ):
            
            
                class MetaOapg:
                    items = schemas.UUIDSchema
            
                def __new__(
                    cls,
                    arg: typing.Union[typing.Tuple[typing.Union[MetaOapg.items, str, uuid.UUID, ]], typing.List[typing.Union[MetaOapg.items, str, uuid.UUID, ]]],
                    _configuration: typing.Optional[schemas.Configuration] = None,
                ) -> 'domainIds':
                    return super().__new__(
                        cls,
                        arg,
                        _configuration=_configuration,
                    )
            
                def __getitem__(self, i: int) -> MetaOapg.items:
                    return super().__getitem__(i)
            
            
            class statusIds(
                schemas.ListSchema
            ):
            
            
                class MetaOapg:
                    items = schemas.UUIDSchema
            
                def __new__(
                    cls,
                    arg: typing.Union[typing.Tuple[typing.Union[MetaOapg.items, str, uuid.UUID, ]], typing.List[typing.Union[MetaOapg.items, str, uuid.UUID, ]]],
                    _configuration: typing.Optional[schemas.Configuration] = None,
                ) -> 'statusIds':
                    return super().__new__(
                        cls,
                        arg,
                        _configuration=_configuration,
                    )
            
                def __getitem__(self, i: int) -> MetaOapg.items:
                    return super().__getitem__(i)
            __annotations__ = {
                "id": id,
                "name": name,
                "type": type,
                "value": value,
                "writable": writable,
                "required": required,
                "enumValues": enumValues,
                "checkButtons": checkButtons,
                "radioButtons": radioButtons,
                "defaultDropdownValues": defaultDropdownValues,
                "proposedDropdownValues": proposedDropdownValues,
                "dateTimeType": dateTimeType,
                "multiValue": multiValue,
                "proposedFixed": proposedFixed,
                "defaultFromResource": defaultFromResource,
                "multiDefaultDropdownValues": multiDefaultDropdownValues,
                "multiProposedDropdownValues": multiProposedDropdownValues,
                "assetType": assetType,
                "communityIds": communityIds,
                "domainIds": domainIds,
                "statusIds": statusIds,
            }
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["id"]) -> MetaOapg.properties.id: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["name"]) -> MetaOapg.properties.name: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["type"]) -> MetaOapg.properties.type: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["value"]) -> MetaOapg.properties.value: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["writable"]) -> MetaOapg.properties.writable: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["required"]) -> MetaOapg.properties.required: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["enumValues"]) -> MetaOapg.properties.enumValues: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["checkButtons"]) -> MetaOapg.properties.checkButtons: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["radioButtons"]) -> MetaOapg.properties.radioButtons: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["defaultDropdownValues"]) -> MetaOapg.properties.defaultDropdownValues: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["proposedDropdownValues"]) -> MetaOapg.properties.proposedDropdownValues: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["dateTimeType"]) -> MetaOapg.properties.dateTimeType: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["multiValue"]) -> MetaOapg.properties.multiValue: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["proposedFixed"]) -> MetaOapg.properties.proposedFixed: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["defaultFromResource"]) -> MetaOapg.properties.defaultFromResource: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["multiDefaultDropdownValues"]) -> MetaOapg.properties.multiDefaultDropdownValues: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["multiProposedDropdownValues"]) -> MetaOapg.properties.multiProposedDropdownValues: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["assetType"]) -> 'ResourceReference': ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["communityIds"]) -> MetaOapg.properties.communityIds: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["domainIds"]) -> MetaOapg.properties.domainIds: ...
    
    @typing.overload
    def __getitem__(self, name: typing_extensions.Literal["statusIds"]) -> MetaOapg.properties.statusIds: ...
    
    @typing.overload
    def __getitem__(self, name: str) -> schemas.UnsetAnyTypeSchema: ...
    
    def __getitem__(self, name: typing.Union[typing_extensions.Literal["id", "name", "type", "value", "writable", "required", "enumValues", "checkButtons", "radioButtons", "defaultDropdownValues", "proposedDropdownValues", "dateTimeType", "multiValue", "proposedFixed", "defaultFromResource", "multiDefaultDropdownValues", "multiProposedDropdownValues", "assetType", "communityIds", "domainIds", "statusIds", ], str]):
        # dict_instance[name] accessor
        return super().__getitem__(name)
    
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["id"]) -> typing.Union[MetaOapg.properties.id, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["name"]) -> typing.Union[MetaOapg.properties.name, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["type"]) -> typing.Union[MetaOapg.properties.type, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["value"]) -> typing.Union[MetaOapg.properties.value, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["writable"]) -> typing.Union[MetaOapg.properties.writable, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["required"]) -> typing.Union[MetaOapg.properties.required, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["enumValues"]) -> typing.Union[MetaOapg.properties.enumValues, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["checkButtons"]) -> typing.Union[MetaOapg.properties.checkButtons, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["radioButtons"]) -> typing.Union[MetaOapg.properties.radioButtons, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["defaultDropdownValues"]) -> typing.Union[MetaOapg.properties.defaultDropdownValues, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["proposedDropdownValues"]) -> typing.Union[MetaOapg.properties.proposedDropdownValues, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["dateTimeType"]) -> typing.Union[MetaOapg.properties.dateTimeType, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["multiValue"]) -> typing.Union[MetaOapg.properties.multiValue, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["proposedFixed"]) -> typing.Union[MetaOapg.properties.proposedFixed, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["defaultFromResource"]) -> typing.Union[MetaOapg.properties.defaultFromResource, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["multiDefaultDropdownValues"]) -> typing.Union[MetaOapg.properties.multiDefaultDropdownValues, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["multiProposedDropdownValues"]) -> typing.Union[MetaOapg.properties.multiProposedDropdownValues, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["assetType"]) -> typing.Union['ResourceReference', schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["communityIds"]) -> typing.Union[MetaOapg.properties.communityIds, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["domainIds"]) -> typing.Union[MetaOapg.properties.domainIds, schemas.Unset]: ...
    
    @typing.overload
    def get_item_oapg(self, name: typing_extensions.Literal["statusIds"]) -> typing.Union[MetaOapg.properties.statusIds, 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["id", "name", "type", "value", "writable", "required", "enumValues", "checkButtons", "radioButtons", "defaultDropdownValues", "proposedDropdownValues", "dateTimeType", "multiValue", "proposedFixed", "defaultFromResource", "multiDefaultDropdownValues", "multiProposedDropdownValues", "assetType", "communityIds", "domainIds", "statusIds", ], str]):
        return super().get_item_oapg(name)
    

    def __new__(
        cls,
        *args: typing.Union[dict, frozendict.frozendict, ],
        id: typing.Union[MetaOapg.properties.id, str, schemas.Unset] = schemas.unset,
        name: typing.Union[MetaOapg.properties.name, str, schemas.Unset] = schemas.unset,
        type: typing.Union[MetaOapg.properties.type, str, schemas.Unset] = schemas.unset,
        value: typing.Union[MetaOapg.properties.value, str, schemas.Unset] = schemas.unset,
        writable: typing.Union[MetaOapg.properties.writable, bool, schemas.Unset] = schemas.unset,
        required: typing.Union[MetaOapg.properties.required, bool, schemas.Unset] = schemas.unset,
        enumValues: typing.Union[MetaOapg.properties.enumValues, list, tuple, schemas.Unset] = schemas.unset,
        checkButtons: typing.Union[MetaOapg.properties.checkButtons, list, tuple, schemas.Unset] = schemas.unset,
        radioButtons: typing.Union[MetaOapg.properties.radioButtons, list, tuple, schemas.Unset] = schemas.unset,
        defaultDropdownValues: typing.Union[MetaOapg.properties.defaultDropdownValues, list, tuple, schemas.Unset] = schemas.unset,
        proposedDropdownValues: typing.Union[MetaOapg.properties.proposedDropdownValues, list, tuple, schemas.Unset] = schemas.unset,
        dateTimeType: typing.Union[MetaOapg.properties.dateTimeType, str, schemas.Unset] = schemas.unset,
        multiValue: typing.Union[MetaOapg.properties.multiValue, bool, schemas.Unset] = schemas.unset,
        proposedFixed: typing.Union[MetaOapg.properties.proposedFixed, bool, schemas.Unset] = schemas.unset,
        defaultFromResource: typing.Union[MetaOapg.properties.defaultFromResource, bool, schemas.Unset] = schemas.unset,
        multiDefaultDropdownValues: typing.Union[MetaOapg.properties.multiDefaultDropdownValues, dict, frozendict.frozendict, schemas.Unset] = schemas.unset,
        multiProposedDropdownValues: typing.Union[MetaOapg.properties.multiProposedDropdownValues, dict, frozendict.frozendict, schemas.Unset] = schemas.unset,
        assetType: typing.Union['ResourceReference', schemas.Unset] = schemas.unset,
        communityIds: typing.Union[MetaOapg.properties.communityIds, list, tuple, schemas.Unset] = schemas.unset,
        domainIds: typing.Union[MetaOapg.properties.domainIds, list, tuple, schemas.Unset] = schemas.unset,
        statusIds: typing.Union[MetaOapg.properties.statusIds, list, tuple, 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],
    ) -> 'FormProperty':
        return super().__new__(
            cls,
            *args,
            id=id,
            name=name,
            type=type,
            value=value,
            writable=writable,
            required=required,
            enumValues=enumValues,
            checkButtons=checkButtons,
            radioButtons=radioButtons,
            defaultDropdownValues=defaultDropdownValues,
            proposedDropdownValues=proposedDropdownValues,
            dateTimeType=dateTimeType,
            multiValue=multiValue,
            proposedFixed=proposedFixed,
            defaultFromResource=defaultFromResource,
            multiDefaultDropdownValues=multiDefaultDropdownValues,
            multiProposedDropdownValues=multiProposedDropdownValues,
            assetType=assetType,
            communityIds=communityIds,
            domainIds=domainIds,
            statusIds=statusIds,
            _configuration=_configuration,
            **kwargs,
        )

from collibra_core.model.dropdown_value import DropdownValue
from collibra_core.model.option_value import OptionValue
from collibra_core.model.resource_reference import ResourceReference
