pyee
A rough port of Node.js's EventEmitter to Python with a few tricks of its own
Decision gist · record as of 2026-08-14
Yes. pyee is a mature, actively maintained library with low install friction, no security vulnerabilities, and a permissive license. It's well-suited for any Python project needing event-driven patterns, especially those familiar with Node.js or requiring async/threaded event coordination. The recent release and stable maintenance history make it a reliable choice.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.12 or later.
- Low install friction with a single lightweight dependency (typing-extensions).
- The package is actively maintained with a recent release (1 day old) and has been stable since 2011, suggesting a mature, well-established library.
License · maintenance · safety
MIT (permissive) — MIT license is permissive and poses no significant restrictions—you can use, modify, and distribute pyee freely in commercial and private projects with minimal obligations.
last release 2026-08-13 (1 days) · last repo commit 2026-08-13 · 429 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 87,149,660 downloads/mo, #388 on PyPI
Alternatives
Verify before relying
pip install pyee
from pyee import EventEmitter
ee = EventEmitter()
@ee.on('event')
def handler(data):
print(data)
ee.emit('event', 'hello')- Whether async subclasses (e.g., AsyncIOEventEmitter) are documented or available in the current version.
- Performance characteristics when handling high-frequency events or many concurrent listeners.
What it is and what it does
pyee is a Python port of Node.js's EventEmitter, providing a familiar event-driven programming model for Python developers. It lets you register listeners on named events and emit those events with data, triggering all registered handlers. The library includes specialized subclasses for async/await patterns and threaded execution, making it useful for building event-driven applications that need to coordinate work across multiple execution contexts.
The package is lightweight, depending only on typing-extensions, and supports modern Python versions (3.12+). It's been in active development since 2011 and maintains a stable API, making it a low-risk choice for projects that want to adopt event-driven patterns without heavy framework overhead.
Use it for
- Build event-driven applications where components communicate via named events rather than direct function calls.
- Implement pub-sub patterns in Python applications, particularly when porting code from Node.js projects.
- Coordinate asynchronous tasks using async/await with event listeners and emitters.
- Create plugin or hook systems where multiple handlers can respond to the same application events.
- Handle threaded event dispatch when you need event listeners to run in separate threads.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
pyee is a mature, actively maintained library with low install friction, no security vulnerabilities, and a permissive license. It's well-suited for any Python project needing event-driven patterns, especially those familiar with Node.js or requiring async/threaded event coordination. The recent release and stable maintenance history make it a reliable choice.
Install
pyee on PyPI
Before you install
Low install friction with a single lightweight dependency (typing-extensions). The package is actively maintained with a recent release (1 day old) and has been stable since 2011, suggesting a mature, well-established library.
Requires Python 3.12 or later.
License in practice
MIT license is permissive and poses no significant restrictions—you can use, modify, and distribute pyee freely in commercial and private projects with minimal obligations.
Quickstart
pip install pyee
from pyee import EventEmitter
ee = EventEmitter()
@ee.on('event')
def handler(data):
print(data)
ee.emit('event', 'hello')
Verify before relying
- Whether async subclasses (e.g., AsyncIOEventEmitter) are documented or available in the current version.
- Performance characteristics when handling high-frequency events or many concurrent listeners.
Package facts
| License | MIT permissive |
| Python support | Supports the current Python release >=3.12 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 1 packagetyping-extensions |
| Maintenance | Actively maintained 1 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 87,149,660 / month, #388 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 4 - BetaIntended Audience :: DevelopersLicense :: OSI Approved :: MIT LicenseOperating System :: OS IndependentProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Topic :: Other/Nonlisted Topic |
Evidence: pyee-14.0.0-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “event emitter python”
- pyeepyee provides an EventEmitter class for Python that mimics Node.js's…
- pymitterAn event emitter library that lets you register handlers for named…
- slackeventsapiReceives and parses events from Slack's Events API using an event…
Give your agent the search over MCP, or paste the wish link into any chat.
More Other/Nonlisted Topic packages
Wraps any iterable to display a real-time progress bar in the terminal or Jupyter notebook, showing iteration count, elapsed time, and estimated time remaining.
progressbar2 renders text-based progress bars in the terminal, handling custom widgets, concurrent bars, unknown-length progress, and clean output around logs and prints.
Converts CSS style blocks into inline style attributes on HTML elements, making HTML suitable for email clients that don't support style tags.
Generates shell tab completion scripts for Python CLI applications built with argparse, supporting bash, zsh, fish, and tcsh without runtime overhead.
Install it if you build Python command-line tools and want to offer your users fast, reliable shell completion.
Build and send HTML and plain-text emails with attachments, inline images, template rendering, and DKIM signing through a high-level Python API.
Install it if you need to send HTML emails, attach files, render templates, or sign with DKIM—features that would otherwise require substantial boilerplate.
Queries Japanese national holidays and substitute holidays based on official government data, with methods to check if a date is a holiday, retrieve holiday names, and list holidays by date range, year, or month.
Install it if you need reliable Japanese holiday lookups.
See also pymitter · pyventus · slackeventsapi · abxbus · Events · zthreading · aeventkit · eventkit · fabricatio · rel