Ë
    uPêj¢  ã                   óÌ   — d dl Z d dlZd dlmZ d dlmZ d dl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 erd dlZ G d„ dee«      Zy)é    N)ÚMapping)ÚBytesIO)ÚTYPE_CHECKINGÚFinal)Ú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dz  dedz  dededed	edz  defd
„Z	dededededef
d„Z
dedeeedz  eeeef   f   fd„Zdedz  dedededef
d„Zdededefd„Z	 d!dedz  dedededededededddedz  defd„Z	 d!dedz  dedededededededddedz  defd„Zdededeez  defd „Zy)"ÚTopazImageVariationConfigÚmodelÚreturnc                 ó
   — ddgS )NÚresponse_formatÚsize© )Úselfr   s     úw/home/oem/CyberBrain26-unified/.venv/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ƒ   € ð '×,Ñ,Ó.ò 	>‰DˆAˆqØÐ%Ò%Ø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   r/   r   é   )Ú
isinstanceÚbytesr   Útupler3   )r   r8   ÚfilenameÚcontentÚcontent_typeÚheaderss         r   Úprepare_file_tuplez,TopazImageVariationConfig.prepare_file_tuple>   sÓ   € ð ˆØ$(ˆØ"ˆØ%'ˆä�i¤%¬Ð!1Ô2à‰GÜ˜	¤5Ô)Ü�9‹~ Ò"à$ Q™<Ò3¨8�Ø# A™,‘Ü�Y“ 1Ò$à$ Q™<Ò3¨8�Ø# A™,�Ø(¨™|Ò;¨|‘Ü�Y“ 1Ò$à$ Q™<Ò3¨8�Ø# A™,�Ø(¨™|Ò;¨|�Ø# A™,�à˜' <°Ð9Ð9r!   ÚimagerA   c                 óB   — t        d| j                  |«      i|¬«      }|S )NrC   )ÚfilesÚdata)r   rB   )r   r   rC   r$   rA   Úrequest_paramss         r   Ú!transform_request_image_variationz;TopazImageVariationConfig.transform_request_image_variationb   s,   € ô !9Ø˜D×3Ñ3°EÓ:Ð;Ø ô!
ˆð
 Ð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)ÚcreatedrF   rJ   )Úbase64Ú	b64encodeÚdecoder   ÚintÚtimer   )r   rI   rJ   Úbase64_images       r   Ú*_common_transform_response_image_variationzDTopazImageVariationConfig._common_transform_response_image_variationp   sU   € ô %×.Ñ.¨}Ó=×DÑDÀWÓMˆäÜœŸ	™	›Ó$äØ)ØØ#'ôðð $ô

ð 
	
r!   Úraw_responseÚmodel_responseÚlogging_objÚrequest_dataÚencodingztiktoken.Encoding | Nonec              ƒ   ó‚   K  — |j                  «       ƒ d {  –—† }|j                  «       }| j                  ||«      S 7 Œ&­w©N)ÚreadÚget_response_msrV   ©r   r   rW   rX   rY   rZ   rC   r$   r%   r[   r#   rI   rJ   s                r   Ú(async_transform_response_image_variationzBTopazImageVariationConfig.async_transform_response_image_variation„   s?   è ø€ ð &2×%6Ñ%6Ó%8×8ˆà(×8Ñ8Ó:ˆà×>Ñ>¸}ÈkÓZÐZð	  9ús   ‚?–=—'?c                 óx   — |j                   }|j                  j                  «       dz  }| j                  ||«      S )Niè  )r?   ÚelapsedÚtotal_secondsrV   r`   s                r   Ú"transform_response_image_variationz<TopazImageVariationConfig.transform_response_image_variation—   s;   € ð  ,×3Ñ3ˆà)×1Ñ1×?Ñ?ÓAÀDÑHˆà×>Ñ>¸}ÈkÓZÐZr!   Úerror_messageÚstatus_codec                 ó   — t        |||¬«      S )N)rg   ÚmessagerA   )r   )r   rf   rg   rA   s       r   Úget_error_classz)TopazImageVariationConfig.get_error_classª   s   € ÜØ#Ø!Øô
ð 	
r!   r]   )Ú__name__Ú
__module__Ú__qualname__ÚstrÚlistr   r    ÚdictÚboolr(   r7   r   r=   r   rB   r   rH   r<   Úfloatr   rV   r   r   ra   r	   re   rS   r   r
   rj   r   r!   r   r   r      ss  „ ð+°ð +¸Ð>`Ñ9aó +ð #ñ
.à˜‘*ð
.ð �t‘ð
.ð ð	
.ð
 ð
.ð ð
.ð �t‘ð
.ð 
ó
.ðà ðð ðð ð	ð
 ðð 
óð"":àð":ð 
ˆs�I Ñ$ c¨7°3¸°8Ñ+<Ð<Ñ	=ó":ðHà�T‰zðð ðð ð	ð
 ðð 
"óð
àð
ð ð
ð 
ó	
ð> #ñ[à�T‰zð[ð %ð[ð &ð	[ð
 'ð[ð ð[ð ð[ð ð[ð ð[ð -ð[ð �t‘ð[ð 
ó[ð< #ñ[à�T‰zð[ð ð[ð &ð	[ð
 'ð[ð ð[ð ð[ð ð[ð ð[ð -ð[ð �t‘ð[ð 
ó[ð&
¨Sð 
¸sð 
ÈTÐT[É^ð 
Ð`pô 
r!   r   )rP   rT   Úcollections.abcr   Úior   Útypingr   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   Útiktokenr   r   r!   r   ú<module>r~      sO   ðÛ Û Ý #Ý ß 'å "ß #÷õ I÷ó õ Qß 9áÛôR
 Ð0Hõ R
r!   