Skip to content

Commit 7b8dfca

Browse files
committed
fix creation_flags
1 parent f24e7ff commit 7b8dfca

2 files changed

Lines changed: 49 additions & 33 deletions

File tree

PlaywrightSafeThread/browser/threadsafe_browser.py

Lines changed: 48 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
from playwright._impl._driver import compute_driver_executable, get_driver_env
1515
from playwright.async_api import async_playwright, Page, Browser, BrowserType
1616

17-
UNIX = "windows" not in platform.system().lower()
17+
sys_os = platform.system()
18+
19+
UNIX = "windows" not in sys_os.lower()
1820
LTE_PY37 = platform.python_version_tuple()[:2] <= ("3", "7")
1921

2022
SUPPORTED_BROWSERS = ("chromium", "firefox", "webkit")
@@ -408,12 +410,11 @@ def __exit__(self, *args):
408410

409411
def check_is_install(self, browser):
410412
env = self.get_driver_env()
411-
k = {}
412-
if "win" in sys.platform:
413-
k["creationflags"] = subprocess.CREATE_NO_WINDOW
414-
415413
driver_executable = compute_driver_executable()
416-
completed_process = subprocess.check_output(f"{driver_executable} install {browser} --dry-run", env=env, **k, )
414+
415+
completed_process = subprocess.check_output(f"{driver_executable} install {browser} --dry-run", env=env,
416+
**creation_flags_dict())
417+
417418
locale_ = ":".join(next(filter(lambda x: "Install location" in x,
418419
completed_process.decode().split("\n")), "").split(":")[1:]).strip()
419420

@@ -431,16 +432,12 @@ def get_driver_env():
431432

432433
def run_playwright(self, *args: str):
433434
env = self.get_driver_env()
434-
k = {}
435-
if "win" in sys.platform:
436-
k["creationflags"] = subprocess.CREATE_NO_WINDOW
437-
438435
driver_executable = compute_driver_executable()
439436

440437
with subprocess.Popen([str(driver_executable), *args], env=env, stdout=subprocess.PIPE,
441-
stderr=subprocess.STDOUT, **k) as process:
438+
stderr=subprocess.STDOUT, **creation_flags_dict()) as process:
442439
for line in process.stdout:
443-
print(line.decode('utf-8'))
440+
Logger.info(line.decode('utf-8'))
444441

445442
####################################################################################################################
446443
async def first_page(self) -> "Page":
@@ -455,42 +452,61 @@ async def close(self):
455452
await self.create_task(self.__stop_playwright())
456453
self.stop()
457454

458-
async def goto(self, url, *args, **kwargs):
459-
return await self.create_task(self.page.goto(url, *args, **kwargs))
455+
async def goto(self, url, *args, page=None, **kwargs):
456+
page = page or self.page
457+
return await self.create_task(page.goto(url, *args, **kwargs))
460458

461-
async def add_script_tag(self, *args, **kwargs):
462-
return await self.create_task(self.page.add_script_tag(*args, **kwargs))
459+
async def add_script_tag(self, *args, page=None, **kwargs):
460+
page = page or self.page
461+
return await self.create_task(page.add_script_tag(*args, **kwargs))
463462

464-
async def expose_function(self, *args, **kwargs):
465-
return await self.create_task(self.page.expose_function(*args, **kwargs))
463+
async def expose_function(self, *args, page=None, **kwargs):
464+
page = page or self.page
465+
return await self.create_task(page.expose_function(*args, **kwargs))
466466

467-
async def page_wait_for_function(self, *args, **kwargs):
468-
return await self.create_task(self.page.wait_for_function(*args, **kwargs))
467+
async def page_wait_for_function(self, *args, page=None, **kwargs):
468+
page = page or self.page
469+
return await self.create_task(page.wait_for_function(*args, **kwargs))
469470

470-
async def page_evaluate(self, *args, **kwargs):
471-
return await self.create_task(self.page.evaluate(*args, **kwargs))
471+
async def page_evaluate(self, *args, page=None, **kwargs):
472+
page = page or self.page
473+
return await self.create_task(page.evaluate(*args, **kwargs))
472474

473475
####################################################################################################################
474476
def sleep(self, val, timeout_=None):
475477
if timeout_ is None:
476478
timeout_ = val if val > 5 else 5
477479
self.run_threadsafe(asyncio.sleep(val), timeout_=timeout_)
478480

479-
def goto_sync(self, url, *args, timeout_=60, **kwargs):
480-
return self.run_threadsafe(self.page.goto(url, *args, **kwargs), timeout_=timeout_)
481+
def goto_sync(self, url, *args, page=None, timeout_=60, **kwargs):
482+
page = page or self.page
483+
return self.run_threadsafe(page.goto(url, *args, **kwargs), timeout_=timeout_)
481484

482-
def add_script_tag_sync(self, *args, timeout_=60, **kwargs):
483-
return self.run_threadsafe(self.page.add_script_tag(*args, **kwargs), timeout_=timeout_)
485+
def add_script_tag_sync(self, *args, page=None, timeout_=60, **kwargs):
486+
page = page or self.page
487+
return self.run_threadsafe(page.add_script_tag(*args, **kwargs), timeout_=timeout_)
484488

485-
def expose_function_sync(self, *args, timeout_=60, **kwargs):
486-
return self.run_threadsafe(self.page.expose_function(*args, **kwargs), timeout_=timeout_)
489+
def expose_function_sync(self, *args, page=None, timeout_=60, **kwargs):
490+
page = page or self.page
491+
return self.run_threadsafe(page.expose_function(*args, **kwargs), timeout_=timeout_)
487492

488-
def page_wait_for_function_sync(self, *args, timeout_=60, **kwargs):
489-
return self.run_threadsafe(self.page.wait_for_function(*args, **kwargs), timeout_=timeout_)
493+
def page_wait_for_function_sync(self, *args, page=None, timeout_=60, **kwargs):
494+
page = page or self.page
495+
return self.run_threadsafe(page.wait_for_function(*args, **kwargs), timeout_=timeout_)
490496

491-
def page_evaluate_sync(self, *args, timeout_=60, **kwargs, ):
492-
return self.run_threadsafe(self.page.evaluate(*args, **kwargs), timeout_=timeout_)
497+
def page_evaluate_sync(self, *args, page=None, timeout_=60, **kwargs, ):
498+
page = page or self.page
499+
return self.run_threadsafe(page.evaluate(*args, **kwargs), timeout_=timeout_)
493500

494501
def sync_close(self, timeout_=60):
495502
self.run_threadsafe(self.__stop_playwright(), timeout_=timeout_)
496503
self.stop()
504+
505+
506+
def creation_flags_dict():
507+
try:
508+
if sys_os == 'Windows':
509+
return {"creationflags": subprocess.CREATE_NO_WINDOW}
510+
except:
511+
Logger.exception("creation_flags_dict")
512+
return {}

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
long_description = open("README.md", encoding="utf-8").read()
55
description = "PlaywrightSafeThread"
66

7-
version = "0.5.2.1"
7+
version = "0.5.3"
88

99
setup(
1010
name="PlaywrightSafeThread",

0 commit comments

Comments
 (0)