- Added support for complex nested types in dictionaries and lists, including
List[Dict[str, int]],Dict[str, List[int]],List[UserData], andDict[str, CourseData].
- Removed 7 signals from
KNOWN_UNSERIALIZABLE_SIGNALSlist that are now compatible with the event bus due to improved complex type support:org.openedx.learning.discussions.configuration.changed.v1org.openedx.learning.user.notification.requested.v1org.openedx.learning.forum.thread.created.v1org.openedx.learning.forum.thread.response.created.v1org.openedx.learning.forum.thread.response.comment.created.v1org.openedx.learning.course.notification.requested.v1org.openedx.learning.ora.submission.created.v1
- Added new
COURSE_RERUN_COMPLETEDevent in authoring.
- Added new
ENTERPRISE_GROUP_DELETEDevent in enterprise.
- Added new
LTI_PROVIDER_LAUNCH_SUCCESSevent in learning.
- Adding django52 support.
- Added new
LIBRARY_BLOCK_PUBLISHEDevent in authoring. - Added new
LIBRARY_CONTAINER_PUBLISHEDevent in authoring.
- Deprecated the
update_blocksandbackgroundattributes of various content library events in authoring. - Clarified the use case of various content library events in authoring.
- Added new
EXTERNAL_GRADER_SCORE_SUBMITTEDevent in learning. - Add
ExternalGraderScoreDatato support this event
- Breaking change: LibraryCollectionData now takes only a LibraryCollectionLocator.
- Breaking change: LibraryContainerData now takes only a LibraryContainerLocator.
- Added new
LIBRARY_CONTAINER_CREATED,LIBRARY_CONTAINER_UPDATEDandLIBRARY_CONTAINER_DELETEDevents in content_authoring. - Adds
LibraryContainerDatato support these events
- When
EVENT_BUS_CONSUMERsetting is missing or unusable, callingconsume_indefinitelywill raise an exception instead of silently exiting.
- Added linkcode Sphinx extension to the documentation.
- Added common_refs.rst file to reuse common references in the documentation.
- Added support for Python 3.12
- Added new course_authoring signal:
COURSE_IMPORT_COMPLETED.
- Use edx-lint linter for Open edX Events instances in-line code annotations validation.
- Added support for annotated Python dictionaries as Avro Map type.
- Added new inline code annotation to include triggering information about events.
- Fixed
event_typefield inFORUM_THREAD_CREATED,FORUM_THREAD_RESPONSE_CREATED, andFORUM_RESPONSE_COMMENT_CREATEDevents in learning.
- Added
backgroundfield toLibraryCollectionDataso that senders can specify if handlers can run asynchrounously.
- Fixed event
LEARNER_CREDIT_COURSE_ENROLLMENT_REVOKEDso that its serializer can tolerate null nullable fields.
- Adds event
CONTENT_OBJECT_ASSOCIATIONS_CHANGED - Added new
LIBRARY_COLLECTION_CREATED,LIBRARY_COLLECTION_UPDATEDandLIBRARY_COLLECTION_DELETEDevents in content_authoring. - Adds
ContentObjectChangedData, which inherits from ContentObjectData and adds an optional list of stringchanges.
- Deprecated event
CONTENT_OBJECT_TAGS_CHANGEDin favor ofCONTENT_OBJECT_ASSOCIATIONS_CHANGEDPlan to remove after Sumac.
- Added new IDV events
LEARNER_CREDIT_COURSE_ENROLLMENT_REVOKED,IDV_ATTEMPT_CREATED,IDV_ATTEMPT_PENDING,IDV_ATTEMPT_APPROVED, andIDV_ATTEMPT_DENIEDin learning.
- Added new enterprise signal
LEARNER_CREDIT_COURSE_ENROLLMENT_REVOKED.
- Added new enterprise signals
LEDGER_TRANSACTION_CREATED,LEDGER_TRANSACTION_COMMITTED,LEDGER_TRANSACTION_FAILED, andLEDGER_TRANSACTION_REVERSED. - Added a
UuidAvroSerializerto serialize uuid fields. - Added
isortmake target.
- Added new
COURSE_PASSING_STATUS_UPDATED,COURSE_PASSING_STATUS_UPDATED,CCX_COURSE_PASSING_STATUS_UPDATED,CCX_COURSE_PASSING_STATUS_UPDATED,BADGE_AWARDEDandBADGE_REVOKEDevents in learning.
- Updated
ORASubmissionDataclass.
- Updated Python classifiers to include Python 3.11.
- Added new
ORA_SUBMISSION_CREATEDevent in learning.
- Added support for Python 3.11
- Added new
SUBSIDY_REDEEMEDandSUBSIDY_REDEMPTION_REVERSEDevents in enterprise.
- Added new
CONTENT_OBJECT_TAGGEDevents in content_authoring.
- Remove unused
MANAGE_STUDENTS_PERMISSION_ADDEDandMANAGE_STUDENTS_PERMISSION_REMOVEDevents in learning
- Fixed recursion error when consuming events on the same service that produced them.
- Adds utility function to reset application state similar to setup/teardown in Django request/response cycle.
- Added new
COURSE_ACCESS_ROLE_ADDEDandCOURSE_ACCESS_ROLE_REMOVEDevents in learning
- Allow new EVENTS_SERVICE_NAME setting to override SERVICE_VARIANT for data source.
- Added new COURSE_NOTIFICATION_REQUESTED event in learning
- Added new event TRACKING_EVENT_EMITTED.
- Fixed key error in merging event producer configs. Previously, setting only one of enabled or event_key_field would result in a KeyError being thrown
- Re-licensed this repository from AGPL 3.0 to Apache 2.0
- Breaking change: Restructured EVENT_BUS_PRODUCER_CONFIG
- Added new
FORUM_THREAD_CREATED,FORUM_THREAD_RESPONSE_CREATED,FORUM_RESPONSE_COMMENT_CREATEDevents in learning subdomain
- Added new
MANAGE_STUDENTS_PERMISSION_ADDEDandMANAGE_STUDENTS_PERMISSION_REMOVEDevents in learning
- Added new
EXAM_ATTEMPT_SUBMITTED,EXAM_ATTEMPT_REJECTED,EXAM_ATTEMPT_VERIFIED,EXAM_ATTEMPT_RESET, andEXAM_ATTEMPT_ERROREDevents in learning.
- Added generic handler to allow producing to event bus via django settings.
- Added json de/serialization for EventsMetadata
- Added new
PROGRAM_CERTIFICATE_AWARDEDandPROGRAM_CERTIFICATE_REVOKEDevents in learning subdomain - Added new
ProgramCertificateDataandProgramDatadata classes supporting the new program certificate events
- Added new XBLOCK_CREATED and XBLOCK_UPDATED events in content_authoring.
- Added new COURSE_CREATED event in content_authoring.
- Added new CONTENT_LIBRARY_CREATED, CONTENT_LIBRARY_UPDATED and CONTENT_LIBRARY_DELETED events in content_authoring.
- Added new LIBRARY_BLOCK_CREATED, LIBRARY_BLOCK_UPDATED and LIBRARY_BLOCK_DELETED events in content_authoring.
- Added new USER_NOTIFICATION_REQUESTED event.
- Store current versions of Avro schemas and add test to ensure valid evolution
- Fixed event_type of XBLOCK_SKILL_VERIFIED signal
- Breaking change: Remove
signalargument from consume_events and make_single_consumer
- Made signal argument optional in consume_events in preparation for removal
- Added event type as namespace to generated Avro schemas
- Configurable loader for consumer side of Event Bus in
openedx_events.event_bus. - Added management command to load configured consumer and start worker.
- Switch from
edx-sphinx-themetosphinx-book-themesince the former is deprecated. See https://github.com/openedx/edx-sphinx-theme/issues/184 for more details.
- Breaking change: Moved serialize_event_data_to_bytes from openedx_events.event_bus.avro.tests.test_utilities to openedx_events.event_bus.avro.serializer
- Breaking change: Moved deserialize_bytes_to_event_data from openedx_events.event_bus.avro.tests.test_utilities to openedx_events.event_bus.avro.deserializer
- Breaking change: Moved load_all_events() from openedx_events.tests.utils to openedx_events.tooling
- Added support for array type.
- Added new XBLOCK_SKILL_VERIFIED event.
- Added XBlockSkillVerificationData classes.
- Breaking change:
send_event_with_custom_metadatachanges to accept a single EventsMetadata object rather than all of the fields that go into one. This only directly affects event bus consumer libraries.
- Added
COURSE_CERTIFICATE_CONFIG_CHANGEDandCOURSE_CERTIFICATE_CONFIG_DELETEDsignals for when a course's certificate configuration is updated or deleted
- Added
send_event_with_custom_metadata. This will enable event bus consumers to send the event signal with the same metadata fields that were used when the event was produced.
- Updated time metadata to include UTC timezone. The original implementation used utcnow(), which could give different results if the time were ever interpreted to be local time. See https://docs.python.org/3/library/datetime.html#datetime.datetime.utcnow
- EventsMetadata minorversion is now fully optional, and doesn't need to be supplied when initializing to get the default of 0.
- Updated send_event with an optional time argument to be used as metadata.
- Use collections.abc import to use with python 3.8 and 3.10.
- Added new XBLOCK_PUBLISHED, XBLOCK_DUPLICATED and XBLOCK_DELETED signals in content_authoring.
- Added XBlockData and DuplicatedXBlockData classes
- Added custom UsageKeyAvroSerializer for opaque_keys UsageKey.
- Breaking change Make event_metadata parameter in EventBusProducer send API required
- Add event_metadata parameter to EventBusProducer send API. Note: Calling this method with the new argument will throw an exception with older versions of this library that don't yet support the parameter.
- Configurable loader for producer side of Event Bus in
openedx_events.event_bus.
- Fix default value for optional fields from "null" to None
- Breaking change: Removed (optional) field
effortfromCourseCatalogData.Nothing should be relying on this field as it is not used by Course Discovery in Publisher-enabled setups.
- Breaking change: Removed signal
SUBSCRIPTION_LICENSE_MODIFIEDand corresponding data classSubscriptionLicenseData. This should only affect experimental event-bus code (which should also have been deleted by now).
- Breaking Change: Updated from
Django 2.0toDjango 3.0. - Bump version to 1.x to acknowledge that this is in use in production
- Breaking change: Removed
short_descriptionfromCourseCatalogData
- Added new event PERSISTENT_GRADE_SUMMARY_CHANGED.
- Improvements in make upgrade command and requirements files.
- Manually update requirements files to fix requirements bot issue with pip/setup tools.
- Change GitHub workflow to community maintained repository health file.
- Breaking change: Removed
organdnumberfields fromCourseCatalogData(should only affect unreleased event-bus code, though)
- Handle optional (None) values for custom serializers
- Added new content_authoring module with new COURSE_CATALOG_INFO_CHANGED signal
- BREAKING CHANGE: Split AvroAttrsBridge into schema, serialization, and deserialization phases
- Remove assigned_email from SubscriptionLicenseData
- Updated AvroAttrsBridge to handle optional/nullable fields
- Updated AvroAttrsBridge to create schemas from signal data dict rather than individual attrs classes
- Changed openedx_events.learning.data.DiscussionTopicContext to make the group id optional
- Changed DiscussionTopicContext to add a context attribute
- Added missing field for event COURSE_DISCUSSIONS_CHANGED
- Added COURSE_DISCUSSIONS_CHANGED for discussion event
- Changed openedx_events/enterprise/LicenseLifecycle class to openedx_events/enterprise/SubscriptionLicenseData
- Changed LicenseCreated signal class to SUBSCRIPTION_LICENSE_MODIFIED signal class
- Added data definition for enterprise/LicenseLifecycle
- Added LicenseCreated signal definition
- Added AvroAttrsBridge class to convert between avro standard and attrs classes
- Add custom formatting class for events responses.
- Add a way to use send method instead of send_robust while testing.
- Remove unnecessary InstantiationError exception.
- Default is send_robust instead of send unless specified otherwise.
- Remove TestCase inheritance from OpenEdxTestMixin.
- Utilities to use while testing in other platforms.
- Remove raise_exception assignment in events metadata.
- Preliminary Open edX events definitions.
- Add tooling needed to create and trigger events in Open edX platform.
- Add Data Attribute classes used as arguments by Open edX Events.
- Update repository purpose.
- Changed max-doc-length from 79 to 120 following community recommendation.
- Update setup.cfg with complete bumpversion configuration.
- Update documentation with current organization info.
- Add Django testing configuration.
- First release on PyPI.