
    'hC{              
          S SK r S SKJr  S SKJrJrJrJrJr  S SK	J
r
JrJrJrJr  S SKJr  S SKJrJr   \" S5      r\" S5      r\\\4   rS	\S
\\/\4   4S jrS	\S
\\/\4   4S jrS\\\4   S
\\/\4   4S jrS\S
\\/\4   4S jrS\S
\\/\4   4S jrS\S
\\/\4   4S jrS\S
\\/\4   4S jr S\\\4   S
\\/\\S   \4   4   4S jr!S\S
\\/\\S   \4   4   4S jr"S8S\S\S
\\S   \4   4S jjr#S\\\4   S
\\/\$\   4   4S jr%S\\\4   S
\\/\$\   4   4S jr&S\\\4   S
\\/\\$\   \S   4   4   4S jr'S\\\4   S\S
\\/\4   4S jr(S\\\4   S\S
\\/\4   4S  jr)S\\\4   S!\S\S
\\/\4   4S" jr*S\\\\4   \\4   S
\\/\4   4S# jr+S\\\\\4   4   S
\\/\\\4   4   4S$ jr,S\\\\\4   4   S
\\/\\\4   4   4S% jr-S&\\\\\4   4   S
\\/\\S   \4   4   4S' jr.S\S
\\/\4   4S( jr/S\S
\\/\4   4S) jr0S\\\4   S
\\/\4   4S* jr1S\S+\S
\\/\4   4S, jr2S\\\4   S+\S
\\/\4   4S- jr3S.\4S
\\/\4   4S/ jr5S0\$\   S
\\/\4   4S1 jr6S
\\/\\\S   4   4   4S2 jr7S\\\4   S!\S
\\/\4   4S3 jr8S4\\/\4   S
\\/\\S   \4   4   4S5 jr9S4\\/\\\S   4   4   S
\\/\\$\   \S   4   4   4S6 jr:S4\\/\4   S
\\/\4   4S7 jr;g)9    N)Iterable)AnyCallableLiteralTypeVarUnion)NoAlertPresentExceptionNoSuchElementExceptionNoSuchFrameExceptionStaleElementReferenceExceptionWebDriverException)Alert)	WebDriver
WebElementDTtitlereturnc                 $   ^  S[         4U 4S jjnU$ )zAn expectation for checking the title of a page.

Parameters:
-----------
title : str
    The expected title, which must be an exact match.

Returns:
-------
boolean : True if the title matches, False otherwise.
driverc                 "   > U R                   T:H  $ Nr   r   r   s    w/var/www/home/psychics-availability/venv/lib/python3.13/site-packages/selenium/webdriver/support/expected_conditions.py
_predicatetitle_is.<locals>._predicate8   s    ||u$$    r   r   r   s   ` r   title_isr!   +   s    %9 % r   c                 $   ^  S[         4U 4S jjnU$ )zAn expectation for checking that the title contains a case-sensitive
substring.

Parameters:
-----------
title : str
    The fragment of title expected.

Returns:
-------
boolean : True when the title matches, False otherwise.
r   c                 "   > TU R                   ;   $ r   r   r   s    r   r   "title_contains.<locals>._predicateL   s    $$r   r   r    s   ` r   title_containsr%   >   s    %9 % r   locatorc                 $   ^  S[         4U 4S jjnU$ )a>  An expectation for checking that an element is present on the DOM of a
page. This does not necessarily mean that the element is visible.

Parameters:
-----------
locator : Tuple[str, str]
    Used to find the element.

