o
    $i{                     @  s  d dl mZ d dlmZmZmZ d dlmZm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mZ ddlmZmZmZmZmZmZmZ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& ddl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/m0Z0 ddl1m2Z2 ddl3m4Z4m5Z5 ddl6m7Z7 ddl8mZ ddl9mZ ddl:mZ ddl;m<Z< ddgZ=G dd de%Z>G dd de&Z?G dd dZ@G dd dZAG dd dZBG dd  d ZCdS )!    )annotations)TYPE_CHECKINGMappingcast)Literalassert_neverN   )_legacy_response)	VideoSize
VideoModelVideoSecondsvideo_list_paramsvideo_remix_paramsvideo_create_paramsvideo_download_content_params)BodyOmitQueryHeadersNotGiven	FileTypesomit	not_given)extract_filesmaybe_transformdeepcopy_minimalasync_maybe_transform)cached_property)SyncAPIResourceAsyncAPIResource)StreamedBinaryAPIResponseAsyncStreamedBinaryAPIResponseto_streamed_response_wrapper"async_to_streamed_response_wrapper#to_custom_streamed_response_wrapper)async_to_custom_streamed_response_wrapper)SyncConversationCursorPageAsyncConversationCursorPage)Video)AsyncPaginatormake_request_options)is_given)r
   )r   )r   )VideoDeleteResponseVideosAsyncVideosc                
   @     e Zd Zed?ddZed@ddZeeeeddded	dAddZeeeeeddded	dBd"d#Z	ed$dCd&d'Z
ddded(dDd)d*Zeeeddded+dEd2d3Zddded(dFd5d6Zeddded7dGd;d<Zddded(dHd=d>ZdS )Ir-   returnVideosWithRawResponsec                 C     t | S a  
        This property can be used as a prefix for any HTTP method call to return
        the raw response object instead of the parsed content.

        For more information, see https://www.github.com/openai/openai-python#accessing-raw-response-data-eg-headers
        )r1   self r6   W/var/www/html/flask_server/venv/lib/python3.10/site-packages/openai/resources/videos.pywith_raw_response-      zVideos.with_raw_responseVideosWithStreamingResponsec                 C  r2   z
        An alternative to `.with_raw_response` that doesn't eagerly read the response body.

        For more information, see https://www.github.com/openai/openai-python#with_streaming_response
        )r:   r4   r6   r6   r7   with_streaming_response7      zVideos.with_streaming_responseNinput_referencemodelsecondssizeextra_headersextra_query
extra_bodytimeoutpromptstrr?   FileTypes | Omitr@   VideoModel | OmitrA   VideoSeconds | OmitrB   VideoSize | OmitrC   Headers | NonerD   Query | NonerE   Body | NonerF   'float | httpx.Timeout | None | NotGivenr(   c       	      
   C  sn   t |||||d}
tttttf |
dggd}|r#ddi|p!i }| jdt|
tj	|t
||||	dtdS )	  
        Create a video

        Args:
          prompt: Text prompt that describes the video to generate.

          input_reference: Optional image reference that guides generation.

          model: The video generation model to use. Defaults to `sora-2`.

          seconds: Clip duration in seconds. Defaults to 4 seconds.

          size: Output resolution formatted as width x height. Defaults to 720x1280.

          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        rG   r?   r@   rA   rB   r?   pathsContent-Typemultipart/form-data/videosrC   rD   rE   rF   bodyfilesoptionscast_to)r   r   r   r   rH   object_postr   r   VideoCreateParamsr*   r(   r5   rG   r?   r@   rA   rB   rC   rD   rE   rF   rZ   r[   r6   r6   r7   create@   s(   %	
zVideos.create	r?   r@   rA   rB   poll_interval_msrC   rD   rE   rF   rd   
int | Omitc       
         C  s,   | j ||||||||	|
d	}| j|j|dS )/Create a video and wait for it to be processed.	r@   rG   r?   rA   rB   rC   rD   rE   rF   rd   rb   pollidr5   rG   r?   r@   rA   rB   rd   rC   rD   rE   rF   videor6   r6   r7   create_and_poll~   s   zVideos.create_and_pollrh   video_idc                C  s   ddi}t |rt||d< 	 | jj||d}| }|jdks%|jdkrBt |s:|jd}|d	ur8t|}nd
}| 	|d
  n|jdksL|jdkrN|S t
