Ë
    ¾�j¯%  ã                   óÖ   — 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 d dl	Z	d dl
mZ d dlmZmZmZ  ej                   e«      Zd„ Z G d„ d«      Z G d	„ d
«      Z G d„ d«      Zy)é    N)ÚOrderedDict)ÚListÚOptional)Úinject_call)Ú
PageSourceÚ
XPathEntryÚXPathSelectorc                 ó$   — | j                  «        y ©N)Úclick)Úels    úU/var/www/api.ozpay.ru/ozpay/venv/lib/python3.12/site-packages/uiautomator2/watcher.pyÚ_callback_clickr      s   € Ø‡H�H…Jó    c                   óž   — e Zd Zddddefd„Zddedefd„Zdefd	„Zd
e	j                  fd„Zd„ Zdefd„Zd„ Zdefd„Zd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚWatchContextÚdúuiautomator2.DeviceÚbuiltinc                 ó†  — || _         t        «       | _        g | _        t	        j
                  «       | _        t        j                  «       | _        t	        j                  «       | _
        t	        j                  «       | _        d| _        |�r6| j                  d«      j                  «        | j                  d«      j                  d«      j                  «        | j                  d«      j                  d«      j                  «        | j                  d«      j                  «        | j                  d«      j                  «        | j                  d«      j                  «        | j                  d	«      j                  «        | j                  d
«      j                  «        | j                  d«      j                  «        y y )NFu   ç»§ç»­ä½¿ç”¨u   ç§»å…¥ç®¡æŽ§u   å�–æ¶ˆu   ^ç«‹å�³(ä¸‹è½½|æ›´æ–°)u   å�Œæ„�u   ^(å¥½çš„|ç¡®å®š)u   ç»§ç»­å®‰è£…u   å®‰è£…ÚAgreeÚALLOW)Ú_dr   Ú
_callbacksÚ_WatchContext__xpath_listÚ	threadingÚLockÚ_WatchContext__lockÚtimeÚ_WatchContext__trigger_timeÚEventÚ_WatchContext__stopÚ_WatchContext__stoppedÚ_WatchContext__startedÚwhenr   )Úselfr   r   s      r   Ú__init__zWatchContext.__init__   s8  € ØˆŒÜ%›-ˆŒØˆÔÜ—n‘nÓ&ˆŒÜ"Ÿi™i›kˆÔô  —o‘oÓ'ˆŒÜ"Ÿ™Ó*ˆŒØˆŒâØ�I‰I�nÓ%×+Ñ+Ô-Ø�I‰I�nÓ%×*Ñ*¨8Ó4×:Ñ:Ô<Ø�I‰IÐ.Ó/×4Ñ4°XÓ>×DÑDÔFØ�I‰I�hÓ×%Ñ%Ô'Ø�I‰IÐ(Ó)×/Ñ/Ô1Ø�I‰I�nÓ%×+Ñ+Ô-Ø�I‰I�hÓ×%Ñ%Ô'Ø�I‰I�gÓ×$Ñ$Ô&Ø�I‰I�gÓ×$Ñ$Õ&ð r   ÚsecondsÚtimeoutc                 ó¦  — | j                   s| j                  «        t        j                  «       |z   }t        j                  «       |k  rq| j                  5  t        j                  «       | j                  z
  |kD  r
	 ddd«       y	 ddd«       t        j
                  d«       t        j                  «       |k  rŒqt        d«      ‚# 1 sw Y   ŒAxY w)zÀ wait until watches not triggered
        Args:
            seconds: stable seconds
            timeout: raise error when wait stable timeout

        Raises:
            TimeoutError
        NTgš™™™™™É?ÚUnstable)r$   Ústartr   r   r    ÚsleepÚTimeoutError)r&   r(   r)   Údeadlines       r   Úwait_stablezWatchContext.wait_stable/   s¡   € ð �~Š~Ø�J‰JŒLä—9‘9“; Ñ(ˆÜ�i‰i‹k˜HÒ$Ø—‘ñ  Ü—9‘9“; ×!4Ñ!4Ñ4°wÒ>Ø÷ ð  Ø>÷ ô �J‰J�rŒNô	 �i‰i‹k˜HÓ$ô
 ˜:Ó&Ð&÷	 ð  ús   Á&CÃCÚxpathc                 ó<   — | j                   j                  |«       | S )u=    å½“æ�¡ä»¶æ»¡è¶³æ—¶,æ”¯æŒ� .when(..).when(..) çš„çº§è�”æ¨¡å¼�)r   Úappend©r&   r1   s     r   r%   zWatchContext.whenC   s   € à×Ñ× Ñ  Ô'Øˆr   Úfnc                 ól   — t        | j                  «      }g | _        |sJ d«       ‚|| j                  |<   y)z‰
        Args:
            fn: support args (d: Device, el: Element)
                see _run_callback function for more details
        zwhen should be called beforeN)Útupler   r   )r&   r5   Ú
