Ë
    €»—hÈ  ã                   ód   — d dl Z d dlZd dl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	  G d„ d«      Z
y)é    N)ÚSeleniumManagerc                   óX  ‡ — e Zd ZdZdd„Zed„ «       Zed„ «       Zej                  d„ «       Zed„ «       Z	e	j                  ˆ fd„«       Z	ed„ «       Z
e
j                  ˆ fd	„«       Z
ed
„ «       Zej                  d„ «       Zed„ «       Zej                  d„ «       Zdd„Zdd„Zd„ Zd„ Zˆ xZS )ÚServeraÑ  Manage a Selenium Grid (Remote) Server in standalone mode.

    This class contains functionality for downloading the server and starting/stopping it.

    For more information on Selenium Grid, see:
        - https://www.selenium.dev/documentation/grid/getting_started/

    Parameters:
    -----------
    host : str
        Hostname or IP address to bind to (determined automatically if not specified)
    port : int or str
        Port to listen on (4444 if not specified)
    path : str
        Path/filename of existing server .jar file (Selenium Manager is used if not specified)
    version : str
        Version of server to download (latest version if not specified)
    log_level : str
        Logging level to control logging output ("INFO" if not specified)
        Available levels: "SEVERE", "WARNING", "INFO", "CONFIG", "FINE", "FINER", "FINEST"
    env: collections.abc.Mapping
        Mapping that defines the environment variables for the server process
    c                 ó„   — |r|rt        d«      ‚|| _        || _        || _        || _        || _        || _        d | _        y )NzCNot allowed to specify a version when using an existing server path)Ú	TypeErrorÚhostÚportÚpathÚversionÚ	log_levelÚenvÚprocess)Úselfr   r	   r
   r   r   r   s          úb/var/www/html/w1hd.aprs.trek/venv/lib/python3.12/site-packages/selenium/webdriver/remote/server.pyÚ__init__zServer.__init__7   sD   € Ù‘GÜÐaÓbÐbàˆŒ	ØˆŒ	ØˆŒ	ØˆŒØ"ˆŒØˆŒØˆ�ó    c                 ó\   — | j                   �| j                   nd}d|› d| j                  › d�S )NÚ	localhostzhttp://ú:z/status)r   r	   )r   r   s     r   Ú
status_urlzServer.status_urlC   s/   € à ŸI™IÐ1ˆt�yŠy°{ˆØ˜˜˜a §	¡	˜{¨'Ð2Ð2r   c                 ó   — | j                   S ©N)Ú_path©r   s    r   r
   zServer.pathH   ó   € à�z‰zÐr   c                 óp   — |r-t         j                  j                  |«      st        d|› �«      ‚|| _        y )Nz"Can't find server .jar located at )Úosr
   ÚexistsÚOSErrorr   )r   r
   s     r   r
   zServer.pathL   s.   € áœŸ™Ÿ™ tÔ,ÜÐ>¸t¸fÐEÓFÐFØˆ�
