
    _jd                        S r SSKrSSKrSSKJr  SSKJrJrJrJ	r	J
r
Jr  SSKJrJr  SSKJr  SSKJrJrJrJr  SS	KJr  \" 5       r\
\\\\\	4   r1 S
krS\S\\   4S jrS\\\4   SS4S jrS\\   S\\\4   4S jr   SS\S\\   S\\   S\\\\\\4   4   4S jjr! SSSS.S\S\\   S\\   S\\   S\\\\4   \\\\\\4   4   4   4
S jjjr" SSSS.S\S\S\\   S\\   S\\   S\4S jjjr#g)z>
Parse (multipart upload) functionality for Firecrawl v2 API.
    N)Path)OptionalDictAnyBinaryIOUnionTuple   )DocumentParseOptions)normalize_document_input)
HttpClienthandle_response_errorprepare_scrape_optionsvalidate_scrape_options)get_version>   branding
screenshotchangeTrackingformat_itemreturnc                     [        U [        5      (       a  U $ [        U [        5      (       a*  U R                  S5      n[        U[        5      (       a  U$ S $ g )Ntype)
isinstancestrdictget)r   fmt_types     O/home/rurouni/.local/lib/python3.13/site-packages/firecrawl/v2/methods/parse.py_extract_format_typer       sJ    +s##+t$$??6*%h44x>$>    options_payloadc                    U R                  S5      n[        U[        5      (       a  [        U5      S:  a  [	        S5      eU R                  S5      n[        U[
        [        45      (       a  US:  a  [	        S5      eU R                  S5      b  [	        S5      eU R                  S5      (       a  [	        S	5      eU R                  S
5      nUS;  a  [	        S5      eU R                  S5      =(       d    /  HE  n[        U5      nU[        ;   d  M  US:X  a  [	        S5      eUS:X  a  [	        S5      e[	        S5      e   g )Nactionsr   z%Parse uploads do not support actions.waitForz%Parse uploads do not support waitFor.locationz0Parse uploads do not support location overrides.mobilez.Parse uploads do not support mobile rendering.proxy)Nautobasicz9Parse uploads only support proxy values of auto or basic.formatsr   z-Parse uploads do not support change tracking.r   z/Parse uploads do not support screenshot output.z-Parse uploads do not support branding output.)	r   r   listlen
ValueErrorintfloatr    UNSUPPORTED_PARSE_FORMATS)r"   r$   wait_forr(   fmtr   s         r   _validate_parse_options_payloadr4      s-   !!),G'4  S\A%5@AA""9-H(S%L))hl@AA:&2KLL8$$IJJ(E++TUU""9-33',00++ !PQQ<' !RSSLMM 4r!   optionsc                 d   0 nU b  [        U 5      nUbx  [        U5      =(       d    0 n[        U5        UR                  SS 5        UR                  SS 5        UR                  SS 5        UR                  SS 5        UR	                  U5        UR                  S5      =(       d	    S[         3US'   U$ )NmaxAgeminAgestoreInCachelockdownoriginzpython-sdk@)r   r   r4   popupdater   version)r5   request_data	validatedoptss       r   _prepare_parse_options_payloadrB   ;   s     $&L+G4	 ))4:D+D1HHXt$HHXt$HH^T*HHZ&%)--h7R[	;RLr!   filefilenamecontent_typec                 d   [        U [        [        45      (       ai  [        U 5      nUR                  5       (       a  UR	                  5       (       d  [        SU 35      eUR                  5       nU=(       d    UR                  nO[        U [        [        45      (       a  [        U 5      nU=(       d    SnO[        U S5      (       aw  U R                  5       n[        U[        5      (       a  UR                  S5      nO[        U5      n[        U SS 5      nU=(       d    U(       a  [        U5      R                  OSnO[        S5      eU(       a  UR                  5       (       d  [        S5      eUR                  5       nU=(       d"    [        R                   " U5      S   =(       d    S	nS
XTU40$ )NzFile path does not exist: uploadreadzutf-8namezVUnsupported file input type. Use a file path, bytes, bytearray, or binary file object.zfilename cannot be emptyr   zapplication/octet-streamrC   )r   r   r   existsis_filer.   
read_bytesrI   bytes	bytearrayhasattrrH   encodegetattrstrip	mimetypes
guess_type)	rC   rD   rE   	file_path
file_bytesresolved_filename	raw_bytesguessed_nameresolved_content_types	            r   _prepare_file_payloadr[   P   ss   
 $d$$J	!!):):)<)<9)EFF))+
$6		D5),	-	-4[
$0	v		IIK	i%%"))'2Jy)JtVT2$_Ll);)@)@V^qrr$5$;$;$=$=344)//1 	& 1215	&%  	"0EF r!   rD   rE   c                d    [        U5      nS[        R                  " U5      0n[        U UUS9nXV4$ )Nr5   r\   )rB   jsondumpsr[   )rC   r5   rD   rE   r?   multipart_fieldsmultipart_filess          r   _prepare_parse_requestrb   x   s@     2':L!4::l#;<+!O
 ,,r!   clientc                J   [        UUUUS9u  pVU R                  SXVS9nUR                  (       d  [        US5        UR	                  5       nUR                  S5      (       d  [        UR                  SS5      5      eUR                  S0 5      n	[        U	5      n
[        S	0 U
D6$ )
Nr\   z	/v2/parse)datafilesparsesuccesserrorzUnknown error occurredre    )	rb   post_multipartokr   r^   r   	Exceptionr   r   )rc   rC   r5   rD   rE   fieldsrf   responsebodydocument_data
normalizeds              r   rg   rg      s     +!	MF $$[v$KH;;h0==?D88I*BCDDHHVR(M)-8J!j!!r!   )NN)N)$__doc__r^   rS   pathlibr   typingr   r   r   r   r   r	   typesr   r   utils.normalizer   utilsr   r   r   r   utils.get_versionr   r>   r   rM   rN   ParseFileInputr1   r    r4   rB   r[   rb   rg   rj   r!   r   <module>r{      s      > > * 6 f f +
-sE9dH<=H c hsm NT#s(^ N N:l#	#s(^. #"&%
%sm% 3-% 
#uS%_%
%&	%T '+- #"&-
-l#- sm	-
 3-- 4S>4U3s?%; ;<<=-( '+"
 #"&""
" l#"
 sm" 3-" "r!   