event-routing-backends
=============================
|pypi-badge| |ci-badge| |codecov-badge| |doc-badge| |pyversions-badge|
|license-badge|
Various backends for retransmitting edX LMS events to external services.
Overview
--------
event-routing-backends contains plugins for the `event-tracking`_ app that is installed as a part of edx-platform. It provides a backend that can take events and re-transmit them to external services. It also provides some new processers that can convert edx-platform events into other formats.
Currently work to support xAPI and Caliper event formats is in progress.
See `OEP 26`_ for background; the xAPI and Caliper subdocuments in particular include a specification of how LMS events will be translated to the format of the respective protocols.
.. _event-tracking: https://github.com/openedx/event-tracking
.. _OEP 26: https://open-edx-proposals.readthedocs.io/en/latest/oep-0026-arch-realtime-events.html
Documentation
-------------
Documentation for this repo is published to `Read the Docs <https://event-routing-backends.readthedocs.io/en/latest/>`_
License
-------
The code in this repository is licensed under the AGPL 3.0 unless
otherwise noted.
Please see `LICENSE.txt <LICENSE.txt>`_ for details.
How To Contribute
-----------------
Contributions are very welcome.
Please read `How To Contribute <https://github.com/openedx/.github/blob/master/CONTRIBUTING.md>`__ for details.
should be followed for all Open edX projects.
The pull request description template should be automatically applied if you are creating a pull request from GitHub. Otherwise you
can find it at `PULL_REQUEST_TEMPLATE.md <.github/PULL_REQUEST_TEMPLATE.md>`_.
The issue report template should be automatically applied if you are creating an issue on GitHub as well. Otherwise you
can find it at `ISSUE_TEMPLATE.md <.github/ISSUE_TEMPLATE.md>`_.
Reporting Security Issues
-------------------------
Please do not report security issues in public. Please email security@openedx.org.
Getting Help
------------
If you're having trouble, we have discussion forums at https://discuss.openedx.org where you can connect with others in the community.
Our real-time conversations are on Slack. You can request a `Slack invitation`_, then join our `community Slack workspace`_.
For more information about these options, see the `Getting Help <https://openedx.org/getting-help>`__ page.
.. _Slack invitation: https://openedx.org/slack
.. _community Slack workspace: https://openedx.slack.com/
.. |pypi-badge| image:: https://img.shields.io/pypi/v/event-routing-backends.svg
:target: https://pypi.python.org/pypi/event-routing-backends/
:alt: PyPI
.. |ci-badge| image:: https://github.com/openedx/event-routing-backends/workflows/Python%20CI/badge.svg?branch=master
:target: https://github.com/openedx/event-routing-backends/actions?query=workflow%3A%22Python+CI%22
:alt: CI
.. |codecov-badge| image:: https://codecov.io/github/edx/event-routing-backends/coverage.svg?branch=master
:target: https://codecov.io/github/edx/event-routing-backends?branch=master
:alt: Codecov
.. |doc-badge| image:: https://readthedocs.org/projects/event-routing-backends/badge/?version=latest
:target: https://event-routing-backends.readthedocs.io/en/latest/
:alt: Documentation
.. |pyversions-badge| image:: https://img.shields.io/pypi/pyversions/event-routing-backends.svg
:target: https://pypi.python.org/pypi/event-routing-backends/
:alt: Supported Python versions
.. |license-badge| image:: https://img.shields.io/github/license/edx/event-routing-backends.svg
:target: https://github.com/openedx/event-routing-backends/blob/master/LICENSE.txt
:alt: License
Change Log
----------
..
All enhancements and patches to event_routing_backends will be documented
in this file. It adheres to the structure of https://keepachangelog.com/ ,
but in reStructuredText instead of Markdown (for ease of incorporation into
Sphinx documentation and the PyPI description).
This project adheres to Semantic Versioning (https://semver.org/).
.. There should always be an "Unreleased" section for changes pending release.
[9.3.2]
* Fixes issues with gzip files and duplicated events
[9.3.0]
* Support use of ERB for transforming non-openedx events
[9.2.1]
* Add support for either 'whitelist' or 'registry.mapping' options (whitelist introduced in v9.0.0)
[9.2.0]
* Add discussion reference to comments and responses xAPI events
[9.1.0]
* Add python 3.11 and 3.12 support
[9.0.1]
* Fix an issue with the event routing backend async task to not find the event-tracking backend.
[9.0.0]
~~~~~~~
* **BREAKING CHANGE**: Use a single entry point for all event routing backends.
which allows to easily switch bettwen celery and the event bus for the backends.
[8.3.0]
* Allow to use any configured engine to replay tracking logs
[8.2.0]
* Add support for batching for EventsRouter.
[8.1.2]
* Add grade.now_* events to the xAPI supported events list.
[8.1.1]
* Dinamically get the xblock version from the event.
[8.1.0]
~~~~~~~
* Add support to consume tracking logs from the event bus.
[8.0.0]
~~~~~~~
* **BREAKING CHANGE**: Add transformer argument to openedx dynamic filter.
[7.2.0]
~~~~~~~
* Add support for usernames that are numeric.
[7.1.0]
~~~~~~~
* Add support for openedx-filter that basically allows to extend or change the standard behavior
[7.0.2]
~~~~~~~
* Ensure lists of answers in problem_check are properly serialized to JSON so they
can be parsed downstream
**Note: Old events cannot be updated, the log must be replayed (if possible).**
[7.0.1]
~~~~~~~
* Do not send events for unknown courses
[7.0.0]
~~~~~~~
* Multi-question problem_check tracking log statements will now be split into one xAPI statement for each question
[6.2.0]
~~~~~~~
* Add support for completion events
[6.1.0]
~~~~~~~
* Add support for exam attempts events
[6.0.0]
~~~~~~~
* Do not send events for unknown users
[5.5.6]
~~~~~~~
* upgrading deprecated `djfernet` with `django-fernet-fields-v2`
[5.4.0]
~~~~~~~
* Add support for the ``edx.course.enrollment.mode_changed`` event
[5.3.1]
~~~~~~~
* Allow External ID type to fall back to LTI on older versions of edx-platform
to preserve backward compatibility
[5.3.0]
~~~~~~~
* Use proper externalId types XAPI and CALIPER instead of LTI
* Make user identifier in xAPI events configurable
* Switch from ``edx-sphinx-theme`` to ``sphinx-book-theme`` since the former is
deprecated
* Make id of xAPI statements idempotent
[5.2.2]
~~~~~~~
* Rename toggle_warnings to toggle_warning for consistency with setting_warning.
* Added session id to all events
* add support for video interaction events.
* Replaced eventVersion with transformerVersion to include semantic version of event-routing-backend package.
[5.2.1]
~~~~~~~
* Added `video_complete` event to xAPI backend and fixed broken links in documentation
[5.2.0]
~~~~~~~
* Added Support for Django4 and used djfernet instead of django-fernet-fields
* Removed Django22, 30 and 31 support
* Constrained "click" to 7.1.2 as edx-celeryutils constraints the version to this package
[4.1.1]
~~~~~~~
* Switched from jsonfield2 to jsonfield as the earlier one has archived and merged back in the latter one.
[4.1.0]
~~~~~~~
* Added support for django3.0, 3.1 and 3.2
[4.0.1]
~~~~~~~
* Change a noisy INFO log message in ``TransformerRegistry.register()`` to DEBUG and fix two logging typos.
[4.0.0]
~~~~~~~
* **Breaking change**: Rename ``CaliperEnvelopProcessor`` to ``CaliperEnvelopeProcessor`` and rename module accordingly (typo fix)
[3.0.2]
~~~~~~~
* Added more directions for local testing
* changed how event data is enveloped for caliper events
* changed url to point from http://purl.imsglobal.org/ctx/caliper/v1p1 to http://purl.imsglobal.org/ctx/caliper/v1p2
[3.0.1]
~~~~~~~
This tag is a re-release of version 3.0.0. (Failed to bump internal version, though.)
[3.0.0]
~~~~~~~
* **Breaking change**: Caliper and xAPI processors will reject events unless the ``CALIPER_EVENTS_ENABLED`` and ``XAPI_EVENTS_ENABLED`` Django settings are enabled, respectively.
[2.0.0]
~~~~~~~
(no changelog recorded)
[1.0.0] - 2020-11-09
~~~~~~~~~~~~~~~~~~~~
* Dropped support for Python 3.5
[0.2.0] - 2020-11-06
~~~~~~~~~~~~~~~~~~~~
* caliper transformer backend
* event routing backend
[0.1.0] - 2020-09-22
~~~~~~~~~~~~~~~~~~~~
* First release on PyPI.
Raw data
{
"_id": null,
"home_page": "https://github.com/openedx/event-routing-backends",
"name": "edx-event-routing-backends",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "Python edx",
"author": "edX",
"author_email": "oscm@edx.org",
"download_url": "https://files.pythonhosted.org/packages/d6/c4/d92a9a6c2dfc6a58632db99769aa01abce3cac3c38b83e9ff6d1eb6e7179/edx_event_routing_backends-9.3.2.tar.gz",
"platform": null,
"description": "event-routing-backends\n=============================\n\n|pypi-badge| |ci-badge| |codecov-badge| |doc-badge| |pyversions-badge|\n|license-badge|\n\nVarious backends for retransmitting edX LMS events to external services.\n\nOverview\n--------\n\nevent-routing-backends contains plugins for the `event-tracking`_ app that is installed as a part of edx-platform. It provides a backend that can take events and re-transmit them to external services. It also provides some new processers that can convert edx-platform events into other formats.\n\nCurrently work to support xAPI and Caliper event formats is in progress.\n\nSee `OEP 26`_ for background; the xAPI and Caliper subdocuments in particular include a specification of how LMS events will be translated to the format of the respective protocols.\n\n.. _event-tracking: https://github.com/openedx/event-tracking\n.. _OEP 26: https://open-edx-proposals.readthedocs.io/en/latest/oep-0026-arch-realtime-events.html\n\nDocumentation\n-------------\n\nDocumentation for this repo is published to `Read the Docs <https://event-routing-backends.readthedocs.io/en/latest/>`_\n\nLicense\n-------\n\nThe code in this repository is licensed under the AGPL 3.0 unless\notherwise noted.\n\nPlease see `LICENSE.txt <LICENSE.txt>`_ for details.\n\nHow To Contribute\n-----------------\n\nContributions are very welcome.\nPlease read `How To Contribute <https://github.com/openedx/.github/blob/master/CONTRIBUTING.md>`__ for details.\nshould be followed for all Open edX projects.\n\nThe pull request description template should be automatically applied if you are creating a pull request from GitHub. Otherwise you\ncan find it at `PULL_REQUEST_TEMPLATE.md <.github/PULL_REQUEST_TEMPLATE.md>`_.\n\nThe issue report template should be automatically applied if you are creating an issue on GitHub as well. Otherwise you\ncan find it at `ISSUE_TEMPLATE.md <.github/ISSUE_TEMPLATE.md>`_.\n\nReporting Security Issues\n-------------------------\n\nPlease do not report security issues in public. Please email security@openedx.org.\n\nGetting Help\n------------\n\nIf you're having trouble, we have discussion forums at https://discuss.openedx.org where you can connect with others in the community.\n\nOur real-time conversations are on Slack. You can request a `Slack invitation`_, then join our `community Slack workspace`_.\n\nFor more information about these options, see the `Getting Help <https://openedx.org/getting-help>`__ page.\n\n.. _Slack invitation: https://openedx.org/slack\n.. _community Slack workspace: https://openedx.slack.com/\n\n.. |pypi-badge| image:: https://img.shields.io/pypi/v/event-routing-backends.svg\n :target: https://pypi.python.org/pypi/event-routing-backends/\n :alt: PyPI\n\n.. |ci-badge| image:: https://github.com/openedx/event-routing-backends/workflows/Python%20CI/badge.svg?branch=master\n :target: https://github.com/openedx/event-routing-backends/actions?query=workflow%3A%22Python+CI%22\n :alt: CI\n\n.. |codecov-badge| image:: https://codecov.io/github/edx/event-routing-backends/coverage.svg?branch=master\n :target: https://codecov.io/github/edx/event-routing-backends?branch=master\n :alt: Codecov\n\n.. |doc-badge| image:: https://readthedocs.org/projects/event-routing-backends/badge/?version=latest\n :target: https://event-routing-backends.readthedocs.io/en/latest/\n :alt: Documentation\n\n.. |pyversions-badge| image:: https://img.shields.io/pypi/pyversions/event-routing-backends.svg\n :target: https://pypi.python.org/pypi/event-routing-backends/\n :alt: Supported Python versions\n\n.. |license-badge| image:: https://img.shields.io/github/license/edx/event-routing-backends.svg\n :target: https://github.com/openedx/event-routing-backends/blob/master/LICENSE.txt\n :alt: License\n\n\nChange Log\n----------\n\n..\n All enhancements and patches to event_routing_backends will be documented\n in this file. It adheres to the structure of https://keepachangelog.com/ ,\n but in reStructuredText instead of Markdown (for ease of incorporation into\n Sphinx documentation and the PyPI description).\n\n This project adheres to Semantic Versioning (https://semver.org/).\n\n.. There should always be an \"Unreleased\" section for changes pending release.\n\n[9.3.2]\n\n* Fixes issues with gzip files and duplicated events\n\n[9.3.0]\n\n* Support use of ERB for transforming non-openedx events\n\n[9.2.1]\n\n* Add support for either 'whitelist' or 'registry.mapping' options (whitelist introduced in v9.0.0)\n\n[9.2.0]\n\n* Add discussion reference to comments and responses xAPI events\n\n[9.1.0]\n\n* Add python 3.11 and 3.12 support\n\n[9.0.1]\n\n* Fix an issue with the event routing backend async task to not find the event-tracking backend.\n\n[9.0.0]\n~~~~~~~\n\n* **BREAKING CHANGE**: Use a single entry point for all event routing backends.\n which allows to easily switch bettwen celery and the event bus for the backends.\n\n[8.3.0]\n\n* Allow to use any configured engine to replay tracking logs\n\n[8.2.0]\n\n* Add support for batching for EventsRouter.\n\n[8.1.2]\n\n* Add grade.now_* events to the xAPI supported events list.\n\n[8.1.1]\n\n* Dinamically get the xblock version from the event.\n\n[8.1.0]\n~~~~~~~\n\n* Add support to consume tracking logs from the event bus.\n\n[8.0.0]\n~~~~~~~\n\n* **BREAKING CHANGE**: Add transformer argument to openedx dynamic filter.\n\n[7.2.0]\n~~~~~~~\n\n* Add support for usernames that are numeric.\n\n[7.1.0]\n~~~~~~~\n\n* Add support for openedx-filter that basically allows to extend or change the standard behavior\n\n[7.0.2]\n~~~~~~~\n\n* Ensure lists of answers in problem_check are properly serialized to JSON so they\n can be parsed downstream\n\n **Note: Old events cannot be updated, the log must be replayed (if possible).**\n\n[7.0.1]\n~~~~~~~\n\n* Do not send events for unknown courses\n\n[7.0.0]\n~~~~~~~\n\n* Multi-question problem_check tracking log statements will now be split into one xAPI statement for each question\n\n[6.2.0]\n~~~~~~~\n\n* Add support for completion events\n\n[6.1.0]\n~~~~~~~\n\n* Add support for exam attempts events\n\n[6.0.0]\n~~~~~~~\n\n* Do not send events for unknown users\n\n[5.5.6]\n~~~~~~~\n\n* upgrading deprecated `djfernet` with `django-fernet-fields-v2`\n\n[5.4.0]\n~~~~~~~\n\n* Add support for the ``edx.course.enrollment.mode_changed`` event\n\n[5.3.1]\n~~~~~~~\n\n* Allow External ID type to fall back to LTI on older versions of edx-platform\n to preserve backward compatibility\n\n[5.3.0]\n~~~~~~~\n\n* Use proper externalId types XAPI and CALIPER instead of LTI\n* Make user identifier in xAPI events configurable\n* Switch from ``edx-sphinx-theme`` to ``sphinx-book-theme`` since the former is\n deprecated\n* Make id of xAPI statements idempotent\n\n[5.2.2]\n~~~~~~~\n\n* Rename toggle_warnings to toggle_warning for consistency with setting_warning.\n* Added session id to all events\n* add support for video interaction events.\n* Replaced eventVersion with transformerVersion to include semantic version of event-routing-backend package.\n\n[5.2.1]\n~~~~~~~\n\n* Added `video_complete` event to xAPI backend and fixed broken links in documentation\n\n[5.2.0]\n~~~~~~~\n\n* Added Support for Django4 and used djfernet instead of django-fernet-fields\n* Removed Django22, 30 and 31 support\n* Constrained \"click\" to 7.1.2 as edx-celeryutils constraints the version to this package\n\n\n[4.1.1]\n~~~~~~~\n\n* Switched from jsonfield2 to jsonfield as the earlier one has archived and merged back in the latter one.\n\n[4.1.0]\n~~~~~~~\n\n* Added support for django3.0, 3.1 and 3.2\n\n[4.0.1]\n~~~~~~~\n\n* Change a noisy INFO log message in ``TransformerRegistry.register()`` to DEBUG and fix two logging typos.\n\n[4.0.0]\n~~~~~~~\n\n* **Breaking change**: Rename ``CaliperEnvelopProcessor`` to ``CaliperEnvelopeProcessor`` and rename module accordingly (typo fix)\n\n[3.0.2]\n~~~~~~~\n* Added more directions for local testing\n* changed how event data is enveloped for caliper events\n* changed url to point from http://purl.imsglobal.org/ctx/caliper/v1p1 to http://purl.imsglobal.org/ctx/caliper/v1p2\n\n[3.0.1]\n~~~~~~~\n\nThis tag is a re-release of version 3.0.0. (Failed to bump internal version, though.)\n\n[3.0.0]\n~~~~~~~\n\n* **Breaking change**: Caliper and xAPI processors will reject events unless the ``CALIPER_EVENTS_ENABLED`` and ``XAPI_EVENTS_ENABLED`` Django settings are enabled, respectively.\n\n\n[2.0.0]\n~~~~~~~\n\n(no changelog recorded)\n\n[1.0.0] - 2020-11-09\n~~~~~~~~~~~~~~~~~~~~\n\n* Dropped support for Python 3.5\n\n[0.2.0] - 2020-11-06\n~~~~~~~~~~~~~~~~~~~~\n\n* caliper transformer backend\n* event routing backend\n\n[0.1.0] - 2020-09-22\n~~~~~~~~~~~~~~~~~~~~\n\n* First release on PyPI.\n",
"bugtrack_url": null,
"license": "AGPL 3.0",
"summary": "Various backends for receiving edX LMS events.",
"version": "9.3.2",
"project_urls": {
"Homepage": "https://github.com/openedx/event-routing-backends"
},
"split_keywords": [
"python",
"edx"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "aa5610c83b5985b99cf87138e7f0e4da25770e488b3db980d3ff8f1529cd3766",
"md5": "7e42ef062aa6de4ca151fba1fc7735d6",
"sha256": "31291b98902220bb6665e54a82ddcc6a84b8d2c6e840c71dce417bfe578bc2b5"
},
"downloads": -1,
"filename": "edx_event_routing_backends-9.3.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "7e42ef062aa6de4ca151fba1fc7735d6",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.11",
"size": 117548,
"upload_time": "2024-10-16T13:31:06",
"upload_time_iso_8601": "2024-10-16T13:31:06.889216Z",
"url": "https://files.pythonhosted.org/packages/aa/56/10c83b5985b99cf87138e7f0e4da25770e488b3db980d3ff8f1529cd3766/edx_event_routing_backends-9.3.2-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d6c4d92a9a6c2dfc6a58632db99769aa01abce3cac3c38b83e9ff6d1eb6e7179",
"md5": "4c4e982dd186c9b1448d9bdcf220de7d",
"sha256": "3cd4603bd497ffb1d46de1ac219ea00057653da488faf25a01a05048e91db718"
},
"downloads": -1,
"filename": "edx_event_routing_backends-9.3.2.tar.gz",
"has_sig": false,
"md5_digest": "4c4e982dd186c9b1448d9bdcf220de7d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 88294,
"upload_time": "2024-10-16T13:31:08",
"upload_time_iso_8601": "2024-10-16T13:31:08.688209Z",
"url": "https://files.pythonhosted.org/packages/d6/c4/d92a9a6c2dfc6a58632db99769aa01abce3cac3c38b83e9ff6d1eb6e7179/edx_event_routing_backends-9.3.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-10-16 13:31:08",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "openedx",
"github_project": "event-routing-backends",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"tox": true,
"lcname": "edx-event-routing-backends"
}