From d5e9c130cd5c879e553701e0fa5e5431839a7997 Mon Sep 17 00:00:00 2001
From: Ayub khan <muhammadayubkhan6@gmail.com>
Date: Thu, 11 Jul 2019 16:06:48 +0500
Subject: [PATCH] INCR-419 python3 compatibility

---
 common/lib/conftest.py                                 |  7 +++++--
 common/lib/xmodule/setup.py                            |  2 ++
 common/test/acceptance/pages/studio/container.py       |  2 ++
 common/test/acceptance/pages/studio/course_page.py     |  5 ++++-
 .../pages/studio/discussion_component_editor.py        |  4 +++-
 .../acceptance/pages/studio/html_component_editor.py   | 10 +++++++---
 common/test/acceptance/pages/studio/problem_editor.py  |  8 ++++++--
 common/test/acceptance/pages/studio/settings.py        |  5 +++--
 common/test/acceptance/pages/studio/signup.py          |  2 ++
 common/test/acceptance/pages/studio/utils.py           |  4 +++-
 common/test/acceptance/pages/studio/video/video.py     |  5 ++++-
 11 files changed, 41 insertions(+), 13 deletions(-)

diff --git a/common/lib/conftest.py b/common/lib/conftest.py
index 180348f6f1d..4758af56676 100644
--- a/common/lib/conftest.py
+++ b/common/lib/conftest.py
@@ -1,11 +1,14 @@
 """Code run by pylint before running any tests."""
 
 # Patch the xml libs before anything else.
-from safe_lxml import defuse_xml_libs
-defuse_xml_libs()
+from __future__ import absolute_import
 
 import pytest
 
+from safe_lxml import defuse_xml_libs
+
+defuse_xml_libs()
+
 
 @pytest.fixture(autouse=True)
 def no_webpack_loader(monkeypatch):
