# Path: pyuploadcare/transformations/base.py
# class BaseTransformation:
#     def __init__(
#         self, transformation: Optional[Union[str, "BaseTransformation"]] = None
#     ):
#         if isinstance(transformation, BaseTransformation):
#             transformation = transformation.effects
# 
#         self._effects = []
#         if transformation:
#             transformation = transformation.rstrip("/")  # type: ignore
#             self._effects.append(transformation)
# 
#     def set(
#         self, transformation_name: str, parameters: List[str]
#     ) -> "BaseTransformation":
#         effect = transformation_name
#         if parameters:
#             effect += "/" + "/".join(parameters)
#         self._effects.append(effect)
#         return self
# 
#     def _prefix(self, file_id: str) -> str:
#         return f"{file_id}/"
# 
#     def __str__(self):
#         return self.effects
# 
#     @property
#     def effects(self):
#         effects_ = "/-/".join(self._effects)
#         if effects_:
#             effects_ += "/"
#         return effects_
# 
#     def path(self, file_id: str) -> str:
#         path_ = self._prefix(file_id)
# 
#         effects = self.effects
#         if effects:
#             path_ += "-/" + effects
# 
#         return path_
# 
# class StrEnum(str, Enum):
#     def __str__(self):
#         return self.value


from typing import List, Optional, Union
from pyuploadcare.transformations.base import BaseTransformation, StrEnum
        return self

    def setfill(self, color: str) -> "ImageTransformation":
        self.set("setfill", [color])
        return self

    def format(self, image_format: ImageFormat) -> "ImageTransformation":
        self.set("format", [image_format])
        return self

    def quality(self, image_quality: ImageQuality) -> "ImageTransformation":
        self.set("quality", [image_quality])
        return self

    def progressive(self, is_progressive=True) -> "ImageTransformation":
        self.set("progressive", ["yes" if is_progressive else "no"])
        return self

    def gif2video(self) -> "ImageTransformation":
        self.set("gif2video", [])
        return self

    def gif2video_format(
        self, format: Gif2VideoFormat
    ) -> "ImageTransformation":
        self.set("format", [format])
        return self

    def gif2video_quality(
        self, quality: Gif2VideoQuality

# Path: pyuploadcare/transformations/base.py
# class BaseTransformation:
#     def __init__(
#         self, transformation: Optional[Union[str, "BaseTransformation"]] = None
#     ):
#         if isinstance(transformation, BaseTransformation):
#             transformation = transformation.effects
# 
#         self._effects = []
#         if transformation:
#             transformation = transformation.rstrip("/")  # type: ignore
#             self._effects.append(transformation)
# 
#     def set(
#         self, transformation_name: str, parameters: List[str]
#     ) -> "BaseTransformation":
#         effect = transformation_name
#         if parameters:
#             effect += "/" + "/".join(parameters)
#         self._effects.append(effect)
#         return self
# 
#     def _prefix(self, file_id: str) -> str:
#         return f"{file_id}/"
# 
#     def __str__(self):
#         return self.effects
# 
#     @property
#     def effects(self):
#         effects_ = "/-/".join(self._effects)
#         if effects_:
#             effects_ += "/"
#         return effects_
# 
#     def path(self, file_id: str) -> str:
#         path_ = self._prefix(file_id)
# 
#         effects = self.effects
#         if effects:
#             path_ += "-/" + effects
# 
#         return path_
# 
# class StrEnum(str, Enum):
#     def __str__(self):
#         return self.value


# Path: pyuploadcare/transformations/image.py
from typing import List, Optional, Union
from pyuploadcare.transformations.base import BaseTransformation, StrEnum

        return self

    def setfill(self, color: str) -> "ImageTransformation":
        self.set("setfill", [color])
        return self

    def format(self, image_format: ImageFormat) -> "ImageTransformation":
        self.set("format", [image_format])
        return self

    def quality(self, image_quality: ImageQuality) -> "ImageTransformation":
        self.set("quality", [image_quality])
        return self

    def progressive(self, is_progressive=True) -> "ImageTransformation":
        self.set("progressive", ["yes" if is_progressive else "no"])
        return self

    def gif2video(self) -> "ImageTransformation":
        self.set("gif2video", [])
        return self

    def gif2video_format(
        self, format: Gif2VideoFormat
    ) -> "ImageTransformation":
        self.set("format", [format])
        return self

    def gif2video_quality(
        self, quality: Gif2VideoQuality

    ) -> "ImageTransformation":