From 8ef1a0723794eb4ce5ebb33d3cb7aa55b9537ba9 Mon Sep 17 00:00:00 2001 From: Maria Grimaldi Date: Fri, 31 Jan 2025 19:19:39 +0100 Subject: [PATCH] feat: [FC-0074] use linter for openedx-filters classes definitions (#249) --- CHANGELOG.rst | 9 +- .../reference/documenting-filters-classes.rst | 38 ++++++ docs/reference/index.rst | 1 + openedx_filters/__init__.py | 2 +- openedx_filters/course_authoring/filters.py | 5 +- openedx_filters/learning/filters.py | 129 +++++++++++------- openedx_filters/tests/test_tooling.py | 11 ++ pylintrc | 27 +++- pylintrc_tweaks | 2 +- requirements/base.txt | 2 +- requirements/ci.txt | 8 +- requirements/dev.txt | 29 ++-- requirements/doc.txt | 13 +- requirements/quality.txt | 17 +-- requirements/test.txt | 2 +- 15 files changed, 199 insertions(+), 96 deletions(-) create mode 100644 docs/reference/documenting-filters-classes.rst diff --git a/CHANGELOG.rst b/CHANGELOG.rst index d9da4b32..caae1d17 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -13,8 +13,14 @@ Change Log Unreleased ---------- -* Configuration for automatic filters docs generation. +[1.13.0] - 2025-01-31 +--------------------- + +Added +~~~~~ + +* Use edx-lint linter for Open edX Filters classes docstrings validation. [1.12.0] - 2024-12-12 --------------------- @@ -40,6 +46,7 @@ Added ~~~~~ * IDVPageURLRequested filter added which can be used to modify the URL for the ID verification process. +* Configuration for automatic filters docs generation. [1.9.0] - 2024-06-14 -------------------- diff --git a/docs/reference/documenting-filters-classes.rst b/docs/reference/documenting-filters-classes.rst new file mode 100644 index 00000000..ced836e2 --- /dev/null +++ b/docs/reference/documenting-filters-classes.rst @@ -0,0 +1,38 @@ +Documenting Open edX Filters Classes +==================================== + +When creating a new filter, you should document the purpose of the filter in the docstring of the filter class. This will help other developers understand the purpose of the filter and how to use it. + +The docstring should comply with the following guidelines: + +- The docstring should be a triple-quoted string. +- The docstring should be placed at the beginning of the class definition. +- The docstring should include a brief description of what's supposed to do. +- The docstring should describe the purpose of the filter. +- The docstring should include the filter type ``filter_type``, which is the unique identifier for the filter. +- The docstring should include the trigger information, which includes the repository, path, and function or method that triggers the filter. If for some reason the filter is triggered by multiple functions or methods, you should list them all. If it's not triggered by any function or method, you should use NA (Not Applicable). +- The docstring should include any other relevant information about the filter (e.g., it works only for legacy views not MFEs). + +Consider the following example: + +.. code-block:: python + + class AccountSettingsRenderStarted(OpenEdxPublicFilter): + """ + Filter used to modify the rendering of the account settings page in the LMS. + + Purpose: + This filter is triggered when a user visits the account settings page, just before the page is rendered allowing + the filter to modify the context and the template used to render the page. + + Filter Type: + org.openedx.learning.student.settings.render.started.v1 + + Trigger: + - Repository: openedx/edx-platform + - Path: openedx/core/djangoapps/user_api/accounts/settings_views.py + - Function or Method: account_settings + + Additional Information: + This filter doesn't work alongside the account MFE, only with the legacy account settings page. + """ diff --git a/docs/reference/index.rst b/docs/reference/index.rst index dde0d858..fedb7161 100644 --- a/docs/reference/index.rst +++ b/docs/reference/index.rst @@ -11,3 +11,4 @@ References django-plugins-and-filters real-life-use-cases architecture-subdomains + documenting-filters-classes diff --git a/openedx_filters/__init__.py b/openedx_filters/__init__.py index 88ee1967..3e309c80 100644 --- a/openedx_filters/__init__.py +++ b/openedx_filters/__init__.py @@ -3,4 +3,4 @@ """ from openedx_filters.filters import * -__version__ = "1.12.0" +__version__ = "1.13.0" diff --git a/openedx_filters/course_authoring/filters.py b/openedx_filters/course_authoring/filters.py index e1202798..0ef802bf 100644 --- a/openedx_filters/course_authoring/filters.py +++ b/openedx_filters/course_authoring/filters.py @@ -9,8 +9,9 @@ class LMSPageURLRequested(OpenEdxPublicFilter): """ Filter used to modify the URL of the page requested by the user. - This filter is triggered when a user loads a page in Studio that references an LMS page, allowing the filter to - modify the URL of the page requested by the user. + Purpose: + This filter is triggered when a user loads a page in Studio that references an LMS page, allowing the filter to + modify the URL of the page requested by the user. Filter Type: org.openedx.course_authoring.lms.page.url.requested.v1 diff --git a/openedx_filters/learning/filters.py b/openedx_filters/learning/filters.py index 00409e1d..67606a5b 100644 --- a/openedx_filters/learning/filters.py +++ b/openedx_filters/learning/filters.py @@ -17,8 +17,9 @@ class AccountSettingsRenderStarted(OpenEdxPublicFilter): """ Filter used to modify the rendering of the account settings page in the LMS. - This filter is triggered when a user visits the account settings page, just before the page is rendered allowing - the filter to modify the context and the template used to render the page. + Purpose: + This filter is triggered when a user visits the account settings page, just before the page is rendered allowing + the filter to modify the context and the template used to render the page. Filter Type: org.openedx.learning.student.settings.render.started.v1 @@ -112,7 +113,11 @@ def run_filter(cls, context: dict, template_name: str) -> tuple[dict, str]: class StudentRegistrationRequested(OpenEdxPublicFilter, SensitiveDataManagementMixin): """ - Filter used to modify the registration process, triggered when a user begins registration in the LMS. + Filter used to modify the registration process of a given user in the LMS. + + Purpose: + This filter is triggered when a user tries to register, just before the registration process is completed + allowing the filter to act on the registration form data. Filter Type: org.openedx.learning.student.registration.requested.v1 @@ -161,10 +166,11 @@ def run_filter(cls, form_data: QueryDict) -> QueryDict: class StudentLoginRequested(OpenEdxPublicFilter): """ - Filter used to modify the login process. + Filter used to modify the login process of a given user in the LMS. - This filter is triggered when a user tries to log in, just before the login process is completed allowing the filter - to act on the user object. + Purpose: + This filter is triggered when a user tries to log in, just before the login process is completed allowing the + filter to act on the user object. Filter Type: org.openedx.learning.student.login.requested.v1 @@ -217,10 +223,11 @@ def run_filter(cls, user: Any) -> Any: class CourseEnrollmentStarted(OpenEdxPublicFilter): """ - Filter used to modify the course enrollment process. + Filter used to modify the enrollment process for a given user in a course. - This filter is triggered when a user initiates the enrollment process, just before the enrollment is completed - allowing the filter to act on the user, course key, and mode. + Purpose: + This filter is triggered when a user initiates the enrollment process, just before the enrollment is completed + allowing the filter to act on the user, course key, and mode. Filter Type: org.openedx.learning.course.enrollment.started.v1 @@ -264,10 +271,11 @@ def run_filter(cls, user: Any, course_key: CourseKey, mode: str) -> tuple[Any, C class CourseUnenrollmentStarted(OpenEdxPublicFilter): """ - Filter used to modify the course unenrollment process. + Filter used to modify the unenrollment process for a given user from a course. - This filter is triggered when a user initiates the unenrollment process, just before the unenrollment is completed - allowing the filter to act on the user's enrollment in the course. + Purpose: + This filter is triggered when a user initiates the unenrollment process, just before the unenrollment is + completed allowing the filter to act on the user's enrollment in the course. Filter Type: org.openedx.learning.course.unenrollment.started.v1 @@ -305,10 +313,11 @@ def run_filter(cls, enrollment: Any) -> Any: class CertificateCreationRequested(OpenEdxPublicFilter): """ - Filter used to modify the certificate creation process. + Filter used to modify the certificate creation process for a given user in a course. - This filter is triggered when a user requests a certificate, just before the certificate is created allowing the - filter to act on the user, course key, mode, status, grade, and generation mode. + Purpose: + This filter is triggered when a user requests a certificate, just before the certificate is created allowing the + filter to act on the user, course key, mode, status, grade, and generation mode. Usage: - Modify certificate parameters in runtime. @@ -335,7 +344,7 @@ class PreventCertificateCreation(OpenEdxFilterException): """ @classmethod - def run_filter( + def run_filter( # pylint: disable=too-many-positional-arguments cls: type, user: Any, course_key: CourseKey, @@ -383,10 +392,11 @@ def run_filter( class CertificateRenderStarted(OpenEdxPublicFilter): """ - Filter used to modify the certificate rendering process. + Filter used to modify the rendering of a certificate. - This filter is triggered when a user requests to view the certificate, just before the certificate is rendered - allowing the filter to act on the context and the template used to render the certificate. + Purpose: + This filter is triggered when a user requests to view the certificate, just before the certificate is rendered + allowing the filter to act on the context and the template used to render the certificate. Filter Type: org.openedx.learning.certificate.render.started.v1 @@ -471,8 +481,9 @@ class CohortChangeRequested(OpenEdxPublicFilter): """ Filter used to modify the cohort change process. - This filter is triggered when a user's cohort is changed, just before the change is completed allowing the filter - to act on the user and the target cohort. + Purpose: + This filter is triggered when a user's cohort is changed, just before the change is completed allowing the + filter to act on the user and the target cohort. Filter Type: org.openedx.learning.cohort.change.requested.v1 @@ -514,8 +525,9 @@ class CohortAssignmentRequested(OpenEdxPublicFilter): """ Filter used to modify the cohort assignment process. - This filter is triggered when a user is assigned to a cohort, just before the assignment is completed allowing the - filter to act on the user and the target cohort. + Purpose: + This filter is triggered when a user is assigned to a cohort, just before the assignment is completed allowing + the filter to act on the user and the target cohort. Filter Type: org.openedx.learning.cohort.assignment.requested.v1 @@ -557,8 +569,9 @@ class CourseAboutRenderStarted(OpenEdxPublicFilter): """ Filter used to modify the course about rendering process. - This filter is triggered when a user requests to view the course about page, just before the page is rendered - allowing the filter to act on the context and the template used to render the page. + Purpose: + This filter is triggered when a user requests to view the course about page, just before the page is rendered + allowing the filter to act on the context and the template used to render the page. Filter Type: org.openedx.learning.course_about.render.started.v1 @@ -654,8 +667,9 @@ class DashboardRenderStarted(OpenEdxPublicFilter): """ Filter used to modify the dashboard rendering process. - This filter is triggered when a user requests to view the dashboard, just before the page is rendered allowing the - filter to act on the context and the template used to render the page. + Purpose: + This filter is triggered when a user requests to view the dashboard, just before the page is rendered allowing + the filter to act on the context and the template used to render the page. Filter Type: org.openedx.learning.dashboard.render.started.v1 @@ -752,8 +766,9 @@ class VerticalBlockChildRenderStarted(OpenEdxPublicFilter): """ Filter used to modify the rendering of a child block within a vertical block. - This filter is triggered when a child block is about to be rendered within a vertical block, allowing the filter to - act on the block and the context used to render the child block. + Purpose: + This filter is triggered when a child block is about to be rendered within a vertical block, allowing the filter + to act on the block and the context used to render the child block. Filter Type: org.openedx.learning.vertical_block_child.render.started.v1 @@ -796,6 +811,10 @@ class CourseEnrollmentQuerysetRequested(OpenEdxPublicFilter): """ Filter used to modify the QuerySet of course enrollments. + Purpose: + This filter is triggered when a QuerySet of course enrollments is requested, allowing the filter to act on the + enrollments data. + Filter Type: org.openedx.learning.course_enrollment_queryset.requested.v1 @@ -832,8 +851,9 @@ class RenderXBlockStarted(OpenEdxPublicFilter): """ Filter in between context generation and rendering of XBlock scope. - This filter is triggered when an XBlock is about to be rendered, just before the rendering process is completed - allowing the filter to act on the context and student_view_context used to render the XBlock. + Purpose: + This filter is triggered when an XBlock is about to be rendered, just before the rendering process is completed + allowing the filter to act on the context and student_view_context used to render the XBlock. Filter Type: org.openedx.learning.xblock.render.started.v1 @@ -892,8 +912,9 @@ class VerticalBlockRenderCompleted(OpenEdxPublicFilter): """ Filter used to act on vertical block rendering completed. - This filter is triggered when a vertical block is rendered, just after the rendering process is completed allowing - the filter to act on the block, fragment, context, and view used to render the vertical block. + Purpose: + This filter is triggered when a vertical block is rendered, just after the rendering process is completed + allowing the filter to act on the block, fragment, context, and view used to render the vertical block. Filter Type: org.openedx.learning.vertical_block.render.completed.v1 @@ -939,8 +960,9 @@ class CourseHomeUrlCreationStarted(OpenEdxPublicFilter): """ Filter used to modify the course home url creation process. - This filter is triggered when a course home url is being generated, just before the generation process is completed - allowing the filter to act on the course key and course home url. + Purpose: + This filter is triggered when a course home url is being generated, just before the generation process is + completed allowing the filter to act on the course key and course home url. Filter Type: org.openedx.learning.course.homepage.url.creation.started.v1 @@ -975,8 +997,9 @@ class CourseEnrollmentAPIRenderStarted(OpenEdxPublicFilter): """ Filter used to modify the course enrollment API rendering process. - This filter is triggered when a user requests to view the course enrollment API, just before the API is rendered - allowing the filter to act on the course key and serialized enrollment data. + Purpose: + This filter is triggered when a user requests to view the course enrollment API, just before the API is rendered + allowing the filter to act on the course key and serialized enrollment data. Filter Type: org.openedx.learning.home.enrollment.api.rendered.v1 @@ -1011,8 +1034,9 @@ class CourseRunAPIRenderStarted(OpenEdxPublicFilter): """ Filter used to modify the course run API rendering process. - This filter is triggered when a user requests to view the course run API, just before the API is rendered allowing - the filter to act on the serialized course run data. + Purpose: + This filter is triggered when a user requests to view the course run API, just before the API is rendered + allowing the filter to act on the serialized course run data. Filter Type: org.openedx.learning.home.courserun.api.rendered.started.v1 @@ -1044,8 +1068,9 @@ class InstructorDashboardRenderStarted(OpenEdxPublicFilter): """ Filter used to modify the instructor dashboard rendering process. - This filter is triggered when an instructor requests to view the dashboard, just before the page is rendered - allowing the filter to act on the context and the template used to render the page. + Purpose: + This filter is triggered when an instructor requests to view the dashboard, just before the page is rendered + allowing the filter to act on the context and the template used to render the page. Filter Type: org.openedx.learning.instructor.dashboard.render.started.v1 @@ -1141,8 +1166,9 @@ class ORASubmissionViewRenderStarted(OpenEdxPublicFilter): """ Filter used to modify the submission view rendering process. - This filter is triggered when a user requests to view the submission, just before the page is rendered allowing the - filter to act on the context and the template used to render the page. + Purpose: + This filter is triggered when a user requests to view the submission, just before the page is rendered allowing + the filter to act on the context and the template used to render the page. Filter Type: org.openedx.learning.ora.submission_view.render.started.v1 @@ -1198,8 +1224,9 @@ class IDVPageURLRequested(OpenEdxPublicFilter): """ Filter used to act on ID verification page URL requests. - This filter is triggered when a user requests to view the ID verification page, just before the page is rendered - allowing the filter to act on the URL of the page. + Purpose: + This filter is triggered when a user requests to view the ID verification page, just before the page is rendered + allowing the filter to act on the URL of the page. Filter Type: org.openedx.learning.idv.page.url.requested.v1 @@ -1231,8 +1258,9 @@ class CourseAboutPageURLRequested(OpenEdxPublicFilter): """ Filter used to act on course about page URL requests. - This filter is triggered when a user requests to view the course about page, just before the page is rendered - allowing the filter to act on the URL of the page and the course org. + Purpose: + This filter is triggered when a user requests to view the course about page, just before the page is rendered + allowing the filter to act on the URL of the page and the course org. Filter Type: org.openedx.learning.course_about.page.url.requested.v1 @@ -1267,9 +1295,10 @@ class ScheduleQuerySetRequested(OpenEdxPublicFilter): """ Filter used to apply additional filtering to a given QuerySet of Schedules. - If you want to know more about the Schedules feature, please refer: - - https://github.com/openedx/edx-platform/tree/master/openedx/core/djangoapps/schedules#readme - - https://edx.readthedocs.io/projects/edx-partner-course-staff/en/latest/manage_live_course/automatic_email.html + Purpose: + This filter is triggered when a QuerySet of Schedules is requested, allowing the filter to act on the schedules + data. If you want to know more about the Schedules feature, please refer to the official documentation: + - https://github.com/openedx/edx-platform/tree/master/openedx/core/djangoapps/schedules#readme Filter Type: org.openedx.learning.schedule.queryset.requested.v1 diff --git a/openedx_filters/tests/test_tooling.py b/openedx_filters/tests/test_tooling.py index a07d1057..6a0fd650 100644 --- a/openedx_filters/tests/test_tooling.py +++ b/openedx_filters/tests/test_tooling.py @@ -12,6 +12,17 @@ class PreEnrollmentFilterMock(OpenEdxPublicFilter): + """ + Filter used in the tests to verify the behavior of the pipeline runner. + + Purpose: + Filter for testing purposes. + + Filter Type: + org.openedx.learning.course.enrollment.started.v1 + + Trigger: NA + """ filter_type = "org.openedx.learning.course.enrollment.started.v1" diff --git a/pylintrc b/pylintrc index 3a21c87d..340c1bc4 100644 --- a/pylintrc +++ b/pylintrc @@ -64,17 +64,18 @@ # SERIOUSLY. # # ------------------------------ -# Generated by edx-lint version: 5.3.0 +# 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.filters_docstring [MESSAGES CONTROL] -enable = +enable = blacklisted-name, line-too-long, + abstract-class-instantiated, abstract-method, access-member-before-definition, @@ -183,21 +184,26 @@ enable = used-before-assignment, using-constant-test, yield-outside-function, + astroid-error, fatal, method-check-failed, parse-error, raw-checker-failed, + empty-docstring, invalid-characters-in-docstring, missing-docstring, wrong-spelling-in-comment, wrong-spelling-in-docstring, + unused-argument, unused-import, unused-variable, + eval-used, exec-used, + bad-classmethod-argument, bad-mcs-classmethod-argument, bad-mcs-method-argument, @@ -228,26 +234,32 @@ enable = unneeded-not, useless-else-on-loop, wrong-assert-type, + deprecated-method, deprecated-module, + too-many-boolean-expressions, too-many-nested-blocks, too-many-statements, + wildcard-import, wrong-import-order, wrong-import-position, + missing-final-newline, mixed-line-endings, trailing-newlines, trailing-whitespace, unexpected-line-ending-format, + bad-inline-option, bad-option-value, deprecated-pragma, unrecognized-inline-option, useless-suppression, -disable = +disable = bad-indentation, + broad-exception-raised, consider-using-f-string, duplicate-code, file-ignored, @@ -266,13 +278,14 @@ disable = too-many-locals, too-many-public-methods, too-many-return-statements, - too-many-positional-arguments, ungrouped-imports, unspecified-encoding, unused-wildcard-import, use-maxsplit-arg, + feature-toggle-needs-doc, illegal-waffle-usage, + logging-fstring-interpolation, [REPORTS] @@ -368,6 +381,6 @@ ext-import-graph = int-import-graph = [EXCEPTIONS] -overgeneral-exceptions = Exception +overgeneral-exceptions = builtins.Exception -# 12e9b76a8790ffd678367e49ca9feaf816c82553 +# f30207bffe9614ad7c4dea2eb3e9da389f8dc4fd diff --git a/pylintrc_tweaks b/pylintrc_tweaks index aab07d47..5d57d91e 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.filters_docstring diff --git a/requirements/base.txt b/requirements/base.txt index 2cd163dc..9499f64a 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -16,7 +16,7 @@ edx-opaque-keys[django]==2.11.0 # via -r requirements/base.in pbr==6.1.0 # via stevedore -pymongo==4.10.1 +pymongo==4.11 # via edx-opaque-keys sqlparse==0.5.3 # via django 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 7169efea..cae6f46f 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -21,7 +21,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 @@ -94,20 +94,24 @@ docutils==0.21.2 # via # -r requirements/quality.txt # readme-renderer -edx-lint==5.4.1 +edx-lint==5.6.0 # via -r requirements/quality.txt edx-opaque-keys[django]==2.11.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 @@ -115,7 +119,7 @@ iniconfig==2.0.0 # via # -r requirements/quality.txt # pytest -isort==5.13.2 +isort==6.0.0 # via # -r requirements/quality.txt # pylint @@ -186,10 +190,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 @@ -218,7 +218,7 @@ pygments==2.19.1 # diff-cover # readme-renderer # rich -pylint==3.3.3 +pylint==3.3.4 # via # -r requirements/quality.txt # edx-lint @@ -238,11 +238,11 @@ 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 -pyproject-api==1.8.0 +pyproject-api==1.9.0 # via # -r requirements/ci.txt # tox @@ -275,6 +275,7 @@ readme-renderer==44.0 requests==2.32.3 # via # -r requirements/quality.txt + # id # requests-toolbelt # twine requests-toolbelt==1.0.0 @@ -318,9 +319,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 681a128e..459c5439 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -70,13 +70,15 @@ edx-opaque-keys[django]==2.11.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 @@ -124,8 +126,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 @@ -142,7 +142,7 @@ pygments==2.19.1 # readme-renderer # rich # sphinx -pymongo==4.10.1 +pymongo==4.11 # via # -r requirements/test.txt # edx-opaque-keys @@ -170,6 +170,7 @@ readme-renderer==44.0 # via twine requests==2.32.3 # via + # id # requests-toolbelt # sphinx # twine @@ -224,7 +225,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 @@ -236,7 +237,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 a3ca257f..455b1d0e 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -52,19 +52,21 @@ dnspython==2.7.0 # pymongo docutils==0.21.2 # via readme-renderer -edx-lint==5.4.1 +edx-lint==5.6.0 # via -r requirements/quality.in edx-opaque-keys[django]==2.11.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 # -r requirements/test.txt # pytest -isort==5.13.2 +isort==6.0.0 # via # -r requirements/quality.in # pylint @@ -109,8 +111,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 @@ -127,7 +127,7 @@ pygments==2.19.1 # via # readme-renderer # rich -pylint==3.3.3 +pylint==3.3.4 # via # edx-lint # pylint-celery @@ -141,7 +141,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 @@ -166,6 +166,7 @@ readme-renderer==44.0 # via twine requests==2.32.3 # via + # id # requests-toolbelt # twine requests-toolbelt==1.0.0 @@ -195,7 +196,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 2c432eb2..b13e89b2 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -40,7 +40,7 @@ pbr==6.1.0 # stevedore pluggy==1.5.0 # via pytest -pymongo==4.10.1 +pymongo==4.11 # via # -r requirements/base.txt # edx-opaque-keys