Ë
    uPêj?^  ã                   óœ  — U d dl Z d dlZd dl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mZ d dl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
lmZmZmZmZmZm Z m!Z! d dl"m#Z#m$Z$ d dl%m&Z&m'Z' ddl(m)Z) ddl*m+Z+m,Z,m-Z- erd dl.m/Z0  ejb                  d«      Z2ee3d<    ee4e!   «      Z5eee4e!         e3d<   de6de4e!   fd„Z7 G d„ de)e«      Z8y)é    N)ÚTYPE_CHECKINGÚAnyÚFinalÚLiteralÚcast)ÚHeadersÚResponse)ÚTypeAdapterÚValidationError)Úget_aws_dns_suffixÚis_bedrock_arn)ÚBEDROCK_MANAGED_S3_BATCH_PREFIX)Ú
safe_dumps)ÚBaseBatchesConfig)ÚBaseLLMException)ÚBedrockCreateBatchRequestÚBedrockCreateBatchResponseÚBedrockInputDataConfigÚBedrockOutputDataConfigÚBedrockS3InputDataConfigÚBedrockS3OutputDataConfigÚ
BedrockTag)ÚAllMessageValuesÚCreateBatchRequest)ÚLiteLLMBatchÚLlmProvidersé   )Ú
BaseAWSLLM)ÚCommonBatchFilesUtilsÚ merge_bedrock_aws_request_paramsÚresolve_s3_encryption_key_id)ÚLoggingzT-[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}\.jsonl$Ú"_S3_BATCH_FILE_UUID_SUFFIX_PATTERNÚ_BEDROCK_TAGS_ADAPTERÚraw_tagsÚreturnc                 ór   — 	 t         j                  | d¬«      S # t        $ r}t        d| ›�«      |‚d }~ww xY w)NT)Ústrictz†Invalid 'bedrock_tags' value. Expected a list of {'key': <str>, 'value': <str>} dicts, e.g. [{'key': 'team', 'value': 'genai'}]. Got: )r$   Úvalidate_pythonr   Ú
ValueError)r%   Úes     úp/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/litellm/llms/bedrock/batches/transformation.pyÚ_validate_bedrock_tagsr-   5   sP   € ðÜ$×4Ñ4°XÀdÐ4ÓKÐKøÜò Üð@Ø@H¸|ðMó
ð ð	ûðús   ‚ ™	6¢1±6c                   óè  ‡ — e Zd ZdZˆ fd„Zedefd„«       Zede	de	dz  fd„«       Z
ede	dz  defd	„«       Zede	de	fd
„«       Z	 	 d'dede	dee   dedede	dz  de	dz  defd„Zde	dz  de	dz  de	dededede	fd„Zde	dedededee	ef   f
d„Zde	dz  dedddedef
d„Zededee	e	f   fd„«       Zde	dededee	ef   fd„Zde	fd „Zd!„ Zd"„ Zde	dz  dedddedef
d#„Zd$e	d%e dee!z  de"fd&„Z#ˆ xZ$S )(ÚBedrockBatchesConfigz\
    Config for Bedrock Batches - handles batch job creation and management for Bedrock
    c                 ó@   •— t         ‰| �  «        t        «       | _        y ©N)ÚsuperÚ__init__r   Úcommon_utils)ÚselfÚ	__class__s    €r,   r3   zBedrockBatchesConfig.__init__D   s   ø€ Ü‰ÑÔÜ1Ó3ˆÕó    r&   c                 ó"   — t         j                  S r1   )r   ÚBEDROCK)r5   s    r,   Úcustom_llm_providerz(BedrockBatchesConfig.custom_llm_providerH   s   € ä×#Ñ#Ð#r7   Ú
