
    vKg#*                         S SK Jr  S SKJr  S SKJr  S SKJr  S SKJr   " S S\5      r	 " S S	5      r
 " S
 S\5      rg)    )Enum)Any)Dict)DesiredCapabilities)
ArgOptionsc                       \ rS rSrSrSrSrg)ElementScrollBehavior   r       N)__name__
__module____qualname____firstlineno__TOPBOTTOM__static_attributes__r       ]/var/www/highfloat_scraper/venv/lib/python3.13/site-packages/selenium/webdriver/ie/options.pyr	   r	      s    
CFr   r	   c                   .    \ rS rSrSrS rS rSS jrSrg)	_IeOptionsDescriptor   aY  _IeOptionsDescriptor is an implementation of Descriptor Protocol:

: Any look-up or assignment to the below attributes in `Options` class will be intercepted
by `__get__` and `__set__` method respectively.

- `browser_attach_timeout`
- `element_scroll_behavior`
- `ensure_clean_session`
- `file_upload_dialog_timeout`
- `force_create_process_api`
- `force_shell_windows_api`
- `full_page_screenshot`
- `ignore_protected_mode_settings`
- `ignore_zoom_level`
- `initial_browser_url`
- `native_events`
- `persistent_hover`
- `require_window_focus`
- `use_per_process_proxy`
- `use_legacy_file_upload_dialog_handling`
- `attach_to_edge_chrome`
- `edge_executable_path`


: When an attribute lookup happens,
Example:
    `self. browser_attach_timeout`
    `__get__` method does a dictionary look up in the dictionary `_options` in `Options` class
    and returns the value of key `browserAttachTimeout`
: When an attribute assignment happens,
Example:
    `self.browser_attach_timeout` = 30
    `__set__` method sets/updates the value of the key `browserAttachTimeout` in `_options`
    dictionary in `Options` class.
c                     Xl         X l        g N)nameexpected_type)selfr   r   s      r   __init___IeOptionsDescriptor.__init__C   s    	*r   c                 L    UR                   R                  U R                  5      $ r   )_optionsgetr   )r   objclss      r   __get___IeOptionsDescriptor.__get__G   s    ||		**r   Nc                 B   [        X R                  5      (       d.  [        U R                   SU R                  R                   35      eU R                  S:X  a/  U[
        R                  [
        R                  4;  a  [        S5      eX!R                  U R                  '   g )Nz should be of type elementScrollBehaviorz%Element Scroll Behavior out of range.)	
isinstancer   
ValueErrorr   r   r	   r   r   r!   )r   r#   values      r   __set___IeOptionsDescriptor.__set__J   s    %!3!344		{*=d>P>P>Y>Y=Z[\\99//E!%%!((B
 5
 DEE"'TYYr   )r   r   returnN)	r   r   r   r   __doc__r   r%   r,   r   r   r   r   r   r      s    "H++	(r   r   c                   8  ^  \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrSrSrSrSrSr\" \\5      r \" \\5      r \" \\5      r \" \	\5      r \" \
\5      r  \" \\5      r! \" \\5      r" \" \\5      r# \" \\5      r$ \" \\%5      r& \" \\5      r' \" \\5      r( \" \\5      r) \" \\5      r* \" \\5      r+ \" \\5      r, \" \\%5      r- S U 4S jjr.\/S\04S j5       r1\/S\04S j5       r2S\%SS4S jr3S\04S jr4\/S\04S j5       r5Sr6U =r7$ )!OptionsV   zse:ieOptionszie.browserCommandLineSwitchesbrowserAttachTimeoutr(   zie.ensureCleanSessionzie.fileUploadDialogTimeoutzie.forceCreateProcessApizie.forceShellWindowsApizie.enableFullPageScreenshotignoreProtectedModeSettingsignoreZoomSettinginitialBrowserUrlnativeEventsenablePersistentHoverrequireWindowFocuszie.usePerProcessProxyz$ie.useLegacyFileUploadDialogHandlingzie.edgechromiumzie.edgepathzie.ignoreprocessmatchr/   Nc                 >   > [         TU ]  5         0 U l        0 U l        g r   )superr   r!   _additional)r   	__class__s    r   r   Options.__init__m  s    (*+-r   c                     U R                   $ )z*:Returns: A dictionary of browser options.)r!   r   s    r   optionsOptions.optionsr  s     }}r   c                     U R                   $ )z!:Returns: The additional options.r=   rA   s    r   additional_optionsOptions.additional_optionsw  s     r   r   c                      X R                   U'   g)zAdds an additional option not yet added as a safe option for IE.

:Args:
 - name: name of the option to add
 - value: value of the option to add
NrE   )r   r   r+   s      r   add_additional_optionOptions.add_additional_option|  s     "'r   c                 L   U R                   nU R                  R                  5       nU R                  (       a'  SR	                  U R                  5      X R
                  '   U R                  (       a  UR                  U R                  5        U(       a  X![        R                  '   U$ )z.Marshals the IE options to the correct object. )
_capsr!   copy
_argumentsjoinSWITCHESr=   updater2   KEY)r   capsoptss      r   to_capabilitiesOptions.to_capabilities  sl    zz}}!!#??"%((4??";DKK(() $r   c                 >    [         R                  R                  5       $ r   )r   INTERNETEXPLORERrN   rA   s    r   default_capabilitiesOptions.default_capabilities  s    "3388::r   )r=   r!   r.   )8r   r   r   r   rS   rQ   BROWSER_ATTACH_TIMEOUTELEMENT_SCROLL_BEHAVIORENSURE_CLEAN_SESSIONFILE_UPLOAD_DIALOG_TIMEOUTFORCE_CREATE_PROCESS_APIFORCE_SHELL_WINDOWS_APIFULL_PAGE_SCREENSHOTIGNORE_PROTECTED_MODE_SETTINGSIGNORE_ZOOM_LEVELINITIAL_BROWSER_URLNATIVE_EVENTSPERSISTENT_HOVERREQUIRE_WINDOW_FOCUSUSE_PER_PROCESS_PROXY&USE_LEGACY_FILE_UPLOAD_DIALOG_HANDLINGATTACH_TO_EDGE_CHROMEEDGE_EXECUTABLE_PATHIGNORE_PROCESS_MATCHr   intbrowser_attach_timeoutr   element_scroll_behaviorboolensure_clean_sessionfile_upload_dialog_timeoutforce_create_process_apiforce_shell_windows_apifull_page_screenshotignore_protected_mode_settingsignore_zoom_levelstrinitial_browser_urlnative_eventspersistent_hoverrequire_window_focususe_per_process_proxy&use_legacy_file_upload_dialog_handlingattach_to_edge_chromeedge_executable_pathr   propertydictrB   rF   rI   rV   rZ   r   __classcell__)r>   s   @r   r2   r2   V   sT   
C.H352!=978%B"+-"M./3-S*-(2 22H#N 33JDQ 00DdK "66PRU!V  44LdS 33JDQ 00DdK &::XZ^%_" -->E //BCH )=M ,,<dC 00DdK 11FM .BBhjn-o* 11FM 00DcJ.
     D    '# ' '  ;d ; ;r   r2   N)enumr   typingr   r   .selenium.webdriver.common.desired_capabilitiesr   !selenium.webdriver.common.optionsr   r	   r   r2   r   r   r   <module>r      s;   "    N 8D 
5( 5(p@;j @;r   