Returns:
-------
WebElement : The WebElement once it is located.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, "q")))
r   c                 "   > U R                   " T6 $ r   )find_elementr   r&   s    r   r   /presence_of_element_located.<locals>._predicateg   s    ""G,,r   WebDriverOrWebElementr&   r   s   ` r   presence_of_element_locatedr/   R   s    *-0 - r   urlc                 $   ^  S[         4U 4S jjnU$ )zAn expectation for checking that the current url contains a case-
sensitive substring.

Parameters:
-----------
url : str
    The fragment of url expected.

Returns:
-------
boolean : True when the url matches, False otherwise.
r   c                 "   > TU R                   ;   $ r   current_urlr   r0   s    r   r    url_contains.<locals>._predicate{       f((((r   r   r0   r   s   ` r   url_containsr9   m       )9 ) r   patternc                 $   ^  S[         4U 4S jjnU$ )a%  An expectation for checking the current url.

Parameters:
-----------
pattern : str
    The pattern to match with the current url.

Returns:
-------
boolean : True when the pattern matches, False otherwise.

Notes:
------
More powerful than url_contains, as it allows for regular expressions.
r   c                 J   > [         R                  " TU R                  5      S L$ r   )researchr4   )r   r;   s    r   r   url_matches.<locals>._predicate   s    yy&"4"45TAAr   r   )r;   r   s   ` r   url_matchesrA      s    "B9 B r   c                 $   ^  S[         4U 4S jjnU$ )zAn expectation for checking the current url.

Parameters:
-----------
url : str
    The expected url, which must be an exact match.

Returns:
-------
boolean : True when the url matches, False otherwise.
r   c                 "   > TU R                   :H  $ r   r3   r5   s    r   r   url_to_be.<locals>._predicate   r7   r   r   r8   s   ` r   	url_to_berE      s    )9 ) r   c                 $   ^  S[         4U 4S jjnU$ )zAn expectation for checking the current url is different than a given
string.

Parameters:
-----------
url : str
    The expected url, which must not be an exact match.

Returns:
-------
boolean : True when the url does not match, False otherwise
r   c                 "   > TU R                   :g  $ r   r3   r5   s    r   r   url_changes.<locals>._predicate   r7   r   r   r8   s   ` r   url_changesrI      r:   r   Fc                 $   ^  S[         4U 4S jjnU$ )a  An expectation for checking that an element is present on the DOM of a
page and visible. Visibility means that the element is not only displayed
but also has a height and width that is greater than 0.

Parameters:
-----------
locator : Tuple[str, str]
    Used to find the element.

Returns:
-------
WebElement : The WebElement once it is located and visible.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> element = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.NAME, "q")))
r   c                 V   >  [        U R                  " T6 5      $ ! [         a     gf = fNF)_element_if_visibler)   r   r*   s    r   r   1visibility_of_element_located.<locals>._predicate   s0    	&v':':G'DEE- 		s    
((r,   r.   s   ` r   visibility_of_element_locatedrO      s    00  r   elementc                    ^  U 4S jnU$ )a  An expectation for checking that an element, known to be present on the
DOM of a page, is visible.

Parameters:
-----------
element : WebElement
    The WebElement to check.

Returns:
-------
WebElement : The WebElement once it is visible.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> element = WebDriverWait(driver, 10).until(EC.visibility_of(driver.find_element(By.NAME, "q")))

Notes:
------
Visibility means that the element is not only displayed but also has
a height and width that is greater than 0. element is the WebElement
returns the (same) WebElement once it is visible
c                    > [        T5      $ r   )rM   _rP   s    r   r   !visibility_of.<locals>._predicate   s    "7++r    rP   r   s   ` r   visibility_ofrX      s    6, r   
visibilityc                 2    U R                  5       U:X  a  U $ S$ )aP  An expectation for checking that an element, known to be present on the
DOM of a page, is of the expected visibility.

Parameters:
-----------
element : WebElement
    The WebElement to check.
visibility : bool
    The expected visibility of the element.

Returns:
-------
WebElement : The WebElement once it is visible or not visible.
F)is_displayed)rP   rY   s     r   rM   rM     s     **,
:7EEr   c                 $   ^  S[         4U 4S jjnU$ )a+  An expectation for checking that there is at least one element present
on a web page.