object_keyNc                 óÎ   — |j                  t        «      sy |t        t        «      d  }t        j	                  |«      }|r|j                  «       dk(  ry |d |j                  «        S )Nr   )Ú
startswithr   Úlenr#   ÚsearchÚstart)Úclsr;   Ú
model_partÚmatchs       r,   Ú _get_bare_model_name_from_s3_keyz5BedrockBatchesConfig._get_bare_model_name_from_s3_keyL   s]   € à×$Ñ$Ô%DÔEØØ&¤sÔ+JÓ'KÐ'MÐNˆ
Ü9×@Ñ@ÀÓLˆÙ˜Ÿ™›¨Ò*ØØ˜/˜EŸK™K›MÐ*Ð*r7   Úinput_file_idc                 óz   — |�|j                  d«      sy|j                  dd«      d   }| j                  |«      duS )zù
        Returns True if `input_file_id` is a raw s3:// Bedrock batch input file (i.e. not a
        LiteLLM-managed unified file id) whose object key embeds the model name in the
        `litellm-bedrock-files-{model}-{uuid}.jsonl` layout.
        Nús3://Fú/é   éÿÿÿÿ)r=   ÚrsplitrD   )rA   rE   r;   s      r,   Ú#is_unmanaged_s3_batch_input_file_idz8BedrockBatchesConfig.is_unmanaged_s3_batch_input_file_idV   sG   € ð Ð ¨×(@Ñ(@ÀÔ(IØØ)×0Ñ0°°aÓ8¸Ñ<ˆ
Ø×3Ñ3°JÓ?ÀtÐKÐKr7   c                 óZ   — |j                  dd«      d   }| j                  |«      }|€J ‚|S )aZ  
        Extracts the bare model name (e.g. "us.anthropic.claude-sonnet-4-20250514-v1-0") from
        an unmanaged batch's s3:// input file id. Note any ":" in the original model id was
        replaced with "-" at upload time, so callers must fuzzy-match against configured
        deployments rather than expect an exact string match.
        rH   rI   rJ   )rK   rD   )rA   rE   r;   Úbare_model_names       r,   Ú get_bare_model_name_from_s3_filez5BedrockBatchesConfig.get_bare_model_name_from_s3_fileb   s=   € ð *×0Ñ0°°aÓ8¸Ñ<ˆ
Ø!$×!EÑ!EÀjÓ!QˆØÐ*Ð*Ð*ØÐr7   ÚheadersÚmodelÚmessagesÚoptional_paramsÚlitellm_paramsÚapi_keyÚapi_basec                 ó   — |S )z�
        Validate and prepare environment for Bedrock batch requests.
        AWS credentials are handled by BaseAWSLLM.
        © )r5   rP   rQ   rR   rS   rT   rU   rV   s           r,   Úvalidate_environmentz)BedrockBatchesConfig.validate_environmento   s	   € ð ˆr7   Údatac                 óf   — t        ||«      }| j                  ||«      }d|› dt        |«      › d�}	|	S )z‹
        Get the complete URL for Bedrock batch creation.
        Bedrock batch jobs are created via the model invocation job API.
        úhttps://bedrock.ú.ú/model-invocation-job)r    Ú_get_aws_region_namer   )
