
    _jM                         S r SSKJrJrJr  SSKJr  S\\\4   S\\\4   4S jrS\\\4   S\\\4   4S	 jr	S
\\\4   S\S\\\4   4S jr
g)zQ
Normalization helpers for v2 API payloads to avoid relying on Pydantic aliases.
    )AnyDictList   )DocumentMetadatamdreturnc                    0 SS_SS_SS_SS_S	S
_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS _S!S"_0 S#S$_S%S&_S'S(_S)S*_S+S,_S-S._S/S0_S1S2_S3S4_S5S6_S7S8_S9S:_S;S<_S=S>_S?S@_SASB_SCSD_ESESF0En0 nU R                  5        H  u  p4UR                  X35      nXBU'   M     [        UR                  S45      [        5      (       a   [	        US4   5      US4'   U$ U$ ! [
         a     U$ f = f)Gzo
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         Q/home/rurouni/.local/lib/python3.13/site-packages/firecrawl/v2/utils/normalize.py_map_metadata_keysr]   	   sK   
':' 	)' 		'
 	:' 	:' 	' 	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
A!E
 
 #''-(#..	!$S%7!8C
 J3J	  	 J		s   C 
C'&C'docc                    [        U 5      nSU;   a  SU;  a  UR                  S5      US'   SU;   a  SU;  a  UR                  S5      US'   UR                  S5      n[        U[         5      (       a%  [	        U5      n [
        R                  " U5      US'   UR                  S5      n[        U[         5      (       a   SU;   a  SU;  a  UR                  S5      US'   U$ ! [         a    X1S'    NXf = f)	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^$  	,%+z"	,s   >C C0/C0resultresult_typec                     US:X  a  SSSS.nOUS:X  a  SS0nOUS:X  a  0 nO0 n0 nU R                  5        H  u  pEUR                  XD5      nXSU'   M     U$ )	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   sw    h#')

 
	
 
	CA!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|   