Parameters:
-----------
locator : Tuple[str, str]
    Used to find the element.

Returns:
-------
List[WebElement] : The list of WebElements once they are located.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> elements = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.CLASS_NAME, "foo")))
r   c                 "   > U R                   " T6 $ r   )find_elementsr*   s    r   r   4presence_of_all_elements_located.<locals>._predicate(  s    ##W--r   r,   r.   s   ` r    presence_of_all_elements_locatedr`     s    *.0 . r   c                 $   ^  S[         4U 4S jjnU$ )a9  An expectation for checking that there is at least one element visible
on a web page.

Parameters:
-----------
locator : Tuple[str, str]
    Used to find the element.

Returns:
-------
List[WebElement] : The list of WebElements once they are located and visible.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> elements = WebDriverWait(driver, 10).until(EC.visibility_of_any_elements_located((By.CLASS_NAME, "foo")))
r   c                 r   > U R                   " T6  Vs/ s H  n[        U5      (       d  M  UPM     sn$ s  snf r   )r^   rM   )r   rP   r&   s     r   r   6visibility_of_any_elements_located.<locals>._predicateC  s1    '-';';W'Ef'EGI\]dIe'Efffs   44r,   r.   s   ` r   "visibility_of_any_elements_locatedrd   .  s    *g0 g r   c                 $   ^  S[         4U 4S jjnU$ )a  An expectation for checking that all elements are present on the DOM of
a page and visible. Visibility means that the elements are not only
displayed but also has a height and width that is greater than 0.

Parameters:
-----------
locator : Tuple[str, str]
    Used to find the elements.

Returns:
-------
List[WebElement] : The list of WebElements once they are located and visible.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> elements = WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CLASS_NAME, "foo")))
r   c                 |   >  U R                   " T6 nU H  n[        USS9(       d  M    g   U$ ! [         a     gf = f)NFrY   )r^   rM   r   )r   elementsrP   r&   s      r   r   6visibility_of_all_elements_located.<locals>._predicatea  sK    	++W5H#&w5AA  $ O- 		s   !. . . 
;;r,   r.   s   ` r   "visibility_of_all_elements_locatedrj   I  s    00  r   text_c                 (   ^ ^ S[         4U U4S jjnU$ )as  An expectation for checking if the given text is present in the
specified element.

Parameters:
-----------
locator : Tuple[str, str]
    Used to find the element.
text_ : str
    The text to be present in the element.

Returns:
-------
boolean : True when the text is present, False otherwise.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> is_text_in_element = WebDriverWait(driver, 10).until(
        EC.text_to_be_present_in_element((By.CLASS_NAME, "foo"), "bar")
    )
r   c                 b   >  U R                   " T6 R                  nTU;   $ ! [         a     gf = frL   )r)   textr   r   element_textr&   rk   s     r   r   1text_to_be_present_in_element.<locals>._predicate  s;    	!..8==LL((- 		s   ! 
..r,   r&   rk   r   s   `` r   text_to_be_present_in_elementrs   n      20   r   c                 (   ^ ^ S[         4U U4S jjnU$ )a  An expectation for checking if the given text is present in the
element's value.

Parameters:
-----------
locator : Tuple[str, str]
    Used to find the element.
text_ : str
    The text to be present in the element's value.

Returns:
-------
boolean : True when the text is present, False otherwise.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> is_text_in_element_value = WebDriverWait(driver, 10).until(
...     EC.text_to_be_present_in_element_value((By.CLASS_NAME, "foo"), "bar")
... )
r   c                 t   >  U R                   " T6 R                  S5      nUc  gTU;   $ ! [         a     gf = f)NvalueFr)   get_attributer   ro   s     r   r   7text_to_be_present_in_element_value.<locals>._predicate  sI    	!..8FFwOL#L((- 		   !* * 
77r,   rr   s   `` r   #text_to_be_present_in_element_valuer|     s    60   r   
attribute_c                 ,   ^ ^^ S[         4UU U4S jjnU$ )a  An expectation for checking if the given text is present in the
element's attribute.

Parameters:
-----------
locator : Tuple[str, str]
    Used to find the element.
attribute_ : str
    The attribute to check the text in.
text_ : str
    The text to be present in the element's attribute.

Returns:
-------
boolean : True when the text is present, False otherwise.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> is_text_in_element_attribute = WebDriverWait(driver, 10).until(
...     EC.text_to_be_present_in_element_attribute((By.CLASS_NAME, "foo"), "bar", "baz")
... )
r   c                 t   >  U R                   " T6 R                  T5      nUc  gTU;   $ ! [         a     gf = frL   rx   )r   rp   r}   r&   rk   s     r   r   ;text_to_be_present_in_element_attribute.<locals>._predicate  sI    	!..8FFzRL#L((- 		r{   r,   )r&   r}   rk   r   s   ``` r   'text_to_be_present_in_element_attributer     s    :0   r   c                 $   ^  S[         4U 4S jjnU$ )aT  An expectation for checking whether the given frame is available to
switch to.