r5   rV   rU   rQ   rS   rT   rZ   Úrequest_paramsÚaws_region_nameÚbedrock_endpoints
             r,   Úget_complete_batch_urlz+BedrockBatchesConfig.get_complete_batch_url€   sN   € ô !AÀÐQ`Ó aˆØ!%×!:Ñ!:¸>È5Ó!Qˆð
 ˜Ð/¨qÔ1CÀOÓ1TÐ0UÐUjÐkð 	ð  Ðr7   Úcreate_batch_datac                 óÆ  — |j                  d«      }|st        d«      ‚| j                  j                  |«      \  }}|j                  d«      xs t	        j
                  d«      }|s|}|j                  d«      xs( |j                  d«      xs t	        j
                  d«      }	|	st        d«      ‚|st        d«      ‚| j                  j                  |d	¬
«      }
d|
› d�}dt        d|› d|› �¬«      i}t        d|› d|› �¬«      }t        ||¬«      }|r||d<   d|i}||
|||	dœ}|j                  d«      }|�|n|j                  d«      }|�t        |«      |d<   |j                  d«      }|r
|dk(  rd|d<   t        ||«      }| j                  ||«      }d|› dt        |«      › d�}| j                  j                  d|||d¬«      \  }}d|||j                  d «      d!œS )"a�  
        Transform the batch creation request to Bedrock format.

        Bedrock batch inference requires:
        - modelId: The Bedrock model ID
        - jobName: Unique name for the batch job
        - inputDataConfig: Configuration for input data (S3 location)
        - outputDataConfig: Configuration for output data (S3 location)
        - roleArn: IAM role ARN for the batch job
        rE   z4input_file_id is required for Bedrock batch creationÚs3_output_bucket_nameÚAWS_S3_OUTPUT_BUCKET_NAMEÚaws_batch_role_arnÚAWS_BATCH_ROLE_ARNz}AWS IAM role ARN is required for Bedrock batch jobs. Set 'aws_batch_role_arn' in litellm_params or AWS_BATCH_ROLE_ARN env varzOCould not determine Bedrock model ID. Please pass `model` in your request body.Úlitellm)Úprefixzlitellm-batch-outputs/rH   Ús3InputDataConfigrG   )Ús3Uri)rT   rS   Ús3EncryptionKeyIdÚs3OutputDataConfig)ÚmodelIdÚjobNameÚinputDataConfigÚoutputDataConfigÚroleArnÚbedrock_tagsÚtagsÚcompletion_windowÚ24hé   ÚtimeoutDurationInHoursr\   r]   r^   ÚbedrockÚPOST©Úservice_namerZ   Úendpoint_urlrS   Úmethodzutf-8©r€   ÚurlrP   rZ   )Úgetr*   r4   Úparse_s3_uriÚosÚgetenvÚgenerate_unique_job_namer   r   r!   r-   r    r_   r   Úsign_aws_requestÚdecode)r5   rQ   rd   rS   rT   rE   Úinput_bucketÚ	input_keyÚoutput_bucketÚrole_arnÚjob_nameÚ
output_keyÚinput_data_configÚs3_output_configÚs3_encryption_key_idÚoutput_data_configÚbedrock_requestÚconfig_bedrock_tagsru   rw   r`   ra   r   Úsigned_headersÚsigned_datas                            r,   Útransform_create_batch_requestz3BedrockBatchesConfig.transform_create_batch_request˜   s‹  € ð$  1×4Ñ4°_ÓEˆÙÜÐSÓTÐTð #'×"3Ñ"3×"@Ñ"@ÀÓ"OÑˆ�ið '×*Ñ*Ð+BÓCÒmÄrÇyÁyÐQlÓGmˆÙà(ˆMð ×ÑÐ3Ó4ò /Ø×"Ñ"Ð#7Ó8ò/ä�y‰yÐ-Ó.ð 	ñ
 Üð[óð ñ
 ÜÐnÓoÐoð ×+Ñ+×DÑDÀUÐS\ÐDÓ]ˆØ4°X°J¸aÐ@ˆ
ð  Ô!9À%ÈÀ~ÐUVÐW`ÐVaÐ@bÔ!cð<
Ðô
 >WØ˜-˜¨¨*¨Ð6ô>
Ðô
  <Ø)Ø+ô 
Ðñ  Ø4HÐÐ0Ñ1à>RÐTdÐ=eÐð ØØ0Ø 2Øñ=
ˆð &4×%7Ñ%7¸Ó%GÐØ.AÐ.MÑ*ÐSb×SfÑSfÐguÓSvˆØÐ#Ü&<¸\Ó&JˆO˜FÑ#ð $5×#8Ñ#8Ð9LÓ#MÐÙð ! EÒ)Ø<>�Ð 8Ñ9ô !AÀÐQ`Ó aˆØ!%×!:Ñ!:¸>È5Ó!Qˆà˜Ð/¨qÔ1CÀOÓ1TÐ0UÐUjÐkð 	ð '+×&7Ñ&7×&HÑ&HØ"Ø Ø%Ø*Øð 'Ió '
Ñ#ˆ˜ð ØØ%Ø×&Ñ& wÓ/ñ	
ð 	
r7   Úraw_responseÚlogging_objÚLiteLLMLoggingObjc                 óâ  — 	 |j                  «       }|j                  dd«      }t	        |j                  dd«      «      }ddddd	d	d
ddddœ
}	t        t        d   |	j                  |d«      «      }
|j                  di «      }t        d(i d|“dd“d|j                  dd«      “dd“d|j                  dd«      “d|j                  dd«      “d|
“dd“dd“dt        t        j                  «       «      “d|dk(  rt        t        j                  «       «      nd“dd“d d“d!d“d"d“d#d“d$d“d%d“d&d“d'| j                  |j                  d'i «      «      “ŽS # t        $ r}t        d|› �«      ‚d}~ww xY w))zN
        Transform Bedrock batch creation response to LiteLLM format.
        ú(Failed to parse Bedrock batch response: NÚjobArnÚ ÚstatusÚ	SubmittedÚ
validatingÚin_progressÚ	completedÚfailedÚ
cancellingÚ	cancelledÚexpired©
r¡   Ú
ValidatingÚ	ScheduledÚ
InProgressÚPartiallyCompletedÚ	CompletedÚFailedÚStoppingÚStoppedÚExpired©r¢   r¥   r£   Ú
finalizingr¤   r¨   r¦   r§   Úoriginal_batch_requestÚidÚobjectÚbatchÚendpointú/v1/chat/completionsÚerrorsrE   rw   rx   Úoutput_file_idÚerror_file_idÚ
created_atÚin_progress_atr¬   Ú
expires_atÚfinalizing_atÚcompleted_atÚ	failed_atÚ
expired_atÚcancelling_atÚcancelled_atÚrequest_countsÚmetadatarX   )ÚjsonÚ	Exceptionr*   rƒ   Ústrr   r   r   ÚintÚtimeÚ%_get_openai_compatible_batch_metadata)r5   rQ   r™   rš   rT   Úresponse_datar+   Újob_arnÚ
status_strÚstatus_mappingÚopenai_statusÚoriginal_requests               r,   Útransform_create_batch_responsez4BedrockBatchesConfig.transform_create_batch_response  s  € ð	MØ?K×?PÑ?PÓ?RˆMð
 '×*Ñ*¨8°RÓ8ˆÜ!$ ]×%6Ñ%6°xÀÓ%MÓ!Nˆ
ð &Ø&Ø&Ø'Ø"-Ø$ØØ$Ø"Ø ñ1
ˆô  $Üðñ	ð ×Ñ˜z¨<Ó8ó 
ˆð #1×"4Ñ"4Ð5MÈrÓ"RÐô ò 
Ùð
áð
ð &×)Ñ)¨*Ð6LÔMð
ñ ð	
ð
 +×.Ñ.¨ÀÔCð
ð /×2Ñ2Ð3FÈÔNð
ñ !ð
ñ  ð
ñ ð
ô œ4Ÿ9™9›;Ô'ð
ð 0:¸\Ò/Iœ3œtŸy™y›{Ô+Ètøð
ñ ð
ñ ð
ñ ð
ñ ð
ñ  ð!
ñ" ð#
ñ$ ð%
ñ&  ð'
ð( ×?Ñ?Ð@P×@TÑ@TÐU_ÐacÓ@dÔeð)
ð 	
øôO ò 	MÜÐGÈÀsÐKÓLÐLûð	Mús   ‚E Å	E.ÅE)Å)E.rÈ   c                 óÌ   — t        | t        «      si S i }| j                  «       D ]<  \  }}|dk(  s|€Œt        |«      }t        |t        «      r|||<   Œ/t	        |«      ||<   Œ> |S )zC
        OpenAI Batch metadata only accepts string values.
        Ú&standard_logging_guardrail_information)Ú
isinstanceÚdictÚitemsrË   r   )rÈ   Úsanitized_metadataÚkeyÚvalueÚstr_keys        r,   rÎ   z:BedrockBatchesConfig._get_openai_compatible_batch_metadataU  s{   € ô
 ˜(¤DÔ)ØˆIà46ÐØ"Ÿ.™.Ó*ò 	@‰JˆC�ØÐ>Ò>À%À-Øä˜#“hˆGÜ˜%¤Ô%Ø.3Ð" 7Ò+ä.8¸Ó.?Ð" 7Ò+ð	@ð "Ð!r7   Úbatch_idc                 ó¦  — t        |«      st        d|› �«      ‚|j                  d«      }t        |«      dk  rt        d|› �«      ‚|d   }t	        j
                  d|«      st        d|› �«      ‚dd	lm} |j                  |d
¬«      }d|› dt        |«      › d|› �}t        ||«      }	| j                  j                  di ||	d¬«      \  }
}d||
d	dœS )a2  
        Transform batch retrieval request for Bedrock.

        Args:
            batch_id: Bedrock job ARN
            optional_params: Optional parameters
            litellm_params: LiteLLM parameters

        Returns:
            Transformed request data for Bedrock GetModelInvocationJob API
        z,Invalid batch_id format. Expected ARN, got: ú:é   zInvalid ARN format: é   z^[a-z][a-z0-9-]*$zInvalid region in ARN: r   NrŸ   )Úsafer\   r]   z/model-invocation-job/r{   ÚGETr}   r�   )r   r*   Úsplitr>   ÚrerC   Úurllib.parseÚparseÚquoter   r    r4   rˆ   )r5   rß   rS   rT   Ú	arn_partsÚregionÚ_ulÚencoded_arnr   r`   r–   Ú_s               r,   Ú transform_retrieve_batch_requestz5BedrockBatchesConfig.transform_retrieve_batch_requestj  s  € ô& ˜hÔ'ÜÐKÈHÈ:ÐVÓWÐWð $Ÿ>™>¨#Ó.ˆ	Üˆy‹>˜AÒÜÐ3°H°:Ð>Ó?Ð?à! !™ˆÜ�x‰xÐ,¨fÔ5ÜÐ6°x°jÐAÓBÐBõ
 	#à ŸY™Y x°b˜YÓ9ˆà˜v˜h aÔ(:¸6Ó(BÐ'CÐCYÐZeÐYfÐgð 	ô
 !AÀÐQ`Ó aˆØ ×-Ñ-×>Ñ>Ø"ØØ%Ø*Øð ?ó 
Ñˆ˜ð ØØ%Øñ	
ð 	
r7   rÑ   c                 óì  ‡— ddl Šdt        dz  dt        dz  fˆfd„} ||j                  d«      �t        |j                  d«      «      nd«      }h d£}||v r3 ||j                  d«      �t        |j                  d«      «      nd«      nd}|d	v r3 ||j                  d
«      �t        |j                  d
«      «      nd«      nd}|dk(  r3 ||j                  d
«      �t        |j                  d
«      «      nd«      nd}|dk(  r3 ||j                  d
«      �t        |j                  d
«      «      nd«      nd}	 ||j                  d«      �t        |j                  d«      «      nd«      }
|||||	|
fS )z+Helper to parse timestamps based on status.r   NÚts_strr&   c                 ó²   •— | sy 	 ‰j                   j                  | j                  dd«      «      }t        |j	                  «       «      S # t
        $ r Y y w xY w)NÚZz+00:00)ÚdatetimeÚfromisoformatÚreplacerÌ   Ú	timestamprÊ   )rò   Údtrõ   s     €r,   Úparse_timestampzJBedrockBatchesConfig._parse_timestamps_and_status.<locals>.parse_timestampª  sS   ø€ ÙØðØ$×-Ñ-×;Ñ;¸F¿N¹NÈ3ÐPXÓ<YÓZ�Ü˜2Ÿ<™<›>Ó*Ð*øÜò Ùðús   †AA
 Á
	AÁAÚ
