From 23aae01eaf262f386409361f46915b4b0848eebf Mon Sep 17 00:00:00 2001 From: Akanshu Aich Date: Tue, 18 Aug 2026 06:19:33 +0000 Subject: [PATCH 1/4] fix: added inline commit lint --- common/djangoapps/third_party_auth/models.py | 5 +++++ lms/djangoapps/bulk_email/models.py | 2 ++ lms/djangoapps/course_goals/models.py | 1 + lms/djangoapps/courseware/models.py | 1 + openedx/core/djangoapps/catalog/models.py | 1 + .../djangoapps/content/course_overviews/models.py | 4 +++- openedx/core/djangoapps/credit/models.py | 14 +++++++++++--- .../djangoapps/django_comment_common/models.py | 1 + openedx/core/djangoapps/notifications/models.py | 3 +++ openedx/core/djangoapps/video_pipeline/models.py | 1 + 10 files changed, 29 insertions(+), 4 deletions(-) diff --git a/common/djangoapps/third_party_auth/models.py b/common/djangoapps/third_party_auth/models.py index 309ebd78c984..8fad9248df45 100644 --- a/common/djangoapps/third_party_auth/models.py +++ b/common/djangoapps/third_party_auth/models.py @@ -681,17 +681,21 @@ class SAMLProviderConfig(ProviderConfig): default_last_name = models.CharField( max_length=255, blank=True, verbose_name="Default Value for Last Name", help_text="Default value for last name to be used if not present in SAML response.") + # pylint: disable-next=pii-invalid-no-pii-annotation # SAML attribute URN config, not a username value attr_username = models.CharField( max_length=128, blank=True, verbose_name="Username Hint Attribute", help_text="URN of SAML attribute to use as a suggested username for this user. Leave blank for default." ) + # pylint: disable-next=pii-invalid-no-pii-annotation # default value config, not a username value default_username = models.CharField( max_length=255, blank=True, verbose_name="Default Value for Username", help_text="Default value for username to be used if not present in SAML response." ) + # pylint: disable-next=pii-invalid-no-pii-annotation # SAML attribute URN config, not an email address attr_email = models.CharField( max_length=128, blank=True, verbose_name="Email Attribute", help_text="URN of SAML attribute containing the user's email address[es]. Leave blank for default.") + # pylint: disable-next=pii-invalid-no-pii-annotation # default value config, not an email address default_email = models.CharField( max_length=255, blank=True, verbose_name="Default Value for Email", help_text="Default value for email to be used if not present in SAML response." @@ -739,6 +743,7 @@ class SAMLProviderConfig(ProviderConfig): "for trusted providers that are known to provide accurate user information." ), ) + # pylint: disable-next=pii-invalid-no-pii-annotation # boolean toggle, not an email address skip_email_verification = models.BooleanField( default=True, help_text=_( diff --git a/lms/djangoapps/bulk_email/models.py b/lms/djangoapps/bulk_email/models.py index 51c875c6fb82..b636db74136e 100644 --- a/lms/djangoapps/bulk_email/models.py +++ b/lms/djangoapps/bulk_email/models.py @@ -432,6 +432,7 @@ class Meta: course_id = CourseKeyField(db_index=True, unique=True) # Whether or not to enable instructor email + # pylint: disable-next=pii-invalid-no-pii-annotation # boolean toggle, not an email address email_enabled = models.BooleanField(default=False) # noqa: DJ012 @classmethod @@ -494,6 +495,7 @@ class BulkEmailFlag(ConfigurationModel): .. toggle_creation_date: 2016-05-05 """ # boolean field 'enabled' inherited from parent ConfigurationModel + # pylint: disable-next=pii-invalid-no-pii-annotation # boolean toggle, not an email address require_course_email_auth = models.BooleanField(default=True) @classmethod diff --git a/lms/djangoapps/course_goals/models.py b/lms/djangoapps/course_goals/models.py index 6ad9f3be5c63..53f1231735e6 100644 --- a/lms/djangoapps/course_goals/models.py +++ b/lms/djangoapps/course_goals/models.py @@ -86,6 +86,7 @@ class Meta: verbose_name_plural = "Course goal reminder statuses" goal = models.OneToOneField(CourseGoal, on_delete=models.CASCADE, related_name='reminder_status') + # pylint: disable-next=pii-invalid-no-pii-annotation # boolean toggle, not an email address email_reminder_sent = models.BooleanField( default=False, help_text='Tracks if the email reminder to complete the Course Goal has been sent this week.' ) diff --git a/lms/djangoapps/courseware/models.py b/lms/djangoapps/courseware/models.py index bd82bed13342..596a2eab7553 100644 --- a/lms/djangoapps/courseware/models.py +++ b/lms/djangoapps/courseware/models.py @@ -563,6 +563,7 @@ class FinancialAssistanceConfiguration(ConfigurationModel): help_text=_('Financial Assistance Backend API Base URL.') ) + # pylint: disable-next=pii-invalid-no-pii-annotation # fixed service-account username, not a user's PII service_username = models.CharField( max_length=100, default='financial_assistance_service_user', diff --git a/openedx/core/djangoapps/catalog/models.py b/openedx/core/djangoapps/catalog/models.py index 98a012e3c365..b176da353e93 100644 --- a/openedx/core/djangoapps/catalog/models.py +++ b/openedx/core/djangoapps/catalog/models.py @@ -44,6 +44,7 @@ class CatalogIntegration(ConfigurationModel): ) ) + # pylint: disable-next=pii-invalid-no-pii-annotation # fixed service-account username, not a user's PII service_username = models.CharField( max_length=100, default='lms_catalog_service_user', diff --git a/openedx/core/djangoapps/content/course_overviews/models.py b/openedx/core/djangoapps/content/course_overviews/models.py index 56d4af585f42..b0d5d08b5c62 100644 --- a/openedx/core/djangoapps/content/course_overviews/models.py +++ b/openedx/core/djangoapps/content/course_overviews/models.py @@ -56,7 +56,9 @@ class CourseOverview(TimeStampedModel): will cause a slew of modulestore reads as each course needs to be re-cached into the course overview. - .. no_pii: + .. pii: Contains proctoring_escalation_email, a staff contact address copied from CourseFields. + .. pii_types: email_address + .. pii_retirement: retained """ class Meta: diff --git a/openedx/core/djangoapps/credit/models.py b/openedx/core/djangoapps/credit/models.py index c5ce3cf9e8b5..b15c15957527 100644 --- a/openedx/core/djangoapps/credit/models.py +++ b/openedx/core/djangoapps/credit/models.py @@ -115,6 +115,7 @@ class CreditProvider(TimeStampedModel): ) ) + # pylint: disable-next=pii-invalid-no-pii-annotation # message template, not an email address eligibility_email_message = models.TextField( default="", help_text=gettext_lazy( @@ -124,6 +125,7 @@ class CreditProvider(TimeStampedModel): ) ) + # pylint: disable-next=pii-invalid-no-pii-annotation # message template, not an email address receipt_email_message = models.TextField( default="", help_text=gettext_lazy( @@ -424,7 +426,9 @@ class CreditRequirementStatus(TimeStampedModel): In case (3), no CreditRequirementStatus record will exist for the requirement and user. - .. no_pii: + .. pii: Contains username, anonymized by retire_user(). + .. pii_types: username + .. pii_retirement: local_api """ REQUIREMENT_STATUS_CHOICES = ( @@ -545,7 +549,9 @@ class CreditEligibility(TimeStampedModel): """ A record of a user's eligibility for credit for a specific course. - .. no_pii: + .. pii: Contains username, anonymized by retire_user(). + .. pii_types: username + .. pii_retirement: local_api """ username = models.CharField(max_length=255, db_index=True) course = models.ForeignKey(CreditCourse, related_name="eligibilities", on_delete=models.CASCADE) @@ -658,7 +664,9 @@ class CreditRequest(TimeStampedModel): (perhaps because the user did not finish filling in forms on the credit provider's site), the request record will be updated, but the UUID will remain the same. - .. no_pii: + .. pii: Contains username, anonymized by retire_user(). + .. pii_types: username + .. pii_retirement: local_api """ uuid = models.CharField(max_length=32, unique=True, db_index=True) diff --git a/openedx/core/djangoapps/django_comment_common/models.py b/openedx/core/djangoapps/django_comment_common/models.py index 887e40ef8f4e..5a40442a8fa4 100644 --- a/openedx/core/djangoapps/django_comment_common/models.py +++ b/openedx/core/djangoapps/django_comment_common/models.py @@ -271,6 +271,7 @@ class CourseDiscussionSettings(models.Model): # noqa: DJ008 help_text="Key/value store mapping discussion IDs to discussion XBlock usage keys.", ) always_divide_inline_discussions = models.BooleanField(default=False) + # pylint: disable-next=pii-invalid-no-pii-annotation # boolean toggle, not an email address reported_content_email_notifications = models.BooleanField(default=False) _divided_discussions = models.TextField(db_column='divided_discussions', null=True, blank=True) # JSON list # noqa: DJ001 # pylint: disable=line-too-long diff --git a/openedx/core/djangoapps/notifications/models.py b/openedx/core/djangoapps/notifications/models.py index 3ea59d94be43..2c9a880b4685 100644 --- a/openedx/core/djangoapps/notifications/models.py +++ b/openedx/core/djangoapps/notifications/models.py @@ -49,6 +49,7 @@ class Notification(TimeStampedModel): content_context = models.JSONField(default=dict) content_url = models.URLField(null=True, blank=True) # noqa: DJ001 web = models.BooleanField(default=True, null=False, blank=False) + # pylint: disable-next=pii-invalid-no-pii-annotation # boolean toggle, not an email address email = models.BooleanField(default=False, null=False, blank=False) push = models.BooleanField(default=False, null=False, blank=False) last_read = models.DateTimeField(null=True, blank=True) @@ -101,7 +102,9 @@ class Meta: app = models.CharField(max_length=128, null=False, blank=False, db_index=True) web = models.BooleanField(default=True, null=False, blank=False) push = models.BooleanField(default=False, null=False, blank=False) + # pylint: disable-next=pii-invalid-no-pii-annotation # boolean toggle, not an email address email = models.BooleanField(default=False, null=False, blank=False) + # pylint: disable-next=pii-invalid-no-pii-annotation # cadence choice, not an email address email_cadence = models.CharField(max_length=64, choices=EmailCadenceChoices.choices, null=False, blank=False) is_active = models.BooleanField(default=True) diff --git a/openedx/core/djangoapps/video_pipeline/models.py b/openedx/core/djangoapps/video_pipeline/models.py index 64617399d9fc..125819c1164d 100644 --- a/openedx/core/djangoapps/video_pipeline/models.py +++ b/openedx/core/djangoapps/video_pipeline/models.py @@ -37,6 +37,7 @@ class VEMPipelineIntegration(ConfigurationModel): help_text=_('video encode manager API URL.') ) + # pylint: disable-next=pii-invalid-no-pii-annotation # fixed service-account username, not a user's PII service_username = models.CharField( max_length=100, default='vem_service_user', From 37c86258faf697725dff0ca61b67d193ada3fb82 Mon Sep 17 00:00:00 2001 From: Akanshu Aich Date: Tue, 25 Aug 2026 10:00:22 +0000 Subject: [PATCH 2/4] fix: corected the inline comment --- common/djangoapps/third_party_auth/models.py | 10 +++++----- lms/djangoapps/bulk_email/models.py | 4 ++-- lms/djangoapps/course_goals/models.py | 2 +- lms/djangoapps/courseware/models.py | 2 +- openedx/core/djangoapps/catalog/models.py | 2 +- openedx/core/djangoapps/credit/models.py | 4 ++-- .../core/djangoapps/django_comment_common/models.py | 2 +- openedx/core/djangoapps/notifications/models.py | 8 +++++--- openedx/core/djangoapps/video_pipeline/models.py | 2 +- 9 files changed, 19 insertions(+), 17 deletions(-) diff --git a/common/djangoapps/third_party_auth/models.py b/common/djangoapps/third_party_auth/models.py index 8fad9248df45..71cd91115d4b 100644 --- a/common/djangoapps/third_party_auth/models.py +++ b/common/djangoapps/third_party_auth/models.py @@ -681,21 +681,21 @@ class SAMLProviderConfig(ProviderConfig): default_last_name = models.CharField( max_length=255, blank=True, verbose_name="Default Value for Last Name", help_text="Default value for last name to be used if not present in SAML response.") - # pylint: disable-next=pii-invalid-no-pii-annotation # SAML attribute URN config, not a username value + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 attr_username = models.CharField( max_length=128, blank=True, verbose_name="Username Hint Attribute", help_text="URN of SAML attribute to use as a suggested username for this user. Leave blank for default." ) - # pylint: disable-next=pii-invalid-no-pii-annotation # default value config, not a username value + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 default_username = models.CharField( max_length=255, blank=True, verbose_name="Default Value for Username", help_text="Default value for username to be used if not present in SAML response." ) - # pylint: disable-next=pii-invalid-no-pii-annotation # SAML attribute URN config, not an email address + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 attr_email = models.CharField( max_length=128, blank=True, verbose_name="Email Attribute", help_text="URN of SAML attribute containing the user's email address[es]. Leave blank for default.") - # pylint: disable-next=pii-invalid-no-pii-annotation # default value config, not an email address + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 default_email = models.CharField( max_length=255, blank=True, verbose_name="Default Value for Email", help_text="Default value for email to be used if not present in SAML response." @@ -743,7 +743,7 @@ class SAMLProviderConfig(ProviderConfig): "for trusted providers that are known to provide accurate user information." ), ) - # pylint: disable-next=pii-invalid-no-pii-annotation # boolean toggle, not an email address + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 skip_email_verification = models.BooleanField( default=True, help_text=_( diff --git a/lms/djangoapps/bulk_email/models.py b/lms/djangoapps/bulk_email/models.py index b636db74136e..92ee8a906ce4 100644 --- a/lms/djangoapps/bulk_email/models.py +++ b/lms/djangoapps/bulk_email/models.py @@ -432,7 +432,7 @@ class Meta: course_id = CourseKeyField(db_index=True, unique=True) # Whether or not to enable instructor email - # pylint: disable-next=pii-invalid-no-pii-annotation # boolean toggle, not an email address + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 email_enabled = models.BooleanField(default=False) # noqa: DJ012 @classmethod @@ -495,7 +495,7 @@ class BulkEmailFlag(ConfigurationModel): .. toggle_creation_date: 2016-05-05 """ # boolean field 'enabled' inherited from parent ConfigurationModel - # pylint: disable-next=pii-invalid-no-pii-annotation # boolean toggle, not an email address + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 require_course_email_auth = models.BooleanField(default=True) @classmethod diff --git a/lms/djangoapps/course_goals/models.py b/lms/djangoapps/course_goals/models.py index 53f1231735e6..1075a948ddc6 100644 --- a/lms/djangoapps/course_goals/models.py +++ b/lms/djangoapps/course_goals/models.py @@ -86,7 +86,7 @@ class Meta: verbose_name_plural = "Course goal reminder statuses" goal = models.OneToOneField(CourseGoal, on_delete=models.CASCADE, related_name='reminder_status') - # pylint: disable-next=pii-invalid-no-pii-annotation # boolean toggle, not an email address + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 email_reminder_sent = models.BooleanField( default=False, help_text='Tracks if the email reminder to complete the Course Goal has been sent this week.' ) diff --git a/lms/djangoapps/courseware/models.py b/lms/djangoapps/courseware/models.py index 596a2eab7553..7522a6ee3920 100644 --- a/lms/djangoapps/courseware/models.py +++ b/lms/djangoapps/courseware/models.py @@ -563,7 +563,7 @@ class FinancialAssistanceConfiguration(ConfigurationModel): help_text=_('Financial Assistance Backend API Base URL.') ) - # pylint: disable-next=pii-invalid-no-pii-annotation # fixed service-account username, not a user's PII + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 service_username = models.CharField( max_length=100, default='financial_assistance_service_user', diff --git a/openedx/core/djangoapps/catalog/models.py b/openedx/core/djangoapps/catalog/models.py index b176da353e93..77dabcc9325c 100644 --- a/openedx/core/djangoapps/catalog/models.py +++ b/openedx/core/djangoapps/catalog/models.py @@ -44,7 +44,7 @@ class CatalogIntegration(ConfigurationModel): ) ) - # pylint: disable-next=pii-invalid-no-pii-annotation # fixed service-account username, not a user's PII + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 service_username = models.CharField( max_length=100, default='lms_catalog_service_user', diff --git a/openedx/core/djangoapps/credit/models.py b/openedx/core/djangoapps/credit/models.py index b15c15957527..e8b565462e96 100644 --- a/openedx/core/djangoapps/credit/models.py +++ b/openedx/core/djangoapps/credit/models.py @@ -115,7 +115,7 @@ class CreditProvider(TimeStampedModel): ) ) - # pylint: disable-next=pii-invalid-no-pii-annotation # message template, not an email address + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 eligibility_email_message = models.TextField( default="", help_text=gettext_lazy( @@ -125,7 +125,7 @@ class CreditProvider(TimeStampedModel): ) ) - # pylint: disable-next=pii-invalid-no-pii-annotation # message template, not an email address + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 receipt_email_message = models.TextField( default="", help_text=gettext_lazy( diff --git a/openedx/core/djangoapps/django_comment_common/models.py b/openedx/core/djangoapps/django_comment_common/models.py index 5a40442a8fa4..9606ecaecd35 100644 --- a/openedx/core/djangoapps/django_comment_common/models.py +++ b/openedx/core/djangoapps/django_comment_common/models.py @@ -271,7 +271,7 @@ class CourseDiscussionSettings(models.Model): # noqa: DJ008 help_text="Key/value store mapping discussion IDs to discussion XBlock usage keys.", ) always_divide_inline_discussions = models.BooleanField(default=False) - # pylint: disable-next=pii-invalid-no-pii-annotation # boolean toggle, not an email address + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 reported_content_email_notifications = models.BooleanField(default=False) _divided_discussions = models.TextField(db_column='divided_discussions', null=True, blank=True) # JSON list # noqa: DJ001 # pylint: disable=line-too-long diff --git a/openedx/core/djangoapps/notifications/models.py b/openedx/core/djangoapps/notifications/models.py index 2c9a880b4685..57e85ce374d1 100644 --- a/openedx/core/djangoapps/notifications/models.py +++ b/openedx/core/djangoapps/notifications/models.py @@ -49,13 +49,15 @@ class Notification(TimeStampedModel): content_context = models.JSONField(default=dict) content_url = models.URLField(null=True, blank=True) # noqa: DJ001 web = models.BooleanField(default=True, null=False, blank=False) - # pylint: disable-next=pii-invalid-no-pii-annotation # boolean toggle, not an email address + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 email = models.BooleanField(default=False, null=False, blank=False) push = models.BooleanField(default=False, null=False, blank=False) last_read = models.DateTimeField(null=True, blank=True) last_seen = models.DateTimeField(null=True, blank=True) group_by_id = models.CharField(max_length=255, db_index=True, null=False, default="") + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 email_sent_on = models.DateTimeField(null=True, blank=True) + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 email_scheduled = models.BooleanField( default=False, db_index=True, @@ -102,9 +104,9 @@ class Meta: app = models.CharField(max_length=128, null=False, blank=False, db_index=True) web = models.BooleanField(default=True, null=False, blank=False) push = models.BooleanField(default=False, null=False, blank=False) - # pylint: disable-next=pii-invalid-no-pii-annotation # boolean toggle, not an email address + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 email = models.BooleanField(default=False, null=False, blank=False) - # pylint: disable-next=pii-invalid-no-pii-annotation # cadence choice, not an email address + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 email_cadence = models.CharField(max_length=64, choices=EmailCadenceChoices.choices, null=False, blank=False) is_active = models.BooleanField(default=True) diff --git a/openedx/core/djangoapps/video_pipeline/models.py b/openedx/core/djangoapps/video_pipeline/models.py index 125819c1164d..322056c8b6a3 100644 --- a/openedx/core/djangoapps/video_pipeline/models.py +++ b/openedx/core/djangoapps/video_pipeline/models.py @@ -37,7 +37,7 @@ class VEMPipelineIntegration(ConfigurationModel): help_text=_('video encode manager API URL.') ) - # pylint: disable-next=pii-invalid-no-pii-annotation # fixed service-account username, not a user's PII + # pylint: disable-next=pii-invalid-no-pii-annotation # field does not store user PII data, safe under OEP-30 service_username = models.CharField( max_length=100, default='vem_service_user', From 19e9bbc516e7a02d2c95b6c1beae29b77bf863c1 Mon Sep 17 00:00:00 2001 From: Akanshu Aich Date: Tue, 25 Aug 2026 10:21:26 +0000 Subject: [PATCH 3/4] fix: updated pylintrc --- pylintrc | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/pylintrc b/pylintrc index 3ca275220e54..e1b1e841e147 100644 --- a/pylintrc +++ b/pylintrc @@ -64,7 +64,7 @@ # SERIOUSLY. # # ------------------------------ -# Generated by edx-lint version: 6.1.0 +# Generated by edx-lint version: 6.2.0 # ------------------------------ [MASTER] ignore = ,.git,.tox,migrations,node_modules,.pycharm_helpers @@ -257,6 +257,8 @@ enable = deprecated-pragma, unrecognized-inline-option, useless-suppression, + + pii-invalid-no-pii-annotation, disable = bad-indentation, broad-exception-raised, @@ -414,4 +416,9 @@ int-import-graph = [EXCEPTIONS] overgeneral-exceptions = builtins.Exception -# 0dccd7f4e438532146a49ea3d1399db32add6e4d +[PII] +pii-terms = + email, + username + +# e72ecbe0cf2f12ac71fdd2c33dc7bfb778f81c6e From 774e06a538b12693a0e0b3eeb08967eacea55197 Mon Sep 17 00:00:00 2001 From: bmtcril <112640379+bmtcril@users.noreply.github.com> Date: Tue, 25 Aug 2026 13:27:11 +0000 Subject: [PATCH 4/4] feat: Upgrade Python dependency edx-lint Bump edx-lint to latest. This will need #39022 to fast-follow to prevent failing checks. Commit generated by workflow `openedx/openedx-platform/.github/workflows/upgrade-one-python-dependency.yml@refs/heads/master` --- requirements/edx/development.txt | 2 +- uv.lock | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/requirements/edx/development.txt b/requirements/edx/development.txt index 9a95d362188e..2e2455b05888 100644 --- a/requirements/edx/development.txt +++ b/requirements/edx/development.txt @@ -542,7 +542,7 @@ edx-event-bus-redis==1.0.0 # via openedx-platform edx-i18n-tools==2.0.0 # via ora2 -edx-lint==6.1.0 +edx-lint==6.2.0 edx-milestones==2.0.0 # via openedx-platform edx-opaque-keys==4.0.0 diff --git a/uv.lock b/uv.lock index 71758f3202ec..d1bef3648c22 100644 --- a/uv.lock +++ b/uv.lock @@ -2015,7 +2015,7 @@ wheels = [ [[package]] name = "edx-lint" -version = "6.1.0" +version = "6.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, @@ -2027,9 +2027,9 @@ dependencies = [ { name = "six" }, { name = "tomlkit" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ee/f0/834dcbb9d847d5654c1fc22dad18813eef66046d521e70d3d21be5a8647f/edx_lint-6.1.0.tar.gz", hash = "sha256:f879f55ed0a94222dee69a4361833f7de6b91576256881eeb35afbed2a85dfa2", size = 50843, upload-time = "2026-04-27T14:05:06.491Z" } +sdist = { url = "https://files.pythonhosted.org/packages/da/e2/20b4782eba5bbbaeb949877666f871912db05fb22cee2eafdbc83566cffc/edx_lint-6.2.0.tar.gz", hash = "sha256:2ce94b0b1235024e7714792442ea674e1bbe2877e7ca2ca970609e74aa73dfdf", size = 55456, upload-time = "2026-08-18T12:40:35.178Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7a/3c/dd55e7200bab2b60d993f76cf540b4098e02ce9d300367b395d936d48152/edx_lint-6.1.0-py3-none-any.whl", hash = "sha256:937eeee9c440bf4fbcbdee8553ee11d11a6c675e0834fe43f27174457de7c84a", size = 58548, upload-time = "2026-04-27T14:05:05.167Z" }, + { url = "https://files.pythonhosted.org/packages/cf/f3/72bbb973cb654aa9d8291c438dd02b21ffb3bf2bdc9e653f9ea9048e3b20/edx_lint-6.2.0-py3-none-any.whl", hash = "sha256:0e1491f9a049927e35eb05a0fd33464b4ec912b83e387568e37f4ce5d10acb30", size = 64109, upload-time = "2026-08-18T12:40:34.102Z" }, ] [[package]]