diff --git a/common/lib/xmodule/setup.py b/common/lib/xmodule/setup.py
index 6f9dd6edb97..a45bf043e49 100644
--- a/common/lib/xmodule/setup.py
+++ b/common/lib/xmodule/setup.py
@@ -1,3 +1,5 @@
+from __future__ import absolute_import
+
 from setuptools import find_packages, setup
 
 XMODULES = [
diff --git a/common/test/acceptance/pages/studio/container.py b/common/test/acceptance/pages/studio/container.py
index 2c1e14839cd..2f68811dfad 100644
--- a/common/test/acceptance/pages/studio/container.py
+++ b/common/test/acceptance/pages/studio/container.py
@@ -2,6 +2,8 @@
 Container page in Studio
 """
 
+from __future__ import absolute_import
+
 from bok_choy.page_object import PageObject
 from bok_choy.promise import EmptyPromise, Promise
 
diff --git a/common/test/acceptance/pages/studio/course_page.py b/common/test/acceptance/pages/studio/course_page.py
index e04be870ee8..b4f565e4a65 100644
--- a/common/test/acceptance/pages/studio/course_page.py
+++ b/common/test/acceptance/pages/studio/course_page.py
@@ -1,9 +1,12 @@
 """
 Base class for pages specific to a course in Studio.
 """
+from __future__ import absolute_import
+
 import os
 from abc import abstractmethod
 
+import six
 from bok_choy.page_object import PageObject
 from opaque_keys.edx.locator import CourseLocator
 
@@ -56,4 +59,4 @@ class CoursePage(PageObject, HelpMixin):
             self.course_info['course_run'],
             deprecated=(default_store == 'draft')
         )
-        return "/".join([BASE_URL, self.url_path, unicode(course_key)])
+        return "/".join([BASE_URL, self.url_path, six.text_type(course_key)])
diff --git a/common/test/acceptance/pages/studio/discussion_component_editor.py b/common/test/acceptance/pages/studio/discussion_component_editor.py
index e5aa11e8268..c4c2573657d 100644
--- a/common/test/acceptance/pages/studio/discussion_component_editor.py
+++ b/common/test/acceptance/pages/studio/discussion_component_editor.py
@@ -1,8 +1,10 @@
 """
 Discussion component editor in studio
 """
-from common.test.acceptance.pages.studio.xblock_editor import XBlockEditorView
+from __future__ import absolute_import
+
 from common.test.acceptance.pages.common.utils import click_css
+from common.test.acceptance.pages.studio.xblock_editor import XBlockEditorView
 
 
 class DiscussionComponentEditor(XBlockEditorView):
diff --git a/common/test/acceptance/pages/studio/html_component_editor.py b/common/test/acceptance/pages/studio/html_component_editor.py
index 477c3ce8d60..94e4234111c 100644
--- a/common/test/acceptance/pages/studio/html_component_editor.py
+++ b/common/test/acceptance/pages/studio/html_component_editor.py
@@ -1,9 +1,13 @@
 """
 HTML component editor in studio
 """
-from common.test.acceptance.pages.studio.utils import type_in_codemirror, get_codemirror_value
-from common.test.acceptance.pages.studio.xblock_editor import XBlockEditorView
+from __future__ import absolute_import
+
+from six.moves import zip
+
 from common.test.acceptance.pages.common.utils import click_css
+from common.test.acceptance.pages.studio.utils import get_codemirror_value, type_in_codemirror
+from common.test.acceptance.pages.studio.xblock_editor import XBlockEditorView
 
 
 class HtmlXBlockEditorView(XBlockEditorView):
@@ -68,7 +72,7 @@ class HtmlXBlockEditorView(XBlockEditorView):
             font = font.replace('font-family: ', '').replace(';', '')
             font_families[index] = font.split(',')
             font_families[index] = [x.lstrip() for x in font_families[index]]
-        font_dict = dict(zip(font_labels, font_families))
+        font_dict = dict(list(zip(font_labels, font_families)))
         return font_dict
 
     def set_content_and_save(self, content, raw=False):
diff --git a/common/test/acceptance/pages/studio/problem_editor.py b/common/test/acceptance/pages/studio/problem_editor.py
index d317902a292..c9e4634b97b 100644
--- a/common/test/acceptance/pages/studio/problem_editor.py
+++ b/common/test/acceptance/pages/studio/problem_editor.py
@@ -1,9 +1,13 @@
 """
 Studio Problem Editor
 """
-from common.test.acceptance.pages.studio.xblock_editor import XBlockEditorView
-from common.test.acceptance.pages.common.utils import click_css
+from __future__ import absolute_import
+
 from selenium.webdriver.support.ui import Select
+from six.moves import range
+
+from common.test.acceptance.pages.common.utils import click_css
+from common.test.acceptance.pages.studio.xblock_editor import XBlockEditorView
 
 
 class ProblemXBlockEditorView(XBlockEditorView):
diff --git a/common/test/acceptance/pages/studio/settings.py b/common/test/acceptance/pages/studio/settings.py
index 468924d0f6f..f94596d97fe 100644
--- a/common/test/acceptance/pages/studio/settings.py
+++ b/common/test/acceptance/pages/studio/settings.py
@@ -2,10 +2,11 @@
 """
 Course Schedule and Details Settings page.
 """
-from __future__ import unicode_literals
+from __future__ import absolute_import, unicode_literals
 
 import os
 
+import six
 from bok_choy.javascript import requirejs
 from bok_choy.promise import EmptyPromise
 
@@ -77,7 +78,7 @@ class SettingsPage(CoursePage):
         Set the values of the elements to those specified
         in the element_values dict.
         """
-        for css, value in element_values.iteritems():
+        for css, value in six.iteritems(element_values):
             element = self.get_element(css)
             element.clear()
             element.send_keys(value)
diff --git a/common/test/acceptance/pages/studio/signup.py b/common/test/acceptance/pages/studio/signup.py
index 26975a8899b..040460081a9 100644
--- a/common/test/acceptance/pages/studio/signup.py
+++ b/common/test/acceptance/pages/studio/signup.py
@@ -1,6 +1,8 @@
 """
 Signup page for studio
 """
+from __future__ import absolute_import
+
 from bok_choy.page_object import PageObject
 
 from common.test.acceptance.pages.common.utils import click_css
diff --git a/common/test/acceptance/pages/studio/utils.py b/common/test/acceptance/pages/studio/utils.py
index 9ad379a2325..82f7b5b155e 100644
--- a/common/test/acceptance/pages/studio/utils.py
+++ b/common/test/acceptance/pages/studio/utils.py
@@ -1,6 +1,8 @@
 """
 Utility methods useful for Studio page tests.
 """
+from __future__ import absolute_import
+
 from bok_choy.javascript import js_defined
 from bok_choy.promise import EmptyPromise
 from selenium.webdriver.common.action_chains import ActionChains
@@ -230,7 +232,7 @@ def verify_ordering(test_class, page, expected_orderings):
     blocks_checked = set()
     for expected_ordering in expected_orderings:
         for xblock in xblocks:
-            parent = expected_ordering.keys()[0]
+            parent = list(expected_ordering.keys())[0]
             if xblock.name == parent:
                 blocks_checked.add(parent)
                 children = xblock.children
diff --git a/common/test/acceptance/pages/studio/video/video.py b/common/test/acceptance/pages/studio/video/video.py
index ac6843ac5b3..ecda1a35563 100644
--- a/common/test/acceptance/pages/studio/video/video.py
+++ b/common/test/acceptance/pages/studio/video/video.py
@@ -1,6 +1,8 @@
 """
 CMS Video
 """
+from __future__ import absolute_import
+
 import os
 import time
 
@@ -9,6 +11,7 @@ from bok_choy.javascript import js_defined, wait_for_js
 from bok_choy.promise import EmptyPromise, Promise
 from selenium.webdriver.common.action_chains import ActionChains
 from selenium.webdriver.common.keys import Keys
+from six.moves import range
 
 from common.test.acceptance.pages.common.utils import sync_on_notification
 from common.test.acceptance.pages.lms.video.video import VideoPage
@@ -627,7 +630,7 @@ class VideoComponentPage(VideoPage):
         if field_numbers:
             index_list = [number - 1 for number in field_numbers]
         else:
-            index_list = range(3)  # maximum three fields
+            index_list = list(range(3))  # maximum three fields
 
         statuses = {}
         for index in index_list:
-- 
GitLab