a
    f	g                      @   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 )ImageZimagesc              	   C   sX   |t jjt jjfv rB|d urBd| j |   d| d| d| 	S |   d| S d S )N/:z?api-version=)r   ApiTypeAZUREAZURE_ADZazure_api_prefixZ	class_url)clsactionazure_actionapi_typeapi_version r   ]/var/www/html/llm_bihealth/app/venv/lib/python3.9/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 rd|_|jd|jdd	 d
d	 d\}}	}t||||S )Napi_baser   r   organizationpostgenerationssubmitr   r   r    getc                 S   s   | j d dv S Nstatus)Z	succeededdataresponser   r   r   <lambda>/       zImage.create.<locals>.<lambda>c                 S   s   | j d dv S Nr    )failedr!   r#   r   r   r   r%   0   r&   Zuntilr(   )r   APIRequestoropenair   _get_api_type_and_versionrequestr   r   r   r   r   Z_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 rd|_|jd|jdd	 d
d	 dI d H \}}	}t||||S )Nr   r   r   r   r   r   r   c                 S   s   | j d dv S r   r!   r#   r   r   r   r%   T   r&   zImage.acreate.<locals>.<lambda>c                 S   s   | j d dv S r'   r!   r#   r   r   r   r%   U   r&   r)   )r   r*   r+   r   r,   arequestr   r   r   r   r   Z_apollr.   r/   r0   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 qH|
dd|dff ||	|
fS )Nr   Z
variationsr   imageapplication/octet-streamr   r*   r+   r   r,   r   itemsappend)r   r8   r1   r   r   r   r   r2   r3   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   r>   )	r   r   r   r   r   InvalidAPITyperA   r-   r/   r   r8   r1   r   r   r   r   r2   r3   r=   r>   r$   r4   r   r   r   create_variationx   s     

zImage.create_variationc                    sl   |t jjt jjfv rtd| j||||||fi |\}}	}
|jd|	|
dI d H \}}}t ||||S rB   )	r   r   r   r   r   rD   rA   r6   r/   rE   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 qH|dd|dff |d ur|dd|dff |	|
|fS )Nr   Zeditsr   r8   r9   maskr:   )r   r8   rH   r1   r   r   r   r   r2   r3   r=   r>   r?   r@   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   rC   )	r   r   r   r   r   rD   rI   r-   r/   r   r8   rH   r1   r   r   r   r   r2   r3   r=   r>   r$   r4   r   r   r   create_edit   s"    
zImage.create_editc                    sn   |t jjt jjfv rtd| j|||||||fi |\}	}
}|	jd|
|dI d H \}}}t ||||S rJ   )	r   r   r   r   r   rD   rI   r6   r/   rK   r   r   r   acreate_edit   s"    
zImage.acreate_edit)NNNNN)NNNNN)NNNNN)NNNNN)NNNNN)NNNNNN)NNNNNN)NNNNNN)__name__
__module____qualname__ZOBJECT_NAMEclassmethodr   r5   r7   rA   rF   rG   rI   rL   rM   r   r   r   r   r   	   s|   
     #     $                                 r   )
typingr   r   r+   r   r   r   Zopenai.api_resources.abstractr   r   r   r   r   r   <module>   s   