Skip to content

Commit 96c0cdb

Browse files
committed
Merge pull request #2929 from VWS-Python/adamtheturtle/bump-vws-web-tools
Bump vws-web-tools to 2026.2.16 and update driver setup
2 parents 9c4b4ec + fd1ce9b commit 96c0cdb

3 files changed

Lines changed: 129 additions & 40 deletions

File tree

admin/create_secrets_files.py

Lines changed: 115 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,109 @@
1212

1313
import vws_web_tools
1414
from dotenv import load_dotenv
15-
from selenium import webdriver
1615
from selenium.common.exceptions import TimeoutException
1716

1817
if TYPE_CHECKING:
1918
from selenium.webdriver.remote.webdriver import WebDriver
19+
from vws_web_tools import DatabaseDict, VuMarkDatabaseDict
20+
21+
22+
def _create_and_get_database_details(
23+
driver: "WebDriver",
24+
email_address: str,
25+
password: str,
26+
license_name: str,
27+
database_name: str,
28+
) -> "DatabaseDict | None":
29+
"""Create a cloud database and get its details.
30+
31+
Returns database details or None if a timeout occurs.
32+
"""
33+
vws_web_tools.log_in(
34+
driver=driver,
35+
email_address=email_address,
36+
password=password,
37+
)
38+
vws_web_tools.wait_for_logged_in(driver=driver)
39+
try:
40+
vws_web_tools.create_license(driver=driver, license_name=license_name)
41+
except TimeoutException:
42+
sys.stderr.write("Timed out waiting for license creation\n")
43+
return None
44+
45+
vws_web_tools.create_cloud_database(
46+
driver=driver,
47+
database_name=database_name,
48+
license_name=license_name,
49+
)
50+
51+
try:
52+
return vws_web_tools.get_database_details(
53+
driver=driver,
54+
database_name=database_name,
55+
)
56+
except TimeoutException:
57+
sys.stderr.write("Timed out waiting for database to be created\n")
58+
return None
59+
60+
61+
def _create_and_get_vumark_details(
62+
driver: "WebDriver",
63+
vumark_database_name: str,
64+
) -> "VuMarkDatabaseDict | None":
65+
"""Create a VuMark database and get its details.
66+
67+
Returns VuMark database details or None if a timeout occurs.
68+
"""
69+
try:
70+
vws_web_tools.create_vumark_database(
71+
driver=driver,
72+
database_name=vumark_database_name,
73+
)
74+
except TimeoutException:
75+
sys.stderr.write("Timed out waiting for VuMark database creation\n")
76+
return None
77+
78+
try:
79+
return vws_web_tools.get_vumark_database_details(
80+
driver=driver,
81+
database_name=vumark_database_name,
82+
)
83+
except TimeoutException:
84+
sys.stderr.write(
85+
"Timed out waiting for VuMark database to be created\n"
86+
)
87+
return None
88+
89+
90+
def _generate_secrets_file_content(
91+
database_details: "DatabaseDict",
92+
vumark_details: "VuMarkDatabaseDict",
93+
) -> str:
94+
"""Generate the content of a secrets file."""
95+
return textwrap.dedent(
96+
text=f"""\
97+
VUFORIA_TARGET_MANAGER_DATABASE_NAME={database_details["database_name"]}
98+
VUFORIA_SERVER_ACCESS_KEY={database_details["server_access_key"]}
99+
VUFORIA_SERVER_SECRET_KEY={database_details["server_secret_key"]}
100+
VUFORIA_CLIENT_ACCESS_KEY={database_details["client_access_key"]}
101+
VUFORIA_CLIENT_SECRET_KEY={database_details["client_secret_key"]}
102+
103+
INACTIVE_VUFORIA_TARGET_MANAGER_DATABASE_NAME={os.environ["INACTIVE_VUFORIA_TARGET_MANAGER_DATABASE_NAME"]}
104+
INACTIVE_VUFORIA_SERVER_ACCESS_KEY={os.environ["INACTIVE_VUFORIA_SERVER_ACCESS_KEY"]}
105+
INACTIVE_VUFORIA_SERVER_SECRET_KEY={os.environ["INACTIVE_VUFORIA_SERVER_SECRET_KEY"]}
106+
INACTIVE_VUFORIA_CLIENT_ACCESS_KEY={os.environ["INACTIVE_VUFORIA_CLIENT_ACCESS_KEY"]}
107+
INACTIVE_VUFORIA_CLIENT_SECRET_KEY={os.environ["INACTIVE_VUFORIA_CLIENT_SECRET_KEY"]}
108+
109+
VUMARK_VUFORIA_TARGET_MANAGER_DATABASE_NAME={vumark_details["database_name"]}
110+
VUMARK_VUFORIA_SERVER_ACCESS_KEY={vumark_details["server_access_key"]}
111+
VUMARK_VUFORIA_SERVER_SECRET_KEY={vumark_details["server_secret_key"]}
112+
113+
INACTIVE_VUMARK_VUFORIA_TARGET_MANAGER_DATABASE_NAME={os.environ["INACTIVE_VUMARK_VUFORIA_TARGET_MANAGER_DATABASE_NAME"]}
114+
INACTIVE_VUMARK_VUFORIA_SERVER_ACCESS_KEY={os.environ["INACTIVE_VUMARK_VUFORIA_SERVER_ACCESS_KEY"]}
115+
INACTIVE_VUMARK_VUFORIA_SERVER_SECRET_KEY={os.environ["INACTIVE_VUMARK_VUFORIA_SERVER_SECRET_KEY"]}
116+
""",
117+
)
20118

