
    4Rj                        d dl mZ d dlZd dlmZmZmZmZmZm	Z	 ddl
mZ ddlmZ erd dlmZ d dlmZ  ed	      dd
       Z G d d      ZddZy)    )annotationsN)TYPE_CHECKINGAnyDictIteratorAsyncIteratorcast   )	lru_cache)ServerSentEvent)Shape)EventStreamMessage)maxsizec                 ~    ddl m}  ddlm}  |       }|j	                  dd      } | |      }|j                  d      S )Nr   )ServiceModel)Loaderzbedrock-runtimez	service-2ResponseStream)botocore.modelr   botocore.loadersr   load_service_model	shape_for)r   r   loaderbedrock_service_dictbedrock_service_models        m/var/www/html/meridian/meridian-ai/venv/lib/python3.12/site-packages/anthropic/lib/bedrock/_stream_decoder.pyget_response_stream_shaper      sA    +'XF!445FT()=> **+;<<    c                  ,    e Zd ZddZddZddZd	dZy)
AWSEventStreamDecoderc                (    ddl m}  |       | _        y )Nr   )EventStreamJSONParser)botocore.parsersr!   parser)selfr!   s     r   __init__zAWSEventStreamDecoder.__init__   s    :+-r   c              #     K   ddl m}  |       }|D ]2  }|j                  |       |D ]  }| j                  |      }|s|  4 yw)zTGiven an iterator that yields lines, iterate over it & yield every event encounteredr   EventStreamBufferNbotocore.eventstreamr(   add_data_parse_message_from_eventr$   iteratorr(   event_stream_bufferchunkeventsses          r   
iter_bytesz AWSEventStreamDecoder.iter_bytes   sV     :/1 	E((/, 44U;I	s
   <A	Ac                  K   ddl m}  |       }|2 3 d{   }|j                  |       |D ]  }| j                  |      }|s|  ;7 66 yw)zZGiven an async iterator that yields lines, iterate over it & yield every event encounteredr   r'   Nr)   r-   s          r   aiter_bytesz!AWSEventStreamDecoder.aiter_bytes+   s^     :/1# 	 	%((/, 44U;I	8s+   AAAA*AAAAc                    |j                         }| j                  j                  |t                     }|d   dk7  rt	        d|       |j                  d      }|sy t        |j                  d            S )Nstatus_code   z!Bad response code, expected 200: r0   bytes)to_response_dictr#   parser   
ValueErrorget_chunk_bytes_to_sse)r$   r1   response_dictparsed_responser0   s        r   r,   z/AWSEventStreamDecoder._parse_message_from_event7   st    ..0++++M;T;VW'3.@PQQ##G,"599W#566r   N)returnNone)r.   zIterator[bytes]rA   zIterator[ServerSentEvent])r.   zAsyncIterator[bytes]rA   zAsyncIterator[ServerSentEvent])r1   r   rA   ServerSentEvent | None)__name__
__module____qualname__r%   r3   r5   r,    r   r   r   r      s    .



7r   r   c                "   | j                         }	 t        j                  |      }t	        |t
              st        |d      S t        d|      }|j                  d      }t	        |t              sd}t        ||      S # t        $ r d }Y fw xY w)N
completion)datar1   zDict[str, Any]type)
decodejsonloads	Exception
isinstancedictr   r	   r=   str)rawdecodedrJ   payload
event_types        r   r>   r>   D   s    jjlGzz'" dD!G<@@#T*GV$Jj#&!
z::  s   B   BB)rA   r   )rS   r9   rA   rC   )
__future__r   rM   typingr   r   r   r   r   r	   _utilsr   
_streamingr   r   r   r*   r   r   r   r>   rG   r   r   <module>r[      sI    "  J J  )$7 4= =(7 (7V;r   