xpath_lists      r   ÚcallzWatchContext.callH   s8   € ô ˜4×,Ñ,Ó-ˆ
ØˆÔÙÐ9Ð9Ó9ˆzà&(ˆ�‰˜
Ò#r   c                 ó.   — | j                  t        «       y r   )r9   r   ©r&   s    r   r   zWatchContext.clickT   s   € Ø�	‰	”/Õ"r   Úreturnc                 óº  — t         j                  d«       | j                  j                  «       }| j                  j                  «       D ]�  \  }}d}d }|D ]U  }| j                  j                  ||¬«      }|j                  sd} n(|j                  «       }t         j                  d|«       ŒW |sŒgt         j                  d|«       | j                  ||«        y y)Nzwatch checkT©ÚsourceFz	match: %szwatchContext xpath matched: %s)
ÚloggerÚdebugr   Údump_hierarchyr   Úitemsr1   ÚexistsÚget_last_matchÚ_run_callback)r&   r?   ÚxpathsÚfuncÚokÚ
last_matchr1   Úsels           r   Ú_runzWatchContext._runW   sÆ   € Ü�‰�]Ô#Ø—‘×'Ñ'Ó)ˆØ ŸO™O×1Ñ1Ó3ò 	‰LˆF�DØˆBØˆJØò 1�Ø%)§W¡W§]¡]°5À ]Ó%H�Ø—z’zØ�BÙØ ×/Ñ/Ó1�
Ü—‘˜[¨%Õ0ð1ò ä—‘Ð=¸vÔFØ×"Ñ" 4¨Ô4Ùð	ð r   c                 óf   — t        || j                  |¬«       t        j                  «       | _        y )N)r   r   )r   r   r   r    )r&   rH   Úelements      r   rF   zWatchContext._run_callbackk   s    € Ü�D˜DŸG™G¨Õ0Ü"Ÿi™i›kˆÕr   Úintervalc                 ón  — 	 | j                   j                  «       sU| j                  5  | j                  «        d d d «       t	        j
                  |«       | j                   j                  «       sŒU| j                  j                  «        y # 1 sw Y   ŒTxY w# | j                  j                  «        w xY wr   )r"   Úis_setr   rL   r   r-   r#   Úset©r&   rO   s     r   Ú_run_foreverzWatchContext._run_forevero   s   € ð	!Ø—k‘k×(Ñ(Ô*Ø—[‘[ñ  Ø—I‘I”K÷ ä—
‘
˜8Ô$ð —k‘k×(Ñ(Õ*ð
 �N‰N×ÑÕ ÷	 ð  ûð �N‰N×ÑÕ ús!   ‚&B ¨B¹7B ÂBÂB ÂB4c                 óú   — | j                   ry d| _         | j                  j                  «        | j                  j                  «        d}t	        j
                  | j                  d|f¬«      j                  «        y )NTç       @)ÚtargetÚdaemonÚargs)r$   r"   Úclearr#   r   ÚThreadrT   r,   rS   s     r   r,   zWatchContext.startx   s]   € Ø�>Š>ØØˆŒØ�‰×ÑÔØ�‰×ÑÔØˆÜ×Ñ × 1Ñ 1Ø $Ø'˜lô	,ç,1©E­Gr   c                 ó~   — | j                   j                  «        | j                  j                  d¬«       d| _        y )Né
   ©r)   F)r"   rR   r#   Úwaitr$   r;   s    r   ÚstopzWatchContext.stopƒ   s,   € Ø�‰�‰ÔØ�‰×Ñ BÐÔ'Øˆ�r   c                 ó$   — | j                  «        y)z alias of stop N)r`   r;   s    r   ÚclosezWatchContext.closeˆ   s   € à�	‰	�r   c                 ó   — | S r   © r;   s    r   Ú	__enter__zWatchContext.__enter__Œ   s   € Øˆr   c                 óN   — t         j                  d«       | j                  «        y )Nzcontext closed)r@   Úinfor`   )r&   ÚtypeÚvalueÚ	tracebacks       r   Ú__exit__zWatchContext.__exit__�   s   € Ü�‰Ð$Ô%Ø�	‰	�r   N)F)g      @g      N@)Ú__name__Ú