21119

22120
def main() -> None:
@@ -43,66 +141,44 @@ def main() -> None:
43141

44142
while files_to_create:
45143
if driver is None:
46-
# With Safari we get a bunch of errors / timeouts.
47-
driver = webdriver.Chrome()
144+
driver = vws_web_tools.create_chrome_driver()
48145
file = files_to_create[-1]
49146
sys.stdout.write(f"Creating database {file.name}\n")
50147
time = datetime.datetime.now(tz=datetime.UTC).strftime(
51148
format="%Y-%m-%d-%H-%M-%S",
52149
)
53150
license_name = f"my-license-{time}"
54151
database_name = f"my-database-{time}"
152+
vumark_database_name = f"my-vumark-database-{time}"
55153

56-
vws_web_tools.log_in(
154+
database_details = _create_and_get_database_details(
57155
driver=driver,
58156
email_address=email_address,
59157
password=password,
158+
license_name=license_name,
159+
database_name=database_name,
60160
)
61-
vws_web_tools.wait_for_logged_in(driver=driver)
62-
try:
63-
vws_web_tools.create_license(
64-
driver=driver, license_name=license_name
65-
)
66-
except TimeoutException:
67-
sys.stderr.write("Timed out waiting for license creation\n")
161+
if database_details is None:
68162
driver.quit()
69163
driver = None
70164
continue
71165

72-
vws_web_tools.create_database(
166+
vumark_details = _create_and_get_vumark_details(
73167
driver=driver,
74-
database_name=database_name,
75-
license_name=license_name,
168+
vumark_database_name=vumark_database_name,
76169
)
77-
78-
try:
79-
database_details = vws_web_tools.get_database_details(
80-
driver=driver,
81-
database_name=database_name,
82-
)
83-
except TimeoutException:
84-
sys.stderr.write("Timed out waiting for database to be created\n")
85-
continue
86-
finally:
170+
if vumark_details is None:
87171
driver.quit()
88172
driver = None
173+
continue
89174

90-
file_contents = textwrap.dedent(
91-
text=f"""\
92-
VUFORIA_TARGET_MANAGER_DATABASE_NAME={database_details["database_name"]}
93-
VUFORIA_SERVER_ACCESS_KEY={database_details["server_access_key"]}
94-
VUFORIA_SERVER_SECRET_KEY={database_details["server_secret_key"]}
95-
VUFORIA_CLIENT_ACCESS_KEY={database_details["client_access_key"]}
96-
VUFORIA_CLIENT_SECRET_KEY={database_details["client_secret_key"]}
97-
98-
INACTIVE_VUFORIA_TARGET_MANAGER_DATABASE_NAME={os.environ["INACTIVE_VUFORIA_TARGET_MANAGER_DATABASE_NAME"]}
99-
INACTIVE_VUFORIA_SERVER_ACCESS_KEY={os.environ["INACTIVE_VUFORIA_SERVER_ACCESS_KEY"]}
100-
INACTIVE_VUFORIA_SERVER_SECRET_KEY={os.environ["INACTIVE_VUFORIA_SERVER_SECRET_KEY"]}
101-
INACTIVE_VUFORIA_CLIENT_ACCESS_KEY={os.environ["INACTIVE_VUFORIA_CLIENT_ACCESS_KEY"]}
102-
INACTIVE_VUFORIA_CLIENT_SECRET_KEY={os.environ["INACTIVE_VUFORIA_CLIENT_SECRET_KEY"]}
103-
""",
104-
)
175+
driver.quit()
176+
driver = None
105177

178+
file_contents = _generate_secrets_file_content(
179+
database_details=database_details,
180+
vumark_details=vumark_details,
181+
)
106182
file.write_text(data=file_contents)
107183
sys.stdout.write(f"Created database {file.name}\n")
108184
files_to_create.pop()

pyproject.toml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ optional-dependencies.dev = [
104104
"vulture==2.14",
105105
"vws-python==2026.2.15",
106106
"vws-test-fixtures==2023.3.5",
107-
"vws-web-tools==2024.10.6.1",
107+
"vws-web-tools==2026.2.16.1",
108108
"yamlfix==1.19.1",
109109
"zizmor==1.22.0",
110110
]
@@ -440,6 +440,9 @@ ignore_names = [
440440
"REQUEST_QUOTA_REACHED",
441441
# pydantic-settings
442442
"model_config",
443+
# Used in TYPE_CHECKING for type hints
444+
"DatabaseDict",
445+
"VuMarkDatabaseDict",
443446
]
444447
# Duplicate some of .gitignore
445448
exclude = [ ".venv" ]

vuforia_secrets.env.example

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,13 @@ INACTIVE_VUFORIA_SERVER_SECRET_KEY=<INACTIVE_SERVER_SECRET_KEY>
1313

1414
INACTIVE_VUFORIA_CLIENT_ACCESS_KEY=<INACTIVE_CLIENT_ACCESS_KEY>
1515
INACTIVE_VUFORIA_CLIENT_SECRET_KEY=<INACTIVE_CLIENT_SECRET_KEY>
16+
17+
VUMARK_VUFORIA_TARGET_MANAGER_DATABASE_NAME=<VUMARK_DATABASE_NAME>
18+
19+
VUMARK_VUFORIA_SERVER_ACCESS_KEY=<VUMARK_SERVER_ACCESS_KEY>
20+
VUMARK_VUFORIA_SERVER_SECRET_KEY=<VUMARK_SERVER_SECRET_KEY>
21+
22+
INACTIVE_VUMARK_VUFORIA_TARGET_MANAGER_DATABASE_NAME=<INACTIVE_VUMARK_DATABASE_NAME>
23+
24+
INACTIVE_VUMARK_VUFORIA_SERVER_ACCESS_KEY=<INACTIVE_VUMARK_SERVER_ACCESS_KEY>
25+
INACTIVE_VUMARK_VUFORIA_SERVER_SECRET_KEY=<INACTIVE_VUMARK_SERVER_SECRET_KEY>

0 commit comments

Comments
 (0)