
    SjM                         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
y)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 }| j                         D ]  \  }}|j                  ||      }|||<    t        |j                  d4      t              r	 t	        |d4         |d4<   |S |S # t
        $ r Y |S w xY w)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         O/root/.hermes/venv/lib/python3.12/site-packages/firecrawl/v2/utils/normalize.py_map_metadata_keysr]   	   sS   
':' 	)' 		'
 	:' 	:' 	' 	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!8C
 J3J	  	 J		s    C 	C"!C"docc                    t        |       }d|v rd|vr|j                  d      |d<   d|v rd|vr|j                  d      |d<   |j                  d      }t        |t               r$t	        |      }	 t        j                  |      |d<   |j                  d      }t        |t               rd|v rd|vr|j                  d      |d<   |S # t        $ r ||d<   Y Ow xY w)	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   s     cJJ:Z#?!+	!:
::%*;:*M(27G(H
$%	
	#B"d#B'	,%5%D%DV%LJz"
 ~~j)H(D!H$x)G'/||M'BH^$  	,%+Jz"	,s   1C CC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 }| j                         D ]  \  }}|j                  ||      }|||<    |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|   