
    Mi                     |    S SK JrJr  S SKJrJrJrJr  S SKrS SK	J
r
  S SKJr  S SKJrJr  S SKJr   " S S	5      rg)
    )BufferedReaderBytesIO)AnyDictcastget_type_hintsN)get_image_type)BaseImageEditConfig)FILE_MIME_TYPESFileType)ImageEditOptionalRequestParamsc            	       z    \ rS rSr\S\S\S\S\4S j5       r	\S\\\
4   S\4S j5       r\S	\
S\4S
 j5       rSrg)ImageEditRequestUtils   modelimage_edit_provider_configimage_edit_optional_paramsreturnc           	         UR                  U 5      nU Vs/ s H  nXC;  d  M
  UPM     nnU(       a*  [        R                  " U SU  SSR                  U5       3S9eUR	                  UU [        R
                  S9nU$ s  snf )a  
Get optional parameters for the image edit API.

Args:
    params: Dictionary of all parameters
    model: The model name
    image_edit_provider_config: The provider configuration for image edit API

Returns:
    A dictionary of supported parameters for the image edit API
z5The following parameters are not supported for model z: z, )r   message)r   r   drop_params)get_supported_openai_paramslitellmUnsupportedParamsErrorjoinmap_openai_paramsr   )r   r   r   supported_paramsparamunsupported_paramsmapped_paramss          n/var/www/eduai.edurigo.com/storigo/production/storigo_env/lib/python3.13/site-packages/litellm/images/utils.pyget_optional_params_image_edit4ImageEditRequestUtils.get_optional_params_image_edit   s    ( 6QQRWX
 4
3, 3 	 
 00OPUwVXY]YbYbcuYvXwx  3DD'A++ E 
 '
s
   	A=A=paramsc                     [        [        5      R                  5       nU R                  5        VVs0 s H  u  p#X!;   d  M  Uc  M  X#_M     nnn[	        [        U5      $ s  snnf )z
Filter parameters to only include those defined in ImageEditOptionalRequestParams.

Args:
    params: Dictionary of parameters to filter

Returns:
    ImageEditOptionalRequestParams instance with only the valid parameters
)r   r   keysitemsr   )r$   
valid_keyskvfiltered_paramss        r!   'get_requested_image_edit_optional_param=ImageEditRequestUtils.get_requested_image_edit_optional_param8   s]     $$BCHHJ
#\\^
+TQqD1DAD^ 	 
 2ODD	
s   A AA
image_datac                 ^    [        U [        5      (       aE  U R                  5       nU R                  S5        U R	                  S5      nU R                  U5        GO[        U [
        5      (       aD  U R                  5       nU R                  S5        U R	                  S5      nU R                  U5        O[        U [        5      (       a  U SS nO[        U S5      (       ai  [        U SS 5      " 5       n[        U S5      (       a  U R                  S5        U R	                  S5      n[        U S5      (       a  U R                  U5        O[        [        R                     $ [        U5      nUc  [        [        R                     $ [        R                  [        R                  [        R                  [        R                  [        R                   S.nUR#                  U5      nUc  [        [        R                     $ [        U   $ ! [$         a    [        [        R                     s $ f = f)	z
Detect the content type of image data using existing LiteLLM utils.

Args:
    image_data: Can be BytesIO, bytes, BufferedReader, or other file-like objects

Returns:
    The MIME type string (e.g., "image/png", "image/jpeg")
r   d   Nreadtellc                      g)Nr    r4       r!   <lambda>>ImageEditRequestUtils.get_image_content_type.<locals>.<lambda>n   s    ar5   seek)pngjpeggifwebpheic)
isinstancer   r2   r8   r1   r   byteshasattrgetattrr   r   PNGr	   JPEGGIFWEBPHEICget	Exception)r.   current_pos
bytes_dataimage_type_strtype_mapping	file_types         r!   get_image_content_type,ImageEditRequestUtils.get_image_content_typeL   s   7	1*g..(oo/"'__
 ,J77(oo/"'__S1
,J..'-
 :v..")*fi"H"JKz622"*!+!5Jz622"4*8<<88 ,J7N%&x||44  || ||  L %((8I &x||44"9-- 	1"8<<00	1s%   EH !$H A8H ?H !H,+H,r4   N)__name__
__module____qualname____firstlineno__staticmethodstrr
   r   r   r"   r   r,   rN   __static_attributes__r4   r5   r!   r   r      s    ))$7) %C) 
	) )V ES#XE	'E E& A13 A13 A1 A1r5   r   )ior   r   typingr   r   r   r   r   (litellm.litellm_core_utils.token_counterr	   /litellm.llms.base_llm.image_edit.transformationr
   litellm.types.filesr   r   litellm.types.images.mainr   r   r4   r5   r!   <module>r]      s)    & 2 2  C O 9 DC1 C1r5   