
    ^j                         d dl Z d dlmZmZmZ d dlmZ ddlmZ ddl	m
Z
mZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ dZ edd      ZdZ G d deeeeeeee
      Zy)    N)AnyDictTypeVar)BaseOptions   )AutomationNameOption)BROWSER_NAMEBrowserNameOption)EventTimingsOption)FullResetOption)NewCommandTimeoutOption)NoResetOption)"PrintPageSourceOnFindFailureOptionzappium:TAppiumOptions)boundplatformNamec                       e Zd ZU eed<    edededddddd	d
dg      ZddedZ	ddZ
dedededefdZdedefdZdedeeef   defdZededefd       ZdefdZdefdZedefd       Zy)r   _capsacceptInsecureCertsbrowserVersionpageLoadStrategyproxysetWindowRecttimeoutsunhandledPromptBehaviorstrictFileInteractability	userAgentwebSocketUrl)acceptSslCertsversionplatformreturnNc                 4    | j                   | _        d| _        y )NF)default_capabilitiesr   _ignore_local_proxyselfs    N/home/ubuntu/.local/lib/python3.12/site-packages/appium/options/common/base.py__init__zAppiumOptions.__init__F   s    ..
#(     r(   namevaluec                     || j                   v sd|v r|n	t         | }||| j                  v r| j                  |= | S || j                  |<   | S N:)W3C_CAPABILITY_NAMESAPPIUM_PREFIXr   )r(   r,   r-   w3c_names       r)   set_capabilityzAppiumOptions.set_capabilityK   sb    4#<#<<t4TaSbcgbhQi=4::%JJx(  $)DJJx r+   c                     || j                   v r| j                   |   S | j                   j                  t         |       S )z=Fetches capability value or None if the capability is not set)r   getr2   )r(   r,   s     r)   get_capabilityzAppiumOptions.get_capabilityT   s9    #'4::#5tzz$c4::>>]O\`[aJb;ccr+   capsc                 Z    |j                         D ]  \  }}| j                  ||        | S )zSets multiple capabilities)itemsr4   )r(   r8   r,   r-   s       r)   load_capabilitieszAppiumOptions.load_capabilitiesX   s0    ::< 	-KD%e,	-r+   capabilitiesc                     dt         dt         fd}t        j                  |       j                         D ci c]  \  }} ||      | }}}di g|diS c c}}w )z
        Formats given capabilities to a valid W3C session request object

        Args:
            capabilities: Capabilities mapping

        Returns:
            W3C session request object
        kr#   c                     t         j                  j                  | |       }|t         j                  v r|S d|v r|S t         | S r/   )r   _OSS_W3C_CONVERSIONr6   r1   r2   )r>   keys     r)   process_keyz)AppiumOptions.as_w3c.<locals>.process_keyj   sG    33771=Cm888
*3A]OC5*AAr+   r<   )
firstMatchalwaysMatch)strcopydeepcopyr:   )r<   rB   r>   vprocessed_capss        r)   as_w3czAppiumOptions.as_w3c^   sd    	B3 	B3 	B 9=l8S8Y8Y8[\1+a.!+\\tN STT ]s   Ac                 @    | j                  | j                               S )zy
        Formats the instance to a valid W3C session request object

        :return: W3C session request object
        )rJ   to_capabilitiesr'   s    r)   to_w3czAppiumOptions.to_w3cs   s     {{4//122r+   c                 @    t        j                   | j                        S N)rF   r   r'   s    r)   rL   zAppiumOptions.to_capabilities{   s    yy$$r+   c                     i S rO    r'   s    r)   r%   z"AppiumOptions.default_capabilities~   s    	r+   )r#   N)__name__
__module____qualname__r   __annotations__	frozensetr	   PLATFORM_NAMEr1   r@   r*   r   rE   r   r4   r7   r;   staticmethodrJ   rM   rL   propertyr%   rQ   r+   r)   r   r   $   s    K$!%'	
" 0#!)
Q c # ! d3 d3 d c3h A  UT Ud U U(3 3% % d  r+   )rF   typingr   r   r   !selenium.webdriver.common.optionsr   automation_name_optionr   browser_name_optionr	   r
   event_timings_optionr   full_reset_optionr   new_command_timeout_optionr   no_reset_optionr   (print_page_source_on_find_failure_optionr   r2   r   rW   r   rQ   r+   r)   <module>rc      sb   $  % % 9 8 @ 4 . ? * XC'\&\r+   