
    %j                     ^   d dl mZ d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
mZmZmZ d dlmZmZ d dlmZ dZdZd	Z G d
 de      Z G d de      Z G d de      Z G d de      Zeefdededej<                  fdZdeee
f   de fdZ!dede"fdZ#eedfdedede"deee f   fdZ$y)    )absolute_importN)IncompleteRead)AnyDictOptionalTuple)errorrequest)SERVER_PROTOCOL_VERSIONz	127.0.0.1iE  g      >@c                       e Zd ZdZy)
U2CliErrorz'Base error for u2cli client operations.N__name__
__module____qualname____doc__     a/var/www/oz-panel.ru/ozpay-pub/venv/lib/python3.12/site-packages/uiautomator2/agent_cli/client.pyr   r      s    1r   r   c                       e Zd ZdZy)ServerNotRunningErrorz4Raised when the local u2cli server is not reachable.Nr   r   r   r   r   r      s    >r   r   c                       e Zd ZdZy)RemoteErrorz=Raised when the local u2cli server returns an error response.Nr   r   r   r   r   r      s    Gr   r   c                       e Zd ZeefdedefdZedefd       Z	de
defdZdefd	ed
eeeef      defdZddefdZdefdZy)U2CliClienthostportc                      || _         || _        y )Nr   r   )selfr   r   s      r   __init__zU2CliClient.__init__"   s    		r   returnc                 8    d| j                   | j                  fz  S )Nzhttp://%s:%dr   r    s    r   base_urlzU2CliClient.base_url&   s    DII 666r   excc                 8    t        d| j                  d|      S )Nzu2cli server is not running at : )r   r%   )r    r&   s     r   _server_not_runningzU2CliClient._server_not_running*   s    $PTP]P]_b%cddr   Nmethodparamstimeoutc                    t        j                  ||xs i d      j                  d      }t        j                  | j
                  dz   |ddid      }	 t        j                  ||      5 }t        j                  |j                         j                  d            }d d d        j#                  d      st%        |j#                  d      xs d      |j#                  d      S # 1 sw Y   IxY w# t        j                  t        t        f$ r}| j                  |      |d }~wt        $ r!}t!        d	| j
                  d
|      |d }~ww xY w)N)r*   r+   zutf-8z/requestzContent-Typezapplication/jsonPOST)dataheadersr*   r,   z&invalid response from u2cli server at r(   okr	   zunknown u2cli server errorresult)jsondumpsencoder
   Requestr%   urlopenloadsreaddecoder	   URLErrorOSErrorr   r)   
ValueErrorr   getr   )	r    r*   r+   r,   payloadreqrespr/   es	            r   r
   zU2CliClient.request-   s   **&,BGHOOPWXooMMJ&#%78	
	ig6 ?$zz$))+"4"4W"=>? xx~dhhw/O3OPPxx!!? ?8 	5**1-14 	it}}^_`aghh	is<   C3 ,3C'C3 'C0,C3 3ED##E/EEc                 (    | j                  d|      S )Nzserver.statusr1   )r
   )r    r,   s     r   statuszU2CliClient.statusA   s    ||OW|==r   c                 D    	 | j                          y# t        $ r Y yw xY w)NTF)rE   r   r$   s    r   
is_runningzU2CliClient.is_runningD   s%    	KKM 		s    	)       @)r   r   r   DEFAULT_SERVER_HOSTDEFAULT_SERVER_PORTstrintr!   propertyr%   BaseExceptionr   r)   DEFAULT_REQUEST_TIMEOUTr   r   r   floatr
   rE   boolrG   r   r   r   r   r   !   s    #6DW S c  7# 7 7e} e9N e GK]t "c "8DcN+C "UZ "(>e >D r   r   r   r   r"   c           	      P   t         j                  ddd| dt        |      ddg	}t        j                  t        j                  t        j                  d}t
        j                  dk(  r't        t        d	d
      t        t        dd
      z  |d<   nd|d<   t        j                  |fi |S )Nz-mzuiautomator2.agent_cliz--server-hostz--server-portserverz--foreground)stdinstdoutstderrntCREATE_NEW_PROCESS_GROUPr   DETACHED_PROCESScreationflagsTstart_new_session)	sys
executablerK   
subprocessDEVNULLosnamegetattrPopen)r   r   commandkwargss       r   start_server_processrf   L   s     D	
G ##$$$$F
 
ww$J :A>J 2A67 	
 '+"#G.v..r   rE   c                 2    | j                  d      t        k(  S )Nprotocol_version)r?   r   )rE   s    r   _server_is_compatibleri   g   s    ::()-DDDr   clientr,   c                 6   	 | j                  dd       t        j                         |z   }t        j                         |k  r>| j                         sy t        j                  d       t        j                         |k  r>t        d      # t        $ r Y y w xY w)Nzserver.stoprH   r1   皙?z&incompatible u2cli server did not stop)r
   r   timerG   sleep)rj   r,   deadlines      r   _stop_serverrp   k   s    }c2 yy{W$H
))+
   "

3 ))+
  =
>>  s   B 	BBg      @c                    t        | |      }	 |j                         }t        |      r|dfS t        ||       t        | |      }t        j                         |z   }t        j                         |k  r\|j                         r|dfS |j                         t	        d      t        j                  d       t        j                         |k  r\t	        d      # t        $ r Y w xY w)NFTz*u2cli server exited before it became readyrl   z!u2cli server did not become ready)
r   rE   ri   rp   r   rf   rm   rG   pollrn   )r   r   r,   rj   rE   processro   s          r   ensure_serverrt   y   s    t$F& !(5= VW%"4.Gyy{W$H
))+
 4<<<>%IJJ

3 ))+
  8
99  s   C 	C&%C&)%
__future__r   r4   r`   r^   r\   rm   http.clientr   typingr   r   r   r   urllibr	   r
   uiautomator2.agent_cli.protocolr   rI   rJ   rO   RuntimeErrorr   r   r   objectr   rK   rL   rc   rf   rQ   ri   rP   rp   rt   r   r   r   <module>r|      s    '  	  
  & - - ! C!   2 2?J ?H* H(& (V &9FY /s / /^h^n^n /6E$sCx. ET E? ?u ? 2?R#&: : : :+0d1B+C:r   