__module__Ú__qualname__Úboolr'   Úfloatr0   Ústrr%   ÚtypingÚCallabler9   r   rL   rF   rT   r,   r`   rb   re   rk   rd   r   r   r   r      s€   „ ñ'Ð/ð '¸$ó 'ñ.' 5ð '¸ó 'ð(˜#ó ð

)�v—‘ó 
)ò#ð�dó ò(*ð! Uó !ò	4òò
òór   r   c                   óº   — e Zd Zdd„Zedefd„«       Zd„ Zdd„Zdde	fd„Z
d	„ Zd
„ Zdefd„Zedefd„«       Zde	fd„Zddee   fd„Zddefd„Zdeddfd„Zdd„Zy)ÚWatcherc                 ó    — || _         g | _        t        j                  «       | _        t        j                  «       | _        d| _        d| _        y )NF)r   Ú	_watchersr   r!   Ú_watch_stop_eventÚ_watch_stoppedÚ	_watchingÚ_triggering)r&   r   s     r   r'   zWatcher.__init__•   s=   € ØˆŒØˆŒä!*§¡Ó!2ˆÔÜ'Ÿo™oÓ/ˆÔØˆŒØ ˆÕr   r<   c                 ó.   — | j                   j                  S r   )r   r1   r;   s    r   Ú_xpathzWatcher._xpathž   s   € à�w‰w�}‰}Ðr   c                 ó6   — | j                   j                  «       S r   )r   rB   r;   s    r   Ú_dump_hierarchyzWatcher._dump_hierarchy¢   s   € Ø�w‰w×%Ñ%Ó'Ð'r   Nc                 ó   — t        | |«      S r   ©ÚXPathWatcherr4   s     r   r%   zWatcher.when¥   s   € Ü˜D %Ó(Ð(r   rO   c                 óÌ   — | j                   rt        j                  d«       yd| _         t        j                  d| j
                  |f¬«      }d|_        |j                  «        |S )ú stop watcher zalready startedNTÚwatcher)ÚnamerW   rY   )rz   r@   Úwarningr   r[   Ú_watch_foreverrX   r,   )r&   rO   Úths      r   r,   zWatcher.start¨   sW   € à�>Š>Ü�N‰NÐ,Ô-ØØˆŒÜ×Ñ 9Ø%)×%8Ñ%8Ø$, <ô1ˆð ˆŒ	Ø
