⚡ Sangsakala Proxy 🏠 Home
Skip to content

[Feature]: drop the now-unused pyee runtime dependency (pin <15 blocks pyee 15.0.0) #3312

Open

Description

@e2jk

🚀 Feature Request

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:

  • pyproject.toml: "pyee>=13,<15" (runtime dependency)
  • 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.


Claude on behalf of e2jk

Activity

  1. github-actions commented on Nov 3, 2026

    @github-actions
  2. microsoft-playwright-automation commented on Nov 3, 2026

    @microsoft-playwright-automation
    Contributor

    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.

    Draft PR: #3316

    Triaged on Linux by the Playwright bot - agent run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions