
    iM                         d Z ddlmZmZmZ ddlmZ deeef         deeef         fdZdeeef         deeef         fd	Z	d
eeef         dedeeef         fdZ
dS )zQ
Normalization helpers for v2 API payloads to avoid relying on Pydantic aliases.
    )AnyDictList   )DocumentMetadatamdreturnc                    i ddddddddd	d
dddddddddddddddddddddd d!d"i d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFi}i }|                                  D ] \  }}|                    ||          }|||<   !t          |                    d4          t                    r*	 t	          |d4                   |d4<   n# t
          $ r Y nw xY w|S )Gz{
    Convert API v2 camelCase metadata keys to snake_case expected by DocumentMetadata.
    Leaves unknown keys as-is.
    ogTitleog_titleogDescriptionog_descriptionogUrlog_urlogImageog_imageogAudioog_audioogDeterminerog_determinerogLocale	og_localeogLocaleAlternateog_locale_alternate
ogSiteNameog_site_nameogVideoog_videodcTermsCreateddc_terms_createddcDateCreateddc_date_createddcDatedc_datedcTermsTypedc_terms_typedcTypedc_typedcTermsAudiencedc_terms_audiencedcTermsSubjectdc_terms_subject	dcSubject
dc_subjectdcDescriptiondc_descriptiondcTermsKeywordsdc_terms_keywordsmodifiedTimemodified_timepublishedTimepublished_time
articleTagarticle_tagarticleSectionarticle_section	sourceURL
source_url
statusCodestatus_codescrapeId	scrape_idnumPages	num_pagescontentTypecontent_type	proxyUsed
proxy_used
cacheStatecache_statecachedAt	cached_atcreditsUsedcredits_usedconcurrencyLimitedconcurrency_limitedconcurrencyQueueDurationMsconcurrency_queue_duration_ms)itemsget
isinstancestrint
ValueError)r   mappingoutkvsnakes         f/home/agentuser/.hermes/hermes-agent/venv/lib/python3.11/site-packages/firecrawl/v2/utils/normalize.py_map_metadata_keysr]   	   s{   
':' 	)' 		'
 	:' 	:' 	' 	K' 	2' 	n' 	:' 	,' 	*' 	)'  	!'" 	)#'$ 	.%'& 	,'' '( 	\)'* 	)+', 	.-'. 	/'0 	)1'2 	m3'4 	+5'8 	\9': 	m;'< 	K='> 	K?'@ 	~A'B 	\C'D 	mE'F 	KG'H 	~I'J 	3K' 'L 	%&EM' 'GR C

  1Aq!!E

 #''-((#.. 	!$S%7!8!8C 	 	 	D	 Js   C( (
C54C5docc                    t          |           }d|v rd|vr|                    d          |d<   d|v rd|vr|                    d          |d<   |                    d          }t          |t                     r=t	          |          }	 t          j        |          |d<   n# t          $ r ||d<   Y nw xY w|                    d          }t          |t                     r d|v rd|vr|                    d          |d<   |S )	a  
    Normalize a raw Document dict from the API into the Python SDK's expected shape:
    - Convert top-level keys rawHtml->raw_html, changeTracking->change_tracking
    - Convert metadata keys from camelCase to snake_case
    - Convert branding.colorScheme to branding.color_scheme
    rawHtmlraw_htmlchangeTrackingchange_trackingmetadatabrandingcolorSchemecolor_scheme)dictpoprR   rS   r]   r   model_validate	Exception)r^   
normalizedr   mappedre   s        r\   normalize_document_inputrn   G   s7    cJJ:Z#?#?!+	!:!:
::%%*;:*M*M(27G(H(H
$%	
	#	#B"d ,#B''	,%5%DV%L%LJz"" 	, 	, 	,%+Jz"""	, ~~j))H(D!! CH$$x)G)G'/||M'B'BH^$s   
B" "B43B4resultresult_typec                     |dk    rdddd}n|dk    rddi}n|dk    ri }ni }i }|                                  D ] \  }}|                    ||          }|||<   !|S )	Nimages	image_urlimage_widthimage_height)imageUrl
imageWidthimageHeightnewsrv   web)rQ   rR   )ro   rp   rW   rX   rY   rZ   r[   s          r\   _map_search_result_keysr{   h   s    h#')
 

 
		
 
		C  1Aq!!E

J    N)__doc__typingr   r   r   typesr   rT   r]   rn   r{    r|   r\   <module>r      s     # " " " " " " " " " $ $ $ $ $ $;4S> ;d38n ; ; ; ;|$sCx. T#s(^    BDcN  cSVh      r|   