Skip to content

Commit 499f620

Browse files
committed
fix: satisfy ruff and pylint rules
1 parent 56765cd commit 499f620

8 files changed

Lines changed: 107 additions & 108 deletions

File tree

openedx/core/djangoapps/user_api/accounts/api.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import datetime
77
import logging
88
import re
9-
from typing import Optional
109
from zoneinfo import ZoneInfo
1110

1211
from django import forms
@@ -366,7 +365,7 @@ def _notify_language_proficiencies_update_if_needed(data, user, user_profile, ol
366365

367366

368367
def _update_extended_profile_if_needed(
369-
data: dict, user_profile: UserProfile, extended_profile_form: Optional[forms.Form]
368+
data: dict, user_profile: UserProfile, extended_profile_form: forms.Form | None
370369
) -> None:
371370
"""
372371
Update the extended profile information if present in the data.
@@ -378,7 +377,7 @@ def _update_extended_profile_if_needed(
378377
Args:
379378
data (dict): Dictionary containing the update data, may include 'extended_profile' key
380379
user_profile (UserProfile): The UserProfile instance to update
381-
extended_profile_form (Optional[forms.Form]): The validated extended profile form
380+
extended_profile_form (forms.Form | None): The validated extended profile form
382381
containing extended profile data, or None if no extended profile form is provided
383382
384383
Note:

openedx/core/djangoapps/user_api/accounts/forms.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
"""
44

55
import logging
6-
from typing import Optional, Tuple
76

87
from django import forms
98
from django.core.exceptions import ObjectDoesNotExist, ValidationError
@@ -47,12 +46,12 @@ def save(self, retirement):
4746
handle_retirement_cancellation(retirement)
4847

4948

50-
def extract_extended_profile_fields_data(extended_profile: Optional[list[dict]]) -> Tuple[dict, dict]:
49+
def extract_extended_profile_fields_data(extended_profile: list[dict] | None) -> tuple[dict, dict]:
5150
"""
5251
Extract extended profile fields data from extended_profile structure.
5352
5453
Args:
55-
extended_profile (Optional[list[dict]]): List of field data dictionaries with keys
54+
extended_profile (list[dict] | None): List of field data dictionaries with keys
5655
`field_name` and `field_value`
5756
5857
Returns:
@@ -91,7 +90,7 @@ def extract_extended_profile_fields_data(extended_profile: Optional[list[dict]])
9190
def get_extended_profile_form(
9291
extended_profile_fields_data: dict,
9392
user: User,
94-
) -> Tuple[Optional[forms.Form], dict]:
93+
) -> tuple[forms.Form | None, dict]:
9594
"""
9695
Get and validate an extended profile form instance.
9796
@@ -103,7 +102,7 @@ def get_extended_profile_form(
103102
104103
Returns:
105104
tuple: A tuple containing (extended_profile_form, field_errors)
106-
- extended_profile_form (Optional[forms.Form]): The validated form instance,
105+
- extended_profile_form (forms.Form | None): The validated form instance,
107106
or None if no extended profile form is configured, creation fails,
108107
or form validation fails.
109108
- field_errors (dict): Dictionary of validation errors, if any
@@ -148,7 +147,7 @@ def get_extended_profile_form(
148147

149148
def validate_and_get_extended_profile_form(
150149
extended_profile_data: list, user: User
151-
) -> Tuple[Optional[forms.Form], dict]:
150+
) -> tuple[forms.Form | None, dict]:
152151
"""
153152
Validate and return an extended profile form instance.
154153
@@ -160,7 +159,7 @@ def validate_and_get_extended_profile_form(
160159
161160
Returns:
162161
tuple: A tuple containing (validated_form, field_errors)
163-
- validated_form (Optional[forms.Form]): The validated form instance, or None if
162+
- validated_form (forms.Form | None): The validated form instance, or None if
164163
validation fails or no extended profile is configured
165164
- field_errors (dict): Dictionary of validation errors, if any
166165
"""

openedx/core/djangoapps/user_api/accounts/tests/test_api.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -174,15 +174,15 @@ def test_update_username_provided_with_extended_profile(self):
174174

175175
update_account_settings(self.user, {"extended_profile": extended_profile_data, "name": "Donald Duck"})
176176
account_settings = get_account_settings(self.default_request)[0]
177-
self.assertEqual(extended_profile_data, account_settings["extended_profile"])
178-
self.assertEqual("Donald Duck", account_settings["name"])
177+
self.assertEqual(extended_profile_data, account_settings["extended_profile"]) # noqa: PT009
178+
self.assertEqual("Donald Duck", account_settings["name"]) # noqa: PT009
179179

180180
update_account_settings(
181181
self.user, {"extended_profile": extended_profile_data, "name": "Mickey Mouse"}, username=self.user.username
182182
)
183183
account_settings = get_account_settings(self.default_request)[0]
184-
self.assertEqual(extended_profile_data, account_settings["extended_profile"])
185-
self.assertEqual("Mickey Mouse", account_settings["name"])
184+
self.assertEqual(extended_profile_data, account_settings["extended_profile"]) # noqa: PT009
185+
self.assertEqual("Mickey Mouse", account_settings["name"]) # noqa: PT009
186186

187187
with pytest.raises(UserNotAuthorized):
188188
update_account_settings(
@@ -531,10 +531,10 @@ def test_add_account_recovery(self):
531531
assert account_recovery.secondary_email == test_email
532532

533533
def test_change_country_removes_state(self):
534-
'''
534+
"""
535535
Test that changing the country (to something other than a country with
536536
states) removes the state
537-
'''
537+
"""
538538
# First set the country and state
539539
update_account_settings(self.user, {"country": UserProfile.COUNTRY_WITH_STATES, "state": "MA"})
540540
account_settings = get_account_settings(self.default_request)[0]
@@ -586,9 +586,9 @@ def test_update_extended_profile_with_meta_only(self):
586586

587587
user_profile = UserProfile.objects.get(user=self.user)
588588
meta = user_profile.get_meta()
589-
self.assertEqual(meta["department"], "Engineering")
590-
self.assertEqual(meta["title"], "Software Engineer")
591-
self.assertEqual(user_profile.bio, "Updated bio")
589+
self.assertEqual(meta["department"], "Engineering") # noqa: PT009
590+
self.assertEqual(meta["title"], "Software Engineer") # noqa: PT009
591+
self.assertEqual(user_profile.bio, "Updated bio") # noqa: PT009
592592

593593
@patch("openedx.core.djangoapps.user_api.accounts.api.validate_and_get_extended_profile_form")
594594
def test_update_extended_profile_with_form(self, mock_validate_and_get_form):
@@ -605,7 +605,7 @@ def test_update_extended_profile_with_form(self, mock_validate_and_get_form):
605605
mock_form.save.assert_called_once_with(commit=False)
606606
mock_form.save.return_value.save.assert_called_once()
607607
meta = UserProfile.objects.get(user=self.user).get_meta()
608-
self.assertEqual(meta["department"], "Engineering")
608+
self.assertEqual(meta["department"], "Engineering") # noqa: PT009
609609

610610
@patch("openedx.core.djangoapps.user_api.accounts.api.validate_and_get_extended_profile_form")
611611
def test_update_extended_profile_with_form_new_instance(self, mock_validate_and_get_form):
@@ -621,7 +621,7 @@ def test_update_extended_profile_with_form_new_instance(self, mock_validate_and_
621621

622622
mock_validate_and_get_form.assert_called_once_with(extended_profile_data, self.user)
623623
mock_form.save.assert_called_once_with(commit=False)
624-
self.assertEqual(mock_instance.user, self.user)
624+
self.assertEqual(mock_instance.user, self.user) # noqa: PT009
625625
mock_instance.save.assert_called_once()
626626

627627
@patch("openedx.core.djangoapps.user_api.accounts.api.validate_and_get_extended_profile_form")
@@ -644,15 +644,15 @@ def test_update_extended_profile_form_save_error(self, exception, expected_dev_m
644644
with pytest.raises(AccountUpdateError) as context_manager:
645645
update_account_settings(self.user, {"extended_profile": extended_profile_data})
646646

647-
self.assertIn(expected_dev_msg, context_manager.value.developer_message)
648-
self.assertIsNotNone(context_manager.value.user_message)
647+
self.assertIn(expected_dev_msg, context_manager.value.developer_message) # noqa: PT009
648+
self.assertIsNotNone(context_manager.value.user_message) # noqa: PT009
649649

650650
mock_validate_and_get_form.assert_called_once_with(extended_profile_data, self.user)
651651
mock_form.save.assert_called_once_with(commit=False)
652652

653653
# The meta update is in the same transaction, it should be rolled back.
654654
meta = UserProfile.objects.get(user=self.user).get_meta()
655-
self.assertNotIn("department", meta)
655+
self.assertNotIn("department", meta) # noqa: PT009
656656

657657
def test_update_extended_profile_without_extended_profile_data(self):
658658
"""
@@ -663,7 +663,7 @@ def test_update_extended_profile_without_extended_profile_data(self):
663663
update_account_settings(self.user, update_data)
664664

665665
user_profile = UserProfile.objects.get(user=self.user)
666-
self.assertEqual(user_profile.bio, "Updated bio")
666+
self.assertEqual(user_profile.bio, "Updated bio") # noqa: PT009
667667

668668

669669
@patch('openedx.core.djangoapps.user_api.accounts.image_helpers._PROFILE_IMAGE_SIZES', [50, 10])

openedx/core/djangoapps/user_api/accounts/tests/test_forms.py

Lines changed: 45 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ def test_extract_valid_extended_profile_data(self):
3131

3232
extracted_data, errors = extract_extended_profile_fields_data(extended_profile)
3333

34-
self.assertEqual(errors, {})
35-
self.assertEqual(extracted_data, {"department": "Engineering", "title": "Software Engineer"})
34+
self.assertEqual(errors, {}) # noqa: PT009
35+
self.assertEqual(extracted_data, {"department": "Engineering", "title": "Software Engineer"}) # noqa: PT009
3636

3737
def test_extract_extended_profile_with_empty_string(self):
3838
"""
@@ -45,8 +45,8 @@ def test_extract_extended_profile_with_empty_string(self):
4545

4646
extracted_data, errors = extract_extended_profile_fields_data(extended_profile)
4747

48-
self.assertEqual(errors, {})
49-
self.assertEqual(extracted_data, {"department": "", "title": "Engineer"})
48+
self.assertEqual(errors, {}) # noqa: PT009
49+
self.assertEqual(extracted_data, {"department": "", "title": "Engineer"}) # noqa: PT009
5050

5151
def test_extract_extended_profile_not_a_list(self):
5252
"""
@@ -56,9 +56,11 @@ def test_extract_extended_profile_not_a_list(self):
5656

5757
extracted_data, errors = extract_extended_profile_fields_data(extended_profile)
5858

59-
self.assertEqual(extracted_data, {})
60-
self.assertIn("extended_profile", errors)
61-
self.assertEqual(errors["extended_profile"]["developer_message"], "extended_profile must be a list")
59+
self.assertEqual(extracted_data, {}) # noqa: PT009
60+
self.assertIn("extended_profile", errors) # noqa: PT009
61+
self.assertEqual( # noqa: PT009
62+
errors["extended_profile"]["developer_message"], "extended_profile must be a list"
63+
)
6264

6365
def test_extract_extended_profile_with_invalid_field_data(self):
6466
"""
@@ -73,8 +75,8 @@ def test_extract_extended_profile_with_invalid_field_data(self):
7375
extracted_data, errors = extract_extended_profile_fields_data(extended_profile)
7476

7577
# Invalid entry should be skipped, but valid ones should be extracted
76-
self.assertEqual(errors, {})
77-
self.assertEqual(extracted_data, {"department": "Engineering", "title": "Engineer"})
78+
self.assertEqual(errors, {}) # noqa: PT009
79+
self.assertEqual(extracted_data, {"department": "Engineering", "title": "Engineer"}) # noqa: PT009
7880

7981
def test_extract_extended_profile_missing_field_name(self):
8082
"""
@@ -87,8 +89,8 @@ def test_extract_extended_profile_missing_field_name(self):
8789

8890
extracted_data, errors = extract_extended_profile_fields_data(extended_profile)
8991

90-
self.assertEqual(errors, {})
91-
self.assertEqual(extracted_data, {"department": "Engineering"})
92+
self.assertEqual(errors, {}) # noqa: PT009
93+
self.assertEqual(extracted_data, {"department": "Engineering"}) # noqa: PT009
9294

9395
def test_extract_extended_profile_empty_list(self):
9496
"""
@@ -98,8 +100,8 @@ def test_extract_extended_profile_empty_list(self):
98100

99101
extracted_data, errors = extract_extended_profile_fields_data(extended_profile)
100102

101-
self.assertEqual(errors, {})
102-
self.assertEqual(extracted_data, {})
103+
self.assertEqual(errors, {}) # noqa: PT009
104+
self.assertEqual(extracted_data, {}) # noqa: PT009
103105

104106

105107
class TestGetExtendedProfileForm(TestCase):
@@ -121,8 +123,8 @@ def test_get_extended_profile_form_no_model_configured(self, mock_get_model: Moc
121123

122124
form, errors = get_extended_profile_form(extended_profile_fields_data, self.user)
123125

124-
self.assertIsNone(form)
125-
self.assertEqual(errors, {})
126+
self.assertIsNone(form) # noqa: PT009
127+
self.assertEqual(errors, {}) # noqa: PT009
126128

127129
@patch("openedx.core.djangoapps.user_api.accounts.forms.get_extended_profile_model")
128130
def test_get_extended_profile_form_model_has_no_objects(self, mock_get_model: Mock):
@@ -135,8 +137,8 @@ def test_get_extended_profile_form_model_has_no_objects(self, mock_get_model: Mo
135137

136138
form, errors = get_extended_profile_form(extended_profile_fields_data, self.user)
137139

138-
self.assertIsNone(form)
139-
self.assertEqual(errors, {})
140+
self.assertIsNone(form) # noqa: PT009
141+
self.assertEqual(errors, {}) # noqa: PT009
140142

141143
@patch("openedx.core.djangoapps.user_api.accounts.forms.get_registration_extension_form")
142144
@patch("openedx.core.djangoapps.user_api.accounts.forms.get_extended_profile_model")
@@ -155,8 +157,8 @@ def test_get_extended_profile_form_with_existing_instance(self, mock_get_model:
155157

156158
form, errors = get_extended_profile_form(extended_profile_fields_data, self.user)
157159

158-
self.assertEqual(form, mock_form_instance)
159-
self.assertEqual(errors, {})
160+
self.assertEqual(form, mock_form_instance) # noqa: PT009
161+
self.assertEqual(errors, {}) # noqa: PT009
160162
mock_model.objects.get.assert_called_once_with(user=self.user)
161163
mock_get_form.assert_called_once_with(data=extended_profile_fields_data, instance=mock_instance)
162164

@@ -177,14 +179,14 @@ def test_get_extended_profile_form_without_existing_instance(self, mock_get_mode
177179

178180
form, errors = get_extended_profile_form(extended_profile_fields_data, self.user)
179181

180-
self.assertEqual(form, mock_form_instance)
181-
self.assertEqual(errors, {})
182+
self.assertEqual(form, mock_form_instance) # noqa: PT009
183+
self.assertEqual(errors, {}) # noqa: PT009
182184
mock_model.objects.get.assert_called_once_with(user=self.user)
183185
mock_get_form.assert_called_once_with(data=extended_profile_fields_data)
184186

185187
@patch("openedx.core.djangoapps.user_api.accounts.forms.get_registration_extension_form")
186188
@patch("openedx.core.djangoapps.user_api.accounts.forms.get_extended_profile_model")
187-
def test_get_extended_profile_form_validation_errors(self, _: Mock, mock_get_form: Mock):
189+
def test_get_extended_profile_form_validation_errors(self, mock_get_model: Mock, mock_get_form: Mock):
188190
"""
189191
Test when form validation fails
190192
"""
@@ -196,11 +198,12 @@ def test_get_extended_profile_form_validation_errors(self, _: Mock, mock_get_for
196198

197199
form, errors = get_extended_profile_form(extended_profile_fields_data, self.user)
198200

199-
self.assertIsNone(form)
200-
self.assertIn("department", errors)
201-
self.assertIn("title", errors)
202-
self.assertEqual(errors["department"]["user_message"], "This field is required")
203-
self.assertEqual(errors["title"]["user_message"], "Invalid value")
201+
mock_get_model.assert_called_once()
202+
self.assertIsNone(form) # noqa: PT009
203+
self.assertIn("department", errors) # noqa: PT009
204+
self.assertIn("title", errors) # noqa: PT009
205+
self.assertEqual(errors["department"]["user_message"], "This field is required") # noqa: PT009
206+
self.assertEqual(errors["title"]["user_message"], "Invalid value") # noqa: PT009
204207

205208
@patch("openedx.core.djangoapps.user_api.accounts.forms.get_registration_extension_form")
206209
def test_get_extended_profile_form_returns_none(self, mock_get_form: Mock):
@@ -213,8 +216,8 @@ def test_get_extended_profile_form_returns_none(self, mock_get_form: Mock):
213216
with patch("openedx.core.djangoapps.user_api.accounts.forms.get_extended_profile_model"):
214217
form, errors = get_extended_profile_form(extended_profile_fields_data, self.user)
215218

216-
self.assertIsNone(form)
217-
self.assertEqual(errors, {})
219+
self.assertIsNone(form) # noqa: PT009
220+
self.assertEqual(errors, {}) # noqa: PT009
218221

219222
@patch("openedx.core.djangoapps.user_api.accounts.forms.get_registration_extension_form")
220223
def test_get_extended_profile_form_exception_during_creation(self, mock_get_form: Mock):
@@ -227,9 +230,9 @@ def test_get_extended_profile_form_exception_during_creation(self, mock_get_form
227230
with patch("openedx.core.djangoapps.user_api.accounts.forms.get_extended_profile_model"):
228231
form, errors = get_extended_profile_form(extended_profile_fields_data, self.user)
229232

230-
self.assertIsNone(form)
231-
self.assertIn("extended_profile", errors)
232-
self.assertIn("Error creating custom form", errors["extended_profile"]["developer_message"])
233+
self.assertIsNone(form) # noqa: PT009
234+
self.assertIn("extended_profile", errors) # noqa: PT009
235+
self.assertIn("Error creating custom form", errors["extended_profile"]["developer_message"]) # noqa: PT009
233236

234237

235238
class TestValidateAndGetExtendedProfileForm(TestCase):
@@ -254,8 +257,8 @@ def test_validate_with_valid_data(self, mock_extract: Mock, mock_get_form: Mock)
254257

255258
form, errors = validate_and_get_extended_profile_form(extended_profile_data, self.user)
256259

257-
self.assertEqual(form, mock_form)
258-
self.assertEqual(errors, {})
260+
self.assertEqual(form, mock_form) # noqa: PT009
261+
self.assertEqual(errors, {}) # noqa: PT009
259262
mock_extract.assert_called_once_with(extended_profile_data)
260263
mock_get_form.assert_called_once_with({"department": "Engineering"}, self.user)
261264

@@ -269,8 +272,8 @@ def test_validate_with_extraction_errors(self, mock_extract: Mock):
269272

270273
form, errors = validate_and_get_extended_profile_form(extended_profile_data, self.user)
271274

272-
self.assertIsNone(form)
273-
self.assertIn("extended_profile", errors)
275+
self.assertIsNone(form) # noqa: PT009
276+
self.assertIn("extended_profile", errors) # noqa: PT009
274277

275278
@patch("openedx.core.djangoapps.user_api.accounts.forms.extract_extended_profile_fields_data")
276279
def test_validate_with_empty_data(self, mock_extract: Mock):
@@ -282,8 +285,8 @@ def test_validate_with_empty_data(self, mock_extract: Mock):
282285

283286
form, errors = validate_and_get_extended_profile_form(extended_profile_data, self.user)
284287

285-
self.assertIsNone(form)
286-
self.assertEqual(errors, {})
288+
self.assertIsNone(form) # noqa: PT009
289+
self.assertEqual(errors, {}) # noqa: PT009
287290

288291
@patch("openedx.core.djangoapps.user_api.accounts.forms.get_extended_profile_form")
289292
@patch("openedx.core.djangoapps.user_api.accounts.forms.extract_extended_profile_fields_data")
@@ -299,8 +302,8 @@ def test_validate_with_form_errors(self, mock_extract: Mock, mock_get_form: Mock
299302

300303
form, errors = validate_and_get_extended_profile_form(extended_profile_data, self.user)
301304

302-
self.assertEqual(form, mock_form)
303-
self.assertIn("department", errors)
305+
self.assertEqual(form, mock_form) # noqa: PT009
306+
self.assertIn("department", errors) # noqa: PT009
304307

305308
@patch("openedx.core.djangoapps.user_api.accounts.forms.get_extended_profile_form")
306309
@patch("openedx.core.djangoapps.user_api.accounts.forms.extract_extended_profile_fields_data")
@@ -316,5 +319,5 @@ def test_validate_merges_errors(self, mock_extract: Mock, mock_get_form: Mock):
316319

317320
form, errors = validate_and_get_extended_profile_form(extended_profile_data, self.user)
318321

319-
self.assertEqual(form, mock_form)
320-
self.assertIn("title", errors)
322+
self.assertEqual(form, mock_form) # noqa: PT009
323+
self.assertIn("title", errors) # noqa: PT009

0 commit comments

Comments
 (0)