From 9b4d0078c68603dee4a0c70c7c0b5c8195ded609 Mon Sep 17 00:00:00 2001 From: Maria Grimaldi Date: Thu, 30 Jan 2025 11:20:30 +0100 Subject: [PATCH] feat: [FC-0074] use linter for event code-annotations (#448) --- CHANGELOG.rst | 8 +++++ openedx_events/__init__.py | 2 +- openedx_events/content_authoring/signals.py | 4 +-- .../event_bus/avro/tests/test_utilities.py | 2 +- openedx_events/learning/signals.py | 4 +-- openedx_events/tests/test_tooling.py | 2 +- pylintrc | 7 +++-- pylintrc_tweaks | 2 +- requirements/base.txt | 6 ++-- requirements/ci.txt | 8 ++--- requirements/dev.txt | 29 ++++++++++--------- requirements/doc.txt | 17 ++++++----- requirements/quality.txt | 17 ++++++----- requirements/test.txt | 6 ++-- 14 files changed, 63 insertions(+), 51 deletions(-) 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" 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 05b1b9c7..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( + return OpenEdxPublicSignal( # pylint: disable=missing-or-incorrect-annotation event_type=event_type, data=data_dict ) diff --git a/openedx_events/learning/signals.py b/openedx_events/learning/signals.py index 62a08ba8..1796f4a1 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 @@ -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 diff --git a/openedx_events/tests/test_tooling.py b/openedx_events/tests/test_tooling.py index 626cdb9e..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( + self.public_signal = OpenEdxPublicSignal( # pylint: disable=missing-or-incorrect-annotation event_type=self.event_type, data=self.data_attr, ) diff --git a/pylintrc b/pylintrc index 598f36fe..165baa02 100644 --- a/pylintrc +++ b/pylintrc @@ -64,12 +64,12 @@ # SERIOUSLY. # # ------------------------------ -# Generated by edx-lint version: 5.2.5 +# Generated by edx-lint version: 5.6.0 # ------------------------------ [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 +# 296c1df70c75516c9174713c7916b982e2768f71 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/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/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 b6e1c2c6..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 @@ -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==5.4.1 +edx-lint==5.6.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 @@ -194,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 @@ -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 @@ -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 @@ -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..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 @@ -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 @@ -136,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 @@ -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 @@ -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 @@ -209,6 +209,7 @@ readme-renderer==44.0 # via twine requests==2.32.3 # via + # id # requests-toolbelt # sphinx # twine @@ -267,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 @@ -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.txt b/requirements/quality.txt index ad0144b6..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.4.1 +edx-lint==5.6.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 @@ -126,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 @@ -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 @@ -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 @@ -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 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