r   c                 ó   — | j                   S r   )Ú_portr   s    r   r	   zServer.portR   r   r   c                 óÀ   •— 	 t        |«      }d|cxk  rdk  st        d«      ‚ t        d«      ‚|| _        y # t        $ r t        ‰j                  › d|› d�«      ‚w xY w)Nz".__init__() got an invalid port: 'ú'r   iÿÿ  zport must be 0-65535)ÚintÚ
ValueErrorr   Ú__name__r!   )r   r	   Ú	__class__s     €r   r	   zServer.portV   s{   ø€ ð	^Ü�t“9ˆDð �TÔ"˜UÒ"ÜÐ3Ó4Ð4ð #ÜÐ3Ó4Ð4Øˆ�
øô	 ò 	^Ü˜y×1Ñ1Ð2Ð2TÐUYÐTZÐZ[Ð\Ó]Ð]ð	^ús	   ƒ8 ¸%Ac                 ó   — | j                   S r   )Ú_versionr   s    r   r   zServer.version`   s   € à�}‰}Ðr   c                 óŒ   •— |r:t        j                  dt        |«      «      st        ‰j                  › d|› d�«      ‚|| _        y )Nz^\d+\.\d+\.\d+$z%.__init__() got an invalid version: 'r#   )ÚreÚmatchÚstrr   r&   r)   )r   r   r'   s     €r   r   zServer.versiond   sC   ø€ áÜ—8‘8Ð.´°G³Ô=Ü 9×#5Ñ#5Ð"6Ð6[Ð\cÐ[dÐdeÐ fÓgÐgØˆ�r   c                 ó   — | j                   S r   )Ú
_log_levelr   s    r   r   zServer.log_levelk   s   € à�‰Ðr   c                 óX   — d}||vrt        ddj                  |«      › �«      ‚|| _        y )N)ÚSEVEREÚWARNINGÚINFOÚCONFIGÚFINEÚFINERÚFINESTzlog_level must be one of: z, )r   Újoinr/   )r   r   Úlevelss      r   r   zServer.log_levelo   s3   € àSˆØ˜FÑ"ÜÐ8¸¿¹À6Ó9JÐ8KÐLÓMÐMØ#ˆ�r   c                 ó   — | j                   S r   )Ú_envr   s    r   r   z
Server.envv   s   € à�y‰yÐr   c                 ót   — |�/t        |t        j                  j                  «      st	        d«      ‚|| _        y )Nz.env must be a mapping of environment variables)Ú
isinstanceÚcollectionsÚabcÚMappingr   r;   )r   r   s     r   r   z
Server.envz   s-   € àˆ?¤:¨c´;·?±?×3JÑ3JÔ#KÜÐLÓMÐMØˆ�	r   c                 ó^  — t        j                   «       }t        j                   «       |z
  |k  r+	 t        j                  j                  | j                  «       yy# t        j
                  j                  $ r t        j                  d«       Y nw xY wt        j                   «       |z
  |k  rŒŒU)NTgš™™™™™É?F)ÚtimeÚurllibÚrequestÚurlopenr   ÚerrorÚURLErrorÚsleep)r   ÚtimeoutÚstarts      r   Ú_wait_for_serverzServer._wait_for_server€   s   € Ü—	‘	“ˆÜ�i‰i‹k˜EÑ! GÒ+ð Ü—‘×&Ñ& t§¡Ô7Øð øô —<‘<×(Ñ(ò  Ü—
‘
˜3–ð úô	 �i‰i‹k˜EÑ! GÓ+øs   °)A Á2BÂBc                 óf   — dg}|�|j                  |«       t        «       j                  |«      d   S )zqDownload the server if it doesn't already exist.

        Latest version is downloaded unless specified.
        z--gridÚdriver_path)Úappendr   Úbinary_paths)r   r   Úargss      r   Údownload_if_neededzServer.download_if_neededŠ   s6   € ð
 ˆzˆØÐØ�K‰K˜Ô ÜÓ ×-Ñ-¨dÓ3°MÑBÐBr   c                 óÂ  — | j                   €| j                  | j                  «      n| j                   }t        j                  d«      }|€t        d«      ‚|d|ddt        | j                  «      d| j                  dd	d
d	g}| j                  �|j                  d| j                  g«       | j                  �| j                  nd}	 t        j                  t        j                  t        j                  «      5 }|j                  || j                  f«       ddd«       t        d| j                  › �«      ‚# 1 sw Y   Œ!xY w# t         $ r” t#        d«       t%        j&                  || j(                  ¬«      | _        t#        d| j*                  j,                  › �«       | j/                  «       st1        d| j2                  › �«      ‚t#        d«       Y | j*                  S w xY w)z¨Start the server.

        Selenium Manager will detect the server location and download it if necessary,
        unless an existing server path was specified.
        NÚjavazJCan't find java on system PATH. JRE is required to run the Selenium serverz-jarÚ
standalonez--portz--log-levelz--selenium-managerÚtruez--enable-managed-downloadsz--hostr   zDSelenium server is already running, or something else is using port zStarting Selenium server...)r   z$Selenium server running as process: z)Timed out waiting for Selenium server at zSelenium server is ready)r
   rQ   r   ÚshutilÚwhichr   r-   r	   r   r   ÚextendÚsocketÚAF_INETÚSOCK_STREAMÚconnectÚConnectionErrorÚConnectionRefusedErrorÚprintÚ
subprocessÚPopenr   r   ÚpidrK   ÚTimeoutErrorr   )r   r
   Ú	java_pathÚcommandr   Úsocks         r   rJ   zServer.start”   sœ  € ð 9=¿	¹	Ð8Iˆt×&Ñ& t§|¡|Ô4ÈtÏyÉyˆä—L‘L Ó(ˆ	ØÐÜÐfÓgÐgð ØØØØÜ�—	‘	‹NØØ�N‰NØ ØØ(Øð
ˆð �9‰9Ð Ø�N‰N˜H d§i¡iÐ0Ô1à ŸI™IÐ1ˆt�yŠy°{ˆð
	.Ü—‘œvŸ~™~¬v×/AÑ/AÓBð 0ÀdØ—‘˜d D§I¡IÐ.Ô/÷0ä!Ð$hÐim×irÑirÐhsÐ"tÓuÐu÷0ð 0ûô &ò 	.ÜÐ/Ô0Ü%×+Ñ+¨G¸¿¹ÔBˆDŒLÜÐ8¸¿¹×9IÑ9IÐ8JÐKÔLØ×(Ñ(Ô*Ü"Ð%NÈtÏÉÐN_Ð#`ÓaÐaÜÐ,Õ-Ø�|‰|Ðð	.ús+   Ã2E Ã7D5Ä E Ä5D>Ä:E ÅBGÇGc                 óò   — | j                   €t        d«      ‚| j                   j                  «       €4| j                   j                  «        | j                   j	                  «        d| _         t        d«       y)zStop the server.NzSelenium server isn't runningz#Selenium server has been terminated)r   ÚRuntimeErrorÚpollÚ	terminateÚwaitr_   r   s    r   ÚstopzServer.stopÀ   s[   € à�<‰<ÐÜÐ>Ó?Ð?à�|‰|× Ñ Ó"Ð*Ø—‘×&Ñ&Ô(Ø—‘×!Ñ!Ô#ØˆDŒLÜÐ7Õ8r   )Ni\  NNr3   N)é
   r   )r&   Ú
__module__Ú__qualname__Ú__doc__r   Úpropertyr   r
   Úsetterr	   r   r   r   rK   rQ   rJ   rl   Ú__classcell__)r'   s   @r   r   r      s  ø„ ñó0
ð ñ3ó ð3ð ñó ðð 
‡[�[ñó ðð
 ñó ðð 
‡[�[óó ðð ñó ðð ‡^�^ó ó ð ð ñó ðð ×Ññ$ó ð$ð ñó ðð 	‡Z�Zñó ðó
óCò*öX	9r   r   )r>   r   r+   rV   rY   r`   rB   rC   Ú*selenium.webdriver.common.selenium_managerr   r   © r   r   ú<module>rv      s.   ðó$ Û 	Û 	Û Û Û Û Û å F÷k9ò k9r   