rVt|j n|S q)Wait for the vector store file to finish processing.

        Note: this will return even if the file failed to process, you need to check
        file.last_error and file.status to handle these cases
        X-Stainless-Poll-Helpertrue X-Stainless-Custom-Poll-IntervalTrC   in_progressqueuedopenai-poll-after-msN  	completedfailedr+   rH   r8   retrieveparsestatusheadersgetint_sleepr   r   r5   ro   rd   r   responserm   from_headerr6   r6   r7   rj      s,   
zVideos.pollrX   c                C  4   |s	t d|| jd| t||||dtdS )D  
        Retrieve a video

        Args:
          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        7Expected a non-empty value for `video_id` but received /videos/rX   r\   r]   
ValueError_getr*   r(   r5   ro   rC   rD   rE   rF   r6   r6   r7   r|         zVideos.retrieveafterlimitorderrC   rD   rE   rF   r   
str | Omitr   r   Literal['asc', 'desc'] | Omit!SyncConversationCursorPage[Video]c                C  4   | j dtt t||||t|||dtjdtdS aC  
        List videos

        Args:
          after: Identifier for the last item from the previous pagination request

          limit: Number of items to retrieve

          order: Sort order of results by timestamp. Use `asc` for ascending order or `desc` for
              descending order.

          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        rW   )r   r   r   rC   rD   rE   rF   query)pager\   r@   )_get_api_listr&   r(   r*   r   r   VideoListParamsr5   r   r   r   rC   rD   rE   rF   r6   r6   r7   list   $    zVideos.listr,   c                C  r   )B  
        Delete a video

        Args:
          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        r   r   rX   r   r   _deleter*   r,   r   r6   r6   r7   delete  r   zVideos.deletevariantrC   rD   rE   rF   r   3Literal['video', 'thumbnail', 'spritesheet'] | Omit+_legacy_response.HttpxBinaryResponseContentc             
   C  sV   |s	t d|ddi|pi }| jd| dt||||td|itjdtjdS )	  Download video content

        Args:
          variant: Which downloadable asset to return.

        Defaults to the MP4 video.

          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        r   Acceptapplication/binaryr   /contentr   r   r   )r   r   r*   r   r   VideoDownloadContentParamsr	   HttpxBinaryResponseContentr5   ro   r   rC   rD   rE   rF   r6   r6   r7   download_content=  s   
zVideos.download_contentc             	   C  sD   |s	t d|| jd| dtd|itjt||||dtdS )  
        Create a video remix

        Args:
          prompt: Updated text prompt that directs the remix generation.

          extra_headers: Send extra headers

          extra_query: Add additional query parameters to the request

          extra_body: Add additional JSON properties to the request

          timeout: Override the client-level default timeout for this request, in seconds
        r   r   /remixrG   rX   rZ   r\   r]   )r   r_   r   r   VideoRemixParamsr*   r(   r5   ro   rG   rC   rD   rE   rF   r6   r6   r7   remixg  s   
zVideos.remix)r0   r1   )r0   r:   rG   rH   r?   rI   r@   rJ   rA   rK   rB   rL   rC   rM   rD   rN   rE   rO   rF   rP   r0   r(   rG   rH   r?   rI   r@   rJ   rA   rK   rB   rL   rd   re   rC   rM   rD   rN   rE   rO   rF   rP   r0   r(   ro   rH   rd   re   r0   r(   ro   rH   rC   rM   rD   rN   rE   rO   rF   rP   r0   r(   )r   r   r   re   r   r   rC   rM   rD   rN   rE   rO   rF   rP   r0   r   ro   rH   rC   rM   rD   rN   rE   rO   rF   rP   r0   r,   ro   rH   r   r   rC   rM   rD   rN   rE   rO   rF   rP   r0   r   ro   rH   rG   rH   rC   rM   rD   rN   rE   rO   rF   rP   r0   r(   __name__
__module____qualname__r   r8   r<   r   r   rb   rn   rj   r|   r   r   r   r   r6   r6   r6   r7   r-   ,   sn    	B&-$:%1c                
   @  r/   )Ir.   r0   AsyncVideosWithRawResponsec                 C  r2   r3   )r   r4   r6   r6   r7   r8     r9   zAsyncVideos.with_raw_response AsyncVideosWithStreamingResponsec                 C  r2   r;   )r   r4   r6   r6   r7   r<     r=   z#AsyncVideos.with_streaming_responseNr>   rG   rH   r?   rI   r@   rJ   rA   rK   rB   rL   rC   rM   rD   rN   rE   rO   rF   rP   r(   c       	      
     s|   t |||||d}
