from playwright.sync_api import PlaywrightContextManager import asyncio # So playwright wants to run as a context manager, but we do something horrible and hacky # we are holding the session open for as long as possible, then shutting it down, and opening a new one # So it means we don't get to use PlaywrightContextManager' __enter__ __exit__ # To work around this, make goodbye() act the same as the __exit__() # # But actually I think this is because the context is opened correctly with __enter__() but we timeout the connection # then theres some lock condition where we cant destroy it without it hanging class c_PlaywrightContextManager(PlaywrightContextManager): def goodbye(self) -> None: self.__exit__() def c_sync_playwright() -> PlaywrightContextManager: return c_PlaywrightContextManager()