o
    RTh                      @   sL   d dl mZmZ d dlZd dlmZmZmZ d dlmZ G dd deZ	dS )    )AnyListN)api_requestorerrorutil)APIResourcec                   @   s   e Zd ZdZedd Ze					dddZe					dddZe					dd	d
Ze					dddZ	e					dddZ
e						dddZe						dddZe						dddZdS )Imageimagesc              	   C   sT   |t jjt jjfv r!|d ur!d| j |   d| d| d| 	S |   d| S )N/:z?api-version=)r   ApiTypeAZUREAZURE_ADazure_api_prefix	class_url)clsactionazure_actionapi_typeapi_version r   ]/home/air/segue/gemini/backup/venv/lib/python3.10/site-packages/openai/api_resources/image.py_get_url   s   &zImage._get_urlNc           
   	   K   s   t j||ptj|||d}| ||\}}|d| jdd||d|\}}	}|tjj	tjj
fv rDd|_|jd|jdd	 d
d	 d\}}	}t||||S )Napi_baser   r   organizationpostgenerationssubmitr   r   r    getc                 S      | j d dv S Nstatus)	succeededdataresponser   r   r   <lambda>/       zImage.create.<locals>.<lambda>c                 S   r"   Nr$   )failedr&   r(   r   r   r   r*   0   r+   untilr-   )r   APIRequestoropenair   _get_api_type_and_versionrequestr   r   r   r   r   _polloperation_locationconvert_to_openai_object
r   api_keyr   r   r   r   params	requestorr)   _r   r   r   create   s*   

zImage.createc           
   	      s   t j||ptj|||d}| ||\}}|d| jdd||d|I d H \}}	}|tjj	tjj
fv rKd|_|jd|jdd	 d
d	 dI d H \}}	}t||||S )Nr   r   r   r   r   r    r!   c                 S   r"   r#   r&   r(   r   r   r   r*   T   r+   zImage.acreate.<locals>.<lambda>c                 S   r"   r,   r&   r(   r   r   r   r*   U   r+   r.   )r   r0   r1   r   r2   arequestr   r   r   r   r   _apollr5   r6   r7   r   r   r   acreate7   s,   zImage.acreatec                 K   s   t j||ptj|||d}| ||\}}| jdd ||d}	g }
| D ]\}}|
|d |ff q$|
dd|dff ||	|
fS )Nr   
variationsr   imageapplication/octet-streamr   r0   r1   r   r2   r   itemsappend)r   rA   r8   r   r   r   r   r9   r:   urlfileskeyvaluer   r   r   _prepare_create_variation\   s   
zImage._prepare_create_variationc                 K   sf   |t jjt jjfv rtd| j||||||fi |\}}	}
|jd|	|
d\}}}t ||||S Nz9Variations are not supported by the Azure OpenAI API yet.r   rG   )	r   r   r   r   r   InvalidAPITyperJ   r3   r6   r   rA   r8   r   r   r   r   r9   r:   rF   rG   r)   r;   r   r   r   create_variationx   s    

zImage.create_variationc                    sn   |t jjt jjfv rtd| j||||||fi |\}}	}
|jd|	|
dI d H \}}}t ||||S rK   )	r   r   r   r   r   rM   rJ   r=   r6   rN   r   r   r   acreate_variation   s"   

zImage.acreate_variationc                 K   s   t j||ptj|||d}	| ||\}}| jdd ||d}
g }| D ]\}}||d |ff q$|dd|dff |d urJ|dd|dff |	|
|fS )Nr   editsr   rA   rB   maskrC   )r   rA   rR   r8   r   r   r   r   r9   r:   rF   rG   rH   rI   r   r   r   _prepare_create_edit   s    
zImage._prepare_create_editc                 K   sh   |t jjt jjfv rtd| j|||||||fi |\}	}
}|	jd|
|d\}}}t ||||S Nz4Edits are not supported by the Azure OpenAI API yet.r   rL   )	r   r   r   r   r   rM   rS   r3   r6   r   rA   rR   r8   r   r   r   r   r9   r:   rF   rG   r)   r;   r   r   r   create_edit   s"   
zImage.create_editc                    sp   |t jjt jjfv rtd| j|||||||fi |\}	}
}|	jd|
|dI d H \}}}t ||||S rT   )	r   r   r   r   r   rM   rS   r=   r6   rU   r   r   r   acreate_edit   s$   
zImage.acreate_edit)NNNNN)NNNNNN)__name__
__module____qualname__OBJECT_NAMEclassmethodr   r<   r?   rJ   rO   rP   rS   rV   rW   r   r   r   r   r   	   s~    
#$r   )
typingr   r   r1   r   r   r   openai.api_resources.abstractr   r   r   r   r   r   <module>   s
   