tttttf |
dggd}|r$ddi|p"i }| jdt|
tj	I dH |t
||||	dtd	I dH S )
rQ   rR   r?   rS   rU   rV   rW   NrX   rY   )r   r   r   r   rH   r^   r_   r   r   r`   r*   r(   ra   r6   r6   r7   rb     s*   %	zAsyncVideos.createrc   rd   re   c       
           s:   | j ||||||||	|
d	I dH }| j|j|dI dH S )rf   rg   Nrh   ri   rl   r6   r6   r7   rn     s    zAsyncVideos.create_and_pollrh   ro   c                  s   ddi}t |rt||d< 	 | jj||dI dH }| }|jdks)|jdkrIt |s>|jd	}|dur<t|}nd
}| 	|d
 I dH  n|jdksS|jdkrU|S t
r]t|j n|S q)rp   rq   rr   rs   Trt   Nru   rv   rw   rx   ry   rz   r{   r   r6   r6   r7   rj     s.   
zAsyncVideos.pollrX   c                  <   |s
t d|| jd| t||||dtdI dH S )r   r   r   rX   r   Nr   r   r6   r6   r7   r|   (     zAsyncVideos.retriever   r   r   r   r   r   9AsyncPaginator[Video, AsyncConversationCursorPage[Video]]c                C  r   r   )r   r'   r(   r*   r   r   r   r   r6   r6   r7   r   I  r   zAsyncVideos.listr,   c                  r   )r   r   r   rX   r   Nr   r   r6   r6   r7   r   }  r   zAsyncVideos.deleter   r   r   r   c             
     sd   |s
t d|ddi|pi }| jd| dt||||td|itjI dH dtjd	I dH S )
r   r   r   r   r   r   r   Nr   r   )r   r   r*   r   r   r   r	   r   r   r6   r6   r7   r     s"   

	zAsyncVideos.download_contentc             	     sR   |s
t d|| jd| dtd|itjI dH t||||dtdI dH S )r   r   r   r   rG   NrX   r   )r   r_   r   r   r   r*   r(   r   r6   r6   r7   r     s   
zAsyncVideos.remix)r0   r   )r0   r   r   r   r   r   )r   r   r   re   r   r   rC   rM   rD   rN   rE   rO   rF   rP   r0   r   r   r   r   r   r6   r6   r6   r7   r.     sn    	B&-$:%3c                   @     e Zd ZdddZdS )	r1   videosr-   r0   Nonec                 C  ^   || _ t|j| _t|j| _t|j| _t|j| _t|j| _t|j| _d S N)	_videosr	   to_raw_response_wrapperrb   r|   r   r   r   r   r5   r   r6   r6   r7   __init__  &   
zVideosWithRawResponse.__init__Nr   r-   r0   r   r   r   r   r   r6   r6   r6   r7   r1         r1   c                   @  r   )	r   r   r.   r0   r   c                 C  r   r   )	r   r	   async_to_raw_response_wrapperrb   r|   r   r   r   r   r   r6   r6   r7   r   	  r   z#AsyncVideosWithRawResponse.__init__Nr   r.   r0   r   r   r6   r6   r6   r7   r     r   r   c                   @  r   )	r:   r   r-   r0   r   c                 C  T   || _ t|j| _t|j| _t|j| _t|j| _t|jt| _t|j	| _	d S r   )
r   r"   rb   r|   r   r   r$   r   r    r   r   r6   r6   r7   r   !  (   
z$VideosWithStreamingResponse.__init__Nr   r   r6   r6   r6   r7   r:      r   r:   c                   @  r   )	r   r   r.   r0   r   c                 C  r   r   )
r   r#   rb   r|   r   r   r%   r   r!   r   r   r6   r6   r7   r   :  r   z)AsyncVideosWithStreamingResponse.__init__Nr   r   r6   r6   r6   r7   r   9  r   r   )D
__future__r   typingr   r   r   typing_extensionsr   r   httpx r	   typesr
   r   r   r   r   r   r   _typesr   r   r   r   r   r   r   r   _utilsr   r   r   r   _compatr   	_resourcer   r   	_responser    r!   r"   r#   r$   r%   
paginationr&   r'   types.videor(   _base_clientr)   r*   _utils._utilsr+   types.video_sizetypes.video_modeltypes.video_secondstypes.video_delete_responser,   __all__r-   r.   r1   r   r:   r   r6   r6   r6   r7   <module>   s<   $(	   c  e