
    q&f"                     x    d dl Z d dlmZmZ d dlmZmZ ddlmZ  G d de	      Z
 G d d	e
      Z G d
 d      Zy)    N)encodingutil)procutil
stringutil   )
pywatchmanc                   >    e Zd ZddZd Z ej                  e      Zy)Unavailablec                 Z    || _         || _        | j                   dk(  rd| _        || _        y )Ns   timed out waiting for responseF)msgwarn
invalidate)selfr   r   r   s       @/usr/lib/python3/dist-packages/hgext/fsmonitor/watchmanclient.py__init__zUnavailable.__init__   s+    	8888DI$    c                 V    | j                   rd| j                  z  S d| j                  z  S )Ns!   warning: Watchman unavailable: %ss   Watchman unavailable: %s)r   r   r   s    r   	__bytes__zUnavailable.__bytes__   s'    997$((BB.99r   N)TF)__name__
__module____qualname__r   r   r   	strmethod__str__ r   r   r
   r
      s     %: !h  +Gr   r
   c                        e Zd Z fdZ xZS )WatchmanNoRootc                 :    || _         t        t        |   |       y N)rootsuperr   r   )r   r    r   	__class__s      r   r   zWatchmanNoRoot.__init__)   s    	nd,S1r   )r   r   r   r   __classcell__)r"   s   @r   r   r   (   s    2 2r   r   c                   \    e Zd Zd
dZd Zd Zd Zd Zej                  d        Z
d Zd Zy	)clientc                     d }| j                   sd}d}| j                   |j                  dd      v rd| j                   z  }d}|rt        |      || _        d | _        || _        || _        d| _        y )Ns   couldn't get userT	   fsmonitors   blacklistuserss   user %s in blacklistF)_user
configlistr
   _timeout_watchmanclient_root_ui
_firsttime)r   uir    timeouterrr   s         r   r   zclient.__init__/   sw    zz&CD::|5FGG)DJJ6CDc4((#
r   c                 b    || _         | j                  | j                  j                  |       y y r   )r*   r+   
setTimeout)r   r0   s     r   
settimeoutzclient.settimeoutA   s.    +  ++G4 ,r   c                 n    | j                  d      }t        |d      st        dd      |j                  S )Ns   clockclocks#   clock result is missing clock valueT)r   )commandhasattrr
   r6   )r   results     r   getcurrentclockzclient.getcurrentclockF   s8    h'vw'64  ||r   c                     d | _         y r   )r+   r   s    r   clearconnectionzclient.clearconnectionN   s
    #r   c                 :    | j                   d uxs | j                  S r   )r+   r.   r   s    r   	availablezclient.availableQ   s    ##4/B4??Br   c                 J    	 t        j                         S # t        $ r Y y w xY wr   )getpassgetuserKeyErrorr   s    r   r(   zclient._userT   s&    	??$$ 		s    	""c                    |d   | j                   f|dd  z   }	 | j                  ]d| _        | j                  j	                  dd      }t        j                  | j                  dt        j                  |            | _         | j                  j                  | S # t
        j                  $ rn}d|j                  v r3t        | j                   t        j                  |j                              t!        t        j                  |j                              d }~wt
        j"                  $ r#}t!        t        j                  |            d }~ww xY w)	Nr   r   Fr'   s   watchman_exeT)r0   useImmutableBserbinpathzunable to resolve root)r,   r+   r.   r-   
configpathr   r%   r*   r   tonativestrqueryCommandErrorr   r   r   forcebytestrr
   WatchmanError)r   argswatchmanargswatchman_exeexs        r   _commandzclient._command\   s    Q,tABx7	;##+"'#xx22 /  (2'8'8 MM%)$00>($
 .4''--|<<&& 	?'2661$JJ
 7 7 ?  j55bff=>>'' 	;j55b9::	;s%   BB E.A)DE-EEc                     	 	  | j                   | S # t        $ r# | j                  d        | j                   | cY S w xY w# t        $ r	 d | _         w xY w)Ns   watch)rP   r   r
   r+   )r   rL   s     r   r7   zclient.commands   sh    	,$t}}d++! , h'$t}}d++	,
  	 $(D 		s    )>A >A AN)g      ?)r   r   r   r   r4   r:   r<   r>   r   propertycacher(   rP   r7   r   r   r   r%   r%   .   s@    $5
$C 
 ;.r   r%   )r@   	mercurialr   r   mercurial.utilsr   r    r   	Exceptionr
   r   r%   r   r   r   <module>rW      s=    
 ,) ,"2[ 2R Rr   