Skip to main content

Super simple event emitter in Python 3, built with asyncio. No decorators required.

Project description

Event Emitter (asyncio)

Super simple event emitter in Python 3, built with asyncio. No decorators required. Built around a subset of the NodeJS EventEmitter API.

A full write up and explanation for how this module works can be found here.

Installation

pip install event_emitter_asyncio

Usage (Working example)

import asyncio

from event_emitter_asyncio.EventEmitter import EventEmitter
event_emitter = EventEmitter()

async def run():
  # add a listener
  async def func(event):
    for pet in event['pets']:
      print(pet)
  event_emitter.add_listener('some-event', func)

  # emit an event every second for 3 seconds
  n = 0
  while n < 3:
    event_data = { 'pets': ['cats', 'dogs'] }
    event_emitter.emit('some-event', event_data)
    await asyncio.sleep(1)
    n += 1

  # remove the listener
  event_emitter.remove_listener('some-event', func)

loop = asyncio.get_event_loop()
loop.run_until_complete(run())

This will give:

> cats
> dogs
> cats
> dogs
> cats
> dogs

Developing on this repo

Development

git clone git@github.com:joeltok/event-emitter-asyncio.git
cd ./event-emitter-asyncio
python3 -m venv ./venv
source venv/bin/activate
pip3 install pytest
pip3 install pytest-asyncio

Testing

python3 -m pytest src/event_emitter_asyncio/

Packaging

source venv/bin/activate
python3 -m pip install --upgrade build
python3 -m pip install --upgrade twine
rm -rf dist && python3 -m build
twine upload dist/*

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

event_emitter_asyncio-1.0.4.tar.gz (3.3 kB view details)

Uploaded Source

Built Distribution

event_emitter_asyncio-1.0.4-py3-none-any.whl (4.1 kB view details)

Uploaded Python 3

File details

Details for the file event_emitter_asyncio-1.0.4.tar.gz.

File metadata

  • Download URL: event_emitter_asyncio-1.0.4.tar.gz
  • Upload date:
  • Size: 3.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.6

File hashes

Hashes for event_emitter_asyncio-1.0.4.tar.gz
Algorithm Hash digest
SHA256 e3a36633d0f27991d415b61ce79cdcd727a23d4f62b941974500310084fcb8a1
MD5 8b28da1baa869cf9815a4e9619a04357
BLAKE2b-256 dcd23cf9d346ac0ac0f7137859ea6069a8ea65ece07c6b9be92c52f028a7ecc3

See more details on using hashes here.

File details

Details for the file event_emitter_asyncio-1.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for event_emitter_asyncio-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 92eeaf634f04490a1624cd09fea643a4212f3aa584360f3634e17716f47f777f
MD5 79d5557ab095495381cac82f9efc9570
BLAKE2b-256 662db27a2425d68c4cfd11c21443aa0da3cdd2b1ce82ca23334ec52c1d9705dc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page