�‰Œ
Øˆ	r   c                 ó`  — | j                   st        j                  d«       y| j                  j	                  «       ry| j                  j                  «        | j                  j                  d¬«       d| _         | j                  j                  «        | j                  j                  «        y)r„   zwatch already stoppedNr]   r^   F)	rz   r@   r‡   ry   rQ   rR   rx   r_   rZ   r;   s    r   r`   zWatcher.stopµ   s„   € à�~Š~Ü�N‰NÐ2Ô3Øà×Ñ×%Ñ%Ô'Øà×Ñ×ÑÔ!Ø×Ñ×#Ñ#¨BÐ#Ô/ð ˆŒØ×Ñ×!Ñ!Ô#Ø×Ñ×$Ñ$Õ&r   c                 ó\   — | j                   r| j                  «        | j                  «        y)z' stop watching and remove all watchers N)rz   r`   Úremover;   s    r   ÚresetzWatcher.resetÆ   s   € à�>Š>Ø�I‰IŒKØ�‰�r   c                 ó   — | j                   S r   )rz   r;   s    r   ÚrunningzWatcher.runningÌ   s   € Ø�~‰~Ðr   c                 ó   — | j                   S r   )r{   r;   s    r   Ú
triggeringzWatcher.triggeringÏ   s   € à×ÑÐr   c                 ó.  — 	 |}| j                   j                  |¬«      s=| j                  «       }|rt        d|«      n|}| j                   j                  |¬«      sŒ=| j                  j                  «        y # | j                  j                  «        w xY w)Nr^   g      à?)ry   r_   ÚrunÚminrx   rR   )r&   rO   Úwait_timeoutÚ	triggereds       r   rˆ   zWatcher._watch_foreverÓ   s~   € ð	)Ø#ˆLØ×)Ñ)×.Ñ.°|Ð.ÔDØ ŸH™H›J�	Ù5>œs 3¨Ô1ÀH�ð ×)Ñ)×.Ñ.°|Ð.ÕDð ×"Ñ"×&Ñ&Õ(øˆD×"Ñ"×&Ñ&Õ(ús   ‚AA8 Á8Br?   c                 óš   — | j                   ry	 | j                  |¬«      S # t        $ r }t        j	                  d|«       Y d}~yd}~ww xY w)zJ run watchers
        Args:
            source: hierarchy content
        Fr>   z_run_watchers exception: %sN)r‘   Ú_run_watchersÚ	Exceptionr@   r‡   )r&   r?   Úes      r   r“   zWatcher.runÜ   sI   € ð
 �?Š?Øð	Ø×%Ñ%¨VÐ%Ó4Ð4øÜò 	Ü�N‰NÐ8¸!Ô<Üûð	ús   �! ¡	A
ªAÁA
c                 óÆ  — |xs | j                   j                  «       }| j                  D ]÷  }d}|d   D ]$  }| j                  ||«      }|j                  rŒ"d} n |sŒ4t        j                  d|d   |d   «       d| _        |d   }|| j                  |dœ}t        j                  |«      }|j                  j                  «       D �ci c]  }||v r|||   “Œ }	} |j                  d
i |	¤Ž}
|
j                  «        	  ||
j                  i |
j                  ¤Ž d	| _         y y	c c}w # t         $ r }t        j#                  d|«       Y d}~Œ4d}~ww xY w# d	| _        w xY w)z<
        Returns:
            bool (watched or not)
        NrG   zXPath(hook:%s): %sr†   TÚcallback)Úselectorr   r?   zwatchers exception: %sFrd   )r}   Úget_page_sourcerw   rD   r@   rg   r{   r   ÚinspectÚ	signatureÚ
parametersÚkeysÚbindÚapply_defaultsrY   Úkwargsr™   r‡   )r&   r?   ÚhÚlast_selectorr1   ÚcbÚdefaultsÚstÚkeyr¥   Úbarš   s               r   r˜   zWatcher._run_watchersé   sz  € ð
 Ò8˜4Ÿ;™;×6Ñ6Ó8ˆà—‘ò 	ˆAØ ˆMØ˜8™ò �Ø $§¡¨E°6Ó :�Ø$×+Ó+Ø$(�MÙð	ò Ü—‘Ð0°!°F±)¸Q¸x¹[ÔIØ#'�Ô Ø�z‘]�à -ØŸ™Ø$ñ�ô
 ×&Ñ& rÓ*�ð  "Ÿ}™}×1Ñ1Ó3öà°s¸h±ð ˜ #™Ñ&ð�ð ð �R—W‘WÑ&˜vÑ&�Ø×!Ñ!Ô#ð-Ù˜Ÿ™Ð- 2§9¡9Ò-ð (-�DÔ$Ùð=	ð> ùòøô !ò @Ü—N‘NÐ#;¸Q×?Ñ?ûð@ûð (-�DÕ$ús0   Ã	D&Ã?D+Ä+	EÄ4EÅ
EÅEÅEÅ	E r†   r‚   c                 ó   — t        | d |«      S r   r�   )r&   r†   s     r   Ú__call__zWatcher.__call__  s   € Ü˜D $¨Ó-Ð-r   c                 ó¼   — |€g | _         y| j                   dd D ]@  }|d   |k(  sŒt        j                  d||d   «       | j                   j                  |«       ŒB y)z remove watcher Nr†   zremove(%s) %srG   )rw   r@   rA   rŒ   )r&   r†   Úws      r   rŒ   zWatcher.remove  s[   € àˆ<ØˆDŒNØØ—‘¡Ð"ò 	)ˆAØ�‰y˜DÓ Ü—‘˜_¨d°A°h±KÔ@Ø—‘×%Ñ% aÕ(ñ	)r   ©r   r   r   )rV   )rl   rm   rn   r'   Úpropertyr   r}   r   r%   rp   r,   r`   r�   ro   r�   r‘   rˆ   r   r   r“   r˜   rq   r®   rŒ   rd   r   r   ru   ru   ”   s«   „ ó!ð ð˜
ò ó ðò(ó)ñ˜eó ò'ò"ð˜ó ð ð ˜Dò  ó ð ð) uó )ñ˜( :Ñ.ó ñ&¨Dó &ðP.˜Sð . ^ó .ô)r   ru   c                   óH   — e Zd Zddededefd„Zddefd„Zdefd„Zd	„ Z	d
„ Z
y)r‚   Úparentr1   r†   c                 óD   — || _         || _        |r	|g| _        y g | _        y r   )Ú_nameÚ_parentÚ_xpath_list)r&   r´   r1   r†   s       r   r'   zXPathWatcher.__init__   s#   € ØˆŒ
ØˆŒÙ16 u gˆÕ¸BˆÕr   Nc                 ó<   — | j                   j                  |«       | S r   )r¸   r3   r4   s     r   r%   zXPathWatcher.when%  s   € Ø×Ñ×Ñ Ô&Øˆr   rH   c                 ó~   — | j                   j                  j                  | j                  | j                  |dœ«       y)zP
        func accept argument, key(d, el)
        d=self._d, el=element
        )r†   rG   rœ   N)r·   rw   r3   r¶   r¸   )r&   rH   s     r   r9   zXPathWatcher.call)  s4   € ð
 	�‰×Ñ×%Ñ%Ø—J‘JØ×&Ñ&Øñ'
