From 186e260d2d475fef63cbbaf0c1d50b146bec4a36 Mon Sep 17 00:00:00 2001 From: Maria Grimaldi Date: Thu, 30 Jan 2025 10:58:51 +0100 Subject: [PATCH 1/9] docs: update documentation for latest release --- CHANGELOG.rst | 8 ++++++++ openedx_events/__init__.py | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index d13b6d34..8de55176 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -16,6 +16,14 @@ Change Log Unreleased __________ +[9.17.0] - 2025-01-30 +--------------------- + +Added +~~~~~ + +* Use edx-lint linter for Open edX Events instances in-line code annotations validation. + [9.16.0] - 2025-01-30 --------------------- diff --git a/openedx_events/__init__.py b/openedx_events/__init__.py index 5643ee00..625c93aa 100644 --- a/openedx_events/__init__.py +++ b/openedx_events/__init__.py @@ -5,4 +5,4 @@ more information about the project. """ -__version__ = "9.16.0" +__version__ = "9.17.0" From 84336da205931b0f191832675a40b5a044b90ecc Mon Sep 17 00:00:00 2001 From: Maria Grimaldi Date: Fri, 10 Jan 2025 15:30:30 +0100 Subject: [PATCH 2/9] feat: use linter for code-annotations --- pylintrc | 7 ++++--- pylintrc_tweaks | 2 +- requirements/dev.txt | 2 +- requirements/quality.in | 2 +- requirements/quality.txt | 2 +- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/pylintrc b/pylintrc index 598f36fe..aacfe9e6 100644 --- a/pylintrc +++ b/pylintrc @@ -64,12 +64,12 @@ # SERIOUSLY. # # ------------------------------ -# Generated by edx-lint version: 5.2.5 +# Generated by edx-lint version: 5.4.1 # ------------------------------ [MASTER] ignore = migrations persistent = yes -load-plugins = edx_lint.pylint,pylint_celery +load-plugins = edx_lint.pylint,pylint_celery,edx_lint.pylint.events_annotation [MESSAGES CONTROL] enable = @@ -259,6 +259,7 @@ enable = useless-suppression, disable = bad-indentation, + broad-exception-raised, consider-using-f-string, duplicate-code, file-ignored, @@ -382,4 +383,4 @@ int-import-graph = [EXCEPTIONS] overgeneral-exceptions = builtins.Exception -# afac0308552b9baa632c39eb574d26e9725303f1 +# a20a411e307864943283615476b1b9d33d731e3a diff --git a/pylintrc_tweaks b/pylintrc_tweaks index aab07d47..f3b8f3fe 100644 --- a/pylintrc_tweaks +++ b/pylintrc_tweaks @@ -1,4 +1,4 @@ # pylintrc tweaks for use with edx_lint. [MASTER] ignore = migrations -load-plugins = edx_lint.pylint,pylint_celery +load-plugins = edx_lint.pylint,pylint_celery,edx_lint.pylint.events_annotation diff --git a/requirements/dev.txt b/requirements/dev.txt index b6e1c2c6..867c97ac 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -114,7 +114,7 @@ edx-ccx-keys==2.0.2 # via -r requirements/quality.txt edx-django-utils==7.1.0 # via -r requirements/quality.txt -edx-lint==5.4.1 +edx-lint @ git+https://github.com/eduNEXT/edx-lint.git@MJG/events-code-annotations # via -r requirements/quality.txt edx-opaque-keys[django]==2.11.0 # via diff --git a/requirements/quality.in b/requirements/quality.in index d4773865..e49c55c2 100644 --- a/requirements/quality.in +++ b/requirements/quality.in @@ -3,7 +3,7 @@ -r test.txt # Core and testing dependencies for this package -edx-lint # edX pylint rules and plugins +git+https://github.com/eduNEXT/edx-lint.git@MJG/events-code-annotations # edX pylint rules and plugins isort # to standardize order of imports pycodestyle # PEP 8 compliance validation pydocstyle # PEP 257 compliance validation diff --git a/requirements/quality.txt b/requirements/quality.txt index ad0144b6..f9cc6b6f 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -74,7 +74,7 @@ edx-ccx-keys==2.0.2 # via -r requirements/test.txt edx-django-utils==7.1.0 # via -r requirements/test.txt -edx-lint==5.4.1 +edx-lint @ git+https://github.com/eduNEXT/edx-lint.git@MJG/events-code-annotations # via -r requirements/quality.in edx-opaque-keys[django]==2.11.0 # via From 869cd262afb8179d66cab9db5672e6b10a835580 Mon Sep 17 00:00:00 2001 From: Maria Grimaldi Date: Fri, 10 Jan 2025 16:08:35 +0100 Subject: [PATCH 3/9] refactor: disable event-missing-annotation for testing purposes --- openedx_events/event_bus/avro/tests/test_utilities.py | 2 +- openedx_events/tests/test_tooling.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/openedx_events/event_bus/avro/tests/test_utilities.py b/openedx_events/event_bus/avro/tests/test_utilities.py index 05b1b9c7..9770f624 100644 --- a/openedx_events/event_bus/avro/tests/test_utilities.py +++ b/openedx_events/event_bus/avro/tests/test_utilities.py @@ -22,7 +22,7 @@ def create_simple_signal(data_dict, event_type="simple.signal"): data_dict: Description of attributes passed to the signal event_type: A custom event type string. Defaults to 'simple.signal' """ - return OpenEdxPublicSignal( + return OpenEdxPublicSignal( # pylint: disable=event-missing-annotation event_type=event_type, data=data_dict ) diff --git a/openedx_events/tests/test_tooling.py b/openedx_events/tests/test_tooling.py index 626cdb9e..13f10bad 100644 --- a/openedx_events/tests/test_tooling.py +++ b/openedx_events/tests/test_tooling.py @@ -52,7 +52,7 @@ def setUp(self): self.data_attr = { "user": Mock, } - self.public_signal = OpenEdxPublicSignal( + self.public_signal = OpenEdxPublicSignal( # pylint: disable=event-missing-annotation event_type=self.event_type, data=self.data_attr, ) From 2da9cbc167799f2912288b3cb5d365e04bb75e1f Mon Sep 17 00:00:00 2001 From: Maria Grimaldi Date: Thu, 16 Jan 2025 11:34:32 +0100 Subject: [PATCH 4/9] refactor: fix issues identified by linter --- openedx_events/learning/signals.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openedx_events/learning/signals.py b/openedx_events/learning/signals.py index 62a08ba8..5f79d95f 100644 --- a/openedx_events/learning/signals.py +++ b/openedx_events/learning/signals.py @@ -192,7 +192,7 @@ } ) -# .. event_type: org.openedx.learning.course.persistent_grade.summary.v1 +# .. event_type: org.openedx.learning.course.persistent_grade_summary.changed.v1 # .. event_name: PERSISTENT_GRADE_SUMMARY_CHANGED # .. event_description: Emitted when a course's persistent grade summary changes for a user. # .. event_data: PersistentCourseGradeData From 5452272f8e95f258b0738666cd2b38d74e18ec3a Mon Sep 17 00:00:00 2001 From: Maria Grimaldi Date: Fri, 24 Jan 2025 12:04:05 +0100 Subject: [PATCH 5/9] chore: upgrade requirements with edx-lint latest release --- requirements/ci.txt | 8 ++++---- requirements/dev.txt | 23 ++++++++++++----------- requirements/doc.txt | 9 +++++---- requirements/quality.in | 2 +- requirements/quality.txt | 11 ++++++----- 5 files changed, 28 insertions(+), 25 deletions(-) diff --git a/requirements/ci.txt b/requirements/ci.txt index 00edc1c2..cf0a9bcc 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -4,7 +4,7 @@ # # make upgrade # -cachetools==5.5.0 +cachetools==5.5.1 # via tox chardet==5.2.0 # via tox @@ -12,7 +12,7 @@ colorama==0.4.6 # via tox distlib==0.3.9 # via virtualenv -filelock==3.16.1 +filelock==3.17.0 # via # tox # virtualenv @@ -26,9 +26,9 @@ platformdirs==4.3.6 # virtualenv pluggy==1.5.0 # via tox -pyproject-api==1.8.0 +pyproject-api==1.9.0 # via tox -tox==4.23.2 +tox==4.24.1 # via -r requirements/ci.in virtualenv==20.29.1 # via tox diff --git a/requirements/dev.txt b/requirements/dev.txt index 867c97ac..adfa0ef2 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -24,7 +24,7 @@ build==1.2.2.post1 # via # -r requirements/pip-tools.txt # pip-tools -cachetools==5.5.0 +cachetools==5.5.1 # via # -r requirements/ci.txt # tox @@ -114,7 +114,7 @@ edx-ccx-keys==2.0.2 # via -r requirements/quality.txt edx-django-utils==7.1.0 # via -r requirements/quality.txt -edx-lint @ git+https://github.com/eduNEXT/edx-lint.git@MJG/events-code-annotations +edx-lint==5.5.0 # via -r requirements/quality.txt edx-opaque-keys[django]==2.11.0 # via @@ -122,16 +122,20 @@ edx-opaque-keys[django]==2.11.0 # edx-ccx-keys fastavro==1.10.0 # via -r requirements/quality.txt -filelock==3.16.1 +filelock==3.17.0 # via # -r requirements/ci.txt # tox # virtualenv +id==1.5.0 + # via + # -r requirements/quality.txt + # twine idna==3.10 # via # -r requirements/quality.txt # requests -importlib-metadata==8.5.0 +importlib-metadata==8.6.1 # via # -r requirements/quality.txt # keyring @@ -218,10 +222,6 @@ pbr==6.1.0 # stevedore pip-tools==7.4.1 # via -r requirements/pip-tools.txt -pkginfo==1.12.0 - # via - # -r requirements/quality.txt - # twine platformdirs==4.3.6 # via # -r requirements/ci.txt @@ -282,7 +282,7 @@ pynacl==1.5.0 # via # -r requirements/quality.txt # edx-django-utils -pyproject-api==1.8.0 +pyproject-api==1.9.0 # via # -r requirements/ci.txt # tox @@ -315,6 +315,7 @@ readme-renderer==44.0 requests==2.32.3 # via # -r requirements/quality.txt + # id # requests-toolbelt # twine requests-toolbelt==1.0.0 @@ -360,9 +361,9 @@ tomlkit==0.13.2 # via # -r requirements/quality.txt # pylint -tox==4.23.2 +tox==4.24.1 # via -r requirements/ci.txt -twine==6.0.1 +twine==6.1.0 # via -r requirements/quality.txt typing-extensions==4.12.2 # via diff --git a/requirements/doc.txt b/requirements/doc.txt index 74f79dfd..838d9ac5 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -95,13 +95,15 @@ fastavro==1.10.0 # via -r requirements/test.txt h11==0.14.0 # via uvicorn +id==1.5.0 + # via twine idna==3.10 # via # anyio # requests imagesize==1.4.1 # via sphinx -importlib-metadata==8.5.0 +importlib-metadata==8.6.1 # via keyring iniconfig==2.0.0 # via @@ -153,8 +155,6 @@ pbr==6.1.0 # via # -r requirements/test.txt # stevedore -pkginfo==1.12.0 - # via twine pluggy==1.5.0 # via # -r requirements/test.txt @@ -209,6 +209,7 @@ readme-renderer==44.0 # via twine requests==2.32.3 # via + # id # requests-toolbelt # sphinx # twine @@ -280,7 +281,7 @@ text-unidecode==1.3 # via # -r requirements/test.txt # python-slugify -twine==6.0.1 +twine==6.1.0 # via -r requirements/doc.in typing-extensions==4.12.2 # via diff --git a/requirements/quality.in b/requirements/quality.in index e49c55c2..d4773865 100644 --- a/requirements/quality.in +++ b/requirements/quality.in @@ -3,7 +3,7 @@ -r test.txt # Core and testing dependencies for this package -git+https://github.com/eduNEXT/edx-lint.git@MJG/events-code-annotations # edX pylint rules and plugins +edx-lint # edX pylint rules and plugins isort # to standardize order of imports pycodestyle # PEP 8 compliance validation pydocstyle # PEP 257 compliance validation diff --git a/requirements/quality.txt b/requirements/quality.txt index f9cc6b6f..e5f93eac 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -74,7 +74,7 @@ edx-ccx-keys==2.0.2 # via -r requirements/test.txt edx-django-utils==7.1.0 # via -r requirements/test.txt -edx-lint @ git+https://github.com/eduNEXT/edx-lint.git@MJG/events-code-annotations +edx-lint==5.5.0 # via -r requirements/quality.in edx-opaque-keys[django]==2.11.0 # via @@ -82,9 +82,11 @@ edx-opaque-keys[django]==2.11.0 # edx-ccx-keys fastavro==1.10.0 # via -r requirements/test.txt +id==1.5.0 + # via twine idna==3.10 # via requests -importlib-metadata==8.5.0 +importlib-metadata==8.6.1 # via keyring iniconfig==2.0.0 # via @@ -141,8 +143,6 @@ pbr==6.1.0 # via # -r requirements/test.txt # stevedore -pkginfo==1.12.0 - # via twine platformdirs==4.3.6 # via pylint pluggy==1.5.0 @@ -208,6 +208,7 @@ readme-renderer==44.0 # via twine requests==2.32.3 # via + # id # requests-toolbelt # twine requests-toolbelt==1.0.0 @@ -241,7 +242,7 @@ text-unidecode==1.3 # python-slugify tomlkit==0.13.2 # via pylint -twine==6.0.1 +twine==6.1.0 # via -r requirements/quality.in typing-extensions==4.12.2 # via From cb1826870748256b7010994402520ba115aef084 Mon Sep 17 00:00:00 2001 From: Maria Grimaldi Date: Fri, 24 Jan 2025 12:11:01 +0100 Subject: [PATCH 6/9] refactor: address quality issues --- openedx_events/content_authoring/signals.py | 4 ++-- openedx_events/event_bus/avro/tests/test_utilities.py | 2 +- openedx_events/tests/test_tooling.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/openedx_events/content_authoring/signals.py b/openedx_events/content_authoring/signals.py index 1183f581..86ca4dea 100644 --- a/openedx_events/content_authoring/signals.py +++ b/openedx_events/content_authoring/signals.py @@ -219,8 +219,8 @@ # .. event_type: org.openedx.content_authoring.content.object.associations.changed.v1 # .. event_name: CONTENT_OBJECT_ASSOCIATIONS_CHANGED -# .. event_description: Emitted when an object's associations are changed, e.g tags, collections. -# .. event_data: ContentObjectData +# .. event_description: Emitted when an object's associations are changed, e.g tags, collections +# .. event_data: ContentObjectChangedData # .. event_trigger_repository: openedx/edx-platform CONTENT_OBJECT_ASSOCIATIONS_CHANGED = OpenEdxPublicSignal( event_type="org.openedx.content_authoring.content.object.associations.changed.v1", diff --git a/openedx_events/event_bus/avro/tests/test_utilities.py b/openedx_events/event_bus/avro/tests/test_utilities.py index 9770f624..f594d05b 100644 --- a/openedx_events/event_bus/avro/tests/test_utilities.py +++ b/openedx_events/event_bus/avro/tests/test_utilities.py @@ -22,7 +22,7 @@ def create_simple_signal(data_dict, event_type="simple.signal"): data_dict: Description of attributes passed to the signal event_type: A custom event type string. Defaults to 'simple.signal' """ - return OpenEdxPublicSignal( # pylint: disable=event-missing-annotation + return OpenEdxPublicSignal( # pylint: disable=missing-or-incorrect-annotation event_type=event_type, data=data_dict ) diff --git a/openedx_events/tests/test_tooling.py b/openedx_events/tests/test_tooling.py index 13f10bad..46b75104 100644 --- a/openedx_events/tests/test_tooling.py +++ b/openedx_events/tests/test_tooling.py @@ -52,7 +52,7 @@ def setUp(self): self.data_attr = { "user": Mock, } - self.public_signal = OpenEdxPublicSignal( # pylint: disable=event-missing-annotation + self.public_signal = OpenEdxPublicSignal( # pylint: disable=missing-or-incorrect-annotation event_type=self.event_type, data=self.data_attr, ) From 955574a75462669e732306ab8fddc7798e515400 Mon Sep 17 00:00:00 2001 From: Maria Grimaldi Date: Fri, 24 Jan 2025 12:16:39 +0100 Subject: [PATCH 7/9] refactor: address quality issues --- openedx_events/learning/signals.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openedx_events/learning/signals.py b/openedx_events/learning/signals.py index 5f79d95f..1796f4a1 100644 --- a/openedx_events/learning/signals.py +++ b/openedx_events/learning/signals.py @@ -221,7 +221,7 @@ # .. event_type: org.openedx.learning.user.notification.requested.v1 # .. event_name: USER_NOTIFICATION_REQUESTED # .. event_description: Can be emitted from apps to send user notifications. -# .. event_data: UserNotificationSendListData +# .. event_data: UserNotificationData # .. event_warning: This event is currently incompatible with the event bus, list without annotations # are not serializable. # .. event_trigger_repository: openedx/edx-platform openedx/edx-ora2 From 9ef5140caa2492dca752fd9cf6352ea03fa17034 Mon Sep 17 00:00:00 2001 From: Maria Grimaldi Date: Thu, 30 Jan 2025 10:37:25 +0100 Subject: [PATCH 8/9] chore: upgrade requirements with latest edx-lint version --- requirements/base.txt | 6 +++--- requirements/dev.txt | 8 ++++---- requirements/doc.txt | 8 ++++---- requirements/quality.txt | 8 ++++---- requirements/test.txt | 6 +++--- 5 files changed, 18 insertions(+), 18 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 29fb5568..e8d3dee9 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -6,7 +6,7 @@ # asgiref==3.8.1 # via django -attrs==24.3.0 +attrs==25.1.0 # via -r requirements/base.in cffi==1.17.1 # via pynacl @@ -35,7 +35,7 @@ edx-opaque-keys[django]==2.11.0 # edx-ccx-keys fastavro==1.10.0 # via -r requirements/base.in -newrelic==10.4.0 +newrelic==10.5.0 # via edx-django-utils pbr==6.1.0 # via stevedore @@ -43,7 +43,7 @@ psutil==6.1.1 # via edx-django-utils pycparser==2.22 # via cffi -pymongo==4.10.1 +pymongo==4.11 # via edx-opaque-keys pynacl==1.5.0 # via edx-django-utils diff --git a/requirements/dev.txt b/requirements/dev.txt index adfa0ef2..e151629f 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -14,7 +14,7 @@ astroid==2.15.8 # -r requirements/quality.txt # pylint # pylint-celery -attrs==24.3.0 +attrs==25.1.0 # via -r requirements/quality.txt backports-tarfile==1.2.0 # via @@ -114,7 +114,7 @@ edx-ccx-keys==2.0.2 # via -r requirements/quality.txt edx-django-utils==7.1.0 # via -r requirements/quality.txt -edx-lint==5.5.0 +edx-lint==5.6.0 # via -r requirements/quality.txt edx-opaque-keys[django]==2.11.0 # via @@ -198,7 +198,7 @@ more-itertools==10.6.0 # -r requirements/quality.txt # jaraco-classes # jaraco-functools -newrelic==10.4.0 +newrelic==10.5.0 # via # -r requirements/quality.txt # edx-django-utils @@ -274,7 +274,7 @@ pylint-plugin-utils==0.8.2 # -r requirements/quality.txt # pylint-celery # pylint-django -pymongo==4.10.1 +pymongo==4.11 # via # -r requirements/quality.txt # edx-opaque-keys diff --git a/requirements/doc.txt b/requirements/doc.txt index 838d9ac5..2ca498e4 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -16,7 +16,7 @@ asgiref==3.8.1 # via # -r requirements/test.txt # django -attrs==24.3.0 +attrs==25.1.0 # via -r requirements/test.txt babel==2.16.0 # via @@ -138,7 +138,7 @@ more-itertools==10.6.0 # via # jaraco-classes # jaraco-functools -newrelic==10.4.0 +newrelic==10.5.0 # via # -r requirements/test.txt # edx-django-utils @@ -177,7 +177,7 @@ pygments==2.19.1 # readme-renderer # rich # sphinx -pymongo==4.10.1 +pymongo==4.11 # via # -r requirements/test.txt # edx-opaque-keys @@ -268,7 +268,7 @@ sqlparse==0.5.3 # via # -r requirements/test.txt # django -starlette==0.45.2 +starlette==0.45.3 # via sphinx-autobuild stevedore==5.4.0 # via diff --git a/requirements/quality.txt b/requirements/quality.txt index e5f93eac..e2fea636 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -13,7 +13,7 @@ astroid==2.15.8 # -c requirements/constraints.txt # pylint # pylint-celery -attrs==24.3.0 +attrs==25.1.0 # via -r requirements/test.txt backports-tarfile==1.2.0 # via jaraco-context @@ -74,7 +74,7 @@ edx-ccx-keys==2.0.2 # via -r requirements/test.txt edx-django-utils==7.1.0 # via -r requirements/test.txt -edx-lint==5.5.0 +edx-lint==5.6.0 # via -r requirements/quality.in edx-opaque-keys[django]==2.11.0 # via @@ -128,7 +128,7 @@ more-itertools==10.6.0 # via # jaraco-classes # jaraco-functools -newrelic==10.4.0 +newrelic==10.5.0 # via # -r requirements/test.txt # edx-django-utils @@ -179,7 +179,7 @@ pylint-plugin-utils==0.8.2 # via # pylint-celery # pylint-django -pymongo==4.10.1 +pymongo==4.11 # via # -r requirements/test.txt # edx-opaque-keys diff --git a/requirements/test.txt b/requirements/test.txt index 8315e6b8..af3b65f1 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -8,7 +8,7 @@ asgiref==3.8.1 # via # -r requirements/base.txt # django -attrs==24.3.0 +attrs==25.1.0 # via -r requirements/base.txt cffi==1.17.1 # via @@ -59,7 +59,7 @@ jinja2==3.1.5 # via code-annotations markupsafe==3.0.2 # via jinja2 -newrelic==10.4.0 +newrelic==10.5.0 # via # -r requirements/base.txt # edx-django-utils @@ -79,7 +79,7 @@ pycparser==2.22 # via # -r requirements/base.txt # cffi -pymongo==4.10.1 +pymongo==4.11 # via # -r requirements/base.txt # edx-opaque-keys From d795f07d718e9cb1ec00ff46a80a5aed47745d65 Mon Sep 17 00:00:00 2001 From: Maria Grimaldi Date: Thu, 30 Jan 2025 11:14:15 +0100 Subject: [PATCH 9/9] chore: update pylintrc with latest edx-lint version --- pylintrc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pylintrc b/pylintrc index aacfe9e6..165baa02 100644 --- a/pylintrc +++ b/pylintrc @@ -64,7 +64,7 @@ # SERIOUSLY. # # ------------------------------ -# Generated by edx-lint version: 5.4.1 +# Generated by edx-lint version: 5.6.0 # ------------------------------ [MASTER] ignore = migrations @@ -383,4 +383,4 @@ int-import-graph = [EXCEPTIONS] overgeneral-exceptions = builtins.Exception -# a20a411e307864943283615476b1b9d33d731e3a +# 296c1df70c75516c9174713c7916b982e2768f71