+
    Vi(                         R t ^ RIt^ RIt^ RIt^ RIt^ RIHtHtHtH	t	H
t
 ^ RIt^ RIHtHtHt ^RIHtHtHt ^RIHt ]	R,          t ! R R4      tR# )	z
Async WebSocket watcher with async iterator interface for v2 jobs.

Usage:
    async for snapshot in AsyncWatcher(client, job_id, kind="crawl"):
        print(snapshot.status)
N)AsyncIteratorDictListLiteralOptional)ConnectionClosedConnectionClosedOKConnectionClosedError)BatchScrapeJobCrawlJobDocument)normalize_document_inputc                      a  ] tR t^t o RRR^RR/V 3R lR lltV 3R lR	 ltV 3R
 lR ltV 3R lR ltR tV 3R lR lt	R t
RR/V 3R lR lltRtV tR# )AsyncWatcherkindcrawlpoll_intervaltimeoutNc                L   < V ^8  d   QhRS[ RS[RS[RS[RS[S[,          RR/# )   clientjob_idr   r   r   returnN)objectstrJobKindintr   )format__classdict__s   "Y/home/ubuntu/hermes-agent/venv/lib/python3.14/site-packages/firecrawl/v2/watcher_async.py__annotate__AsyncWatcher.__annotate__   sK     $ $$ $
 $ $ #$ 
$    c               :   Wn         W n        W0n        WPn        \	        R \        V4      4      V n        \        VRR4      pVe&   \        VRR4      V n        \        VRR4      V n	        M$\        VRR4      V n        \        VRR4      V n	        RV n
        . V n        R# )        http_clientNapi_urlapi_keyscraping)_client_job_id_kind_timeoutmaxfloat_poll_intervalgetattr_api_url_api_key_status_data)selfr   r   r   r   r   r%   s   &&&$$$ r   __init__AsyncWatcher.__init__   s     
%(eM.B%CfmT:"#KDADM#KDADM $FIt<DM#FIt<DM&!#
r"   c                0   < V ^8  d   QhRS[ S[,          /# r   r   r   r   )r   r   s   "r   r    r!   4   s      =0 r"   c                "    V P                  4       # N)_iterater5   s   &r   	__aiter__AsyncWatcher.__aiter__4   s    }}r"   c                    < V ^8  d   QhRS[ /# r9   r   )r   r   s   "r   r    r!   7   s     ; ;s ;r"   c                    V P                   '       g   \        R 4      hV P                   P                  RR4      P                  RR^4      pV P                  R8X  d   V RV P                   2# V RV P                   2# )z)API URL is required for WebSocket watcherzhttps://zwss://zhttp://zws://r   z
/v2/crawl/z/v2/batch/scrape/)r1   
ValueErrorreplacer+   r*   )r5   ws_bases   & r   _build_ws_urlAsyncWatcher._build_ws_url7   su    }}}HII--''
H=EEiQXZ[\:: Yj77+DLL>::r"   c                0   < V ^8  d   QhRS[ S[,          /# r9   r:   )r   r   s   "r   r    r!   ?   s     l' l'f 5 l'r"   c                 "   V P                  4       p. pV P                  '       d!   VP                  R RV P                   234        \        P                  ! VRVR7      ;_uu_4       GRj  xL
 pV P
                  '       d5   \        P                  ! 4       P                  4       V P
                  ,           MRp V P                  4       G Rj  xL
 pV5x  VP                  R9   d    RRR4      GRj  xL
  R#    VeU   \        RV\        P                  ! 4       P                  4       ,
          4      pV^ 8  d   \        V P                  V4      MRpMV P                  p\        P                  ! VP!                  4       VR7      G Rj  xL
 p \.        P0                  ! T4      p
T
P3                  R4      pTR	8X  dW   RT n        T P6                  R
8X  d   \9        R^ ^ ^ RR. R7      5x  M\;        R^ ^ ^ RR. R7      5x   RRR4      GRj  xL
  R# TR8X  dm   T
P3                  R/ 4      pTP3                  RT P4                  4      T n        TP3                  R. 4      ;'       g    . pT P<                  P?                  T4       EMTR8X  dD   T
P3                  R4      p\A        T\B        4      '       d   T P<                  P                  T4       MTR8X  d   RT n        T
P3                  R/ 4      ;'       g    / pTP3                  R. 4      ;'       g    . p\A        T\D        4      '       dE   T'       d=   T F6  p\A        T\B        4      '       g   K  T P<                  P                  T4       K8  	  T PG                  RYP<                  R7      5x   RRR4      GRj  xL
  R# T
P3                  RT
4      pTP3                  RT
P3                  RT P4                  4      4      pT PG                  TTR7      pT5x  TR9   g   EK	   RRR4      GRj  xL
  R#  EL ELN EL*  \         d     EL3i ; i EL  \        P"                   d    T P%                  4       G Rj  xL 
 p	T	e+   T	5x  T	P                  R9   d    RRR4      GRj  xL 
  R# Te=   \        P                  ! 4       P                  4       T8  d    RRR4      GRj  xL 
  R#  EK  \&        \(        \*        3 d    \        P                  ! 4       T P
                  ;'       g    ^,           p  T P                  4       G Rj  xL 
 p	T	5x  T	P                  R9   d    RRR4      GRj  xL 
  R# M$  \         d      RRR4      GRj  xL 
  R# i ; i\        P                  ! 4       T8  d    RRR4      GRj  xL 
  R# \        P,                  ! ^4      G Rj  xL 
  K  i ; i  \         d     EK  i ; i EL ELP EL  + GRj  xL 
 '       g   i     R# ; i  \         d    \        P                  ! 4       T P
                  ;'       g    ^,           p  T P                  4       G Rj  xL 
 p	T	5x  T	P                  R9   d    R# M  \         d      R# i ; i\        P                  ! 4       T8  d    R# \        P,                  ! ^4      G Rj  xL 
  K  i ; i5i)AuthorizationzBearer N)max_sizeadditional_headers	completedfailedr$   )r   typeerrorr   statusrN   totalcredits_used
expires_atnextdatacatchuprX   rS   documentdone)rS   payloaddocs_override)rS   r\   )rN   rO   	cancelled)$rG   r2   append
websocketsconnectr,   asyncioget_event_looptime_fetch_job_statusrS   	Exceptionr-   minr/   wait_forrecvTimeoutError_safe_fetchr   r   r	   sleepjsonloadsgetr3   r+   r   r
   r4   extend
isinstancedictlist_make_snapshot)r5   uriheaders_list	websocketdeadlinepre	remainingr   msgjobbodymsg_typeddocs_indocraw_payloadr\   
status_strsnapshots   &                  r   r=   AsyncWatcher._iterate?   s      "===GDMM?2K LMe	'!))#Q]^^^bkNRmmm711388:T]]Jae $ 6 6 88CIzz%II _^^ J
 3#/(+CG<R<R<T<Y<Y<[1[(\IMVYZ]c$*=*=y&I`cG&*&9&9G$+$4$4Y^^5Ew$WW2!#zz#  $xx/H7*'/::0"*(aq_`mqx|  DF  #G  G"0AUVefsw  C  JL  #M  Mq _^^r "Y. HHVR0'(uuXt||'D"#%%"3"9"9r

))'2!Z/"hhv.%c400 JJ--c2!V+'2&*hhvr&:&@&@b"-//&""="C"C%gt44'.#-c4#8#8$(JJ$5$5c$: (/ #11kisis1tt] _^^b #hhvt4G!(Xtxx$,,7W!XJ#22*g2VH"N!%IIm _^^ 9	 _ !  X"// 	!$($4$4$666?"%I"zz-QQ &3 _^^4 $/G4J4J4L4Q4Q4SW_4_"7 _^^8 !.0@BWX 3#'99;$--2E2E2#F"',0,B,B,D&D&D&)	#&::1U#U$*K _^^H $V#, ' &O _^^L'#yy{h6 &S _^^T #*--"2223  % ! ![ _^^^^n  	'yy{dmm&9&9r:H $ 6 6 888CIzz%II J  99;(*mmA&&&	's  A[%X -P.X 1A	W5;P"PP"*X 5P6X :[<W5?BP7P4P7W(AW5X W,X [AW5)BW5:W5 W57W5A W5X W/ X $[&AW5W5X W2X [X P"X "P1-W50P11W54P77(WQ"
 W?W5 X RX [,W?W5 X SX [W5W+'W
WU"1T4
2U"W5X UX [!W"V	-W.W5/X :U=;X  [V	W W5!X ,V/-X 2[4WW
WW5W)$W5(W))W5,X /X 2X 5X	;W><
X	X		X [X 1[
[Z"Y%#Z>[[Z[[Z[/[2[[[[c                   "   V P                   R 8X  d   V P                  R4      G Rj  xL
 # V P                  R4      G Rj  xL
 #  L L5i)r   get_crawl_statusNget_batch_scrape_status)r+   _call_status_methodr>   s   &r   re   AsyncWatcher._fetch_job_status   sD     :: 112DEEE--.GHHH FHs!   &A
AA
AA
A
c                    < V ^8  d   QhRS[ /# )r   method_namerB   )r   r   s   "r   r    r!      s     D DS Dr"   c                  "   \        V P                  VR 4      pVeh    V! V P                  4      pVe)   \        P
                  ! V4      '       d   VG R j  xL
 # V# \        P                  ! W P                  4      G R j  xL
 # \        V P                  RR 4      pVex   \        WAR 4      pVeh    V! V P                  4      pVe)   \        P
                  ! V4      '       d   VG R j  xL
 # V# \        P                  ! W P                  4      G R j  xL
 # \        RV 24      h  \         d    R p ELi ; i L L  \         d    R p Li ; i Lg L?5i)Nv2zClient does not expose )	r0   r)   r*   	TypeErrorinspectisawaitablerb   	to_threadRuntimeError)r5   r   methresultr   s   &&   r   r    AsyncWatcher._call_status_method   s;    t||[$7dll+ !&&v..!'<' **4>>> T\\4.>2D1D"!$,,/F %**622%+|+!M$..t\\BBB4[MBCC1   ( ? ! "!F"  ,Bs   ED% EED9)E D;/E1D= E#E(E))EEE%D62E5D66E;E=E
EEEEc                d   "    V P                  4       G R j  xL
 #  L  \         d     R # i ; i5ir<   )re   rf   r>   s   &r   rk   AsyncWatcher._safe_fetch   s0     	//1111 		s(   0  0 -0-0r]   c                L   < V ^8  d   QhRS[ RS[RS[S[S[,          ,          /# )r   rS   r\   r]   )r   r   r   r   )r   r   s   "r   r    r!      s.     
 
 
d 
8TXY]T^K_ 
r"   c          
     v   . pVe   TMVP                  R. 4      ;'       g    . pV F@  p\        V\        4      '       g   K  \        V4      pVP	                  \        R	/ VB 4       KB  	  V P                  R8X  da   \        VVP                  R^ 4      VP                  R^ 4      VP                  R^ 4      VP                  R4      VP                  R4      VR7      # \        VVP                  R^ 4      VP                  R^ 4      VP                  R4      VP                  R4      VP                  R4      VR7      # )
NrX   r   rN   rT   creditsUsed	expiresAtrW   rR    )	ro   rq   rr   r   r_   r   r+   r   r
   )r5   rS   r\   r]   docssource_docsr   r   s   &$$$    r   rt   AsyncWatcher._make_snapshot   s   '4'@mgkkRXZ\F]FcFcacC#t$$,S1HMqM* 
 :: !++k15kk'1-$[[:";;{3[[(  kk+q1++gq) ]3{{;/V$
 	
r"   )	r2   r1   r)   r4   r*   r+   r/   r3   r,   )__name__
__module____qualname____firstlineno__r6   r?   rG   r=   re   r   rk   rt   __static_attributes____classdictcell__)r   s   @r   r   r      s}     $
  $ $ "&$ $6 ; ;l' l'\I
D D@
bf 
 
 
r"   r   )r   batch)__doc__rb   r   rm   rd   typingr   r   r   r   r   r`   websockets.exceptionsr   r   r	   typesr
   r   r   utils.normalizer   r   r   r   r"   r   <module>r      sG        ? ?  ] ] 5 5 5
"
#Z
 Z
r"   