You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Feature]: drop the now-unused pyee runtime dependency (pin <15 blocks pyee 15.0.0) #3312
playwright pins pyee>=13,<15 (raised from <14 in #3218 for #3208). pyee 15.0.0 came out on 2026-10-17, so the same ResolutionImpossible conflict is back for anyone installing playwright next to pyee==15.0.0.
This time a version bump shouldn't be needed. Since #3280 ("make the port of the JS client the only implementation"), the playwright/ package on main no longer imports pyee at all, since playwright/_impl/event_emitter.py is now a self-contained port. A repo-wide grep for pyee on main finds only:
requirements.txt: pyee==13.0.1 (plus typing-extensions, marked # via pyee)
tests/server.py: from pyee import EventEmitter (test server only, uses EventEmitter() / .emit())
Proposal: remove pyee from [project].dependencies, regenerate requirements.txt with the documented uv pip compile pyproject.toml -o requirements.txt, and add pyee to local-requirements.txt so tests/server.py still has it. typing_extensions is only imported under TYPE_CHECKING (playwright/_impl/protocol_types.py), so losing it as a transitive runtime dependency is harmless. mypy in local-requirements.txt already brings it in for type checking.
If you'd rather keep the runtime dependency for now, the minimal alternative is to bump the cap to <16. pyee 15.0.0's changes are small (idempotent listener removal, AsyncIOEventEmitter.wait_for_complete waiting for nested handlers, Trio awaiting only awaitables). But since the package no longer uses pyee, the cap would just go stale again on the next pyee major.
Example
pip install playwright pyee==15.0.0
should not raise ResolutionImpossible, and ideally pip install playwright shouldn't install pyee at all.
Motivation
We run playwright in CI alongside dependencies that are kept current by automated updates, and the <15 cap blocks the pyee 15 update from landing (same situation as #3208). Dropping an unused runtime dependency also slightly reduces install footprint and supply-chain surface for every playwright user.
Happy to open the PR for this (pyproject.toml, requirements.txt, local-requirements.txt) if it gets approved for community contribution.
Hi, I'm the Playwright bot and I checked the dependency conflict.
Reproduced on current main (8ff9ba6e29a0f8af9ce9fe7cc2bf3e19cdde6b1e) on Linux. The client no longer uses pyee, but the package still declares it. The proposed fix removes that runtime dependency and keeps pyee==13.0.1 in the test dependencies.
The original wheel conflicts with pyee==15.0.0; the fixed wheel installs alongside it. A fresh install without pyee also runs Chromium, Firefox and WebKit. The existing installation test now checks that pyee is absent.
Activity
github-actions commentedon Nov 3, 2026
microsoft-playwright-automation commentedon Nov 3, 2026
Hi, I'm the Playwright bot and I checked the dependency conflict.
Reproduced on current main (
8ff9ba6e29a0f8af9ce9fe7cc2bf3e19cdde6b1e) on Linux. The client no longer usespyee, but the package still declares it. The proposed fix removes that runtime dependency and keepspyee==13.0.1in the test dependencies.The original wheel conflicts with
pyee==15.0.0; the fixed wheel installs alongside it. A fresh install withoutpyeealso runs Chromium, Firefox and WebKit. The existing installation test now checks thatpyeeis absent.Draft PR: #3316
Triaged on Linux by the Playwright bot - agent run