Install & Compatibility
Where this runs
tested against v9.14.1 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
muslpy 3.10–3.95 runs
installs and imports cleanly · install 0.0s · import 0.334s · 94.1MB
glibcpy 3.10–3.95 runs
installs and imports cleanly · install 6.9s · import 0.346s · 100MB
102MB installed
● package 102MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
OpenEdxPublicSignal
✓ from openedx_events.tooling import OpenEdxPublicSignal
✗ from openedx_events import OpenEdxPublicSignal
OpenEdxPublicSignal is in the tooling submodule, not top-level.
OrgEvents
✓ from openedx_events.event_bus import EventBus, OrgEvents
✗ from openedx_events import OrgEvents
OrgEvents is part of the event_bus submodule.
Create and send a custom Open edX event using OpenEdxPublicSignal.
from openedx_events.tooling import OpenEdxPublicSignal
from openedx_events.learning.data import UserData, CourseData
# Define a custom signal
custom_signal = OpenEdxPublicSignal(
event_type="org.myorg.my.event",
data={
"user": UserData,
"course": CourseData,
}
)
# Send the signal
custom_signal.send_event(
user=UserData(id=1, email="user@example.com"),
course=CourseData(course_key="course-v1:Org+Course+2025")
)
Errors
Common errors & fixes
ImportError: cannot import name 'OpenEdxPublicSignal' from 'openedx_events'
The symbol is not top-level; it's in the tooling submodule.
fixUse: `from openedx_events.tooling import OpenEdxPublicSignal`
AttributeError: module 'openedx_events' has no attribute 'OrgEvents'
OrgEvents is located in the event_bus submodule.
fixUse: `from openedx_events.event_bus import OrgEvents`
Upgrade
Version history
11.2.0latest on PyPI · released Apr 22, 2026
Audit
Dependencies
No dependency data recorded yet.