õ 	r   c                 ó:   — dt         fd„}| j                  |«       y )Nr�   c                 ó@   — | j                  «       j                  «        y r   )rE   r   )r�   s    r   Ú_inner_clickz(XPathWatcher.click.<locals>._inner_click5  s   € Ø×#Ñ#Ó%×+Ñ+Õ-r   )r	   r9   )r&   r½   s     r   r   zXPathWatcher.click4  s   € ð	.¤=ó 	.ð 	�	‰	�,Õr   c                 ó4   ‡— dˆfd„}| j                  |«       y)zô
        key (str): on of
            ("home", "back", "left", "right", "up", "down", "center",
            "search", "enter", "delete", "del", "recent", "volume_up",
            "menu", "volume_down", "volume_mute", "camera", "power")
        c                 ó(   •— | j                  ‰«       y r   )Úpress)r   r«   s    €r   Ú_inner_pressz(XPathWatcher.press.<locals>._inner_pressA  s   ø€ Ø�G‰G�C�Lr   Nr±   )r9   )r&   r«   rÁ   s    ` r   rÀ   zXPathWatcher.press:  s   ø€ õ	ð 	�	‰	�,Õr   )Ú r   )rl   rm   rn   ru   rq   r'   r%   Úcallabler9   r   rÀ   rd   r   r   r‚   r‚     s>   „ ñ?˜wð ?¨sð ?¸#ó ?ñ
˜#ó ð	˜ó 	ò ó
 r   r‚   )rŸ   Úloggingr   r   rr   Úcollectionsr   r   r   Úuiautomator2Úuiautomator2.utilsr   Úuiautomator2.xpathr   r   r	   Ú	getLoggerrl   r@   r   r   ru   r‚   rd   r   r   ú<module>rÊ      sc   ðó Û Û Û Û Ý #ß !ã Ý *ß DÑ Dà	ˆ×	Ñ	˜8Ó	$€ò÷zñ z÷zH)ñ H)÷V% ò % r   