|
5 | 5 | from dataclasses import dataclass |
6 | 6 | from enum import StrEnum |
7 | 7 | from time import sleep |
8 | | -from typing import Callable, Mapping |
| 8 | +from typing import TYPE_CHECKING, Callable, Mapping |
9 | 9 |
|
10 | 10 | from selenium import webdriver |
11 | 11 | from selenium.common import ElementNotInteractableException |
12 | 12 | from selenium.webdriver.chrome.service import Service |
13 | 13 | from selenium.webdriver.common.by import By |
14 | | -from selenium.webdriver.remote.webelement import WebElement |
15 | 14 |
|
16 | 15 | from codenames.classic.board import ClassicBoard |
17 | 16 | from codenames.generic.move import PASS_GUESS, Clue, Guess |
|
28 | 27 | ) |
29 | 28 | from codenames.utils.formatting import wrap |
30 | 29 |
|
| 30 | +if TYPE_CHECKING: |
| 31 | + from selenium.webdriver.remote.webelement import WebElement |
| 32 | + |
31 | 33 | log = logging.getLogger(__name__) |
32 | 34 |
|
33 | 35 | WEBAPP_URL = "https://codenames.game/" |
@@ -279,7 +281,8 @@ def get_card_containers(self) -> list[WebElement]: |
279 | 281 | card_elements = self.driver.find_elements(by=By.CLASS_NAME, value="card") |
280 | 282 | card_elements = [element for element in card_elements if element.text != ""] |
281 | 283 | if len(card_elements) < 25: |
282 | | - raise ValueError(f"Expected 25 cards, loaded {len(card_elements)}") |
| 284 | + msg = f"Expected 25 cards, loaded {len(card_elements)}" |
| 285 | + raise ValueError(msg) |
283 | 286 | return self.driver.find_elements(By.XPATH, value="//div[@role='img']") |
284 | 287 |
|
285 | 288 | def get_clue_input(self) -> WebElement: |
@@ -343,11 +346,11 @@ def poll_elements[ |
343 | 346 | log.debug(f"Polling [{len(element_getters)}] elements...") |
344 | 347 | try: |
345 | 348 | return poll_elements(element_getters, timeout_sec=timeout_sec, poll_interval_sec=poll_interval_sec) |
346 | | - except Exception as e: |
| 349 | + except Exception: |
347 | 350 | if screenshot: |
348 | 351 | log.info(f"{self.log_prefix} Polling failed, saving screenshot...") |
349 | 352 | self.screenshot("failed polling") |
350 | | - raise e |
| 353 | + raise |
351 | 354 |
|
352 | 355 | def screenshot(self, tag: str, raise_on_error: bool = False) -> str | None: |
353 | 356 | return save_screenshot(adapter=self, tag=tag, raise_on_error=raise_on_error) |
|
0 commit comments