# This file was auto-generated by Fern from our API Definition.

import datetime as dt
import typing

from ....core.datetime_utils import serialize_datetime
from ....core.pydantic_utilities import deep_union_pydantic_dicts, pydantic_v1


class RedisUpdateResponse(pydantic_v1.BaseModel):
    regex_filter: typing.Optional[str] = pydantic_v1.Field(default=None)
    """
    Cloud storage regex for filtering objects. You must specify it otherwise no objects will be imported.
    """

    use_blob_urls: typing.Optional[bool] = pydantic_v1.Field(default=None)
    """
    Interpret objects as BLOBs and generate URLs. For example, if your bucket contains images, you can use this option to generate URLs for these images. If set to False, it will read the content of the file and load it into Label Studio.
    """

    title: typing.Optional[str] = pydantic_v1.Field(default=None)
    """
    Storage title
    """

    description: typing.Optional[str] = pydantic_v1.Field(default=None)
    """
    Storage description
    """

    project: typing.Optional[int] = pydantic_v1.Field(default=None)
    """
    Project ID
    """

    path: typing.Optional[str] = pydantic_v1.Field(default=None)
    """
    Storage prefix (optional)
    """

    host: typing.Optional[str] = pydantic_v1.Field(default=None)
    """
    Server Host IP (optional)
    """

    port: typing.Optional[str] = pydantic_v1.Field(default=None)
    """
    Server Port (optional)
    """

    password: typing.Optional[str] = pydantic_v1.Field(default=None)
    """
    Server Password (optional)
    """

    def json(self, **kwargs: typing.Any) -> str:
        kwargs_with_defaults: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
        return super().json(**kwargs_with_defaults)

    def dict(self, **kwargs: typing.Any) -> typing.Dict[str, typing.Any]:
        kwargs_with_defaults_exclude_unset: typing.Any = {"by_alias": True, "exclude_unset": True, **kwargs}
        kwargs_with_defaults_exclude_none: typing.Any = {"by_alias": True, "exclude_none": True, **kwargs}

        return deep_union_pydantic_dicts(
            super().dict(**kwargs_with_defaults_exclude_unset), super().dict(**kwargs_with_defaults_exclude_none)
        )

    class Config:
        frozen = True
        smart_union = True
        extra = pydantic_v1.Extra.allow
        json_encoders = {dt.datetime: serialize_datetime}
