Install & Compatibility
Where this runs
tested against v4.0.0 · 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.000s · 132.3MB
glibcpy 3.10–3.95 runs
installs and imports cleanly · install 10.1s · import 0.000s · 135MB
140MB installed
● package 140MB
Code
Verified usage
Verified import paths — ran on the pinned version, not inferred.
ContentDate
✓ from edx_when.models import ContentDate
✗ from edx_when.models import ContentDate
Fetches the first 3 schedule entries for a given user and course. Requires Django settings configured.
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'yourproject.settings')
import django
django.setup()
from django.contrib.auth import get_user_model
from opaque_keys.edx.keys import CourseKey
from edx_when.api import get_schedule_for_user
def demo():
user = get_user_model().objects.first()
course_key = CourseKey.from_string('course-v1:DemoX+Demo_2024')
schedule = get_schedule_for_user(user.id, course_key)
print(schedule[:3] if schedule else 'No schedule found')
demo()
Upgrade
Version history
4.0.0latest on PyPI · released Apr 7, 2026
Audit
Dependencies
DjangorequiredModels and migrations depend on Django ORM
edx-opaque-keysrequiredUsageKey types for block identifiers