From efdfef3c25e88f61a0955dbf4f8c59f72c94ba06 Mon Sep 17 00:00:00 2001 From: salmannawaz Date: Wed, 24 Jun 2026 01:43:05 +0500 Subject: [PATCH] chore: fix ruff lint and formatting issues - Fix F401 re-exports in __init__.py files using explicit `X as X` syntax - Fix F841 unused variables by removing assignments or using _ prefix - Remove unused imports auto-fixed by ruff - Auto-format 48 files with ruff format - Fix 3 E501 long lines in lti.py - Update docs/changelog.rst to point to GitHub Releases (CHANGELOG.rst removed) Co-Authored-By: Claude Sonnet 4.6 --- docs/changelog.rst | 5 +- docs/conf.py | 1 + xblock_pdf/__init__.py | 2 +- xblock_pdf/pdf.py | 75 +- xblock_pdf/tests/test_pdf.py | 56 +- xblock_pdf/utils.py | 4 +- xblocks_contrib/__init__.py | 16 +- xblocks_contrib/annotatable/__init__.py | 2 +- xblocks_contrib/annotatable/annotatable.py | 14 +- xblocks_contrib/discussion/__init__.py | 2 +- xblocks_contrib/discussion/discussion.py | 97 +- .../discussion/tests/test_discussion.py | 47 +- xblocks_contrib/html/__init__.py | 3 +- xblocks_contrib/html/html.py | 1 - xblocks_contrib/html/tests/test_html.py | 1 - xblocks_contrib/legacy_utils/xml_utils.py | 147 ++-- xblocks_contrib/lti/__init__.py | 2 +- xblocks_contrib/lti/lti.py | 337 +++---- xblocks_contrib/lti/lti_2_util.py | 65 +- xblocks_contrib/lti/tests/helpers.py | 70 +- xblocks_contrib/lti/tests/test_lti20_unit.py | 153 ++-- xblocks_contrib/lti/tests/test_lti_unit.py | 72 +- xblocks_contrib/poll/__init__.py | 2 +- xblocks_contrib/poll/tests/test_poll.py | 3 - xblocks_contrib/problem/__init__.py | 2 +- xblocks_contrib/problem/capa/capa_problem.py | 3 +- xblocks_contrib/problem/capa/customrender.py | 2 +- xblocks_contrib/problem/capa/inputtypes.py | 1 - xblocks_contrib/problem/capa/responsetypes.py | 18 +- .../problem/capa/safe_exec/__init__.py | 3 +- .../problem/capa/safe_exec/lazymod.py | 2 +- .../problem/capa/safe_exec/safe_exec.py | 1 - .../capa/safe_exec/tests/test_safe_exec.py | 2 - .../capa/tests/response_xml_factory.py | 1 - .../problem/capa/tests/test_inputtypes.py | 2 +- .../problem/capa/tests/test_responsetypes.py | 2 - .../problem/capa/tests/test_shuffle.py | 2 +- .../capa/tests/test_xqueue_interface.py | 6 +- .../capa/tests/test_xqueue_submission.py | 6 +- .../problem/capa/xqueue_interface.py | 6 +- xblocks_contrib/problem/capa_block.py | 9 +- .../problem/tests/test_capa_block.py | 9 +- xblocks_contrib/video/__init__.py | 2 +- xblocks_contrib/video/ajax_handler_mixin.py | 10 +- xblocks_contrib/video/bumper_utils.py | 97 +- xblocks_contrib/video/cache_utils.py | 6 +- xblocks_contrib/video/constants.py | 8 +- xblocks_contrib/video/mixin.py | 7 +- .../video/studio_metadata_mixin.py | 41 +- .../video/tests/test_studio_metadata_mixin.py | 108 +-- xblocks_contrib/video/tests/test_utils.py | 26 +- xblocks_contrib/video/tests/test_video.py | 829 +++++++++--------- xblocks_contrib/video/validation.py | 1 + xblocks_contrib/video/video.py | 483 +++++----- xblocks_contrib/video/video_handlers.py | 244 +++--- .../video/video_static_content_utils.py | 12 +- .../video/video_transcripts_utils.py | 49 +- xblocks_contrib/video/video_utils.py | 59 +- xblocks_contrib/video/video_xfields.py | 127 +-- xblocks_contrib/word_cloud/__init__.py | 5 +- .../word_cloud/tests/test_word_cloud.py | 6 +- xblocks_contrib/word_cloud/word_cloud.py | 129 ++- 62 files changed, 1718 insertions(+), 1785 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 565b0521..62e14340 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1 +1,4 @@ -.. include:: ../CHANGELOG.rst +Changelog +========= + +Changes are tracked via `GitHub Releases `_. diff --git a/docs/conf.py b/docs/conf.py index 1e75f0ea..c14b2abd 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -11,6 +11,7 @@ All configuration values have a default; values that are commented out serve to show the default. """ + import os import re import sys diff --git a/xblock_pdf/__init__.py b/xblock_pdf/__init__.py index ae2b9e92..f41b34bc 100644 --- a/xblock_pdf/__init__.py +++ b/xblock_pdf/__init__.py @@ -1,3 +1,3 @@ """Init for PDFBlock.""" -from .pdf import PDFBlock +from .pdf import PDFBlock as PDFBlock diff --git a/xblock_pdf/pdf.py b/xblock_pdf/pdf.py index 91a27c25..7266b25f 100644 --- a/xblock_pdf/pdf.py +++ b/xblock_pdf/pdf.py @@ -1,4 +1,5 @@ """pdfXBlock main Python class.""" + import json from django.utils.translation import gettext_noop as _ @@ -13,7 +14,7 @@ resource_loader = ResourceLoader(__name__) -@XBlock.needs('i18n') +@XBlock.needs("i18n") class PDFBlock(XBlock): """PDF XBlock. Allows authors to embed PDFs in their courses.""" @@ -23,21 +24,21 @@ class PDFBlock(XBlock): display_name=_("Display Name"), default=_("PDF"), scope=Scope.settings, - help=_("This name appears in the horizontal navigation at the top of the page.") + help=_("This name appears in the horizontal navigation at the top of the page."), ) url = String( display_name=_("PDF URL"), default=_("https://tutorial.math.lamar.edu/pdf/Trig_Cheat_Sheet.pdf"), scope=Scope.content, - help=_("The URL for your PDF.") + help=_("The URL for your PDF."), ) allow_download = Boolean( display_name=_("PDF Download Allowed"), default=True, scope=Scope.content, - help=_("Display a download button for this PDF.") + help=_("Display a download button for this PDF."), ) source_text = String( @@ -47,7 +48,7 @@ class PDFBlock(XBlock): help=_( "Add a download link for the source file of your PDF. " "Use it for example to provide the PowerPoint file used to create this PDF." - ) + ), ) source_url = String( @@ -57,38 +58,38 @@ class PDFBlock(XBlock): help=_( "Add a download link for the source file of your PDF. " "Use it for example to provide the PowerPoint file used to create this PDF." - ) + ), ) @property def raw_settings(self): """Get the raw settings of the XBlock as a dictionary.""" return { - 'display_name': self.display_name, - 'url': self.url, - 'allow_download': self.allow_download, - 'disable_all_download': is_all_download_disabled(), - 'source_text': self.source_text, - 'source_url': self.source_url, + "display_name": self.display_name, + "url": self.url, + "allow_download": self.allow_download, + "disable_all_download": is_all_download_disabled(), + "source_text": self.source_text, + "source_url": self.source_url, } def student_view(self, context=None): # pylint: disable=unused-argument """Primary view of the XBlock, shown to students when viewing courses.""" html = resource_loader.render_django_template( - 'templates/html/pdf_view.html', + "templates/html/pdf_view.html", context=self.raw_settings, i18n_service=self.runtime.service(self, "i18n"), ) - event_type = 'edx.pdf.loaded' + event_type = "edx.pdf.loaded" event_data = { - 'url': self.url, - 'source_url': self.source_url, + "url": self.url, + "source_url": self.source_url, } self.runtime.publish(self, event_type, event_data) frag = Fragment(html) frag.add_javascript(resource_loader.load_unicode("static/js/pdf_view.js")) - frag.initialize_js('pdfXBlockInitView') + frag.initialize_js("pdfXBlockInitView") return frag def studio_view(self, context=None): @@ -98,49 +99,49 @@ def studio_view(self, context=None): Shown to teachers when editing the XBlock. """ context = { - 'display_name': self.display_name, - 'url': self.url, - 'allow_download': self.allow_download, - 'disable_all_download': is_all_download_disabled(), - 'source_text': self.source_text, - 'source_url': self.source_url + "display_name": self.display_name, + "url": self.url, + "allow_download": self.allow_download, + "disable_all_download": is_all_download_disabled(), + "source_text": self.source_text, + "source_url": self.source_url, } html = resource_loader.render_django_template( - 'templates/html/pdf_edit.html', + "templates/html/pdf_edit.html", context=context, i18n_service=self.runtime.service(self, "i18n"), ) frag = Fragment(html) frag.add_javascript(resource_loader.load_unicode("static/js/pdf_edit.js")) - frag.initialize_js('pdfXBlockInitEdit') + frag.initialize_js("pdfXBlockInitEdit") return frag @XBlock.json_handler - def on_download(self, data, suffix=''): # pylint: disable=unused-argument + def on_download(self, data, suffix=""): # pylint: disable=unused-argument """Download file event handler.""" - event_type = 'edx.pdf.downloaded' + event_type = "edx.pdf.downloaded" event_data = { - 'url': self.url, - 'source_url': self.source_url, + "url": self.url, + "source_url": self.source_url, } self.runtime.publish(self, event_type, event_data) @XBlock.handler def load_pdf(self, *_args, **_kwargs): """Get the PDF block's settings in JSON format.""" - return Response(json.dumps(self.raw_settings), content_type='application/json', charset='utf8') + return Response(json.dumps(self.raw_settings), content_type="application/json", charset="utf8") @XBlock.json_handler - def save_pdf(self, data, suffix=''): # pylint: disable=unused-argument + def save_pdf(self, data, suffix=""): # pylint: disable=unused-argument """Save handler.""" - self.display_name = data['display_name'] - self.url = data['url'] + self.display_name = data["display_name"] + self.url = data["url"] if not is_all_download_disabled(): - self.allow_download = bool_from_str(data['allow_download']) - self.source_text = data['source_text'] - self.source_url = data['source_url'] + self.allow_download = bool_from_str(data["allow_download"]) + self.source_text = data["source_text"] + self.source_url = data["source_url"] return { - 'result': 'success', + "result": "success", } diff --git a/xblock_pdf/tests/test_pdf.py b/xblock_pdf/tests/test_pdf.py index f02ddd47..87fdb57c 100644 --- a/xblock_pdf/tests/test_pdf.py +++ b/xblock_pdf/tests/test_pdf.py @@ -1,9 +1,10 @@ """Tests for the PDF Block""" + import json from typing import Any, Optional from unittest.mock import MagicMock, patch -from django.test import TestCase, override_settings +from django.test import override_settings from xblock.field_data import DictFieldData from xblock.fields import ScopeIds from xblock.test.toy_runtime import ToyRuntime @@ -41,7 +42,6 @@ def mock_handle_request(data: Optional[dict[str, Any]] = None, method: str = "PO def test_defaults_render(): """Test the basic view loads.""" - scope_ids = ScopeIds("1", "2", "3", "4") block = make_block() content = get_student_content(block) assert '