submitTime>   r«   r¬   rª   ÚlastModifiedTime>   r®   r­   ÚendTimer¯   r±   ÚjobExpirationTime)rõ   rË   rÌ   rƒ   )r5   rÏ   rÑ   rú   r¾   Úin_progress_statesr¿   rÂ   rÃ   rÆ   rÀ   rõ   s              @r,   Ú_parse_timestamps_and_statusz1BedrockBatchesConfig._parse_timestamps_and_status¦  s¹  ø€ ãð	¤C¨$¡Jð 	´3¸±:õ 	ñ ,Ø4A×4EÑ4EÀlÓ4SÐ4_ŒC�×!Ñ! ,Ó/Ô0Ðeió
ˆ
ò %NÐð Ð/Ñ/ñ à ×$Ñ$Ð%7Ó8ÐDô �M×%Ñ%Ð&8Ó9Ô:àôð ð 	ð Ð@Ñ@ñ À×ARÑARÐS\ÓA]ÐAiœC × 1Ñ 1°)Ó <Ô=ÐosÔtàð 	ð ˜XÒ%ñ À×ARÑARÐS\ÓA]ÐAiœC × 1Ñ 1°)Ó <Ô=ÐosÔtàð 	ð ˜YÒ&ñ À×ARÑARÐS\ÓA]ÐAiœC × 1Ñ 1°)Ó <Ô=ÐosÔtàð 	ñ
 ,Ø;H×;LÑ;LÐM`Ó;aÐ;mŒC�×!Ñ!Ð"5Ó6Ô7Ðswó
ˆ
ð
 ØØØØØð
ð 	
r7   c                 ój  — d}|j                  di «      }t        |t        «      r4|j                  di «      }t        |t        «      r|j                  dd«      }d}|j                  di «      }t        |t        «      r4|j                  di «      }t        |t        «      r|j                  dd«      }||fS )z7Helper to extract input and output file configurations.rŸ   rr   rl   rm   Nrs   ro   )rƒ   rØ   rÙ   )r5   rÏ   rE   r�   Ús3_input_configr¼   r“   r‘   s           r,   Ú_extract_file_configsz*BedrockBatchesConfig._extract_file_configsÜ  s»   € ð ˆØ#0×#4Ñ#4Ð5FÈÓ#KÐÜÐ'¬Ô.Ø%6×%:Ñ%:Ð;NÐPRÓ%SˆOÜ˜/¬4Ô0Ø /× 3Ñ 3°G¸RÓ @�ð ˆØ$1×$5Ñ$5Ð6HÈ"Ó$MÐÜÐ(¬$Ô/Ø&8×&<Ñ&<Ð=QÐSUÓ&VÐÜÐ*¬DÔ1Ø!1×!5Ñ!5°g¸rÓ!B�à˜nÐ,Ð,r7   c                 óN  — |j                  d«      }d}|r2ddlm} ddlm}  | ||t        |j                  «      ¬«      gd¬«      }|j                  d	«      |j                  d
«      |j                  d«      |j                  d«      |j                  d«      |j                  d«      dœ}ddl}i }	|j                  «       D ]B  \  }
}|€Œ	t        |t        t        f«      r	 |j                  |«      |	|
<   Œ5t        |«      |	|
<   ŒD ||	fS # t        $ r t        |«      |	|
<   Y Œbw xY w)z/Helper to extract errors and enriched metadata.ÚmessageNr   )ÚErrors)Ú
BatchError)r  ÚcodeÚlist)rZ   r·   rq   ÚclientRequestTokenrp   rt   rz   Ú	vpcConfig)rq   r
  rp   rt   rz   r  )rƒ   Úopenai.types.batchr  Úopenai.types.batch_errorr  rË   Ústatus_coderÉ   rÚ   rØ   rÙ   r	  ÚdumpsrÊ   )r5   rÏ   r™   r  r»   r  r  Úenriched_metadata_rawÚ_jsonÚenriched_metadataÚ_kÚ_vs               r,   Ú_extract_errors_and_metadataz1BedrockBatchesConfig._extract_errors_and_metadatað  s;  € ð '×*Ñ*¨9Ó5ˆØˆÙÝ1Ý;áÙ ¨´s¸<×;SÑ;SÓ7TÔUÐVØôˆFð %×(Ñ(¨Ó3Ø"/×"3Ñ"3Ð4HÓ"IØ$×(Ñ(¨Ó3Ø$×(Ñ(¨Ó3Ø&3×&7Ñ&7Ð8PÓ&QØ&×*Ñ*¨;Ó7ñ8
Ðó 	à35ÐØ+×1Ñ1Ó3ò 		0‰FˆB�ØˆzØÜ˜"œt¤T˜lÔ+ð4Ø,1¯K©K¸«OÐ% bÒ)ô ),¨B«Ð! "Ò%ð		0ð Ð(Ð(Ð(øô !ò 4Ü,/°«GÐ% bÓ)ð4ús   Ã!D
Ä
D$Ä#D$c                 ót  — ddl m} 	 |j                  «       }|j                  dd«      }t        |j                  dd«      «      }	d	d	d
d
dddddddœ
}
t        t        d   |
j                  |	d	«      «      }| j                  ||	«      \  }}}}}}| j                  |«      \  }}| j                  ||«      \  }}t        d(i d|“dd“dd“d|“d|“dd“d|“d|“dd“d|xs t        t        j                  «       «      “d|“d|“d d“d!|“d"|“d#d“d$d“d%|“d&d“d'|“ŽS # t        $ r}t	        d|› �«      ‚d}~ww xY w))zO
        Transform Bedrock batch retrieval response to LiteLLM format.
        r   )ÚBedrockGetBatchResponser�   Nrž   rŸ   r    r¡   r¢   r£   r¤   r¥   r¦   r§   r¨   r©   r³   r¶   r·   r¸   r¹   rº   r»   rE   rw   rx   r¼   r½   r¾   r¿   rÀ   rÁ   rÂ   rÃ   rÄ   rÅ   rÆ   rÇ   rÈ   rX   )Úlitellm.types.llms.bedrockr  rÉ   rÊ   r*   rƒ   rË   r   r   r   r  r  r   rÌ   rÍ   )r5   rQ   r™   rš   rT   r  rÏ   r+   rÐ   rÑ   rÒ   rÓ   r¾   r¿   rÂ   rÃ   rÆ   rÀ   rE   r¼   r»   r  s                         r,   Ú!transform_retrieve_batch_responsez6BedrockBatchesConfig.transform_retrieve_batch_response  sþ  € õ 	Gð	MØ<H×<MÑ<MÓ<OˆMð '×*Ñ*¨8°RÓ8ˆÜ!$ ]×%6Ñ%6°xÀÓ%MÓ!Nˆ
ð &Ø&Ø&Ø'Ø"-Ø$ØØ$Ø"Ø ñ1
ˆô  $Üðñ	ð ×Ñ˜z¨<Ó8ó 
ˆð, ×-Ñ-¨m¸ZÓHñ	
ØØØØØØð )-×(BÑ(BÀ=Ó(QÑ%ˆ�~ð %)×$EÑ$EÀmÐUaÓ$bÑ!ˆÐ!äò 
Ùð
áð
ñ ,ð
ñ ð	
ñ
 (ð
ñ $ð
ñ !ð
ñ *ð
ñ ð
ð "Ò5¤S¬¯©«Ó%5øð
ñ *ð
ñ "ð
ñ ð
ñ &ð
ñ  ð
ñ  ð!
ñ" ð#
ñ$ &ð%
ñ&  ð'
ñ( 'ð)
ð 	
øôc ò 	MÜÐGÈÀsÐKÓLÐLûð	Mús   ˆD Ä	D7Ä$D2Ä2D7Úerror_messager  c                 ó<   — | j                   j                  |||«      S )zH
        Get Bedrock-specific error class using common utility.
        )r4   Úget_error_class)r5   r  r  rP   s       r,   r  z$BedrockBatchesConfig.get_error_classm  s   € ð × Ñ ×0Ñ0°ÀÈWÓUÐUr7   )NN)%Ú__name__Ú
__module__Ú__qualname__Ú__doc__r3   Úpropertyr   r:   ÚclassmethodrË   rD   ÚboolrL   rO   rÙ   r	  r   rY   r   rc   r   r˜   r	   r   rÕ   ÚstaticmethodrÎ   rð   r   r  r  r  rÌ   r   r   r  Ú__classcell__)r6   s   @r,   r/   r/   ?   sº  ø„ ñô4ð ð$ \ò $ó ð$ð ð+¸#ð +À#ÈÁ*ò +ó ð+ð ð	LÀÀdÁ
ð 	LÈtò 	Ló ð	Lð ð
¸Sð 
ÀSò 
ó ð
ð& #Ø#ñàðð ðð Ð'Ñ(ð	ð
 ðð ðð �t‘ðð ˜‘*ðð 
óð" à˜‘*ð ð �t‘ð ð ð	 ð
 ð ð ð ð !ð ð 
ó ð0q
àðq
ð .ðq
ð ð	q
ð
 ðq
ð 
ˆc�3ˆh‰óq
ðfH
à�T‰zðH
ð ðH
ð )ð	H
ð
 ðH
ð 
óH
ðT ð"¸ð "ÀÀSÈ#ÀXÁò "ó ð"ð(:
àð:
ð ð:
ð ð	:
ð
 
ˆc�3ˆh‰ó:
ðx4
Àcó 4
òl-ò(%)ðNT
à�T‰zðT
ð ðT
ð )ð	T
ð
 ðT
ð 
óT
ðlV¨Sð V¸sð VÈTÐT[É^ð VÐ`p÷ Vr7   r/   )9r…   rç   rÍ   Útypingr   r   r   r   r   Úhttpxr   r	   Úpydanticr
   r   Ú(litellm.litellm_core_utils.aws_partitionr   r   Ú1litellm.litellm_core_utils.cloud_storage_securityr   Ú*litellm.litellm_core_utils.safe_json_dumpsr   Ú,litellm.llms.base_llm.batches.transformationr   Ú)litellm.llms.base_llm.chat.transformationr   r  r   r   r   r   r   r   r   Úlitellm.types.llms.openair   r   Úlitellm.types.utilsr   r   Úbase_aws_llmr   r4   r   r    r!   Ú*litellm.litellm_core_utils.litellm_loggingr"   r›   Úcompiler#   Ú__annotations__r	  r$   r·   r-   r/   rX   r7   r,   ú<module>r4     sË   ðÜ 	Û 	Û ß ;Õ ;ç #ß 1ç Wõõ BÝ JÝ F÷÷ ñ ÷÷ ;å %÷ñ ñ ÝWð -7¨B¯J©JØ[ó-Ð " Eó ñ ?JÈ$ÈzÑJZÓ>[Ð �u˜[¨¨jÑ)9Ñ:Ñ;Ó [ð Vð °°ZÑ0@ó ôrV˜:Ð'8õ rVr7   