pyee
A rough port of Node.js's EventEmitter to Python with a few tricks of its own
Install
pyee on PyPI
pip
pip install pyeeuv
uv add pyeepoetry
poetry add pyeePackage facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.12) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — typing-extensions |
| Maintenance | actively maintained — 0 days since the last release |
| Last repo commit | |
| First released | |
| Popularity | one of the top 1,000 most-downloaded packages on PyPI (30-day window, as of 2026-08-13) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-13) |
Evidence: pyee-14.0.0-py3-none-any.whl
Keywords: events, emitter, node.js, node, eventemitter, event_emitter
About pyee
from the package's own PyPI description — quoted content, verbatim
pyee
pyee supplies a EventEmitter object that is similar to the
EventEmitter class from Node.js. It also supplies a number of subclasses
with added support for async and threaded programming in python, such as
async/await.
Docs
Autogenerated API docs, including basic installation directions and examples, can be found at <https://pyee.readthedocs.io>.
Development
See DEVELOPMENT.md.
Changelog
See CHANGELOG.md.
Contributors
See CONTRIBUTORS.md.
License
MIT/X11, see LICENSE.
AI interpretation — verify before relying
AI-generated interpretation of the package facts above; every digit, version, license, or vulnerability id it cites is grounded in the facts already shown on this page
pyee provides an EventEmitter class for Python that mimics Node.js's event-driven architecture, with support for async/await and threaded programming patterns.
Low friction: single lightweight dependency (typing-extensions), pure Python wheel distribution, and actively maintained with a recent release. Repository shows steady engagement with 429 stars and current Python 3.12+ support.
MIT license permits unrestricted use, modification, and distribution in both open-source and commercial projects with minimal obligations—only attribution required.
Usage
pip install pyee
from pyee import EventEmitter
ee = EventEmitter()
@ee.on('event')
def handler(data):
print(data)
ee.emit('event', 'hello')
Requires Python 3.12 or later; async/await features require an async runtime context.
Verdict: pyee is a well-maintained, low-friction event emitter library suitable for event-driven Python applications. Active development, permissive MIT licensing, minimal dependencies, and no known vulnerabilities make it a reliable choice for projects needing Node.js-style event patterns.
Needs verification
- Whether the async/await subclasses require additional setup or configuration beyond the base EventEmitter
- Performance characteristics and suitability for high-throughput event scenarios
Similar packages
permissive · top 1,000 on PyPI
pyrightpermissive · top 1,000 on PyPI
zope.eventunclear · top 1,000 on PyPI
PyYAMLpermissive · top 100 on PyPI
ruamel.yaml.clibpermissive · top 1,000 on PyPI
ruamel.yamlpermissive · top 1,000 on PyPI
fastcorepermissive · top 1,000 on PyPI
boltonspermissive · top 1,000 on PyPI
watchdogpermissive · top 1,000 on PyPI
jupyter-eventspermissive · top 1,000 on PyPI