U
    ~fhx                     @  sh  d dl mZ d dlZd dlmZmZmZ d dlmZ d dlZddl	m
Z
 ddlmZmZmZmZ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mZ ddlm Z m!Z! ddl"m#Z#m$Z$m%Z% ddl&m'Z' ddl(m)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Z0G dd dZ1G dd dZ2G dd dZ3G dd dZ4dS )    )annotationsN)UnionIterableOptional)Literal   )_legacy_response)	NOT_GIVENBodyQueryHeadersNotGiven)maybe_transformasync_maybe_transform)cached_property)SyncAPIResourceAsyncAPIResource)to_streamed_response_wrapper"async_to_streamed_response_wrapper)SyncCursorPageAsyncCursorPage)AsyncPaginatormake_request_options)message_list_paramsmessage_create_paramsmessage_update_params)Message)Metadata)MessageDeleted)MessageContentPartParamMessagesAsyncMessagesc                   @  s@  e Zd ZeddddZeddddZedeed	d	d	ed
ddddddddddd
ddZ	edd	d	d	edddddddddddZ
eded	d	d	eddddddddddddZedeeeeed	d	d	ed 	dd!d!d"d#d!ddddd$d%d&d'Zedd	d	d	edddddddd(dd)d*Zd	S )+r    MessagesWithRawResponsereturnc                 C  s   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
        )r"   self r(   J/tmp/pip-unpacked-wheel-rjiviquo/openai/resources/beta/threads/messages.pywith_raw_response    s    zMessages.with_raw_responseMessagesWithStreamingResponsec                 C  s   t | S 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+   r&   r(   r(   r)   with_streaming_response*   s    z Messages.with_streaming_response>The Assistants API is deprecated in favor of the Responses APINattachmentsmetadataextra_headersextra_query
extra_bodytimeoutstr-Union[str, Iterable[MessageContentPartParam]]Literal[('user', 'assistant')]?Optional[Iterable[message_create_params.Attachment]] | NotGivenOptional[Metadata] | NotGivenHeaders | NoneQuery | NoneBody | None'float | httpx.Timeout | None | NotGivenr   
	thread_idcontentroler0   r1   r2   r3   r4   r5   r$   c          
   	   C  sZ   |st d|ddi|pi }| jd| dt||||dtjt||||	dtdS )	/  
        Create a message.

        Args:
          content: The text contents of the message.

          role:
              The role of the entity that is creating the message. Allowed values include:

              - `user`: Indicates the message is sent by an actual user and should be used in
                most cases to represent user-generated messages.
              - `assistant`: Indicates the message is generated by the assistant. Use this
                value to insert messages from the assistant into the conversation.

          attachments: A list of files attached to the message, and the tools they should be added to.

          metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
              for storing additional information about the object in a structured format, and
              querying for objects via API or the dashboard.

              Keys are strings with a maximum length of 64 characters. Values are strings with
              a maximum length of 512 characters.

          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
        8Expected a non-empty value for `thread_id` but received OpenAI-Betaassistants=v2	/threads/	/messagesrA   rB   r0   r1   r2   r3   r4   r5   bodyoptionscast_to)
ValueError_postr   r   MessageCreateParamsr   r   
r'   r@   rA   rB   r0   r1   r2   r3   r4   r5   r(   r(   r)   create3   s*    /
	   zMessages.createrJ   
message_idr@   r2   r3   r4   r5   r$   c                C  s\   |st d||s$t d|ddi|p0i }| jd| d| t||||dtdS )	G  
        Retrieve a message.

        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
        rD   9Expected a non-empty value for `message_id` but received rE   rF   rG   
/messages/rJ   rM   rN   rO   _getr   r   r'   rU   r@   r2   r3   r4   r5   r(   r(   r)   retrievev   s       zMessages.retriever1   r2   r3   r4   r5   rU   r@   r1   r2   r3   r4   r5   r$   c             	   C  sj   |st d||s$t d|ddi|p0i }| jd| d| td|itjt||||dtd	S )
  
        Modifies a message.

        Args:
          metadata: Set of 16 key-value pairs that can be attached to an object. This can be useful
              for storing additional information about the object in a structured format, and
              querying for objects via API or the dashboard.

              Keys are strings with a maximum length of 64 characters. Values are strings with
              a maximum length of 512 characters.

          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
        rD   rW   rE   rF   rG   rX   r1   rJ   rK   )rO   rP   r   r   MessageUpdateParamsr   r   r'   rU   r@   r1   r2   r3   r4   r5   r(   r(   r)   update   s     !   zMessages.update	afterbeforelimitorderrun_idr2   r3   r4   r5   str | NotGivenint | NotGiven#Literal[('asc', 'desc')] | NotGivenzSyncCursorPage[Message]r@   re   rf   rg   rh   ri   r2   r3   r4   r5   r$   c       	         C  sb   |st d|ddi|pi }| jd| dtt t|||	|
t|||||dtjdtdS 	ah  
        Returns a list of messages for a given thread.

        Args:
          after: A cursor for use in pagination. `after` is an object ID that defines your place
              in the list. For instance, if you make a list request and receive 100 objects,
              ending with obj_foo, your subsequent call can include after=obj_foo in order to
              fetch the next page of the list.

          before: A cursor for use in pagination. `before` is an object ID that defines your place
              in the list. For instance, if you make a list request and receive 100 objects,
              starting with obj_foo, your subsequent call can include before=obj_foo in order
              to fetch the previous page of the list.

          limit: A limit on the number of objects to be returned. Limit can range between 1 and
              100, and the default is 20.

          order: Sort order by the `created_at` timestamp of the objects. `asc` for ascending
              order and `desc` for descending order.

          run_id: Filter messages by the run ID that generated them.

          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
        rD   rE   rF   rG   rH   )re   rf   rg   rh   ri   )r2   r3   r4   r5   query)pagerM   model)rO   _get_api_listr   r   r   r   r   MessageListParamsr'   r@   re   rf   rg   rh   ri   r2   r3   r4   r5   r(   r(   r)   list   s.    /
zMessages.listr   c                C  s\   |st d||s$t d|ddi|p0i }| jd| d| t||||dtdS )	F  
        Deletes a message.

        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
        rD   rW   rE   rF   rG   rX   rJ   rY   rO   _deleter   r   r\   r(   r(   r)   delete  s       zMessages.delete__name__
__module____qualname__r   r*   r-   typing_extensions
deprecatedr	   rS   r]   rc   ru   ry   r(   r(   r(   r)   r       sT   	&B %".(Gc                   @  s@  e Zd ZeddddZeddddZedeed	d	d	ed
ddddddddddd
ddZ	edd	d	d	edddddddddddZ
eded	d	d	eddddddddddddZedeeeeed	d	d	ed 	dd!d!d"d#d!ddddd$d%d&d'Zedd	d	d	edddddddd(dd)d*Zd	S )+r!   AsyncMessagesWithRawResponser#   c                 C  s   t | S r%   )r   r&   r(   r(   r)   r*   ;  s    zAsyncMessages.with_raw_response"AsyncMessagesWithStreamingResponsec                 C  s   t | S r,   )r   r&   r(   r(   r)   r-   E  s    z%AsyncMessages.with_streaming_responser.   Nr/   r6   r7   r8   r9   r:   r;   r<   r=   r>   r   r?   c          
   	     sf   |st d|ddi|pi }| jd| dt||||dtjI dH t||||	dtd	I dH S )
rC   rD   rE   rF   rG   rH   rI   NrJ   rK   )rO   rP   r   r   rQ   r   r   rR   r(   r(   r)   rS   N  s*    /
	   zAsyncMessages.createrJ   rT   c                  sb   |st d||s$t d|ddi|p0i }| jd| d| t||||dtdI d	H S )
rV   rD   rW   rE   rF   rG   rX   rJ   rY   NrZ   r\   r(   r(   r)   r]     s       zAsyncMessages.retriever^   r_   c             	     sv   |st d||s$t d|ddi|p0i }| jd| d| td|itjI dH t||||d	td
I dH S )r`   rD   rW   rE   rF   rG   rX   r1   NrJ   rK   )rO   rP   r   r   ra   r   r   rb   r(   r(   r)   rc     s     !   zAsyncMessages.updaterd   rj   rk   rl   z1AsyncPaginator[Message, AsyncCursorPage[Message]]rm   c       	         C  sb   |st d|ddi|pi }| jd| dtt t|||	|
t|||||dtjdtdS rn   )rO   rr   r   r   r   r   r   rs   rt   r(   r(   r)   ru     s.    /
zAsyncMessages.listr   c                  sb   |st d||s$t d|ddi|p0i }| jd| d| t||||dtdI d	H S )
rv   rD   rW   rE   rF   rG   rX   rJ   rY   Nrw   r\   r(   r(   r)   ry   .  s       zAsyncMessages.deleterz   r(   r(   r(   r)   r!   :  sT   	&B %".(Gc                   @  s   e Zd ZdddddZdS )r"   r    Nonemessagesr$   c                 C  sP   || _ t|j| _t|j| _t|j| _t|j| _t|j| _d S N)	_messagesr   Zto_raw_response_wrapperrS   r]   rc   ru   ry   r'   r   r(   r(   r)   __init__V  s*    z MessagesWithRawResponse.__init__Nr{   r|   r}   r   r(   r(   r(   r)   r"   U  s   r"   c                   @  s   e Zd ZdddddZdS )r   r!   r   r   c                 C  sP   || _ t|j| _t|j| _t|j| _t|j| _t|j| _d S r   )r   r   Zasync_to_raw_response_wrapperrS   r]   rc   ru   ry   r   r(   r(   r)   r   u  s*    z%AsyncMessagesWithRawResponse.__init__Nr   r(   r(   r(   r)   r   t  s   r   c                   @  s   e Zd ZdddddZdS )r+   r    r   r   c                 C  sF   || _ t|j| _t|j| _t|j| _t|j| _t|j| _d S r   )r   r   rS   r]   rc   ru   ry   r   r(   r(   r)   r     s*    z&MessagesWithStreamingResponse.__init__Nr   r(   r(   r(   r)   r+     s   r+   c                   @  s   e Zd ZdddddZdS )r   r!   r   r   c                 C  sF   || _ t|j| _t|j| _t|j| _t|j| _t|j| _d S r   )r   r   rS   r]   rc   ru   ry   r   r(   r(   r)   r     s*    z+AsyncMessagesWithStreamingResponse.__init__Nr   r(   r(   r(   r)   r     s   r   )5
__future__r   r~   typingr   r   r   r   Zhttpx r   _typesr	   r
   r   r   r   _utilsr   r   _compatr   Z	_resourcer   r   	_responser   r   Z
paginationr   r   Z_base_clientr   r   Ztypes.beta.threadsr   r   r   Ztypes.beta.threads.messager   Ztypes.shared_params.metadatar   Z"types.beta.threads.message_deletedr   Z-types.beta.threads.message_content_part_paramr   __all__r    r!   r"   r   r+   r   r(   r(   r(   r)   <module>   s8       