
    h                         d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZmZ d dlmZ d dlmZmZmZmZ d	d
lmZ ddlmZmZ  G d dee      Zy)    N)BytesIO)AnyListMappingOptionalTupleUnion)ClientResponse)HeadersResponse)BaseLLMExceptionLiteLLMLoggingObj)"OpenAIImageVariationOptionalParams)	FileTypesHttpHandlerRequestFieldsImageObjectImageResponse   )BaseImageVariationConfig   )TopazExceptionTopazModelInfoc                      e Zd Zdedee   fdZ	 d dee   dee   dededed	ee	   defd
Z
dededede	def
dZdedeeee   eeeef   f   fdZdee   dedededef
dZdededefdZ	 d dee   dededededededededee   defdZ	 d dee   dededededededededee   defdZdededeeef   defdZ y)!TopazImageVariationConfigmodelreturnc                 
    ddgS )Nresponse_formatsize )selfr   s     n/var/www/Befach/backend/env/lib/python3.12/site-packages/litellm/llms/topaz/image_variations/transformation.pyget_supported_openai_paramsz5TopazImageVariationConfig.get_supported_openai_params   s     "6**    Napi_baseapi_keyoptional_paramslitellm_paramsstreamc                     |xs d}| dS )Nzhttps://api.topazlabs.comz/image/v1/enhancer    )r!   r%   r&   r   r'   r(   r)   s          r"   get_complete_urlz*TopazImageVariationConfig.get_complete_url   s     ::,--r$   non_default_paramsdrop_paramsc                     |j                         D ]L  \  }}|dk(  r||d<   |dk(  s|j                  d      }t        |      dk(  sJ d       |d   |d<   |d	   |d
<   N |S )Nr   output_formatr   xr   z*size must be in the format of widthxheightr   output_width   output_height)itemssplitlen)r!   r,   r'   r   r-   kvsplit_vs           r"   map_openai_paramsz+TopazImageVariationConfig.map_openai_params+   s~     ',,.DAq%%340f''#,7|q(V*VV(29!*/3:1:0 / r$   	file_datac                 J   d}d}d}i }t        |t        t        f      r|}n}t        |t              rmt	        |      dk(  r|d   xs |}|d   }nPt	        |      dk(  r|d   xs |}|d   }|d   xs |}n*t	        |      dk(  r|d   xs |}|d   }|d   xs |}|d   }||||fS )	z
        Convert various file input formats to a consistent tuple format for HTTPX
        Returns: (filename, file_content, content_type, headers)
        z	image.pngNz	image/pngr   r   r2   r      )
isinstancebytesr   tupler6   )r!   r;   filenamecontentcontent_typeheaderss         r"   prepare_file_tuplez,TopazImageVariationConfig.prepare_file_tuple<   s     '+"%'i%!12G	5)9~"$Q<38#A,Y1$$Q<38#A,(|;|Y1$$Q<38#A,(|;|#A,'<99r$   imagerD   c                 B    t        d| j                  |      i|      }|S )NrF   )filesdata)r   rE   )r!   r   rF   r'   rD   request_paramss         r"   !transform_request_image_variationz;TopazImageVariationConfig.transform_request_image_variation`   s,     2D33E:; 

 r$   image_contentresponse_msc                     t        j                  |      j                  d      }t        t	        t        j
                               t        |d d       g|      S )Nzutf-8)b64_jsonurlrevised_prompt)createdrI   rM   )base64	b64encodedecoder   inttimer   )r!   rL   rM   base64_images       r"   *_common_transform_response_image_variationzDTopazImageVariationConfig._common_transform_response_image_variationn   sU     ''6==gF		$)#' $

 
	
r$   raw_responsemodel_responselogging_objrequest_dataencodingc                    K   |j                          d {   }|j                         }| j                  ||      S 7 &wN)readget_response_msrY   r!   r   rZ   r[   r\   r]   rF   r'   r(   r^   r&   rL   rM   s                r"   (async_transform_response_image_variationzBTopazImageVariationConfig.async_transform_response_image_variation   sD      +//11!113>>;
 	
	 2s   ?='?c                 x    |j                   }|j                  j                         dz  }| j                  ||      S )Ni  )rB   elapsedtotal_secondsrY   rc   s                r"   "transform_response_image_variationz<TopazImageVariationConfig.transform_response_image_variation   sG     %,,   ..047 	 >>;
 	
r$   error_messagestatus_codec                     t        |||      S )N)rj   messagerD   )r   )r!   ri   rj   rD   s       r"   get_error_classz)TopazImageVariationConfig.get_error_class   s     #!
 	
r$   r`   )!__name__
__module____qualname__strr   r   r#   r   dictboolr+   r:   r   r   r   rE   r   rK   r?   floatr   rY   r
   r   r   rd   r   rh   rV   r	   r   r   rm   r    r$   r"   r   r      se   ++	0	1+ "&
.3-
. #
. 	
.
 
. 
. 
. 

.   	
  
"":": 
sHY'gc3h.??	@":H}  	
  
"

 
 
	
> "&
}
 %
 &	

 '
 
 
 
 
 
 #
 

@ "&
}
 
 &	

 '
 
 
 
 
 
 #
 

.
 
/2
=B4==Q
	
r$   r   ) rS   rW   ior   typingr   r   r   r   r   r	   aiohttpr
   httpxr   r   )litellm.llms.base_llm.chat.transformationr   r   litellm.types.llms.openair   litellm.types.utilsr   r   r   r   (base_llm.image_variations.transformationr   common_utilsr   r   r   r    r$   r"   <module>r~      sI       = = " # I  Q 9\
0H \
r$   