From 4d9272caa7afada62e5adb2d8032adb1579d4500 Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Fri, 2 Jun 2023 11:20:36 -0500 Subject: [PATCH 1/8] feat: add signal for event-tracking emission --- CHANGELOG.rst | 3 ++ openedx_events/analytics/__init__.py | 6 ++++ openedx_events/analytics/data.py | 30 +++++++++++++++++ openedx_events/analytics/signals.py | 23 +++++++++++++ ...tics+event_tracking+emitted+v1_schema.avsc | 33 +++++++++++++++++++ 5 files changed, 95 insertions(+) create mode 100644 openedx_events/analytics/__init__.py create mode 100644 openedx_events/analytics/data.py create mode 100644 openedx_events/analytics/signals.py create mode 100644 openedx_events/event_bus/avro/tests/schemas/org+openedx+analytics+event_tracking+emitted+v1_schema.avsc diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 8b462fed..66286da8 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -13,6 +13,9 @@ Change Log Unreleased ---------- +Added +~~~~~ +* Added new event TRACKING_EVENT_EMITTED. [9.0.1] - 2023-10-31 -------------------- diff --git a/openedx_events/analytics/__init__.py b/openedx_events/analytics/__init__.py new file mode 100644 index 00000000..5410a5f4 --- /dev/null +++ b/openedx_events/analytics/__init__.py @@ -0,0 +1,6 @@ +""" +Package where events related to the analytics subdomain are implemented. + +The analytics subdomain corresponds to {Architecture Subdomain} defined in +the OEP-41. +""" diff --git a/openedx_events/analytics/data.py b/openedx_events/analytics/data.py new file mode 100644 index 00000000..86dae84e --- /dev/null +++ b/openedx_events/analytics/data.py @@ -0,0 +1,30 @@ +""" +Data attributes for events within the architecture subdomain ``analytics``. + +These attributes follow the form of attr objects specified in OEP-49 data +pattern. +""" + +from datetime import datetime + +import attr + + +@attr.s(frozen=True) +class TrackingLogData: + """ + Data describing tracking log data. + + Arguments: + name (str): course name + timestamp (datetime): course start date + data (str): json string representation of a dictionary with extra data (optional), + e.g. {"course_id": "course-v1:edX+DemoX+Demo_Course"} + context (dict): json string representation of a dictionary of context data + defined in https://edx.readthedocs.io/projects/devdata/en/latest/internal_data_formats/tracking_logs/ + """ + + name = attr.ib(type=str) + timestamp = attr.ib(type=datetime) + data = attr.ib(type=str) + context = attr.ib(type=str) diff --git a/openedx_events/analytics/signals.py b/openedx_events/analytics/signals.py new file mode 100644 index 00000000..d1badd02 --- /dev/null +++ b/openedx_events/analytics/signals.py @@ -0,0 +1,23 @@ +""" +Standardized signals definitions for events within the architecture subdomain ``analytics``. + +All signals defined in this module must follow the name and versioning +conventions specified in OEP-41. + +They also must comply with the payload definition specified in +docs/decisions/0003-events-payload.rst +""" + +from openedx_events.analytics.data import TrackingLogData +from openedx_events.tooling import OpenEdxPublicSignal + +# .. event_type: org.openedx.analytics.event_tracking.emitted.v1 +# .. event_name: TRACKING_EVENT_EMITTED +# .. event_description: emitted when a tracking log is created. +# .. event_data: TrackingLogData +TRACKING_EVENT_EMITTED = OpenEdxPublicSignal( + event_type="org.openedx.analytics.event_tracking.emitted.v1", + data={ + "tracking_log": TrackingLogData, + } +) diff --git a/openedx_events/event_bus/avro/tests/schemas/org+openedx+analytics+event_tracking+emitted+v1_schema.avsc b/openedx_events/event_bus/avro/tests/schemas/org+openedx+analytics+event_tracking+emitted+v1_schema.avsc new file mode 100644 index 00000000..d1e26d6d --- /dev/null +++ b/openedx_events/event_bus/avro/tests/schemas/org+openedx+analytics+event_tracking+emitted+v1_schema.avsc @@ -0,0 +1,33 @@ +{ + "name": "CloudEvent", + "type": "record", + "doc": "Avro Event Format for CloudEvents created with openedx_events/schema", + "fields": [ + { + "name": "tracking_log", + "type": { + "name": "TrackingLogData", + "type": "record", + "fields": [ + { + "name": "name", + "type": "string" + }, + { + "name": "timestamp", + "type": "string" + }, + { + "name": "data", + "type": "string" + }, + { + "name": "context", + "type": "string" + } + ] + } + } + ], + "namespace": "org.openedx.analytics.event_tracking.emitted.v1" +} \ No newline at end of file From d0cbb35d5549b9fcd0a449d934b0bfef7cd3dc3a Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Thu, 26 Oct 2023 12:14:39 -0500 Subject: [PATCH 2/8] chore: bump version to 9.1.0 --- CHANGELOG.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 66286da8..68495752 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -13,8 +13,11 @@ Change Log Unreleased ---------- + +[9.1.0] - 2023-10-26 +-------------------- Added -~~~~~ +~~~~~~~ * Added new event TRACKING_EVENT_EMITTED. [9.0.1] - 2023-10-31 From 4800d4af47fb9363bd46dc34fc69c79574397556 Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Mon, 30 Oct 2023 14:21:03 -0500 Subject: [PATCH 3/8] fix: update event type to follow conventions --- openedx_events/analytics/signals.py | 4 ++-- ...g+openedx+analytics+tracking+event+emitted+v1_schema.avsc} | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename openedx_events/event_bus/avro/tests/schemas/{org+openedx+analytics+event_tracking+emitted+v1_schema.avsc => org+openedx+analytics+tracking+event+emitted+v1_schema.avsc} (90%) diff --git a/openedx_events/analytics/signals.py b/openedx_events/analytics/signals.py index d1badd02..6bbb2fd4 100644 --- a/openedx_events/analytics/signals.py +++ b/openedx_events/analytics/signals.py @@ -11,12 +11,12 @@ from openedx_events.analytics.data import TrackingLogData from openedx_events.tooling import OpenEdxPublicSignal -# .. event_type: org.openedx.analytics.event_tracking.emitted.v1 +# .. event_type: org.openedx.analytics.tracking.event.emitted.v1 # .. event_name: TRACKING_EVENT_EMITTED # .. event_description: emitted when a tracking log is created. # .. event_data: TrackingLogData TRACKING_EVENT_EMITTED = OpenEdxPublicSignal( - event_type="org.openedx.analytics.event_tracking.emitted.v1", + event_type="org.openedx.analytics.tracking.event.emitted.v1", data={ "tracking_log": TrackingLogData, } diff --git a/openedx_events/event_bus/avro/tests/schemas/org+openedx+analytics+event_tracking+emitted+v1_schema.avsc b/openedx_events/event_bus/avro/tests/schemas/org+openedx+analytics+tracking+event+emitted+v1_schema.avsc similarity index 90% rename from openedx_events/event_bus/avro/tests/schemas/org+openedx+analytics+event_tracking+emitted+v1_schema.avsc rename to openedx_events/event_bus/avro/tests/schemas/org+openedx+analytics+tracking+event+emitted+v1_schema.avsc index d1e26d6d..365d4697 100644 --- a/openedx_events/event_bus/avro/tests/schemas/org+openedx+analytics+event_tracking+emitted+v1_schema.avsc +++ b/openedx_events/event_bus/avro/tests/schemas/org+openedx+analytics+tracking+event+emitted+v1_schema.avsc @@ -29,5 +29,5 @@ } } ], - "namespace": "org.openedx.analytics.event_tracking.emitted.v1" -} \ No newline at end of file + "namespace": "org.openedx.analytics.tracking.event.emitted.v1" +} From a4f58da80d6774ea88d185d44925a37b256d0d1d Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Mon, 30 Oct 2023 14:26:38 -0500 Subject: [PATCH 4/8] fix: rename tracking log event emitted --- openedx_events/analytics/signals.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openedx_events/analytics/signals.py b/openedx_events/analytics/signals.py index 6bbb2fd4..34cd1260 100644 --- a/openedx_events/analytics/signals.py +++ b/openedx_events/analytics/signals.py @@ -12,10 +12,10 @@ from openedx_events.tooling import OpenEdxPublicSignal # .. event_type: org.openedx.analytics.tracking.event.emitted.v1 -# .. event_name: TRACKING_EVENT_EMITTED +# .. event_name: TRACKING_LOG_EVENT_EMITTED # .. event_description: emitted when a tracking log is created. # .. event_data: TrackingLogData -TRACKING_EVENT_EMITTED = OpenEdxPublicSignal( +TRACKING_LOG_EVENT_EMITTED = OpenEdxPublicSignal( event_type="org.openedx.analytics.tracking.event.emitted.v1", data={ "tracking_log": TrackingLogData, From 865992217d0c7e4def923aa77f7db561bae34d4d Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Mon, 30 Oct 2023 14:32:46 -0500 Subject: [PATCH 5/8] chore: improve docstring --- openedx_events/analytics/data.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openedx_events/analytics/data.py b/openedx_events/analytics/data.py index 86dae84e..0ec88b0a 100644 --- a/openedx_events/analytics/data.py +++ b/openedx_events/analytics/data.py @@ -16,8 +16,8 @@ class TrackingLogData: Data describing tracking log data. Arguments: - name (str): course name - timestamp (datetime): course start date + name (str): event name + timestamp (datetime): timestamp of the event data (str): json string representation of a dictionary with extra data (optional), e.g. {"course_id": "course-v1:edX+DemoX+Demo_Course"} context (dict): json string representation of a dictionary of context data From e2bfc1c5aca75b7a1ceb88255f030b207ca424f3 Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Tue, 7 Nov 2023 16:01:30 -0500 Subject: [PATCH 6/8] docs: update 9.1.0 date --- CHANGELOG.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 68495752..b5368db9 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -14,7 +14,7 @@ Change Log Unreleased ---------- -[9.1.0] - 2023-10-26 +[9.1.0] - 2023-11-07 -------------------- Added ~~~~~~~ From f3045cca6680899b741cd0060e389b61bf8cbda7 Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Wed, 8 Nov 2023 10:01:00 -0500 Subject: [PATCH 7/8] fix: rename tracking event --- openedx_events/analytics/data.py | 2 +- openedx_events/analytics/signals.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/openedx_events/analytics/data.py b/openedx_events/analytics/data.py index 0ec88b0a..801ebdd5 100644 --- a/openedx_events/analytics/data.py +++ b/openedx_events/analytics/data.py @@ -13,7 +13,7 @@ @attr.s(frozen=True) class TrackingLogData: """ - Data describing tracking log data. + Data describing tracking events. Arguments: name (str): event name diff --git a/openedx_events/analytics/signals.py b/openedx_events/analytics/signals.py index 34cd1260..6bbb2fd4 100644 --- a/openedx_events/analytics/signals.py +++ b/openedx_events/analytics/signals.py @@ -12,10 +12,10 @@ from openedx_events.tooling import OpenEdxPublicSignal # .. event_type: org.openedx.analytics.tracking.event.emitted.v1 -# .. event_name: TRACKING_LOG_EVENT_EMITTED +# .. event_name: TRACKING_EVENT_EMITTED # .. event_description: emitted when a tracking log is created. # .. event_data: TrackingLogData -TRACKING_LOG_EVENT_EMITTED = OpenEdxPublicSignal( +TRACKING_EVENT_EMITTED = OpenEdxPublicSignal( event_type="org.openedx.analytics.tracking.event.emitted.v1", data={ "tracking_log": TrackingLogData, From 689ab460752f7cfb2b36ed8c7cfca47d57353a17 Mon Sep 17 00:00:00 2001 From: Cristhian Garcia Date: Tue, 14 Nov 2023 09:59:48 -0500 Subject: [PATCH 8/8] chore: bump version to 9.1.0 --- openedx_events/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openedx_events/__init__.py b/openedx_events/__init__.py index c2a68c7f..55536ae4 100644 --- a/openedx_events/__init__.py +++ b/openedx_events/__init__.py @@ -5,4 +5,4 @@ more information about the project. """ -__version__ = "9.0.1" +__version__ = "9.1.0"