Parameters:
-----------
locator : Union[Tuple[str, str], str, WebElement]
    Used to find the frame.

Returns:
-------
boolean : True when the frame is available, False otherwise.

Example:
--------
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it("frame_name"))

Notes:
------
If the frame is available it switches the given driver to the
specified frame.
r   c                   >  [        T[        5      (       a>  [        T[        5      (       d)  U R                  R	                  U R
                  " T6 5        gU R                  R	                  T5        g! [         a     gf = f)NTF)
isinstancer   str	switch_toframer)   r   r*   s    r   r   :frame_to_be_available_and_switch_to_it.<locals>._predicate  sp    	'8,,Z5M5M  &&v':':G'DE    &&w/# 		s   AA2 A2 2
A?>A?r   r.   s   ` r   &frame_to_be_available_and_switch_to_itr     s    69  r   c                 $   ^  S[         4U 4S jjnU$ )az  An Expectation for checking that an element is either invisible or not
present on the DOM.

Parameters:
-----------
locator : Union[WebElement, Tuple[str, str]]
    Used to find the element.

Returns:
-------
boolean : True when the element is invisible or not present, False otherwise.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> is_invisible = WebDriverWait(driver, 10).until(EC.invisibility_of_element_located((By.CLASS_NAME, "foo")))

Notes:
------
- In the case of NoSuchElement, returns true because the element is not
present in DOM. The try block checks if the element is present but is
invisible.
- In the case of StaleElementReference, returns true because stale element
reference implies that element is no longer visible.
r   c                    >  Tn[        U[        5      (       d  U R                  " U6 n[        USS9$ ! [        [
        4 a     gf = f)NFrg   T)r   r   r)   rM   r
   r   )r   targetr&   s     r   r   3invisibility_of_element_located.<locals>._predicate(  sQ    	Ffj11,,f5&v%@@&(FG 	 	s   /3 AAr,   r.   s   ` r   invisibility_of_element_locatedr   	  s    >0  r   c                     [        U 5      $ )az  An Expectation for checking that an element is either invisible or not
present on the DOM.

Parameters:
-----------
element : Union[WebElement, Tuple[str, str]]
    Used to find the element.

Returns:
-------
boolean : True when the element is invisible or not present, False otherwise.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> is_invisible_or_not_present = WebDriverWait(driver, 10).until(
...     EC.invisibility_of_element(driver.find_element(By.CLASS_NAME, "foo"))
... )
)r   )rP   s    r   invisibility_of_elementr   9  s    0 +733r   markc                 $   ^  S[         4U 4S jjnU$ )a1  An Expectation for checking an element is visible and enabled such that
you can click it.

Parameters:
-----------
mark : Union[WebElement, Tuple[str, str]]
    Used to find the element.

Returns:
-------
WebElement : The WebElement once it is located and clickable.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, "foo")))
r   c                    > Tn[        U[        5      (       d  U R                  " U6 n[        U5      " U 5      nU(       a  UR	                  5       (       a  U$ grL   )r   r   r)   rX   
is_enabled)r   r   rP   r   s      r   r   +element_to_be_clickable.<locals>._predicatem  sM    &*--((&1F'/w))++Nr   r,   )r   r   s   ` r   element_to_be_clickabler   T  s    20  r   c                    ^  U 4S jnU$ )a  Wait until an element is no longer attached to the DOM.

Parameters:
-----------
element : WebElement
    The element to wait for.

Returns:
-------
boolean : False if the element is still attached to the DOM, true otherwise.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> is_element_stale = WebDriverWait(driver, 10).until(EC.staleness_of(driver.find_element(By.CLASS_NAME, "foo")))
c                 H   >  TR                  5         g! [         a     gf = fNFT)r   r   rS   s    r   r    staleness_of.<locals>._predicate  s)    	 - 		s    
!!rV   rW   s   ` r   staleness_ofr   y  s    ( r   c                    ^  U 4S jnU$ )a  An expectation for checking the selection is selected.

Parameters:
-----------
element : WebElement
    The WebElement to check.

Returns:
-------
boolean : True if the element is selected, False otherwise.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> is_selected = WebDriverWait(driver, 10).until(EC.element_to_be_selected(driver.find_element(
        By.CLASS_NAME, "foo"))
    )
c                 $   > TR                  5       $ r   is_selectedrS   s    r   r   *element_to_be_selected.<locals>._predicate  s    ""$$r   rV   rW   s   ` r   element_to_be_selectedr     s    ,% r   c                 $   ^  S[         4U 4S jjnU$ )a
  An expectation for the element to be located is selected.

Parameters:
-----------
locator : Tuple[str, str]
    Used to find the element.

Returns:
-------
boolean : True if the element is selected, False otherwise.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> is_selected = WebDriverWait(driver, 10).until(EC.element_located_to_be_selected((By.CLASS_NAME, "foo")))
r   c                 >   > U R                   " T6 R                  5       $ r   )r)   r   r*   s    r   r   2element_located_to_be_selected.<locals>._predicate  s    ""G,88::r   r,   r.   s   ` r   element_located_to_be_selectedr     s    (;0 ; r   r   c                    ^ ^ U U4S jnU$ )aP  An expectation for checking if the given element is selected.

Parameters:
-----------
element : WebElement
    The WebElement to check.
is_selected : bool

Returns:
-------
boolean : True if the element's selection state is the same as is_selected

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> is_selected = WebDriverWait(driver, 10).until(
...     EC.element_selection_state_to_be(driver.find_element(By.CLASS_NAME, "foo"), True)
... )
c                 *   > TR                  5       T:H  $ r   r   )rT   rP   r   s    r   r   1element_selection_state_to_be.<locals>._predicate  s    ""$33r   rV   )rP   r   r   s   `` r   element_selection_state_to_ber     s    .4 r   c                 (   ^ ^ S[         4UU 4S jjnU$ )an  An expectation to locate an element and check if the selection state
specified is in that state.

Parameters:
-----------
locator : Tuple[str, str]
    Used to find the element.
is_selected : bool

Returns:
-------
boolean : True if the element's selection state is the same as is_selected

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> is_selected = WebDriverWait(driver, 10).until(EC.element_located_selection_state_to_be(
        (By.CLASS_NAME, "foo"), True)
    )
r   c                 j   >  U R                   " T6 nUR                  5       T:H  $ ! [         a     gf = frL   )r)   r   r   )r   rP   r   r&   s     r   r   9element_located_selection_state_to_be.<locals>._predicate  s>    	))73G&&(K77- 		   !% 
22r,   )r&   r   r   s   `` r   %element_located_selection_state_to_ber     s    40   r   num_windowsc                 $   ^  S[         4U 4S jjnU$ )a  An expectation for the number of windows to be a certain value.

Parameters:
-----------
num_windows : int
    The expected number of windows.

Returns:
-------
boolean : True when the number of windows matches, False otherwise.

Example:
--------
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> is_number_of_windows = WebDriverWait(driver, 10).until(EC.number_of_windows_to_be(2))
r   c                 4   > [        U R                  5      T:H  $ r   lenwindow_handles)r   r   s    r   r   +number_of_windows_to_be.<locals>._predicate"  s    6(()[88r   r   )r   r   s   ` r   number_of_windows_to_ber     s    &99 9 r   current_handlesc                 $   ^  S[         4U 4S jjnU$ )a5  An expectation that a new window will be opened and have the number of
windows handles increase.

Parameters:
-----------
current_handles : List[str]
    The current window handles.

Returns:
-------
boolean : True when a new window is opened, False otherwise.

Example:
--------
>>> from selenium.webdriver.support.ui import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> is_new_window_opened = WebDriverWait(driver, 10).until(EC.new_window_is_opened(driver.window_handles))
r   c                 F   > [        U R                  5      [        T5      :  $ r   r   )r   r   s    r   r   (new_window_is_opened.<locals>._predicate=  s    6(()C,@@@r   r   )r   r   s   ` r   new_window_is_openedr   (  s    *A9 A r   c                      S[         4S jn U $ )a  An expectation for checking if an alert is currently present and
switching to it.

Returns:
-------
Alert : The Alert once it is located.

Example:
--------
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> alert = WebDriverWait(driver, 10).until(EC.alert_is_present())

Notes:
------
If the alert is present it switches the given driver to it.
r   c                 P     U R                   R                  $ ! [         a     gf = frL   )r   alertr	   )r   s    r   r   $alert_is_present.<locals>._predicateV  s+    	##)))& 		s    
%%r   )r   s    r   alert_is_presentr   C  s    &9  r   c                 (   ^ ^ S[         4UU 4S jjnU$ )ay  An expectation for checking if the given attribute is included in the
specified element.

Parameters:
-----------
locator : Tuple[str, str]
    Used to find the element.
attribute_ : str
    The attribute to check.

Returns:
-------
boolean : True when the attribute is included, False otherwise.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> is_attribute_in_element = WebDriverWait(driver, 10).until(
...     EC.element_attribute_to_include((By.CLASS_NAME, "foo"), "bar")
... )
r   c                 j   >  U R                   " T6 R                  T5      nUS L$ ! [         a     gf = frL   rx   )r   element_attributer}   r&   s     r   r   0element_attribute_to_include.<locals>._predicatex  sA    	 & 3 3W = K KJ W$D00- 		r   r,   )r&   r}   r   s   `` r   element_attribute_to_includer   _  rt   r   expected_conditionsc                  $   ^  S[         4U 4S jjnU$ )a  An expectation that any of multiple expected conditions is true.

Parameters:
-----------
expected_conditions : Callable[[D], T]
    The list of expected conditions to check.

Returns:
-------
T : The result of the first matching condition, or False if none do.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> element = WebDriverWait(driver, 10).until(
... EC.any_of(EC.presence_of_element_located((By.NAME, "q"),
... EC.visibility_of_element_located((By.NAME, "q"))))

Notes:
------
Equivalent to a logical 'OR'. Returns results of the first matching
condition, or False if none do.
r   c                 b   > T H  n U" U 5      nU(       a  Us  $ M     g! [          a     M)  f = frL   r   r   expected_conditionresultr   s      r   any_of_condition any_of.<locals>.any_of_condition  sC    "5+F3!M  #6  & s    
..r   )r   r   s   ` r   any_ofr     s    6  r   c                  $   ^  S[         4U 4S jjnU$ )aK  An expectation that all of multiple expected conditions is true.

Parameters:
-----------
expected_conditions : Callable[[D], Union[T, Literal[False]]]
    The list of expected conditions to check.

Returns:
-------
List[T] : The results of all the matching conditions, or False if any do not.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> elements = WebDriverWait(driver, 10).until(
... EC.all_of(EC.presence_of_element_located((By.NAME, "q"),
... EC.visibility_of_element_located((By.NAME, "q"))))

Notes:
------
Equivalent to a logical 'AND'.
Returns: When any ExpectedCondition is not met: False.
When all ExpectedConditions are met: A List with each ExpectedCondition's return value.
r   c                    > / nT H&  n U" U 5      nU(       d    gUR                  U5        M(     U$ ! [         a       gf = frL   )appendr   )r   resultsr   r   r   s       r   all_of_condition all_of.<locals>.all_of_condition  sO    "5+F3 v& #6  & s   22
A A r   )r   r   s   ` r   all_ofr     s    <
 
 r   c                  $   ^  S[         4U 4S jjnU$ )a  An expectation that none of 1 or multiple expected conditions is true.

Parameters:
-----------
expected_conditions : Callable[[D], Any]
    The list of expected conditions to check.

Returns:
-------
boolean : True if none of the conditions are true, False otherwise.

Example:
--------
>>> from selenium.webdriver.common.by import By
>>> from selenium.webdriver.support.ui import WebDriverWait
>>> from selenium.webdriver.support import expected_conditions as EC
>>> element = WebDriverWait(driver, 10).until(
... EC.none_of(EC.presence_of_element_located((By.NAME, "q"),
... EC.visibility_of_element_located((By.NAME, "q"))))

Notes:
------
Equivalent to a logical 'NOT-OR'. Returns a Boolean
r   c                 ^   > T H  n U" U 5      nU(       a    gM     g! [          a     M'  f = fr   r   r   s      r   none_of_condition"none_of.<locals>.none_of_condition  sA    "5+F3   #6  & s   
,,r   )r   r   s   ` r   none_ofr     s    4!  r   )T)<r>   collections.abcr   typingr   r   r   r   r   selenium.common.exceptionsr	   r
   r   r   r   selenium.webdriver.common.alertr   #selenium.webdriver.remote.webdriverr   r   r   r   r-   r   boolr!   r%   tupler/   r9   rA   rE   rI   rO   rX   rM   listr`   rd   rj   rs   r|   r   r   r   r   r   r   r   r   r   r   intr   r   r   r   r   r   r   rV   r   r   <module>r      s  $ 
 $ 9 9  2 E
 CLCLi34 C Hi[$%67 &# (I;+<"= (sCx XG\F]_iFi=j 6c h	{D'89 ( 9+t*;!< .3 8YK$56 &S Xyk4&78 (38_$%uWU^Z-G'HHIB: (C5%PZ@Z:[3[*\ BF F FwW\~_iOiIj F$eCHo (LaKbdhisdtKtBu 6c3h HNcMdfjkufvMvDw 6"38_"$%uT*-=wu~-M'NNO"J 5c?  3  8UjTkmqTqKr  F$38_$%($$%t+,$N&38_&*-&69&$%t+,&R%5c?C34%yk4 %P-:uS#X./-$%uZ-='>>?-`4:uS#X./4$%uZ-='>>?46"

E#s(O+
,"$%uWU^Z-G'HHI"J* 3%+)> >J 8SE4K3H 8E#s(O J_I`bfIf@g 4: D XWZV[]aVaMb :!38_!+/!$%t+,!H 9+t:K1L 2$s) )dAR8S 6(I;eWU^6K0L#LM 8 %S/  s  xYnXoquXuOv  F%1#q&!1 %hsE'RW.Z[J[D\?\6] %P*"A3a.?(@#@A*qc5a'%.0112*Z$(A38"4 $1#t)9L $r   