From f2f9e36d6c3b2010348b62e97c48f3acc0f942fd Mon Sep 17 00:00:00 2001 From: Usama Sadiq Date: Mon, 10 May 2021 13:50:19 +0500 Subject: [PATCH] refactor: pyupgrade second iteration (#27454) --- .../track/migrations/0001_initial.py | 7 +-- .../migrations/0002_delete_trackinglog.py | 1 - common/djangoapps/track/tests/__init__.py | 6 +- .../djangoapps/track/tests/test_contexts.py | 6 +- .../djangoapps/track/tests/test_middleware.py | 10 ++-- common/djangoapps/track/tests/test_segment.py | 7 ++- common/djangoapps/track/tests/test_shim.py | 60 +++++++++---------- common/djangoapps/track/tests/test_tracker.py | 5 +- common/djangoapps/track/views/__init__.py | 2 +- common/djangoapps/track/views/segmentio.py | 2 +- common/djangoapps/track/views/tests/base.py | 4 +- .../track/views/tests/test_segmentio.py | 6 +- .../track/views/tests/test_views.py | 17 +++--- 13 files changed, 64 insertions(+), 69 deletions(-) diff --git a/common/djangoapps/track/migrations/0001_initial.py b/common/djangoapps/track/migrations/0001_initial.py index 69f38bb08a..13d8fcf0d1 100644 --- a/common/djangoapps/track/migrations/0001_initial.py +++ b/common/djangoapps/track/migrations/0001_initial.py @@ -1,6 +1,3 @@ -# -*- coding: utf-8 -*- - - from django.db import migrations, models @@ -14,7 +11,7 @@ class Migration(migrations.Migration): name='TrackingLog', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), - ('dtcreated', models.DateTimeField(auto_now_add=True, verbose_name=u'creation date')), + ('dtcreated', models.DateTimeField(auto_now_add=True, verbose_name='creation date')), ('username', models.CharField(max_length=32, blank=True)), ('ip', models.CharField(max_length=32, blank=True)), ('event_source', models.CharField(max_length=32)), @@ -22,7 +19,7 @@ class Migration(migrations.Migration): ('event', models.TextField(blank=True)), ('agent', models.CharField(max_length=256, blank=True)), ('page', models.CharField(max_length=512, null=True, blank=True)), - ('time', models.DateTimeField(verbose_name=u'event time')), + ('time', models.DateTimeField(verbose_name='event time')), ('host', models.CharField(max_length=64, blank=True)), ], options={ diff --git a/common/djangoapps/track/migrations/0002_delete_trackinglog.py b/common/djangoapps/track/migrations/0002_delete_trackinglog.py index 463573e3fd..6a36c72fc9 100644 --- a/common/djangoapps/track/migrations/0002_delete_trackinglog.py +++ b/common/djangoapps/track/migrations/0002_delete_trackinglog.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- # Generated by Django 1.11.27 on 2020-02-04 21:16 diff --git a/common/djangoapps/track/tests/__init__.py b/common/djangoapps/track/tests/__init__.py index 11efce9569..0fd070c5a2 100644 --- a/common/djangoapps/track/tests/__init__.py +++ b/common/djangoapps/track/tests/__init__.py @@ -18,11 +18,11 @@ IN_MEMORY_BACKEND_CONFIG = { } -class InMemoryBackend(object): +class InMemoryBackend: """A backend that simply stores all events in memory""" def __init__(self): - super(InMemoryBackend, self).__init__() # lint-amnesty, pylint: disable=super-with-arguments + super().__init__() # lint-amnesty, pylint: disable=super-with-arguments self.events = [] def send(self, event): @@ -48,7 +48,7 @@ class EventTrackingTestCase(TestCase): freezer.start() self.addCleanup(freezer.stop) - super(EventTrackingTestCase, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments + super().setUp() # lint-amnesty, pylint: disable=super-with-arguments self.recreate_tracker() diff --git a/common/djangoapps/track/tests/test_contexts.py b/common/djangoapps/track/tests/test_contexts.py index ffcd8a6100..f20423adc9 100644 --- a/common/djangoapps/track/tests/test_contexts.py +++ b/common/djangoapps/track/tests/test_contexts.py @@ -23,7 +23,7 @@ class TestContexts(TestCase): # lint-amnesty, pylint: disable=missing-class-doc ) @ddt.unpack def test_course_id_from_url(self, course_id, postfix): - url = 'http://foo.bar.com/courses/{}{}'.format(course_id, postfix) + url = f'http://foo.bar.com/courses/{course_id}{postfix}' self.assert_parses_course_id_from_url(url, course_id) def assert_parses_course_id_from_url(self, format_string, course_id): @@ -38,7 +38,7 @@ class TestContexts(TestCase): # lint-amnesty, pylint: disable=missing-class-doc @ddt.data('', '/', '/?', '?format=json') def test_malformed_course_id(self, postfix): - self.assert_empty_context_for_url('http://foo.bar.com/courses/test/course_name{}'.format(postfix)) + self.assert_empty_context_for_url(f'http://foo.bar.com/courses/test/course_name{postfix}') @ddt.data( (COURSE_ID, ''), @@ -50,7 +50,7 @@ class TestContexts(TestCase): # lint-amnesty, pylint: disable=missing-class-doc ) @ddt.unpack def test_course_id_later_in_url(self, course_id, postfix): - url = 'http://foo.bar.com/x/y/z/courses/{}{}'.format(course_id, postfix) + url = f'http://foo.bar.com/x/y/z/courses/{course_id}{postfix}' self.assert_parses_course_id_from_url(url, course_id) def test_no_url(self): diff --git a/common/djangoapps/track/tests/test_middleware.py b/common/djangoapps/track/tests/test_middleware.py index 7ed30faa93..4f4096a7fa 100644 --- a/common/djangoapps/track/tests/test_middleware.py +++ b/common/djangoapps/track/tests/test_middleware.py @@ -1,16 +1,14 @@ -# -*- coding: utf-8 -*- """Tests for tracking middleware.""" +from unittest.mock import patch, sentinel import ddt -import six from django.contrib.auth.models import User # lint-amnesty, pylint: disable=imported-auth-user from django.contrib.sessions.middleware import SessionMiddleware from django.test import TestCase from django.test.client import RequestFactory from django.test.utils import override_settings from eventtracking import tracker -from mock import patch, sentinel from common.djangoapps.track.middleware import TrackMiddleware @@ -20,7 +18,7 @@ class TrackMiddlewareTestCase(TestCase): """ Class for checking tracking requests """ def setUp(self): - super(TrackMiddlewareTestCase, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments + super().setUp() self.track_middleware = TrackMiddleware() self.request_factory = RequestFactory() @@ -48,7 +46,7 @@ class TrackMiddlewareTestCase(TestCase): request.META[meta_key] = 'test latin1 \xd3 \xe9 \xf1' context = self.get_context_for_request(request) - assert context[context_key] == u'test latin1 Ó é ñ' + assert context[context_key] == 'test latin1 Ó é ñ' def test_default_filters_do_not_render_view(self): for url in ['/event', '/event/1', '/login', '/heartbeat']: @@ -138,7 +136,7 @@ class TrackMiddlewareTestCase(TestCase): def assert_dict_subset(self, superset, subset): """Assert that the superset dict contains all of the key-value pairs found in the subset dict.""" - for key, expected_value in six.iteritems(subset): + for key, expected_value in subset.items(): assert superset[key] == expected_value def test_request_with_user(self): diff --git a/common/djangoapps/track/tests/test_segment.py b/common/djangoapps/track/tests/test_segment.py index ac357a7338..52abf1432e 100644 --- a/common/djangoapps/track/tests/test_segment.py +++ b/common/djangoapps/track/tests/test_segment.py @@ -1,12 +1,13 @@ """Ensure emitted events contain the fields legacy processors expect to find.""" +from unittest.mock import patch, sentinel + import ddt from django.test import TestCase from django.test.utils import override_settings from eventtracking import tracker from eventtracking.django import DjangoTracker -from mock import patch, sentinel from common.djangoapps.track import segment @@ -16,7 +17,7 @@ class SegmentTrackTestCase(TestCase): """Ensure emitted events contain the expected context values.""" def setUp(self): - super(SegmentTrackTestCase, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments + super().setUp() self.tracker = DjangoTracker() tracker.register_tracker(self.tracker) self.properties = {sentinel.key: sentinel.value} @@ -119,7 +120,7 @@ class SegmentIdentifyTestCase(TestCase): """Ensure emitted events contain the fields legacy processors expect to find.""" def setUp(self): - super(SegmentIdentifyTestCase, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments + super().setUp() patcher = patch('common.djangoapps.track.segment.analytics.identify') self.mock_segment_identify = patcher.start() self.addCleanup(patcher.stop) diff --git a/common/djangoapps/track/tests/test_shim.py b/common/djangoapps/track/tests/test_shim.py index 3b137d4f5b..dbd0cd28cc 100644 --- a/common/djangoapps/track/tests/test_shim.py +++ b/common/djangoapps/track/tests/test_shim.py @@ -2,10 +2,10 @@ from collections import namedtuple +from unittest.mock import sentinel import pytest import ddt from django.test.utils import override_settings -from mock import sentinel from openedx.core.lib.tests.assertions.events import assert_events_equal @@ -234,7 +234,7 @@ class EventTransformerRegistryTestCase(EventTrackingTestCase): """ def setUp(self): - super(EventTransformerRegistryTestCase, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments + super().setUp() self.registry = transformers.EventTransformerRegistry() @ddt.data( @@ -267,20 +267,20 @@ class PrefixedEventProcessorTestCase(EventTrackingTestCase): """ @ddt.data( - SequenceDDT(action=u'next', tab_count=5, current_tab=3, legacy_event_type=u'seq_next'), - SequenceDDT(action=u'next', tab_count=5, current_tab=5, legacy_event_type=None), - SequenceDDT(action=u'previous', tab_count=5, current_tab=3, legacy_event_type=u'seq_prev'), - SequenceDDT(action=u'previous', tab_count=5, current_tab=1, legacy_event_type=None), + SequenceDDT(action='next', tab_count=5, current_tab=3, legacy_event_type='seq_next'), + SequenceDDT(action='next', tab_count=5, current_tab=5, legacy_event_type=None), + SequenceDDT(action='previous', tab_count=5, current_tab=3, legacy_event_type='seq_prev'), + SequenceDDT(action='previous', tab_count=5, current_tab=1, legacy_event_type=None), ) def test_sequence_linear_navigation(self, sequence_ddt): - event_name = u'edx.ui.lms.sequence.{}_selected'.format(sequence_ddt.action) + event_name = f'edx.ui.lms.sequence.{sequence_ddt.action}_selected' event = { - u'name': event_name, - u'event': { - u'current_tab': sequence_ddt.current_tab, - u'tab_count': sequence_ddt.tab_count, - u'id': u'ABCDEFG', + 'name': event_name, + 'event': { + 'current_tab': sequence_ddt.current_tab, + 'tab_count': sequence_ddt.tab_count, + 'id': 'ABCDEFG', } } @@ -288,34 +288,34 @@ class PrefixedEventProcessorTestCase(EventTrackingTestCase): result = process_event_shim(event) # Legacy fields get added when needed - if sequence_ddt.action == u'next': + if sequence_ddt.action == 'next': offset = 1 else: offset = -1 if sequence_ddt.legacy_event_type: - assert result[u'event_type'] == sequence_ddt.legacy_event_type - assert result[u'event'][u'old'] == sequence_ddt.current_tab - assert result[u'event'][u'new'] == (sequence_ddt.current_tab + offset) + assert result['event_type'] == sequence_ddt.legacy_event_type + assert result['event']['old'] == sequence_ddt.current_tab + assert result['event']['new'] == (sequence_ddt.current_tab + offset) else: - assert u'event_type' not in result - assert u'old' not in result[u'event'] - assert u'new' not in result[u'event'] + assert 'event_type' not in result + assert 'old' not in result['event'] + assert 'new' not in result['event'] def test_sequence_tab_navigation(self): - event_name = u'edx.ui.lms.sequence.tab_selected' + event_name = 'edx.ui.lms.sequence.tab_selected' event = { - u'name': event_name, - u'event': { - u'current_tab': 2, - u'target_tab': 5, - u'tab_count': 9, - u'id': u'block-v1:abc', - u'widget_placement': u'top', + 'name': event_name, + 'event': { + 'current_tab': 2, + 'target_tab': 5, + 'tab_count': 9, + 'id': 'block-v1:abc', + 'widget_placement': 'top', } } process_event_shim = PrefixedEventProcessor() result = process_event_shim(event) - assert result[u'event_type'] == u'seq_goto' - assert result[u'event'][u'old'] == 2 - assert result[u'event'][u'new'] == 5 + assert result['event_type'] == 'seq_goto' + assert result['event']['old'] == 2 + assert result['event']['new'] == 5 diff --git a/common/djangoapps/track/tests/test_tracker.py b/common/djangoapps/track/tests/test_tracker.py index eb67cf2508..2b42e6b2f8 100644 --- a/common/djangoapps/track/tests/test_tracker.py +++ b/common/djangoapps/track/tests/test_tracker.py @@ -3,7 +3,6 @@ from django.conf import settings from django.test import TestCase from django.test.utils import override_settings -from six.moves import range from common.djangoapps.track import tracker from common.djangoapps.track.backends import BaseBackend @@ -31,7 +30,7 @@ class TestTrackerInstantiation(TestCase): """Test that a helper function can instantiate backends from their name.""" def setUp(self): # pylint: disable=protected-access - super(TestTrackerInstantiation, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments + super().setUp() # lint-amnesty, pylint: disable=super-with-arguments self.get_backend = tracker._instantiate_backend_from_name def test_instatiate_backend(self): @@ -111,7 +110,7 @@ class TestTrackerDjangoInstantiation(TestCase): class DummyBackend(BaseBackend): # lint-amnesty, pylint: disable=missing-class-docstring def __init__(self, **options): - super(DummyBackend, self).__init__(**options) # lint-amnesty, pylint: disable=super-with-arguments + super().__init__(**options) # lint-amnesty, pylint: disable=super-with-arguments self.flag = options.get('flag', False) self.count = 0 diff --git a/common/djangoapps/track/views/__init__.py b/common/djangoapps/track/views/__init__.py index 0d6552b527..2d3deb3bde 100644 --- a/common/djangoapps/track/views/__init__.py +++ b/common/djangoapps/track/views/__init__.py @@ -80,7 +80,7 @@ def user_track(request): data = _get_request_value(request, 'event', {}) page = _get_request_value(request, 'page') - if isinstance(data, six.string_types) and len(data) > 0: + if isinstance(data, str) and len(data) > 0: try: data = json.loads(data) _add_user_id_for_username(data) diff --git a/common/djangoapps/track/views/segmentio.py b/common/djangoapps/track/views/segmentio.py index 281a3c16c1..2ab5306232 100644 --- a/common/djangoapps/track/views/segmentio.py +++ b/common/djangoapps/track/views/segmentio.py @@ -33,7 +33,7 @@ ERROR_MISSING_RECEIVED_AT = 'Required receivedAt field not found' FORUM_THREAD_VIEWED_EVENT_LABEL = 'Forum: View Thread' -BI_SCREEN_VIEWED_EVENT_NAME = u'edx.bi.app.navigation.screen' +BI_SCREEN_VIEWED_EVENT_NAME = 'edx.bi.app.navigation.screen' @require_POST diff --git a/common/djangoapps/track/views/tests/base.py b/common/djangoapps/track/views/tests/base.py index 819525eac1..69a6876023 100644 --- a/common/djangoapps/track/views/tests/base.py +++ b/common/djangoapps/track/views/tests/base.py @@ -6,9 +6,9 @@ Base class for tests related to emitted events to one of the tracking 'views' import json +from unittest.mock import sentinel from django.test.client import RequestFactory from django.test.utils import override_settings -from mock import sentinel from common.djangoapps.track.tests import EventTrackingTestCase from common.djangoapps.track.views import segmentio @@ -37,7 +37,7 @@ class SegmentIOTrackingTestCaseBase(EventTrackingTestCase): """ def setUp(self): - super(SegmentIOTrackingTestCaseBase, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments + super().setUp() self.maxDiff = None # pylint: disable=invalid-name self.request_factory = RequestFactory() diff --git a/common/djangoapps/track/views/tests/test_segmentio.py b/common/djangoapps/track/views/tests/test_segmentio.py index 9ddf176988..134c0473c0 100644 --- a/common/djangoapps/track/views/tests/test_segmentio.py +++ b/common/djangoapps/track/views/tests/test_segmentio.py @@ -2,12 +2,12 @@ import json +from unittest.mock import sentinel from dateutil import parser from ddt import data, ddt, unpack from django.contrib.auth.models import User # lint-amnesty, pylint: disable=imported-auth-user from django.test.utils import override_settings -from mock import sentinel from openedx.core.lib.tests.assertions.events import assert_event_matches from common.djangoapps.track.middleware import TrackMiddleware @@ -32,7 +32,7 @@ class SegmentIOTrackingTestCase(SegmentIOTrackingTestCaseBase): """ def setUp(self): - super(SegmentIOTrackingTestCase, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments + super().setUp() User.objects.create(pk=SEGMENTIO_TEST_USER_ID, username=str(sentinel.username)) @@ -153,7 +153,7 @@ class SegmentIOTrackingTestCase(SegmentIOTrackingTestCaseBase): }, 'user_id': SEGMENTIO_TEST_USER_ID, 'course_id': course_id, - 'org_id': u'foo', + 'org_id': 'foo', 'path': SEGMENTIO_TEST_ENDPOINT, 'client': { 'library': { diff --git a/common/djangoapps/track/views/tests/test_views.py b/common/djangoapps/track/views/tests/test_views.py index 4c2abbb419..f8c7ef363c 100644 --- a/common/djangoapps/track/views/tests/test_views.py +++ b/common/djangoapps/track/views/tests/test_views.py @@ -1,10 +1,11 @@ # lint-amnesty, pylint: disable=missing-module-docstring + +from unittest.mock import patch, sentinel + import ddt -import six from django.contrib.auth.models import User # lint-amnesty, pylint: disable=imported-auth-user from django.test.client import RequestFactory from django.test.utils import override_settings -from mock import patch, sentinel from openedx.core.lib.tests.assertions.events import assert_event_matches from common.djangoapps.track import views @@ -20,11 +21,11 @@ class TestTrackViews(EventTrackingTestCase): # lint-amnesty, pylint: disable=mi @classmethod def setUpTestData(cls): - super(TestTrackViews, cls).setUpTestData() + super().setUpTestData() User.objects.create(pk=TEST_USER_ID, username=TEST_USERNAME) def setUp(self): - super(TestTrackViews, self).setUp() # lint-amnesty, pylint: disable=super-with-arguments + super().setUp() self.request_factory = RequestFactory() @@ -110,11 +111,11 @@ class TestTrackViews(EventTrackingTestCase): # lint-amnesty, pylint: disable=mi @ddt.data( { - 'event_data': u'{{"username": "{}"}}'.format(TEST_USERNAME), + 'event_data': f'{{"username": "{TEST_USERNAME}"}}', 'expected_event_data': {"username": TEST_USERNAME, "user_id": TEST_USER_ID} }, { - 'event_data': u'{"username": "unknown-user"}', + 'event_data': '{"username": "unknown-user"}', 'expected_event_data': {"username": "unknown-user"}, } ) @@ -183,7 +184,7 @@ class TestTrackViews(EventTrackingTestCase): # lint-amnesty, pylint: disable=mi 'course_id': 'foo/bar/baz', 'org_id': 'foo', 'user_id': user_id, - 'path': u'/event' + 'path': '/event' }, } finally: @@ -318,7 +319,7 @@ class TestTrackViews(EventTrackingTestCase): # lint-amnesty, pylint: disable=mi } task_info = { - six.text_type(sentinel.task_key): sentinel.task_value + str(sentinel.task_key): sentinel.task_value } expected_event_data = dict(task_info) expected_event_data.update(self.event)