Repository: ucfopen/canvasapi
Pull request #397 (2020-07-09 16:45:23)

Release v1.0.0
👎 🐍 🐍 

👍 🐍 🐍 🐍  


Patch:
diff --git a/.travis.yml b/.travis.yml
index 4d84edc..72ac43c 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,16 +1,13 @@
 language: python
 matrix:
   include:
-    - python: 2.7
-      dist: xenial
-    - python: 3.4
-      dist: xenial
-    - python: 3.5
-      dist: xenial
     - python: 3.6
-      dist: xenial
+      dist: bionic
     - python: 3.7
-      dist: xenial
+      dist: bionic
+      sudo: true
+    - python: 3.8
+      dist: bionic
       sudo: true
 install:
   - pip install -r tests_requirements.txt
@@ -27,3 +24,10 @@ after_success:
 notifications:
   slack:
     secure: oLrAMXKVN9EKOyvROg5ZZUQgeleKq6lsVslm/Jtg516LtdBnLiAA672xMrwB0m8UtSJvoz4m1BrBQBeO+OzxlmioJHDvm//MMXv8wpfBdi18ojBA/5wjYfYP4eta/9j1x4myWH9ygcJOdKhALOSt4fwKsmIRDt6YTensOaqcCTiS2YjtAWMLrKvlathpdMokx0k7FVluJJ+zEfzNote75AP7yq6nFFe9j0ALX7YuNFytshZXi82aKZpAuUGMNLjcL+B5acLKSYqF214sTVETPa2mrhja+89+W9512X3ecRdHPC6Ud10ICD6ap0XMrOcgNW8XREV0pDIDPrMJgSUFiFWMhvrkMjfnmJB2nrINPTc3CrMmmk8Hk1XYta+iA4yAEUb9dhkKmkxMZWtn7TZ7DiKaAXznwj6poGrnN+NXeWfoJ0j2pAUrcO4Jn9e43+ORMDYqCFV3QemtykbX0HKgVfOTx5F1ZBGULiMi7U3q5naieGep5j+OxNI9bcQMUoM6O+VxmkjtB1/8/F7PlKHrA/7Z1+s+1HM00lSvw5qAhkInPgkLU+X495+TsEfqJuVZIUIAS1jDDSuo3bTHHUYzDwE9UF/dYN/nVDiUEVa4xYe+UrAFuPnezL/bdezVwzoGd1Mb5HKJxs90wxYIZFkReivA1z4bQsYh+A/QbYKewR0=
+deploy:
+  provider: pypi
+  username: "__token__"
+  password:
+    secure: pUwA7Nf2XOJcCSbe0/ikGjEaNQPXEjaMJCpx4DfHg4gONA3em8lQejMylqMyhNj5Gv4a9wS8BZBAXrw/ZPrWhVX6bmavoEu2wqZWFCClOVxl9s+UZD6NWRMCYfzV80baTDCf56Qyk9G/WTCk1n/5hYvK5kXWOWbdHeshSSWnZCKWweOmT5YAOidHQX2l0k64TLaT8jaEzQdBrVEj6Cq4YS9NYVcCX7dIt4cvX2t3Z518SOfuu2jBYjFiETFeMAWQie2cJNXiYv4IuhZZB7TsQJEMXjyU2BalD+pAlKz5nkY6d6NF5VsbYJcpc6hecfyiPvPBO+iK8hSJFabMxVbEl4/WguK9fXlX2L5ZqsKfYBgLZj77seBArQ8Kroja6wJstZEIxELsPr5cLGNNgsGkvhsvZ/Ls5RP79Am6r0Ow+8E0hTOrw2lW4CepoieAmusqClVqxWd6Ft887SIKXMy2HzZ6v3rsH8R/2e/lADfxjKXejGcRh2G7Lvmh52nLn/icWPLkHFUCizlDCnvXoh/eH/uPaRJrzK3Rq8udAmgu7GzDEwWGl4G/Mp303ndJiVSbEamx1ft9B48VLgHJChCgjt1E3mhSX7kPtowwkYUwzheYeStHOVcKm9WXWbxAGATbJ4rjpVM57iL22IeJZ7xqk946GBKhiTmiQc+oodbZx9U=
+  on:
+    tags: true
diff --git a/CHANGELOG.md b/CHANGELOG.md
index dd98382..18321cc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,17 @@
 
 ## [Unreleased]
 
+## [1.0.0] - 2020-07-09
+
+### General
+
+- Added support for Python 3.8
+- Dropped support for Python 3.4, 3.5, and 2.7
+- Removed all previously deprecated methods and attributes.
+- Upgraded Ubuntu version for Travis (Thanks,[@jonespm](https://github.com/jonespm))
+- Set up automatic deployments to PyPI via Travis
+- Set up nightly build
+
 ## [0.16.1] - 2020-07-06
 
 ### Bugfixes
@@ -11,6 +22,7 @@
 ### Deprecation Warnings
 
 - Using `/api/v1/` in the API_URL has been deprecated since v0.8.0 and legacy support will be removed in the next release. Ensure your provided url doesn't contain `api/v1/`. See deprecation warning in changelog for v0.8.0.
+- :warning: **_This is the final release with support for Python 3.5_** :warning:
 
 ## [0.16.0] - 2020-06-26
 
@@ -452,7 +464,8 @@ Huge thanks to [@liblit](https://github.com/liblit) for lots of issues, suggesti
 - Fixed some incorrectly defined parameters
 - Fixed an issue where tests would fail due to an improperly configured requires block
 
-[Unreleased]: https://github.com/ucfopen/canvasapi/compare/v0.16.1...develop
+[Unreleased]: https://github.com/ucfopen/canvasapi/compare/v1.0.0...develop
+[1.0.0]: https://github.com/ucfopen/canvasapi/compare/v0.16.1...v1.0.0
 [0.16.1]: https://github.com/ucfopen/canvasapi/compare/v0.16.0...v0.16.1
 [0.16.0]: https://github.com/ucfopen/canvasapi/compare/v0.15.0...v0.16.0
 [0.15.0]: https://github.com/ucfopen/canvasapi/compare/v0.14.0...v0.15.0
diff --git a/DEPLOY.md b/DEPLOY.md
index 8f37837..bd9e965 100644
--- a/DEPLOY.md
+++ b/DEPLOY.md
@@ -10,13 +10,6 @@ Pre-Flight Checklist
 - No linter errors
 - `CHANGELOG` is accurate
 
-Packaging
----------
-
-Update version number in `__init__.py`.
-
-Run `python setup.py sdist`. This should create a file in the `dist` directory called something like `canvasapi-0.0.0.tar.gz`.
-
 Generate Documentation
 ----------------------
 
@@ -25,7 +18,9 @@ Documentation should now be automatically pushed to readthedocs.
 Deploy
 ------
 
-Commit the new files and the changes to `__init__.py` and push.
+Update version number in `__init__.py`.
+
+Commit the the changes to `__init__.py` and push.
 
 Create a merge request from `develop` to `master`, and merge.
 
@@ -33,6 +28,6 @@ Tag the merge commit with the version number: `git tag -s v0.0.0  -m "Release ve
 
 Push the tag: `git push upstream v0.0.0`
 
-Run `twine upload dist/canvasapi-0.0.0.tar.gz` to upload to PyPI.
+Travis should automatically deploy the tagged code to PyPI.
 
 Create release on GitHub for the new tag. Use the text from the changelog for content.
diff --git a/canvasapi/__init__.py b/canvasapi/__init__.py
index 6aeee22..08b1370 100644
--- a/canvasapi/__init__.py
+++ b/canvasapi/__init__.py
@@ -1,9 +1,7 @@
 # -*- coding: utf-8 -*-
 
-from __future__ import absolute_import, division, print_function, unicode_literals
-
 from canvasapi.canvas import Canvas
 
 __all__ = ["Canvas"]
 
-__version__ = "0.16.1"
+__version__ = "1.0.0"
diff --git a/canvasapi/account.py b/canvasapi/account.py
index f8817a2..f17de92 100644
--- a/canvasapi/account.py
+++ b/canvasapi/account.py
@@ -1,9 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-import warnings
-
-from six import python_2_unicode_compatible, string_types
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.exceptions import CanvasException, RequiredFieldMissing
 from canvasapi.feature import Feature, FeatureFlag
@@ -16,7 +10,6 @@ from canvasapi.sis_import import SisImport
 from canvasapi.util import combine_kwargs, file_or_path, obj_or_id, obj_or_str
 
 
-@python_2_unicode_compatible
 class Account(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.name, self.id)
@@ -199,7 +192,7 @@ class Account(CanvasObject):
 
         if isinstance(migration_type, Migrator):
             kwargs["migration_type"] = migration_type.type
-        elif isinstance(migration_type, string_types):
+        elif isinstance(migration_type, str):
             kwargs["migration_type"] = migration_type
         else:
             raise TypeError("Parameter migration_type must be of type Migrator or str")
@@ -1670,160 +1663,6 @@ class Account(CanvasObject):
             if is_path:
                 attachment.close()
 
-    def list_authentication_providers(self, **kwargs):
-        """
-        Return the list of authentication providers
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.account.Account.get_authentication_providers` instead.
-
-        :calls: `GET /api/v1/accounts/:account_id/authentication_providers \
-        <https://canvas.instructure.com/doc/api/authentication_providers.html#method.account_authorization_configs.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.authentication_provider.AuthenticationProvider`
-        """
-        warnings.warn(
-            "`list_authentication_providers` is being deprecated and will be "
-            "removed in a future version. Use `get_authentication_providers` "
-            "instead.",
-            DeprecationWarning,
-        )
-
-        return self.get_authentication_providers(**kwargs)
-
-    def list_enrollment_terms(self, **kwargs):
-        """
-        List enrollment terms for a context.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.account.Account.get_enrollment_terms` instead.
-
-        :calls: `GET /api/v1/accounts/:account_id/terms \
-        <https://canvas.instructure.com/doc/api/enrollment_terms.html#method.terms_api.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.enrollment_term.EnrollmentTerm`
-        """
-        warnings.warn(
-            "`list_enrollment_terms` is being deprecated and will be removed "
-            "in a future version. Use `get_enrollment_terms` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_enrollment_terms(**kwargs)
-
-    def list_group_categories(self, **kwargs):
-        """
-        List group categories for a context.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.account.Account.get_group_categories` instead.
-
-        :calls: `GET /api/v1/accounts/:account_id/group_categories \
-        <https://canvas.instructure.com/doc/api/group_categories.html#method.group_categories.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.group.GroupCategory`
-        """
-        warnings.warn(
-            "`list_group_categories` is being deprecated and will be removed "
-            "in a future version. Use `get_group_categories` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_group_categories(**kwargs)
-
-    def list_groups(self, **kwargs):
-        """
-        Return a list of active groups for the specified account.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.account.Account.get_groups` instead.
-
-        :calls: `GET /api/v1/accounts/:account_id/groups \
-        <https://canvas.instructure.com/doc/api/groups.html#method.groups.context_index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of :class:`canvasapi.group.Group`
-        """
-        warnings.warn(
-            "`list_groups` is being deprecated and will be removed in a future version."
-            " Use `get_groups` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_groups(**kwargs)
-
-    def list_roles(self, **kwargs):
-        """
-        List the roles available to an account.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.account.Account.get_roles` instead.
-
-        :calls: `GET /api/v1/accounts/:account_id/roles \
-        <https://canvas.instructure.com/doc/api/roles.html#method.role_overrides.api_index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.account.Role`
-        """
-        warnings.warn(
-            "`list_roles` is being deprecated and will be removed in a future version."
-            " Use `get_roles` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_roles(**kwargs)
-
-    def list_rubrics(self, **kwargs):
-        """
-        Get the paginated list of active rubrics for the current account.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.account.Account.get_rubrics` instead.
-
-        :calls: `GET /api/v1/accounts/:account_id/rubrics \
-        <https://canvas.instructure.com/doc/api/rubrics.html#method.rubrics_api.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.rubric.Rubric`
-        """
-        warnings.warn(
-            "`list_rubrics` is being deprecated and will be removed in a "
-            "future version. Use `get_rubrics` instead.",
-            DeprecationWarning,
-        )
-
-        return self.get_rubrics(**kwargs)
-
-    def list_user_logins(self, **kwargs):
-        """
-        Given a user ID, return that user's logins for the given account.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.account.Account.get_user_logins` instead.
-
-        :calls: `GET /api/v1/accounts/:account_id/logins \
-        <https://canvas.instructure.com/doc/api/logins.html#method.pseudonyms.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.login.Login`
-        """
-        warnings.warn(
-            "`list_user_logins` is being deprecated and will be removed in a "
-            "future version. Use `get_user_logins` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_user_logins(**kwargs)
-
     def show_account_auth_settings(self, **kwargs):
         """
         Return the current state of each account level setting
@@ -1902,7 +1741,6 @@ class Account(CanvasObject):
         return Role(self._requester, response.json())
 
 
-@python_2_unicode_compatible
 class AccountNotification(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.subject, self.id)
@@ -1943,7 +1781,6 @@ class AccountNotification(CanvasObject):
         return AccountNotification(self._requester, response.json())
 
 
-@python_2_unicode_compatible
 class AccountReport(CanvasObject):
     def __str__(self):
         try:
@@ -1970,19 +1807,16 @@ class AccountReport(CanvasObject):
         return AccountReport(self._requester, response.json())
 
 
-@python_2_unicode_compatible
 class Role(CanvasObject):
     def __str__(self):  # pragma: no cover
         return "{} ({})".format(self.label, self.base_role_type)
 
 
-@python_2_unicode_compatible
 class SSOSettings(CanvasObject):
     def __str__(self):  # pragma: no cover
         return "{} ({})".format(self.login_handle_name, self.change_password_url)
 
 
-@python_2_unicode_compatible
 class Admin(CanvasObject):
     def __str__(self):  # pragma: no cover
         return "{} {} ({})".format(self.user["name"], self.user["id"], self.id)
diff --git a/canvasapi/appointment_group.py b/canvasapi/appointment_group.py
index 4a666da..27a5d72 100644
--- a/canvasapi/appointment_group.py
+++ b/canvasapi/appointment_group.py
@@ -1,13 +1,8 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.exceptions import RequiredFieldMissing
 from canvasapi.util import combine_kwargs
 
 
-@python_2_unicode_compatible
 class AppointmentGroup(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.title, self.id)
diff --git a/canvasapi/assignment.py b/canvasapi/assignment.py
index 93f413e..367bc2e 100644
--- a/canvasapi/assignment.py
+++ b/canvasapi/assignment.py
@@ -1,7 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.exceptions import CanvasException, RequiredFieldMissing
 from canvasapi.paginated_list import PaginatedList
@@ -14,7 +10,6 @@ from canvasapi.user import UserDisplay
 from canvasapi.util import combine_kwargs, obj_or_id
 
 
-@python_2_unicode_compatible
 class Assignment(CanvasObject):
     def __init__(self, requester, attributes):
         super(Assignment, self).__init__(requester, attributes)
@@ -354,13 +349,11 @@ class Assignment(CanvasObject):
         ).start()
 
 
-@python_2_unicode_compatible
 class AssignmentExtension(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.assignment_id, self.user_id)
 
 
-@python_2_unicode_compatible
 class AssignmentGroup(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.name, self.id)
@@ -402,7 +395,6 @@ class AssignmentGroup(CanvasObject):
         return AssignmentGroup(self._requester, response.json())
 
 
-@python_2_unicode_compatible
 class AssignmentOverride(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.title, self.id)
diff --git a/canvasapi/authentication_event.py b/canvasapi/authentication_event.py
index 4ba6286..4484aa2 100644
--- a/canvasapi/authentication_event.py
+++ b/canvasapi/authentication_event.py
@@ -1,11 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class AuthenticationEvent(CanvasObject):
     def __str__(self):
         return "{} {} ({})".format(self.created_at, self.event_type, self.pseudonym_id)
diff --git a/canvasapi/authentication_provider.py b/canvasapi/authentication_provider.py
index 685240f..5ffd5c3 100644
--- a/canvasapi/authentication_provider.py
+++ b/canvasapi/authentication_provider.py
@@ -1,12 +1,7 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.util import combine_kwargs
 
 
-@python_2_unicode_compatible
 class AuthenticationProvider(CanvasObject):
     def __str__(self):  # pragma: no cover
         return "{} ({})".format(self.auth_type, self.position)
diff --git a/canvasapi/avatar.py b/canvasapi/avatar.py
index 867dcfd..43c2e94 100644
--- a/canvasapi/avatar.py
+++ b/canvasapi/avatar.py
@@ -1,11 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class Avatar(CanvasObject):
     def __str__(self):  # pragma: no cover
         return "{}".format(self.display_name)
diff --git a/canvasapi/blueprint.py b/canvasapi/blueprint.py
index f8e7fae..8e3ff05 100644
--- a/canvasapi/blueprint.py
+++ b/canvasapi/blueprint.py
@@ -1,13 +1,8 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.paginated_list import PaginatedList
 from canvasapi.util import combine_kwargs, obj_or_id
 
 
-@python_2_unicode_compatible
 class BlueprintTemplate(CanvasObject):
     def __str__(self):
         return "{}".format(self.id)
@@ -182,7 +177,6 @@ class BlueprintTemplate(CanvasObject):
         return response.json().get("success", False)
 
 
-@python_2_unicode_compatible
 class BlueprintMigration(CanvasObject):
     def __str__(self):
         return "{} {}".format(self.id, self.template_id)
@@ -234,13 +228,11 @@ class BlueprintMigration(CanvasObject):
         )
 
 
-@python_2_unicode_compatible
 class ChangeRecord(CanvasObject):
     def __str__(self):
         return "{} {}".format(self.asset_id, self.asset_name)
 
 
-@python_2_unicode_compatible
 class BlueprintSubscription(CanvasObject):
     def __str__(self):
         return "{} {}".format(self.id, self.template_id)
diff --git a/canvasapi/bookmark.py b/canvasapi/bookmark.py
index bc48975..3294d3e 100644
--- a/canvasapi/bookmark.py
+++ b/canvasapi/bookmark.py
@@ -1,12 +1,7 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.util import combine_kwargs
 
 
-@python_2_unicode_compatible
 class Bookmark(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.name, self.id)
diff --git a/canvasapi/calendar_event.py b/canvasapi/calendar_event.py
index 15ce44b..4fa49b8 100644
--- a/canvasapi/calendar_event.py
+++ b/canvasapi/calendar_event.py
@@ -1,5 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.util import combine_kwargs
 
diff --git a/canvasapi/canvas.py b/canvasapi/canvas.py
index a2c45ae..5c8deab 100644
--- a/canvasapi/canvas.py
+++ b/canvasapi/canvas.py
@@ -1,5 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
 import warnings
 
 from canvasapi.account import Account
@@ -30,13 +28,9 @@ class Canvas(object):
         :param access_token: The API key to authenticate requests with.
         :type access_token: str
         """
-        new_url = get_institution_url(base_url)
-
         if "api/v1" in base_url:
-            warnings.warn(
-                "`base_url` no longer requires an API version be specified. "
-                "Rewriting `base_url` to {}".format(new_url),
-                DeprecationWarning,
+            raise ValueError(
+                "`base_url` should not specify an API version. Remove trailing /api/v1/"
             )
 
         if "http://" in base_url:
@@ -62,7 +56,7 @@ class Canvas(object):
         # Ensure that the user-supplied access token and base_url contain no leading or
         # trailing spaces that might cause issues when communicating with the API.
         access_token = access_token.strip()
-        base_url = new_url.strip()
+        base_url = get_institution_url(base_url)
 
         self.__requester = Requester(base_url, access_token)
 
@@ -326,13 +320,12 @@ class Canvas(object):
         :rtype: :class:`canvasapi.planner.PlannerOverride`
         """
         from canvasapi.planner import PlannerOverride
-        from six import text_type, integer_types
 
-        if isinstance(plannable_type, text_type):
+        if isinstance(plannable_type, str):
             kwargs["plannable_type"] = plannable_type
         else:
             raise RequiredFieldMissing("plannable_type is required as a str.")
-        if isinstance(plannable_id, integer_types):
+        if isinstance(plannable_id, int):
             kwargs["plannable_id"] = plannable_id
         else:
             raise RequiredFieldMissing("plannable_id is required as an int.")
@@ -1209,98 +1202,6 @@ class Canvas(object):
 
         return response.json()
 
-    def list_appointment_groups(self, **kwargs):
-        """
-        List appointment groups.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.canvas.Canvas.get_appointment_groups` instead.
-
-        :calls: `GET /api/v1/appointment_groups \
-        <https://canvas.instructure.com/doc/api/appointment_groups.html#method.appointment_groups.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.appointment_group.AppointmentGroup`
-        """
-        warnings.warn(
-            "`list_appointment_groups` is being deprecated and will be removed"
-            " in a future version. Use `get_appointment_groups` instead.",
-            DeprecationWarning,
-        )
-
-        return self.get_appointment_groups(**kwargs)
-
-    def list_calendar_events(self, **kwargs):
-        """
-        List calendar events.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.canvas.Canvas.get_calendar_events` instead.
-
-        :calls: `GET /api/v1/calendar_events \
-        <https://canvas.instructure.com/doc/api/calendar_events.html#method.calendar_events_api.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.calendar_event.CalendarEvent`
-        """
-        warnings.warn(
-            "`list_calendar_events` is being deprecated and will be removed "
-            "in a future version. Use `get_calendar_events` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_calendar_events(**kwargs)
-
-    def list_group_participants(self, appointment_group, **kwargs):
-        """
-        List student group participants in this appointment group.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi. canvas.Canvas.get_group_participants` instead.
-
-        :calls: `GET /api/v1/appointment_groups/:id/groups \
-        <https://canvas.instructure.com/doc/api/appointment_groups.html#method.appointment_groups.groups>`_
-
-        :param appointment_group: The object or ID of the appointment group.
-        :type appointment_group: :class:`canvasapi.appointment_group.AppointmentGroup` or int
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of :class:`canvasapi.group.Group`
-        """
-        warnings.warn(
-            "`list_group_participants` is being deprecated and will be removed "
-            "in a future version. Use `get_group_participants` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_group_participants(appointment_group, **kwargs)
-
-    def list_user_participants(self, appointment_group, **kwargs):
-        """
-        List user participants in this appointment group.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi. canvas.Canvas.get_user_participants` instead.
-
-        :calls: `GET /api/v1/appointment_groups/:id/users \
-        <https://canvas.instructure.com/doc/api/appointment_groups.html#method.appointment_groups.users>`_
-
-        :param appointment_group: The object or ID of the appointment group.
-        :type appointment_group: :class:`canvasapi.appointment_group.AppointmentGroup` or int
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of :class:`canvasapi.user.User`
-        """
-        warnings.warn(
-            "`list_user_participants` is being deprecated and will be removed in a future version."
-            " Use `get_user_participants` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_user_participants(appointment_group, **kwargs)
-
     def reserve_time_slot(self, calendar_event, participant_id=None, **kwargs):
         """
         Return single Calendar Event by id
diff --git a/canvasapi/canvas_object.py b/canvasapi/canvas_object.py
index 96ef03b..9fcef15 100644
--- a/canvasapi/canvas_object.py
+++ b/canvasapi/canvas_object.py
@@ -1,12 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
 from datetime import datetime
-import json
 import pytz
 import re
-import warnings
-
-from six import text_type
 
 DATE_PATTERN = re.compile("[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}Z")
 
@@ -20,11 +14,6 @@ class CanvasObject(object):
     """
 
     def __getattribute__(self, name):
-        if name == "attributes":
-            warnings.warn(
-                "CanvasObject.attributes is deprecated and will be removed in a future version.",
-                DeprecationWarning,
-            )
         return super(CanvasObject, self).__getattribute__(name)
 
     def __init__(self, requester, attributes):
@@ -72,31 +61,11 @@ class CanvasObject(object):
         :param attributes: The JSON object to build this object with.
         :type attributes: dict
         """
-        self.attributes = attributes
-
         for attribute, value in attributes.items():
             self.__setattr__(attribute, value)
 
             # datetime field
-            if DATE_PATTERN.match(text_type(value)):
+            if DATE_PATTERN.match(str(value)):
                 naive = datetime.strptime(value, "%Y-%m-%dT%H:%M:%SZ")
                 aware = naive.replace(tzinfo=pytz.utc)
                 self.__setattr__(attribute + "_date", aware)
-
-    def to_json(self):
-        """
-        Return the original JSON response from the API that was used to
-        construct the object.
-
-        .. warning::
-            .. deprecated:: 0.15.0
-                To view the original attributes sent by Canvas, enable logs from the
-                requests library.
-        """
-        warnings.warn(
-            "`CanvasObject.to_json()` is deprecated and will be removed in a future version. "
-            "To view the original attributes sent by Canvas, enable logs from the "
-            "requests library",
-            DeprecationWarning,
-        )
-        return json.dumps(self.attributes)
diff --git a/canvasapi/collaboration.py b/canvasapi/collaboration.py
index 182c4ec..e5cc608 100644
--- a/canvasapi/collaboration.py
+++ b/canvasapi/collaboration.py
@@ -1,13 +1,8 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.paginated_list import PaginatedList
 from canvasapi.util import combine_kwargs
 
 
-@python_2_unicode_compatible
 class Collaboration(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.document_id, self.id)
@@ -31,7 +26,6 @@ class Collaboration(CanvasObject):
         )
 
 
-@python_2_unicode_compatible
 class Collaborator(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.name, self.id)
diff --git a/canvasapi/comm_message.py b/canvasapi/comm_message.py
index ad6de8c..50ea49a 100644
--- a/canvasapi/comm_message.py
+++ b/canvasapi/comm_message.py
@@ -1,11 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class CommMessage(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.subject, self.id)
diff --git a/canvasapi/communication_channel.py b/canvasapi/communication_channel.py
index 240d58e..623cff6 100644
--- a/canvasapi/communication_channel.py
+++ b/canvasapi/communication_channel.py
@@ -1,15 +1,8 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-import warnings
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.notification_preference import NotificationPreference
 from canvasapi.util import combine_kwargs
 
 
-@python_2_unicode_compatible
 class CommunicationChannel(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.address, self.id)
@@ -96,57 +89,6 @@ class CommunicationChannel(CanvasObject):
 
         return response.json()["notification_preferences"]
 
-    def list_preference_categories(self, **kwargs):
-        """
-        Fetch all notification preference categories for the given communication
-        channel.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use
-                :func:`canvasapi.communication_channel.CommunicationChannel.get_preference_categories`
-                instead.
-
-        :calls: `GET
-            /api/v1/users/:user_id/communication_channels/ \
-                :communication_channel_id/notification_preference_categories \
-        <https://canvas.instructure.com/doc/api/notification_preferences.html#method.notification_preferences.category_index>`_
-
-        :rtype: `list`
-        """
-        warnings.warn(
-            "`list_preference_categories`"
-            " is being deprecated and will be removed in a future version."
-            " Use `get_preference_categories` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_preference_categories(**kwargs)
-
-    def list_preferences(self, **kwargs):
-        """
-        Fetch all preferences for the given communication channel.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.communication_channel.CommunicationChannel.get_preferences`
-                instead.
-
-        :calls: `GET
-            /api/v1/users/:user_id/communication_channels/:communication_channel_id/ \
-                notification_preferences \
-        <https://canvas.instructure.com/doc/api/notification_preferences.html#method.notification_preferences.index>`_
-
-        :rtype: `list`
-        """
-        warnings.warn(
-            "`list_preferences` is being deprecated and will be removed in a future version."
-            " Use `get_preferences` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_preferences(**kwargs)
-
     def update_multiple_preferences(self, notification_preferences, **kwargs):
         """
         Change preferences for multiple notifications based on the category
diff --git a/canvasapi/content_export.py b/canvasapi/content_export.py
index a051e23..ef43ec2 100644
--- a/canvasapi/content_export.py
+++ b/canvasapi/content_export.py
@@ -1,11 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class ContentExport(CanvasObject):
     def __str__(self):
         return "{} {} ({})".format(self.export_type, self.user_id, self.id)
diff --git a/canvasapi/content_migration.py b/canvasapi/content_migration.py
index 851ea98..88ede57 100644
--- a/canvasapi/content_migration.py
+++ b/canvasapi/content_migration.py
@@ -1,13 +1,8 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.paginated_list import PaginatedList
 from canvasapi.util import combine_kwargs, obj_or_id
 
 
-@python_2_unicode_compatible
 class ContentMigration(CanvasObject):
     def __str__(self):
         return "{} {}".format(self.migration_type_title, self.id)
@@ -225,7 +220,6 @@ class ContentMigration(CanvasObject):
             return False
 
 
-@python_2_unicode_compatible
 class MigrationIssue(CanvasObject):
     def __str__(self):
         return "{}: {}".format(self.id, self.description)
@@ -265,7 +259,6 @@ class MigrationIssue(CanvasObject):
             return False
 
 
-@python_2_unicode_compatible
 class Migrator(CanvasObject):
     def __str__(self):
         return "{}".format(self.type)
diff --git a/canvasapi/conversation.py b/canvasapi/conversation.py
index d3d7526..d1714b4 100644
--- a/canvasapi/conversation.py
+++ b/canvasapi/conversation.py
@@ -1,12 +1,7 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.util import combine_kwargs
 
 
-@python_2_unicode_compatible
 class Conversation(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.subject, self.id)
diff --git a/canvasapi/course.py b/canvasapi/course.py
index 2903a35..d834187 100644
--- a/canvasapi/course.py
+++ b/canvasapi/course.py
@@ -1,9 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-import warnings
-
-from six import python_2_unicode_compatible, text_type, string_types
-
 from canvasapi.assignment import Assignment, AssignmentGroup
 from canvasapi.blueprint import BlueprintSubscription
 from canvasapi.canvas_object import CanvasObject
@@ -42,7 +36,6 @@ from canvasapi.util import (
 )
 
 
-@python_2_unicode_compatible
 class Course(CanvasObject):
     def __str__(self):
         return "{} {} ({})".format(self.course_code, self.name, self.id)
@@ -187,7 +180,7 @@ class Course(CanvasObject):
 
         if isinstance(migration_type, Migrator):
             kwargs["migration_type"] = migration_type.type
-        elif isinstance(migration_type, string_types):
+        elif isinstance(migration_type, str):
             kwargs["migration_type"] = migration_type
         else:
             raise TypeError("Parameter migration_type must be of type Migrator or str")
@@ -1945,40 +1938,6 @@ class Course(CanvasObject):
         )
         return GradingStandard(self._requester, response.json())
 
-    def get_submission(self, assignment, user, **kwargs):
-        """
-        Get a single submission, based on user id.
-
-        .. warning::
-            .. deprecated:: 0.9.0
-                Use :func:`canvasapi.assignment.Assignment.get_submission` instead.
-
-        :calls: `GET /api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id \
-        <https://canvas.instructure.com/doc/api/submissions.html#method.submissions_api.show>`_
-
-        :param assignment: The object or ID of the related assignment
-        :type assignment: :class:`canvasapi.assignment.Assignment` or int
-        :param user: The object or ID of the related user
-        :type user: :class:`canvasapi.user.User` or int
-
-        :rtype: :class:`canvasapi.submission.Submission`
-        """
-        from canvasapi.assignment import Assignment
-
-        warnings.warn(
-            "`Course.get_submission()` is deprecated and will be removed in a "
-            "future version. Use `Assignment.get_submission()` instead",
-            DeprecationWarning,
-        )
-
-        assignment_id = obj_or_id(assignment, "assignment", (Assignment,))
-
-        assignment = Assignment(
-            self._requester, {"course_id": self.id, "id": assignment_id}
-        )
-
-        return assignment.get_submission(user, **kwargs)
-
     def get_submission_history(self, date, grader_id, assignment_id, **kwargs):
         """
         Gives a nested list of submission versions.
@@ -2196,28 +2155,6 @@ class Course(CanvasObject):
             if is_path:
                 attachment.close()
 
-    def list_assignment_groups(self, **kwargs):
-        """
-        List assignment groups for the specified course.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.course.Course.get_assignment_groups` instead.
-
-        :calls: `GET /api/v1/courses/:course_id/assignment_groups \
-        <https://canvas.instructure.com/doc/api/assignment_groups.html#method.assignment_groups.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.assignment.AssignmentGroup`
-        """
-        warnings.warn(
-            "`list_assignment_groups` is being deprecated and will be removed "
-            "in a future version. Use `get_assignment_groups` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_assignment_groups(**kwargs)
-
     def list_blueprint_subscriptions(self, **kwargs):
         """
         Return a list of blueprint subscriptions for the given course.
@@ -2239,347 +2176,6 @@ class Course(CanvasObject):
             kwargs=combine_kwargs(**kwargs),
         )
 
-    def list_external_feeds(self, **kwargs):
-        """
-        Returns the list of External Feeds this course.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.course.Course.get_external_feeds` instead.
-
-        :calls: `GET /api/v1/courses/:course_id/external_feeds \
-        <https://canvas.instructure.com/doc/api/announcement_external_feeds.html#method.external_feeds.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.external_feed.ExternalFeed`
-        """
-        warnings.warn(
-            "`list_external_feeds` is being deprecated and will be removed in "
-            "a future version. Use `get_external_feeds` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_external_feeds(**kwargs)
-
-    def list_files(self, **kwargs):
-        """
-        Returns the paginated list of files for the course.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.course.Course.get_files` instead.
-
-        :calls: `GET /api/v1/courses/:course_id/files \
-        <https://canvas.instructure.com/doc/api/files.html#method.files.api_index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.file.File`
-        """
-        warnings.warn(
-            "`list_files` is being deprecated and will be removed in a future "
-            "version. Use `get_files` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_files(**kwargs)
-
-    def list_folders(self, **kwargs):
-        """
-        Returns the paginated list of all folders for the given course. This will be returned as a
-        flat list containing all subfolders as well.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.course.Course.get_folders` instead.
-
-        :calls: `GET /api/v1/courses/:course_id/folders \
-        <https://canvas.instructure.com/doc/api/files.html#method.folders.list_all_folders>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.folder.Folder`
-        """
-        warnings.warn(
-            "`list_folders` is being deprecated and will be removed in a "
-            "future version. Use `get_folders` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_folders(**kwargs)
-
-    def list_gradeable_students(self, assignment, **kwargs):
-        """
-        List students eligible to submit the assignment.
-
-        .. warning::
-            .. deprecated:: 0.9.0
-                Use :func:`canvasapi.assignment.Assignment.get_gradeable_students` instead.
-
-        :calls: `GET /api/v1/courses/:course_id/assignments/:assignment_id/gradeable_students  \
-        <https://canvas.instructure.com/doc/api/submissions.html#method.submissions_api.gradeable_students>`_
-
-        :param assignment: The object or ID of the related assignment
-        :type assignment: :class:`canvasapi.assignment.Assignment` or int
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.user.UserDisplay`
-        """
-        from canvasapi.assignment import Assignment
-
-        warnings.warn(
-            "`Course.list_gradeable_students()` is deprecated and will be "
-            "removed in a future version. Use "
-            "`Assignment.get_gradeable_students()` instead.",
-            DeprecationWarning,
-        )
-
-        assignment_id = obj_or_id(assignment, "assignment", (Assignment,))
-        assignment = Assignment(
-            self._requester, {"id": assignment_id, "course_id": self.id}
-        )
-
-        return assignment.get_gradeable_students(**kwargs)
-
-    def list_group_categories(self, **kwargs):
-        """
-        List group categories for a context.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.course.Course.get_group_categories` instead.
-
-        :calls: `GET /api/v1/courses/:course_id/group_categories \
-        <https://canvas.instructure.com/doc/api/group_categories.html#method.group_categories.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.group.GroupCategory`
-        """
-        warnings.warn(
-            "`list_group_categories` is being deprecated and will be removed in a future version."
-            " Use `get_group_categories` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_group_categories(**kwargs)
-
-    def list_groups(self, **kwargs):
-        """
-        Return list of active groups for the specified course.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.course.Course.get_groups` instead.
-
-        :calls: `GET /api/v1/courses/:course_id/groups \
-        <https://canvas.instructure.com/doc/api/groups.html#method.groups.context_index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.course.Course`
-        """
-        warnings.warn(
-            "`list_groups` is being deprecated and will be removed in a future version."
-            " Use `get_groups` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_groups(**kwargs)
-
-    def list_multiple_submissions(self, **kwargs):
-        """
-        List submissions for multiple assignments.
-        Get all existing submissions for a given set of students and assignments.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.course.Course.get_multiple_submissions` instead.
-
-        :calls: `GET /api/v1/courses/:course_id/students/submissions \
-        <https://canvas.instructure.com/doc/api/submissions.html#method.submissions_api.for_students>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.submission.Submission`
-        """
-        warnings.warn(
-            "`list_multiple_submissions`"
-            " is being deprecated and will be removed in a future version."
-            " Use `get_multiple_submissions` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_multiple_submissions(**kwargs)
-
-    def list_rubrics(self, **kwargs):
-        """
-        Get the paginated list of active rubrics for the current course.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.course.Course.get_rubrics` instead.
-
-        :calls: `GET /api/v1/courses/:course_id/rubrics \
-        <https://canvas.instructure.com/doc/api/rubrics.html#method.rubrics_api.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.rubric.Rubric`
-        """
-        warnings.warn(
-            "`list_rubrics` is being deprecated and will be removed in a "
-            "future version. Use `get_rubrics` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_rubrics(**kwargs)
-
-    def list_sections(self, **kwargs):
-        """
-        Returns the list of sections for this course.
-
-        .. warning::
-            .. deprecated:: 0.9.0
-                Use :func:`canvasapi.course.Course.get_sections` instead.
-
-        :calls: `GET /api/v1/courses/:course_id/sections \
-        <https://canvas.instructure.com/doc/api/sections.html#method.sections.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.section.Section`
-        """
-        warnings.warn(
-            "`list_sections` is being deprecated and will be removed in a future version."
-            " Use `get_sections` instead",
-            DeprecationWarning,
-        )
-        return self.get_sections(**kwargs)
-
-    def list_submissions(self, assignment, **kwargs):
-        """
-        Get all existing submissions for an assignment.
-
-        .. warning::
-            .. deprecated:: 0.9.0
-                Use :func:`canvasapi.assignment.Assignment.get_submissions` instead.
-
-        :calls: `GET /api/v1/courses/:course_id/assignments/:assignment_id/submissions  \
-        <https://canvas.instructure.com/doc/api/submissions.html#method.submissions_api.index>`_
-
-        :param assignment: The object or ID of the related assignment
-        :type assignment: :class:`canvasapi.assignment.Assignment` or int
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.submission.Submission`
-        """
-        from canvasapi.assignment import Assignment
-
-        warnings.warn(
-            "Course.list_submissions() is deprecated and will be removed in "
-            "the future. Use Assignment.get_submissions() instead.",
-            DeprecationWarning,
-        )
-
-        assignment_id = obj_or_id(assignment, "assignment", (Assignment,))
-
-        assignment = Assignment(
-            self._requester, {"course_id": self.id, "id": assignment_id}
-        )
-
-        return assignment.get_submissions(**kwargs)
-
-    def list_tabs(self, **kwargs):
-        """
-        List available tabs for a course.
-        Returns a list of navigation tabs available in the current context.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.course.Course.get_tabs` instead.
-
-        :calls: `GET /api/v1/courses/:course_id/tabs \
-        <https://canvas.instructure.com/doc/api/tabs.html#method.tabs.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.tab.Tab`
-        """
-        warnings.warn(
-            "`list_tabs` is being deprecated and will be removed in a future "
-            "version. Use `get_tabs` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_tabs(**kwargs)
-
-    def mark_submission_as_read(self, assignment, user, **kwargs):
-        """
-        Mark submission as read. No request fields are necessary.
-
-        .. warning::
-            .. deprecated:: 0.9.0
-                Use :func:`canvasapi.submission.Submission.mark_read` instead.
-
-        :calls: `PUT
-            /api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id/read \
-            <https://canvas.instructure.com/doc/api/submissions.html#method.submissions_api.mark_submission_read>`_
-
-        :param assignment: The object or ID of the related assignment
-        :type assignment: :class:`canvasapi.assignment.Assignment` or int
-        :param user: The object or ID of the related user
-        :type user: :class:`canvasapi.user.User` or int
-
-        :rtype: `bool`
-        """
-        from canvasapi.assignment import Assignment
-        from canvasapi.user import User
-
-        warnings.warn(
-            "`Course.mark_submission_as_read()` is deprecated and will be "
-            "removed in a future version. Use `Submission.mark_read()` instead.",
-            DeprecationWarning,
-        )
-
-        assignment_id = obj_or_id(assignment, "assignment", (Assignment,))
-        user_id = obj_or_id(user, "user", (User,))
-
-        submission = Submission(
-            self._requester,
-            {"course_id": self.id, "assignment_id": assignment_id, "user_id": user_id},
-        )
-        return submission.mark_read(**kwargs)
-
-    def mark_submission_as_unread(self, assignment, user, **kwargs):
-        """
-        Mark submission as unread. No request fields are necessary.
-
-        .. warning::
-            .. deprecated:: 0.9.0
-                Use :func:`canvasapi.submission.Submission.mark_unread` instead.
-
-        :calls: `DELETE
-            /api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id/read \
-            <https://canvas.instructure.com/doc/api/submissions.html#method.submissions_api.mark_submission_unread>`_
-
-        :param assignment: The object or ID of the related assignment
-        :type assignment: :class:`canvasapi.assignment.Assignment` or int
-        :param user: The object or ID of the related user
-        :type user: :class:`canvasapi.user.User` or int
-
-        :rtype: `bool`
-        """
-        from canvasapi.assignment import Assignment
-        from canvasapi.user import User
-
-        warnings.warn(
-            "`Course.mark_submission_as_unread()` is deprecated and will be "
-            "removed in a future version. Use `Submission.mark_unread()` instead.",
-            DeprecationWarning,
-        )
-
-        assignment_id = obj_or_id(assignment, "assignment", (Assignment,))
-        user_id = obj_or_id(user, "user", (User,))
-
-        submission = Submission(
-            self._requester,
-            {"course_id": self.id, "assignment_id": assignment_id, "user_id": user_id},
-        )
-        return submission.mark_unread(**kwargs)
-
     def preview_html(self, html):
         """
         Preview HTML content processed for this course.
@@ -2631,10 +2227,10 @@ class Course(CanvasObject):
         """
         # Convert iterable sequence to comma-separated string
         if is_multivalued(order):
-            order = ",".join([text_type(topic_id) for topic_id in order])
+            order = ",".join([str(topic_id) for topic_id in order])
 
         # Check if is a string with commas
-        if not isinstance(order, text_type) or "," not in order:
+        if not isinstance(order, str) or "," not in order:
             raise ValueError("Param `order` must be a list, tuple, or string.")
 
         response = self._requester.request(
@@ -2786,41 +2382,6 @@ class Course(CanvasObject):
         )
         return Progress(self._requester, response.json())
 
-    def submit_assignment(self, assignment, submission, **kwargs):
-        """
-        Makes a submission for an assignment.
-
-        .. warning::
-            .. deprecated:: 0.9.0
-                Use :func:`canvasapi.assignment.Assignment.submit` instead.
-
-        :calls: `POST /api/v1/courses/:course_id/assignments/:assignment_id/submissions \
-        <https://canvas.instructure.com/doc/api/submissions.html#method.submissions.create>`_
-
-        :param assignment: The object or ID of the related assignment
-        :type assignment: :class:`canvasapi.assignment.Assignment` or int
-
-        :param submission: The attributes of the submission.
-        :type submission: dict
-
-        :rtype: :class:`canvasapi.submission.Submission`
-        """
-        from canvasapi.assignment import Assignment
-
-        warnings.warn(
-            "Course.submit_assignment() is deprecated and will be removed in "
-            "the future. Use Assignment.submit() instead.",
-            DeprecationWarning,
-        )
-
-        assignment_id = obj_or_id(assignment, "assignment", (Assignment,))
-
-        assignment = Assignment(
-            self._requester, {"course_id": self.id, "id": assignment_id}
-        )
-
-        return assignment.submit(submission, **kwargs)
-
     def update(self, **kwargs):
         """
         Update this course.
@@ -2882,68 +2443,6 @@ class Course(CanvasObject):
         )
         return response.json()
 
-    def update_submission(self, assignment, user, **kwargs):
-        """
-        Comment on and/or update the grading for a student's assignment submission.
-
-        .. warning::
-            .. deprecated:: 0.9.0
-                Use :func:`canvasapi.submission.Submission.edit` instead.
-
-        :calls: `PUT /api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id \
-        <https://canvas.instructure.com/doc/api/submissions.html#method.submissions_api.update>`_
-
-        :param assignment: The object or ID of the related assignment
-        :type assignment: :class:`canvasapi.assignment.Assignment` or int
-        :param user: The object or ID of the related user
-        :type user: :class:`canvasapi.user.User` or int
-
-        :rtype: :class:`canvasapi.submission.Submission`
-        """
-        from canvasapi.assignment import Assignment
-        from canvasapi.user import User
-
-        warnings.warn(
-            "`Course.update_submission()` is deprecated and will be removed in a "
-            "future version. Use `Submission.edit()` instead",
-            DeprecationWarning,
-        )
-
-        assignment_id = obj_or_id(assignment, "assignment", (Assignment,))
-        user_id = obj_or_id(user, "user", (User,))
-
-        submission = Submission(
-            self._requester,
-            {"course_id": self.id, "assignment_id": assignment_id, "user_id": user_id},
-        )
-
-        return submission.edit(**kwargs)
-
-    def update_tab(self, tab_id, **kwargs):
-        """
-        Update a tab for a course.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.tab.Tab.update` instead.
-
-        :calls: `PUT /api/v1/courses/:course_id/tabs/:tab_id \
-        <https://canvas.instructure.com/doc/api/tabs.html#method.tabs.update>`_
-
-        :param tab_id: The ID of the tab
-        :type tab_id: str
-
-        :rtype: :class:`canvasapi.tab.Tab`
-        """
-        warnings.warn(
-            "`Course.update_tab()` is being deprecated and will be removed in "
-            "a future version. Use `Tab.update()` instead",
-            DeprecationWarning,
-        )
-
-        tab = Tab(self._requester, {"course_id": self.id, "id": tab_id})
-        return tab.update(**kwargs)
-
     def upload(self, file, **kwargs):
         """
         Upload a file to this course.
@@ -2962,7 +2461,6 @@ class Course(CanvasObject):
         ).start()
 
 
-@python_2_unicode_compatible
 class CourseNickname(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.nickname, self.course_id)
@@ -2983,7 +2481,6 @@ class CourseNickname(CanvasObject):
         return CourseNickname(self._requester, response.json())
 
 
-@python_2_unicode_compatible
 class LatePolicy(CanvasObject):
     def __str__(self):
         return "Late Policy {}".format(self.id)
diff --git a/canvasapi/course_epub_export.py b/canvasapi/course_epub_export.py
index 4a24355..9217bc7 100644
--- a/canvasapi/course_epub_export.py
+++ b/canvasapi/course_epub_export.py
@@ -1,11 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class CourseEpubExport(CanvasObject):
     def __str__(self):
         return "{} course_id:({}) epub_id:({}) {} ".format(
diff --git a/canvasapi/current_user.py b/canvasapi/current_user.py
index d2d89a8..2ea52ea 100644
--- a/canvasapi/current_user.py
+++ b/canvasapi/current_user.py
@@ -1,9 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-import warnings
-
-from six import python_2_unicode_compatible
-
 from canvasapi.bookmark import Bookmark
 from canvasapi.course import Course
 from canvasapi.favorite import Favorite
@@ -13,7 +7,6 @@ from canvasapi.user import User
 from canvasapi.util import combine_kwargs, obj_or_id
 
 
-@python_2_unicode_compatible
 class CurrentUser(User):
     def __init__(self, _requester):
         self._requester = _requester
@@ -202,49 +195,6 @@ class CurrentUser(User):
             _kwargs=combine_kwargs(**kwargs),
         )
 
-    def list_bookmarks(self, **kwargs):
-        """
-        List bookmarks that the current user can view or manage.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.current_user.CurrentUser.get_bookmarks` instead.
-
-        :calls: `GET /api/v1/users/self/bookmarks \
-        <https://canvas.instructure.com/doc/api/bookmarks.html#method.bookmarks/bookmarks.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.bookmark.Bookmark`
-        """
-        warnings.warn(
-            "`list_bookmarks` is being deprecated and will be removed in a "
-            "future version. Use `get_bookmarks` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_bookmarks(**kwargs)
-
-    def list_groups(self, **kwargs):
-        """
-        Return the list of active groups for the user.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.current_user.CurrentUser.get_groups` instead.
-
-        :calls: `GET /api/v1/users/self/groups \
-        <https://canvas.instructure.com/doc/api/groups.html#method.groups.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of :class:`canvasapi.group.Group`
-        """
-        warnings.warn(
-            "`list_groups` is being deprecated and will be removed in a "
-            "future version. Use `get_groups` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_groups(**kwargs)
-
     def reset_favorite_courses(self, **kwargs):
         """
         Reset the current user's course favorites to the default
diff --git a/canvasapi/discussion_topic.py b/canvasapi/discussion_topic.py
index d562ea3..c8c840c 100644
--- a/canvasapi/discussion_topic.py
+++ b/canvasapi/discussion_topic.py
@@ -1,15 +1,8 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-import warnings
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.paginated_list import PaginatedList
 from canvasapi.util import combine_kwargs, obj_or_id
 
 
-@python_2_unicode_compatible
 class DiscussionTopic(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.title, self.id)
@@ -143,60 +136,6 @@ class DiscussionTopic(CanvasObject):
             _kwargs=combine_kwargs(**kwargs),
         )
 
-    def list_entries(self, ids, **kwargs):
-        """
-        Retrieve a paginated list of discussion entries, given a list
-        of ids. Entries will be returned in id order, smallest id first.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi. discussion_topic.DiscussionTopic.get_entries` instead.
-
-        :calls: `GET /api/v1/courses/:course_id/discussion_topics/:topic_id/entry_list \
-            <https://canvas.instructure.com/doc/api/discussion_topics.html#method.discussion_topics_api.entry_list>`_
-
-            or `GET /api/v1/groups/:group_id/discussion_topics/:topic_id/entry_list \
-            <https://canvas.instructure.com/doc/api/discussion_topics.html#method.discussion_topics_api.entry_list>`_
-
-        :param ids: A list of entry objects or IDs to retrieve.
-        :type ids: :class:`canvasapi.discussion_topic.DiscussionEntry`, or list or tuple of int
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.discussion_topic.DiscussionEntry`
-        """
-        warnings.warn(
-            "`list_entries` is being deprecated and will be removed in a "
-            "future version. Use `get_entries` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_entries(ids, **kwargs)
-
-    def list_topic_entries(self, **kwargs):
-        """
-        Retreive the top-level entries in a discussion topic.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.discussion_topic.DiscussionTopic.get_topic_entries` instead.
-
-        :calls: `GET /api/v1/courses/:course_id/discussion_topics/:topic_id/entries \
-            <https://canvas.instructure.com/doc/api/discussion_topics.html#method.discussion_topics_api.entries>`_
-
-            or `GET /api/v1/groups/:group_id/discussion_topics/:topic_id/entries \
-            <https://canvas.instructure.com/doc/api/discussion_topics.html#method.discussion_topics_api.entries>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.discussion_topic.DiscussionEntry`
-        """
-        warnings.warn(
-            "`list_topic_entries` is being deprecated and will be removed in "
-            "a future version. Use `get_topic_entries` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_topic_entries(**kwargs)
-
     def mark_as_read(self):
         """
         Mark the initial text of the discussion topic as read.
@@ -369,7 +308,6 @@ class DiscussionTopic(CanvasObject):
         return DiscussionTopic(self._requester, response.json())
 
 
-@python_2_unicode_compatible
 class DiscussionEntry(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.message, self.id)
@@ -483,33 +421,6 @@ class DiscussionEntry(CanvasObject):
             _kwargs=combine_kwargs(**kwargs),
         )
 
-    def list_replies(self, **kwargs):
-        """
-        Retrieves the replies to a top-level entry in a discussion topic.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi. discussion_topic.DiscussionEntry.get_replies` instead.
-
-        :calls: `GET
-            /api/v1/courses/:course_id/discussion_topics/:topic_id/entries/:entry_id/replies \
-            <https://canvas.instructure.com/doc/api/discussion_topics.html#method.discussion_topics_api.replies>`_
-
-            or `GET
-            /api/v1/groups/:group_id/discussion_topics/:topic_id/entries/:entry_id/replies \
-            <https://canvas.instructure.com/doc/api/discussion_topics.html#method.discussion_topics_api.replies>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.discussion_topic.DiscussionEntry`
-        """
-        warnings.warn(
-            "`list_replies` is being deprecated and will be removed in a "
-            "future version. Use `get_replies` instead.",
-            DeprecationWarning,
-        )
-
-        return self.get_replies(**kwargs)
-
     def mark_as_read(self):
         """
         Mark a discussion entry as read.
diff --git a/canvasapi/enrollment.py b/canvasapi/enrollment.py
index c5ca34c..8cef986 100644
--- a/canvasapi/enrollment.py
+++ b/canvasapi/enrollment.py
@@ -1,11 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class Enrollment(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.type, self.id)
diff --git a/canvasapi/enrollment_term.py b/canvasapi/enrollment_term.py
index 0172b23..a2a4d14 100644
--- a/canvasapi/enrollment_term.py
+++ b/canvasapi/enrollment_term.py
@@ -1,12 +1,7 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.util import combine_kwargs
 
 
-@python_2_unicode_compatible
 class EnrollmentTerm(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.name, self.id)
diff --git a/canvasapi/exceptions.py b/canvasapi/exceptions.py
index e118bc5..3e4d22f 100644
--- a/canvasapi/exceptions.py
+++ b/canvasapi/exceptions.py
@@ -1,9 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible, text_type
-
-
-@python_2_unicode_compatible
 class CanvasException(Exception):  # pragma: no cover
     """
     Base class for all errors returned by the Canvas API.
@@ -22,7 +16,7 @@ class CanvasException(Exception):  # pragma: no cover
             self.message = message
 
     def __str__(self):
-        return text_type(self.message)
+        return str(self.message)
 
 
 class BadRequest(CanvasException):
diff --git a/canvasapi/external_feed.py b/canvasapi/external_feed.py
index aa8fa15..3fa745b 100644
--- a/canvasapi/external_feed.py
+++ b/canvasapi/external_feed.py
@@ -1,11 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class ExternalFeed(CanvasObject):
     def __str__(self):
         return "{}".format(self.display_name)
diff --git a/canvasapi/external_tool.py b/canvasapi/external_tool.py
index 3e2fa12..41d5616 100644
--- a/canvasapi/external_tool.py
+++ b/canvasapi/external_tool.py
@@ -1,13 +1,8 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.exceptions import CanvasException
 from canvasapi.util import combine_kwargs
 
 
-@python_2_unicode_compatible
 class ExternalTool(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.name, self.id)
diff --git a/canvasapi/favorite.py b/canvasapi/favorite.py
index 6688c55..a436ca7 100644
--- a/canvasapi/favorite.py
+++ b/canvasapi/favorite.py
@@ -1,12 +1,7 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.util import combine_kwargs
 
 
-@python_2_unicode_compatible
 class Favorite(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.context_type, self.context_id)
diff --git a/canvasapi/feature.py b/canvasapi/feature.py
index f9d53b8..ebd48d7 100644
--- a/canvasapi/feature.py
+++ b/canvasapi/feature.py
@@ -1,12 +1,7 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.util import combine_kwargs, obj_or_str
 
 
-@python_2_unicode_compatible
 class Feature(CanvasObject):
     def __str__(self):
         return "{} {}".format(self.display_name, self.applies_to)
@@ -49,7 +44,6 @@ class Feature(CanvasObject):
             )
 
 
-@python_2_unicode_compatible
 class FeatureFlag(CanvasObject):
     def __str__(self):
         return "{} {} {} {}".format(
diff --git a/canvasapi/file.py b/canvasapi/file.py
index c8c70e7..b13537e 100644
--- a/canvasapi/file.py
+++ b/canvasapi/file.py
@@ -1,11 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class File(CanvasObject):
     def __str__(self):
         return "{}".format(self.display_name)
diff --git a/canvasapi/folder.py b/canvasapi/folder.py
index 894caaf..76f852f 100644
--- a/canvasapi/folder.py
+++ b/canvasapi/folder.py
@@ -1,16 +1,9 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-import warnings
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.paginated_list import PaginatedList
 from canvasapi.util import combine_kwargs, obj_or_id
 from canvasapi.upload import Uploader
 
 
-@python_2_unicode_compatible
 class Folder(CanvasObject):
     def __str__(self):
         return "{}".format(self.full_name)
@@ -108,50 +101,6 @@ class Folder(CanvasObject):
             Folder, self._requester, "GET", "folders/{}/folders".format(self.id)
         )
 
-    def list_files(self, **kwargs):
-        """
-        Returns the paginated list of files for the folder.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.folder.Folder.get_files` instead.
-
-        :calls: `GET /api/v1/folders/:id/files \
-        <https://canvas.instructure.com/doc/api/files.html#method.files.api_index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.file.File`
-        """
-        warnings.warn(
-            "`list_files` is being deprecated and will be removed in a future "
-            "version. Use `get_files` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_files(**kwargs)
-
-    def list_folders(self, **kwargs):
-        """
-        Returns the paginated list of folders in the folder.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.folder.Folder.get_folders` instead.
-
-        :calls: `GET /api/v1/folders/:id/folders \
-        <https://canvas.instructure.com/doc/api/files.html#method.folders.api_index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.folder.Folder`
-        """
-        warnings.warn(
-            "`list_folders` is being deprecated and will be removed in a "
-            "future version. Use `get_folders` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_folders(**kwargs)
-
     def update(self, **kwargs):
         """
         Updates a folder.
diff --git a/canvasapi/gradebook_history.py b/canvasapi/gradebook_history.py
index 34cb528..29595ee 100644
--- a/canvasapi/gradebook_history.py
+++ b/canvasapi/gradebook_history.py
@@ -1,29 +1,21 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class Day(CanvasObject):
     def __str__(self):
         return "{}".format(self.date)
 
 
-@python_2_unicode_compatible
 class Grader(CanvasObject):
     def __str__(self):
         return "{}".format(self.id)
 
 
-@python_2_unicode_compatible
 class SubmissionHistory(CanvasObject):
     def __str__(self):
         return "{}".format(self.submission_id)
 
 
-@python_2_unicode_compatible
 class SubmissionVersion(CanvasObject):
     def __str__(self):
         return "{} {}".format(self.assignment_id, self.id)
diff --git a/canvasapi/grading_period.py b/canvasapi/grading_period.py
index 842e4d5..494c774 100644
--- a/canvasapi/grading_period.py
+++ b/canvasapi/grading_period.py
@@ -1,13 +1,8 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.exceptions import RequiredFieldMissing
 from canvasapi.util import combine_kwargs
 
 
-@python_2_unicode_compatible
 class GradingPeriod(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.title, self.id)
diff --git a/canvasapi/grading_standard.py b/canvasapi/grading_standard.py
index 31f5d0d..e4cae00 100644
--- a/canvasapi/grading_standard.py
+++ b/canvasapi/grading_standard.py
@@ -1,11 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class GradingStandard(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.title, self.id)
diff --git a/canvasapi/group.py b/canvasapi/group.py
index 758a8a2..558fa75 100644
--- a/canvasapi/group.py
+++ b/canvasapi/group.py
@@ -1,9 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible, text_type, string_types
-
-import warnings
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.collaboration import Collaboration
 from canvasapi.discussion_topic import DiscussionTopic
@@ -16,7 +10,6 @@ from canvasapi.usage_rights import UsageRights
 from canvasapi.util import combine_kwargs, is_multivalued, obj_or_id
 
 
-@python_2_unicode_compatible
 class Group(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.name, self.id)
@@ -37,7 +30,7 @@ class Group(CanvasObject):
 
         if isinstance(migration_type, Migrator):
             kwargs["migration_type"] = migration_type.type
-        elif isinstance(migration_type, string_types):
+        elif isinstance(migration_type, str):
             kwargs["migration_type"] = migration_type
         else:
             raise TypeError("Parameter migration_type must be of type Migrator or str")
@@ -751,140 +744,6 @@ class Group(CanvasObject):
             invitees=invitees,
         )
 
-    def list_external_feeds(self, **kwargs):
-        """
-        Returns the list of External Feeds this group.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.group.Group.get_external_feeds` instead.
-
-        :calls: `GET /api/v1/groups/:group_id/external_feeds \
-        <https://canvas.instructure.com/doc/api/announcement_external_feeds.html#method.external_feeds.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.external_feed.ExternalFeed`
-        """
-        warnings.warn(
-            "`list_external_feeds` is being deprecated and will be removed in "
-            "a future version. Use `get_external_feeds` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_external_feeds(**kwargs)
-
-    def list_files(self, **kwargs):
-        """
-        Returns the paginated list of files for the group.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.group.Group.get_files` instead.
-
-        :calls: `GET /api/v1/groups/:group_id/files \
-        <https://canvas.instructure.com/doc/api/files.html#method.files.api_index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.file.File`
-        """
-        warnings.warn(
-            "`list_files` is being deprecated and will be removed in a future "
-            "version. Use `get_files` instead.",
-            DeprecationWarning,
-        )
-
-        return self.get_files(**kwargs)
-
-    def list_folders(self, **kwargs):
-        """
-        Returns the paginated list of all folders for the given group. This will be returned as a
-        flat list containing all subfolders as well.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.group.Group.get_folders` instead.
-
-        :calls: `GET /api/v1/groups/:group_id/folders \
-        <https://canvas.instructure.com/doc/api/files.html#method.folders.list_all_folders>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.folder.Folder`
-        """
-        warnings.warn(
-            "`list_folders` is being deprecated and will be removed in a "
-            "future version. Use `get_folders` instead.",
-            DeprecationWarning,
-        )
-
-        return self.get_folders(**kwargs)
-
-    def list_memberships(self, **kwargs):
-        """
-        List users in a group.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.group.Group.get_memberships` instead.
-
-        :calls: `GET /api/v1/groups/:group_id/memberships \
-        <https://canvas.instructure.com/doc/api/groups.html#method.group_memberships.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.group.GroupMembership`
-        """
-        warnings.warn(
-            "`list_memberships` is being deprecated and will be removed in a "
-            "future version. Use `get_memberships` instead.",
-            DeprecationWarning,
-        )
-
-        return self.get_memberships(**kwargs)
-
-    def list_tabs(self, **kwargs):
-        """
-        List available tabs for a group.
-        Returns a list of navigation tabs available in the current context.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.group.Group.get_tabs` instead.
-
-        :calls: `GET /api/v1/groups/:group_id/tabs \
-        <https://canvas.instructure.com/doc/api/tabs.html#method.tabs.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.tab.Tab`
-        """
-        warnings.warn(
-            "`list_tabs` is being deprecated and will be removed in a future "
-            "version. Use `get_tabs` instead.",
-            DeprecationWarning,
-        )
-
-        return self.get_tabs(**kwargs)
-
-    def list_users(self, **kwargs):
-        """
-        List users in a group.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.group.Group.get_users` instead.
-
-        :calls: `GET /api/v1/groups/:group_id/users \
-        <https://canvas.instructure.com/doc/api/groups.html#method.groups.users>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.user.User`
-        """
-        warnings.warn(
-            "`list_users` is being deprecated and will be removed in a future "
-            "version. Use `get_users` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_users(**kwargs)
-
     def preview_html(self, html):
         """
         Preview HTML content processed for this course.
@@ -956,10 +815,10 @@ class Group(CanvasObject):
         """
         # Convert list or tuple to comma-separated string
         if is_multivalued(order):
-            order = ",".join([text_type(topic_id) for topic_id in order])
+            order = ",".join([str(topic_id) for topic_id in order])
 
         # Check if is a string with commas
-        if not isinstance(order, text_type) or "," not in order:
+        if not isinstance(order, str) or "," not in order:
             raise ValueError("Param `order` must be a list, tuple, or string.")
 
         response = self._requester.request(
@@ -1052,7 +911,6 @@ class Group(CanvasObject):
         ).start()
 
 
-@python_2_unicode_compatible
 class GroupMembership(CanvasObject):
     def __str__(self):
         return "{} - {} ({})".format(self.user_id, self.group_id, self.id)
@@ -1112,7 +970,6 @@ class GroupMembership(CanvasObject):
         return GroupMembership(self._requester, response.json())
 
 
-@python_2_unicode_compatible
 class GroupCategory(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.name, self.id)
@@ -1207,50 +1064,6 @@ class GroupCategory(CanvasObject):
             _kwargs=combine_kwargs(**kwargs),
         )
 
-    def list_groups(self, **kwargs):
-        """
-        List groups in group category.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.group.GroupCategory.get_groups` instead.
-
-        :calls: `GET /api/v1/group_categories/:group_category_id/groups \
-        <https://canvas.instructure.com/doc/api/group_categories.html#method.group_categories.groups>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.group.Group`
-        """
-        warnings.warn(
-            "`list_groups` is being deprecated and will be removed in a "
-            "future version. Use `get_groups` instead.",
-            DeprecationWarning,
-        )
-
-        return self.get_groups(**kwargs)
-
-    def list_users(self, **kwargs):
-        """
-        List users in group category.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.group.GroupCategory.get_users` instead.
-
-        :calls: `GET /api/v1/group_categories/:group_category_id/users \
-        <https://canvas.instructure.com/doc/api/group_categories.html#method.group_categories.users>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.user.User`
-        """
-        warnings.warn(
-            "`list_users` is being deprecated and will be removed in a future version."
-            " Use `get_users` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_users(**kwargs)
-
     def update(self, **kwargs):
         """
         Update a group category.
diff --git a/canvasapi/license.py b/canvasapi/license.py
index 2400e29..ec01462 100644
--- a/canvasapi/license.py
+++ b/canvasapi/license.py
@@ -1,11 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class License(CanvasObject):
     def __str__(self):
         return "{} {}".format(self.name, self.id)
diff --git a/canvasapi/login.py b/canvasapi/login.py
index d937e3f..e24f844 100644
--- a/canvasapi/login.py
+++ b/canvasapi/login.py
@@ -1,13 +1,8 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.paginated_list import PaginatedList
 from canvasapi.util import combine_kwargs
 
 
-@python_2_unicode_compatible
 class Login(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.id, self.unique_id)
diff --git a/canvasapi/module.py b/canvasapi/module.py
index fe05a73..f235acb 100644
--- a/canvasapi/module.py
+++ b/canvasapi/module.py
@@ -1,15 +1,9 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-import warnings
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.exceptions import RequiredFieldMissing
 from canvasapi.paginated_list import PaginatedList
 from canvasapi.util import combine_kwargs, obj_or_id
 
 
-@python_2_unicode_compatible
 class Module(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.name, self.id)
@@ -71,28 +65,6 @@ class Module(CanvasObject):
 
         return Module(self._requester, module_json)
 
-    def list_module_items(self, **kwargs):
-        """
-        List all of the items in this module.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.module.Modules.get_module_items` instead.
-
-        :calls: `GET /api/v1/courses/:course_id/modules/:module_id/items \
-        <https://canvas.instructure.com/doc/api/modules.html#method.context_module_items_api.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.module.ModuleItem`
-        """
-        warnings.warn(
-            "`list_module_items` is being deprecated and will be removed in a "
-            "future version. Use `get_module_items` instead.",
-            DeprecationWarning,
-        )
-
-        return self.get_module_items(**kwargs)
-
     def get_module_items(self, **kwargs):
         """
         List all of the items in this module.
@@ -171,7 +143,6 @@ class Module(CanvasObject):
         return ModuleItem(self._requester, module_item_json)
 
 
-@python_2_unicode_compatible
 class ModuleItem(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.title, self.id)
diff --git a/canvasapi/notification_preference.py b/canvasapi/notification_preference.py
index 90a6433..ceee3dd 100644
--- a/canvasapi/notification_preference.py
+++ b/canvasapi/notification_preference.py
@@ -1,11 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class NotificationPreference(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.notification, self.frequency)
diff --git a/canvasapi/outcome.py b/canvasapi/outcome.py
index 451ce5b..1606a30 100644
--- a/canvasapi/outcome.py
+++ b/canvasapi/outcome.py
@@ -1,14 +1,8 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-import warnings
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.paginated_list import PaginatedList
 from canvasapi.util import combine_kwargs, obj_or_id
 
 
-@python_2_unicode_compatible
 class Outcome(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.title, self.url)
@@ -33,7 +27,6 @@ class Outcome(CanvasObject):
         return "id" in response.json()
 
 
-@python_2_unicode_compatible
 class OutcomeLink(CanvasObject):
     def __str__(self):
         return "Group {} with Outcome {} ({})".format(
@@ -83,7 +76,6 @@ class OutcomeLink(CanvasObject):
         return OutcomeGroup(self._requester, response.json())
 
 
-@python_2_unicode_compatible
 class OutcomeGroup(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.title, self.url)
@@ -144,33 +136,6 @@ class OutcomeGroup(CanvasObject):
 
         return "id" in response.json()
 
-    def list_linked_outcomes(self, **kwargs):
-        """
-        List linked outcomes.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.outcome.Outcome.get_linked_outcomes` instead.
-
-        :calls: `GET /api/v1/global/outcome_groups/:id/outcomes \
-            <https://canvas.instructure.com/doc/api/outcome_groups.html#method.outcome_groups_api.outcomes>`_
-            or `GET /api/v1/accounts/:account_id/outcome_groups/:id/outcomes \
-            <https://canvas.instructure.com/doc/api/outcome_groups.html#method.outcome_groups_api.outcomes>`_
-            or `GET /api/v1/courses/:course_id/outcome_groups/:id/outcomes \
-            <https://canvas.instructure.com/doc/api/outcome_groups.html#method.outcome_groups_api.outcomes>`_
-
-        :returns: Paginated List of Outcomes linked to the group.
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.outcome.OutcomeLink`
-        """
-        warnings.warn(
-            "`list_linked_outcomes` is being deprecated and will be removed "
-            "in a future version. Use `get_linked_outcomes` instead.",
-            DeprecationWarning,
-        )
-
-        return self.get_linked_outcomes(**kwargs)
-
     def get_linked_outcomes(self, **kwargs):
         """
         List linked outcomes.
@@ -279,33 +244,6 @@ class OutcomeGroup(CanvasObject):
 
         return "context_id" in response.json()
 
-    def list_subgroups(self, **kwargs):
-        """
-        List subgroups.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.outcome.Outcome.get_subgroups` instead.
-
-        :calls: `GET /api/v1/global/outcome_groups/:id/subgroups \
-            <https://canvas.instructure.com/doc/api/outcome_groups.html#method.outcome_groups_api.subgroups>`_
-            or `GET /api/v1/accounts/:account_id/outcome_groups/:id/subgroups \
-            <https://canvas.instructure.com/doc/api/outcome_groups.html#method.outcome_groups_api.subgroups>`_
-            or `GET /api/v1/courses/:course_id/outcome_groups/:id/subgroups \
-            <https://canvas.instructure.com/doc/api/outcome_groups.html#method.outcome_groups_api.subgroups>`_
-
-        :returns: Paginated List of OutcomeGroups linked to the current group.
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.outcome.OutcomeGroup`
-        """
-        warnings.warn(
-            "`list_subgroups` is being deprecated and will be removed in a "
-            "future version. Use `get_subgroups` instead.",
-            DeprecationWarning,
-        )
-
-        return self.get_subgroups(**kwargs)
-
     def get_subgroups(self, **kwargs):
         """
         List subgroups.
diff --git a/canvasapi/outcome_import.py b/canvasapi/outcome_import.py
index c0c85bb..73a752d 100644
--- a/canvasapi/outcome_import.py
+++ b/canvasapi/outcome_import.py
@@ -1,11 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class OutcomeImport(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.workflow_state, self.id)
diff --git a/canvasapi/page.py b/canvasapi/page.py
index 342fbbc..c26e180 100644
--- a/canvasapi/page.py
+++ b/canvasapi/page.py
@@ -1,14 +1,8 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-import warnings
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.paginated_list import PaginatedList
 from canvasapi.util import combine_kwargs, obj_or_id
 
 
-@python_2_unicode_compatible
 class Page(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.title, self.url)
@@ -122,28 +116,6 @@ class Page(CanvasObject):
             _kwargs=combine_kwargs(**kwargs),
         )
 
-    def list_revisions(self, **kwargs):
-        """
-        List the revisions of a page.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.page.Page.get_revisions` instead.
-
-        :calls: `GET /api/v1/courses/:course_id/pages/:url/revisions \
-        <https://canvas.instructure.com/doc/api/pages.html#method.wiki_pages_api.revisions>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.pagerevision.PageRevision`
-        """
-        warnings.warn(
-            "`list_revisions` is being deprecated and will be removed in a "
-            "future version. Use `get_revisions` instead.",
-            DeprecationWarning,
-        )
-
-        return self.get_revisions(**kwargs)
-
     @property
     def parent_id(self):
         """
@@ -219,7 +191,6 @@ class Page(CanvasObject):
         return PageRevision(self._requester, response.json())
 
 
-@python_2_unicode_compatible
 class PageRevision(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.updated_at, self.revision_id)
diff --git a/canvasapi/page_view.py b/canvasapi/page_view.py
index 42891ce..918ffc7 100644
--- a/canvasapi/page_view.py
+++ b/canvasapi/page_view.py
@@ -1,11 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class PageView(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.context_type, self.id)
diff --git a/canvasapi/paginated_list.py b/canvasapi/paginated_list.py
index 90ceade..9be9fc3 100644
--- a/canvasapi/paginated_list.py
+++ b/canvasapi/paginated_list.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import re
 
 
diff --git a/canvasapi/peer_review.py b/canvasapi/peer_review.py
index 74e91dd..ada1050 100644
--- a/canvasapi/peer_review.py
+++ b/canvasapi/peer_review.py
@@ -1,11 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class PeerReview(CanvasObject):
     def __str__(self):
         return "{} {} ({})".format(self.asset_id, self.user_id, self.id)
diff --git a/canvasapi/planner.py b/canvasapi/planner.py
index e4829ff..32946af 100644
--- a/canvasapi/planner.py
+++ b/canvasapi/planner.py
@@ -1,12 +1,7 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.util import combine_kwargs
 
 
-@python_2_unicode_compatible
 class PlannerNote(CanvasObject):
     def __str__(self):
         return "{} {} ({})".format(self.title, self.todo_date, self.id)
@@ -44,7 +39,6 @@ class PlannerNote(CanvasObject):
         return PlannerNote(self._requester, response.json())
 
 
-@python_2_unicode_compatible
 class PlannerOverride(CanvasObject):
     def __str__(self):
         return "{} {} ({})".format(self.plannable_id, self.marked_complete, self.id)
diff --git a/canvasapi/poll.py b/canvasapi/poll.py
index 6cfeca2..45aa294 100644
--- a/canvasapi/poll.py
+++ b/canvasapi/poll.py
@@ -1,7 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.exceptions import RequiredFieldMissing
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.paginated_list import PaginatedList
@@ -10,7 +6,6 @@ from canvasapi.poll_session import PollSession
 from canvasapi.util import combine_kwargs, obj_or_id
 
 
-@python_2_unicode_compatible
 class Poll(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.question, self.id)
diff --git a/canvasapi/poll_choice.py b/canvasapi/poll_choice.py
index 5473f5a..600b79d 100644
--- a/canvasapi/poll_choice.py
+++ b/canvasapi/poll_choice.py
@@ -1,13 +1,8 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.exceptions import RequiredFieldMissing
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.util import combine_kwargs
 
 
-@python_2_unicode_compatible
 class PollChoice(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.text, self.id)
diff --git a/canvasapi/poll_session.py b/canvasapi/poll_session.py
index 6b4d172..0167248 100644
--- a/canvasapi/poll_session.py
+++ b/canvasapi/poll_session.py
@@ -1,14 +1,9 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.exceptions import RequiredFieldMissing
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.util import combine_kwargs, obj_or_id
 from canvasapi.poll_submission import PollSubmission
 
 
-@python_2_unicode_compatible
 class PollSession(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.poll_id, self.id)
diff --git a/canvasapi/poll_submission.py b/canvasapi/poll_submission.py
index 1e1098e..303ccf3 100644
--- a/canvasapi/poll_submission.py
+++ b/canvasapi/poll_submission.py
@@ -1,11 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class PollSubmission(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.poll_choice_id, self.id)
diff --git a/canvasapi/progress.py b/canvasapi/progress.py
index 3d1f0fd..04f327d 100644
--- a/canvasapi/progress.py
+++ b/canvasapi/progress.py
@@ -1,11 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class Progress(CanvasObject):
     def __str__(self):
         return "{} - {} ({})".format(self.tag, self.workflow_state, self.id)
diff --git a/canvasapi/quiz.py b/canvasapi/quiz.py
index 1c3072f..272bbab 100644
--- a/canvasapi/quiz.py
+++ b/canvasapi/quiz.py
@@ -1,9 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-import warnings
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.exceptions import RequiredFieldMissing
 from canvasapi.paginated_list import PaginatedList
@@ -13,7 +7,6 @@ from canvasapi.user import User
 from canvasapi.util import combine_kwargs, obj_or_id
 
 
-@python_2_unicode_compatible
 class Quiz(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.title, self.id)
@@ -234,27 +227,6 @@ class Quiz(CanvasObject):
             _kwargs=combine_kwargs(**kwargs),
         )
 
-    def get_all_quiz_submissions(self, **kwargs):
-        """
-        Get a list of all submissions for this quiz.
-
-        .. warning::
-            .. deprecated:: 0.13.0
-                Use :func:`canvasapi.quiz.Quiz.get_submissions` instead.
-
-        :calls: `GET /api/v1/courses/:course_id/quizzes/:quiz_id/submissions \
-        <https://canvas.instructure.com/doc/api/quiz_submissions.html#method.quizzes/quiz_submissions_api.index>`_
-
-        :rtype: list of :class:`canvasapi.quiz.QuizSubmission`
-        """
-        warnings.warn(
-            "`get_all_quiz_submissions` is being deprecated and will be removed in a "
-            "future version. Use `get_submissions` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_submissions(**kwargs)
-
     def get_question(self, question, **kwargs):
         """
         Get as single quiz question by ID.
@@ -490,13 +462,11 @@ class Quiz(CanvasObject):
         ]
 
 
-@python_2_unicode_compatible
 class QuizStatistic(CanvasObject):
     def __str__(self):
         return "Quiz Statistic {}".format(self.id)
 
 
-@python_2_unicode_compatible
 class QuizSubmission(CanvasObject):
     def __str__(self):
         return "Quiz {} - User {} ({})".format(self.quiz_id, self.user_id, self.id)
@@ -704,13 +674,11 @@ class QuizSubmission(CanvasObject):
         return QuizSubmission(self._requester, response_json)
 
 
-@python_2_unicode_compatible
 class QuizExtension(CanvasObject):
     def __str__(self):
         return "{}-{}".format(self.quiz_id, self.user_id)
 
 
-@python_2_unicode_compatible
 class QuizQuestion(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.question_name, self.id)
@@ -758,7 +726,6 @@ class QuizQuestion(CanvasObject):
         return self
 
 
-@python_2_unicode_compatible
 class QuizReport(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.report_type, self.id)
@@ -786,13 +753,11 @@ class QuizReport(CanvasObject):
         return response.status_code == 204
 
 
-@python_2_unicode_compatible
 class QuizSubmissionEvent(CanvasObject):
     def __str__(self):
         return "{}".format(self.event_type)
 
 
-@python_2_unicode_compatible
 class QuizSubmissionQuestion(CanvasObject):
     def __str__(self):
         return "QuizSubmissionQuestion #{}".format(self.id)
@@ -888,7 +853,6 @@ class QuizSubmissionQuestion(CanvasObject):
         return True
 
 
-@python_2_unicode_compatible
 class QuizAssignmentOverrideSet(CanvasObject):
     def __str__(self):
         return "Overrides for quiz_id {}".format(self.quiz_id)
diff --git a/canvasapi/quiz_group.py b/canvasapi/quiz_group.py
index 65df15b..304f490 100644
--- a/canvasapi/quiz_group.py
+++ b/canvasapi/quiz_group.py
@@ -1,13 +1,8 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.exceptions import RequiredFieldMissing
 from canvasapi.util import combine_kwargs
 
 
-@python_2_unicode_compatible
 class QuizGroup(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.name, self.id)
diff --git a/canvasapi/requester.py b/canvasapi/requester.py
index fbb3cf9..8ea4b88 100644
--- a/canvasapi/requester.py
+++ b/canvasapi/requester.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 from datetime import datetime
 import logging
 from pprint import pformat
diff --git a/canvasapi/rubric.py b/canvasapi/rubric.py
index b323483..a973e7e 100644
--- a/canvasapi/rubric.py
+++ b/canvasapi/rubric.py
@@ -1,18 +1,12 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.util import combine_kwargs
 
 
-@python_2_unicode_compatible
 class Rubric(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.title, self.id)
 
 
-@python_2_unicode_compatible
 class RubricAssociation(CanvasObject):
     def __str__(self):
         return "{}, {}".format(self.id, self.association_type)
diff --git a/canvasapi/scope.py b/canvasapi/scope.py
index 4b410fa..f885d75 100644
--- a/canvasapi/scope.py
+++ b/canvasapi/scope.py
@@ -1,11 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class Scope(CanvasObject):
     def __str__(self):
         return "{}".format(self.resource)
diff --git a/canvasapi/section.py b/canvasapi/section.py
index 9d17993..e154d89 100644
--- a/canvasapi/section.py
+++ b/canvasapi/section.py
@@ -1,8 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-import warnings
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.paginated_list import PaginatedList
 from canvasapi.progress import Progress
@@ -10,7 +5,6 @@ from canvasapi.submission import GroupedSubmission, Submission
 from canvasapi.util import combine_kwargs, obj_or_id, normalize_bool
 
 
-@python_2_unicode_compatible
 class Section(CanvasObject):
     def __str__(self):
         return "{} - {} ({})".format(self.name, self.course_id, self.id)
@@ -151,180 +145,6 @@ class Section(CanvasObject):
             _kwargs=combine_kwargs(**kwargs),
         )
 
-    def get_submission(self, assignment, user, **kwargs):
-        """
-        Get a single submission, based on user id.
-
-        .. warning::
-            .. deprecated:: 0.9.0
-                Use :func:`canvasapi.assignment.Assignment.get_submission` instead.
-
-        :calls: `GET /api/v1/sections/:section_id/assignments/:assignment_id/submissions/:user_id \
-        <https://canvas.instructure.com/doc/api/submissions.html#method.submissions_api.show>`_
-
-        :param assignment: The object or ID of the assignment.
-        :type assignment: :class:`canvasapi.assignment.Assignment` or int
-        :param user: The object or ID of the user.
-        :type user: :class:`canvasapi.user.User` or int or str
-
-        :rtype: :class:`canvasapi.submission.Submission`
-        """
-        from canvasapi.assignment import Assignment
-
-        warnings.warn(
-            "Section.get_submission() is deprecated and will be removed "
-            "in the future. Use Assignment.get_submission() instead.",
-            DeprecationWarning,
-        )
-
-        assignment_id = obj_or_id(assignment, "assignment", (Assignment,))
-
-        assignment = Assignment(
-            self._requester,
-            {"course_id": self.course_id, "section_id": self.id, "id": assignment_id},
-        )
-
-        return assignment.get_submission(user, **kwargs)
-
-    def list_multiple_submissions(self, **kwargs):
-        """
-        List submissions for multiple assignments.
-        Get all existing submissions for a given set of students and assignments.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.section.Section.get_multiple_submissions` instead.
-
-        :calls: `GET /api/v1/sections/:section_id/students/submissions \
-        <https://canvas.instructure.com/doc/api/submissions.html#method.submissions_api.for_students>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.submission.Submission`
-        """
-        warnings.warn(
-            "`list_multiple_submissions`"
-            " is being deprecated and will be removed in a future version."
-            " Use `get_multiple_submissions` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_multiple_submissions(**kwargs)
-
-    def list_submissions(self, assignment, **kwargs):
-        """
-        Get all existing submissions for an assignment.
-
-        .. warning::
-            .. deprecated:: 0.9.0
-                Use :func:`canvasapi.assignment.Assignment.get_submissions` instead.
-
-        :calls: `GET /api/v1/sections/:section_id/assignments/:assignment_id/submissions  \
-        <https://canvas.instructure.com/doc/api/submissions.html#method.submissions_api.index>`_
-
-        :param assignment: The object or ID of the assignment.
-        :type assignment: :class:`canvasapi.assignment.Assignment` or int
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.submission.Submission`
-        """
-        from canvasapi.assignment import Assignment
-
-        warnings.warn(
-            "Section.list_submissions() is deprecated and will be removed "
-            "in the future. Use Assignment.get_submissions() instead.",
-            DeprecationWarning,
-        )
-
-        assignment_id = obj_or_id(assignment, "assignment", (Assignment,))
-        assignment = Assignment(
-            self._requester,
-            {"course_id": self.course_id, "section_id": self.id, "id": assignment_id},
-        )
-
-        return assignment.get_submissions(**kwargs)
-
-    def mark_submission_as_read(self, assignment, user, **kwargs):
-        """
-        Mark submission as read. No request fields are necessary.
-
-        .. warning::
-            .. deprecated:: 0.9.0
-                Use :func:`canvasapi.submission.Submission.mark_read` instead.
-
-        :calls: `PUT
-            /api/v1/sections/:section_id/assignments/:assignment_id/submissions/:user_id/read \
-            <https://canvas.instructure.com/doc/api/submissions.html#method.submissions_api.mark_submission_read>`_
-
-        :param assignment: The object or ID of the assignment.
-        :type assignment: :class:`canvasapi.assignment.Assignment` or int
-        :param user: The object or ID of the user.
-        :type user: :class:`canvasapi.user.User` or int or str
-
-        :rtype: `bool`
-        """
-        from canvasapi.assignment import Assignment
-        from canvasapi.user import User
-
-        warnings.warn(
-            "Section.mark_submission_as_read() is deprecated and will be "
-            "removed in the future. Use Submission.mark_read() instead.",
-            DeprecationWarning,
-        )
-
-        assignment_id = obj_or_id(assignment, "assignment", (Assignment,))
-        user_id = obj_or_id(user, "user", (User,))
-
-        submission = Submission(
-            self._requester,
-            {
-                "course_id": self.course_id,
-                "assignment_id": assignment_id,
-                "user_id": user_id,
-            },
-        )
-        return submission.mark_read(**kwargs)
-
-    def mark_submission_as_unread(self, assignment, user, **kwargs):
-        """
-        Mark submission as unread. No request fields are necessary.
-
-        .. warning::
-            .. deprecated:: 0.9.0
-                Use :func:`canvasapi.submission.Submission.mark_unread` instead.
-
-        :calls: `DELETE
-            /api/v1/sections/:section_id/assignments/:assignment_id/submissions/:user_id/read \
-            <https://canvas.instructure.com/doc/api/submissions.html#method.submissions_api.mark_submission_unread>`_
-
-        :param assignment: The object or ID of the assignment.
-        :type assignment: :class:`canvasapi.assignment.Assignment` or int
-        :param user: The object or ID of the user.
-        :type user: :class:`canvasapi.user.User` or int or str
-
-        :rtype: `bool`
-        """
-        from canvasapi.assignment import Assignment
-        from canvasapi.user import User
-
-        warnings.warn(
-            "Section.mark_submission_as_unread() is deprecated and will be "
-            "removed in the future. Use Submission.mark_unread() instead.",
-            DeprecationWarning,
-        )
-
-        assignment_id = obj_or_id(assignment, "assignment", (Assignment,))
-        user_id = obj_or_id(user, "user", (User,))
-
-        submission = Submission(
-            self._requester,
-            {
-                "course_id": self.course_id,
-                "assignment_id": assignment_id,
-                "user_id": user_id,
-            },
-        )
-        return submission.mark_unread(**kwargs)
-
     def submissions_bulk_update(self, **kwargs):
         """
         Update the grading and comments on multiple student's assignment
@@ -341,77 +161,3 @@ class Section(CanvasObject):
             _kwargs=combine_kwargs(**kwargs),
         )
         return Progress(self._requester, response.json())
-
-    def submit_assignment(self, assignment, submission, **kwargs):
-        """
-        Makes a submission for an assignment.
-
-        .. warning::
-            .. deprecated:: 0.9.0
-                Use :func:`canvasapi.assignment.Assignment.submit` instead.
-
-        :calls: `POST /api/v1/sections/:section_id/assignments/:assignment_id/submissions \
-        <https://canvas.instructure.com/doc/api/submissions.html#method.submissions.create>`_
-
-        :param assignment: The object or ID of the assignment.
-        :type assignment: :class:`canvasapi.assignment.Assignment` or int
-        :param submission: The attributes of the submission.
-        :type submission: dict
-
-        :rtype: :class:`canvasapi.submission.Submission`
-        """
-        from canvasapi.assignment import Assignment
-
-        warnings.warn(
-            "Section.submit_assignment() is deprecated and will be removed "
-            "in the future. Use Assignment.submit() instead.",
-            DeprecationWarning,
-        )
-
-        assignment_id = obj_or_id(assignment, "assignment", (Assignment,))
-        assignment = Assignment(
-            self._requester,
-            {"course_id": self.course_id, "section_id": self.id, "id": assignment_id},
-        )
-        return assignment.submit(submission, **kwargs)
-
-    def update_submission(self, assignment, user, **kwargs):
-        """
-        Comment on and/or update the grading for a student's assignment submission.
-
-        .. warning::
-            .. deprecated:: 0.9.0
-                Use :func:`canvasapi.submission.Submission.edit` instead.
-
-        :calls: `PUT /api/v1/sections/:section_id/assignments/:assignment_id/submissions/:user_id \
-        <https://canvas.instructure.com/doc/api/submissions.html#method.submissions_api.update>`_
-
-        :param assignment: The object or ID of the assignment.
-        :type assignment: :class:`canvasapi.assignment.Assignment` or int
-        :param user: The object or ID of the user.
-        :type user: :class:`canvasapi.user.User` or int or str
-
-        :rtype: :class:`canvasapi.submission.Submission`
-        """
-        from canvasapi.assignment import Assignment
-        from canvasapi.user import User
-
-        warnings.warn(
-            "Section.update_submission() is deprecated and will be removed "
-            "in the future. Use Submission.edit() instead.",
-            DeprecationWarning,
-        )
-
-        assignment_id = obj_or_id(assignment, "assignment", (Assignment,))
-        user_id = obj_or_id(user, "user", (User,))
-
-        submission = Submission(
-            self._requester,
-            {
-                "course_id": self.course_id,
-                "assignment_id": assignment_id,
-                "user_id": user_id,
-            },
-        )
-
-        return submission.edit(**kwargs)
diff --git a/canvasapi/sis_import.py b/canvasapi/sis_import.py
index 3c4d43b..961dec2 100644
--- a/canvasapi/sis_import.py
+++ b/canvasapi/sis_import.py
@@ -1,13 +1,8 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.progress import Progress
 from canvasapi.util import combine_kwargs
 
 
-@python_2_unicode_compatible
 class SisImport(CanvasObject):
     def __str__(self):  # pragma: no cover
         return "{} ({})".format(self.workflow_state, self.id)
diff --git a/canvasapi/submission.py b/canvasapi/submission.py
index 15df324..390789c 100644
--- a/canvasapi/submission.py
+++ b/canvasapi/submission.py
@@ -1,7 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.paginated_list import PaginatedList
 from canvasapi.peer_review import PeerReview
@@ -9,7 +5,6 @@ from canvasapi.upload import Uploader
 from canvasapi.util import combine_kwargs, obj_or_id
 
 
-@python_2_unicode_compatible
 class Submission(CanvasObject):
     def __str__(self):
         return "{}-{}".format(self.assignment_id, self.user_id)
@@ -176,7 +171,6 @@ class Submission(CanvasObject):
         return response
 
 
-@python_2_unicode_compatible
 class GroupedSubmission(CanvasObject):
     def __init__(self, requester, attributes):
         super(GroupedSubmission, self).__init__(requester, attributes)
diff --git a/canvasapi/tab.py b/canvasapi/tab.py
index 3e4c86f..cb99717 100644
--- a/canvasapi/tab.py
+++ b/canvasapi/tab.py
@@ -1,12 +1,7 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.util import combine_kwargs
 
 
-@python_2_unicode_compatible
 class Tab(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.label, self.id)
diff --git a/canvasapi/upload.py b/canvasapi/upload.py
index 28a005c..e0a68fc 100644
--- a/canvasapi/upload.py
+++ b/canvasapi/upload.py
@@ -1,9 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import json
 import os
 
-from six import string_types
-
 from canvasapi.util import combine_kwargs
 
 
@@ -21,7 +18,7 @@ class Uploader(object):
         :param file: A file handler or path of the file to upload.
         :type file: file or str
         """
-        if isinstance(file, string_types):
+        if isinstance(file, str):
             if not os.path.exists(file):
                 raise IOError("File " + file + " does not exist.")
             self._using_filename = True
diff --git a/canvasapi/usage_rights.py b/canvasapi/usage_rights.py
index 1de8adb..e6ca278 100644
--- a/canvasapi/usage_rights.py
+++ b/canvasapi/usage_rights.py
@@ -1,11 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible
-
 from canvasapi.canvas_object import CanvasObject
 
 
-@python_2_unicode_compatible
 class UsageRights(CanvasObject):
     def __str__(self):
         return "{} {}".format(self.use_justification, self.license)
diff --git a/canvasapi/user.py b/canvasapi/user.py
index 116727c..78f5a62 100644
--- a/canvasapi/user.py
+++ b/canvasapi/user.py
@@ -1,8 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
-from six import python_2_unicode_compatible, string_types
-import warnings
-
 from canvasapi.calendar_event import CalendarEvent
 from canvasapi.canvas_object import CanvasObject
 from canvasapi.communication_channel import CommunicationChannel
@@ -15,7 +10,6 @@ from canvasapi.usage_rights import UsageRights
 from canvasapi.util import combine_kwargs, obj_or_id, obj_or_str
 
 
-@python_2_unicode_compatible
 class User(CanvasObject):
     def __str__(self):
         return "{} ({})".format(self.name, self.id)
@@ -87,7 +81,7 @@ class User(CanvasObject):
 
         if isinstance(migration_type, Migrator):
             kwargs["migration_type"] = migration_type.type
-        elif isinstance(migration_type, string_types):
+        elif isinstance(migration_type, str):
             kwargs["migration_type"] = migration_type
         else:
             raise TypeError("Parameter migration_type must be of type Migrator or str")
@@ -739,142 +733,6 @@ class User(CanvasObject):
             _kwargs=combine_kwargs(**kwargs),
         )
 
-    def list_calendar_events_for_user(self, **kwargs):
-        """
-        List calendar events that the current user can view or manage.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.user.User.get_calendar_events_for_user` instead.
-
-        :calls: `GET /api/v1/users/:user_id/calendar_events \
-        <https://canvas.instructure.com/doc/api/calendar_events.html#method.calendar_events_api.user_index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.calendar_event.CalendarEvent`
-        """
-        warnings.warn(
-            "`list_calendar_events_for_user`"
-            " is being deprecated and will be removed in a future version."
-            " Use `get_calendar_events_for_user` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_calendar_events_for_user(**kwargs)
-
-    def list_communication_channels(self, **kwargs):
-        """
-        List communication channels for the specified user, sorted by
-        position.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.user.User.get_communication_channels` instead.
-
-        :calls: `GET /api/v1/users/:user_id/communication_channels \
-        <https://canvas.instructure.com/doc/api/communication_channels.html#method.communication_channels.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.communication_channel.CommunicationChannel`
-        """
-        warnings.warn(
-            "`list_communication_channels`"
-            " is being deprecated and will be removed in a future version."
-            " Use `get_communication_channels` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_communication_channels(**kwargs)
-
-    def list_files(self, **kwargs):
-        """
-        Returns the paginated list of files for the user.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.user.User.get_files` instead.
-
-        :calls: `GET /api/v1/users/:user_id/files \
-            <https://canvas.instructure.com/doc/api/files.html#method.files.api_index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.file.File`
-        """
-        warnings.warn(
-            "`list_files` is being deprecated and will be removed in a future "
-            "version. Use `get_files` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_files(**kwargs)
-
-    def list_folders(self, **kwargs):
-        """
-        Returns the paginated list of all folders for the given user. This will be returned as a
-        flat list containing all subfolders as well.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.user.User.get_folders` instead.
-
-        :calls: `GET /api/v1/users/:user_id/folders \
-        <https://canvas.instructure.com/doc/api/files.html#method.folders.list_all_folders>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.folder.Folder`
-        """
-        warnings.warn(
-            "`list_folders` is being deprecated and will be removed in a "
-            "future version. Use `get_folders` instead.",
-            DeprecationWarning,
-        )
-
-        return self.get_folders(**kwargs)
-
-    def list_observees(self, **kwargs):
-        """
-        List the users that the given user is observing
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.user.User.get_observees` instead.
-
-        :calls:  `GET /api/v1/users/:user_id/observees \
-        <https://canvas.instructure.com/doc/api/user_observees.html#method.user_observees.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.user.User`
-        """
-        warnings.warn(
-            "`list_observees` is being deprecated and will be removed in a "
-            "future version. Use `get_observees` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_observees(**kwargs)
-
-    def list_user_logins(self, **kwargs):
-        """
-        Given a user ID, return that user's logins for the given account.
-
-        .. warning::
-            .. deprecated:: 0.10.0
-                Use :func:`canvasapi.user.User.get_user_logins` instead.
-
-        :calls: `GET /api/v1/users/:user_id/logins \
-        <https://canvas.instructure.com/doc/api/logins.html#method.pseudonyms.index>`_
-
-        :rtype: :class:`canvasapi.paginated_list.PaginatedList` of
-            :class:`canvasapi.login.Login`
-        """
-        warnings.warn(
-            "`list_user_logins` is being deprecated and will be removed in a future version."
-            " Use `get_user_logins` instead",
-            DeprecationWarning,
-        )
-
-        return self.get_user_logins(**kwargs)
-
     def merge_into(self, destination_user):
         """
         Merge this user into another user.
@@ -1024,7 +882,6 @@ class User(CanvasObject):
         ).start()
 
 
-@python_2_unicode_compatible
 class UserDisplay(CanvasObject):
     def __str__(self):
         return "{}".format(self.display_name)
diff --git a/canvasapi/util.py b/canvasapi/util.py
index 5e82d57..21c2a02 100644
--- a/canvasapi/util.py
+++ b/canvasapi/util.py
@@ -1,9 +1,5 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
 import os
 
-from six import binary_type, string_types, text_type
-
 
 def is_multivalued(value):
     """
@@ -20,7 +16,7 @@ def is_multivalued(value):
     """
 
     # special cases: iterable, but not multivalued
-    if isinstance(value, (string_types, binary_type)):
+    if isinstance(value, (str, bytes)):
         return False
 
     # general rule: multivalued if iterable
@@ -59,7 +55,7 @@ def combine_kwargs(**kwargs):
                 for tup in flatten_kwarg("", i):
                     combined_kwargs.append(("{}{}".format(kw, tup[0]), tup[1]))
         else:
-            combined_kwargs.append((text_type(kw), arg))
+            combined_kwargs.append((str(kw), arg))
 
     return combined_kwargs
 
@@ -99,7 +95,7 @@ def flatten_kwarg(key, obj):
         return new_list
     else:
         # Base case. Return list with tuple containing the value
-        return [("[{}]".format(text_type(key)), obj)]
+        return [("[{}]".format(str(key)), obj)]
 
 
 def obj_or_id(parameter, param_name, object_types):
@@ -151,16 +147,16 @@ def obj_or_str(obj, attr, object_types):
     :rtype: str
     """
     try:
-        return text_type(getattr(obj, attr))
+        return str(getattr(obj, attr))
     except (AttributeError, TypeError):
-        if not isinstance(attr, string_types):
+        if not isinstance(attr, str):
             raise TypeError(
                 "Atttibute parameter {} must be of type string".format(attr)
             )
         for obj_type in object_types:
             if isinstance(obj, obj_type):
                 try:
-                    return text_type(getattr(obj, attr))
+                    return str(getattr(obj, attr))
                 except AttributeError:
                     raise AttributeError("{} object does not have {} attribute").format(
                         obj, attr
@@ -178,13 +174,8 @@ def get_institution_url(base_url):
     :type base_url: str
     :rtype: str
     """
-    base_url = base_url.rstrip("/")
-    index = base_url.find("/api/v1")
-
-    if index != -1:
-        return base_url[0:index]
-
-    return base_url
+    base_url = base_url.strip()
+    return base_url.rstrip("/")
 
 
 def file_or_path(file):
@@ -199,7 +190,7 @@ def file_or_path(file):
     """
 
     is_path = False
-    if isinstance(file, string_types):
+    if isinstance(file, str):
         if not os.path.exists(file):
             raise IOError("File at path " + file + " does not exist.")
         file = open(file, "rb")
diff --git a/requirements.txt b/requirements.txt
index 17b9be8..03c5fdd 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,3 +1,2 @@
 pytz
 requests
-six
diff --git a/scripts/alphabetic.py b/scripts/alphabetic.py
index 9c66f29..7d76566 100644
--- a/scripts/alphabetic.py
+++ b/scripts/alphabetic.py
@@ -1,5 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
 import inspect
 import operator
 import os
diff --git a/scripts/validate_docstrings.py b/scripts/validate_docstrings.py
index 932d96d..4cf4b2e 100644
--- a/scripts/validate_docstrings.py
+++ b/scripts/validate_docstrings.py
@@ -1,5 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
 import inspect
 import os
 import re
diff --git a/setup.py b/setup.py
index 55cdb0b..1a2e7f1 100644
--- a/setup.py
+++ b/setup.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import re
 from setuptools import setup
 
@@ -23,7 +22,7 @@ setup(
     license='MIT License',
     packages=['canvasapi'],
     include_package_data=True,
-    install_requires=['pytz', 'requests', 'six'],
+    install_requires=['pytz', 'requests'],
     zip_safe=False,
     classifiers=[
         'Development Status :: 3 - Alpha',
@@ -33,11 +32,9 @@ setup(
         'License :: OSI Approved :: MIT License',
         'Operating System :: OS Independent',
         'Programming Language :: Python',
-        'Programming Language :: Python :: 2.7',
-        'Programming Language :: Python :: 3.4',
-        'Programming Language :: Python :: 3.5',
         'Programming Language :: Python :: 3.6',
         'Programming Language :: Python :: 3.7',
+        'Programming Language :: Python :: 3.8',
         'Topic :: Software Development :: Libraries',
     ],
 )


Test patch:
diff --git a/tests/fixtures/submission.json b/tests/fixtures/submission.json
index 2208e20..1bba6eb 100644
--- a/tests/fixtures/submission.json
+++ b/tests/fixtures/submission.json
@@ -51,18 +51,6 @@
 		},
 		"status_code": 200
 	},
-	"get_by_id_section": {
-		"method": "GET",
-		"endpoint": "sections/1/assignments/1/submissions/1",
-		"data": {
-				"id": 1,
-				"assignment_id": 1,
-				"user_id": 1,
-				"html_url": "https://example.com/sections/1/assignments/1/submissions/1",
-				"submission_type": "online_upload"
-		},
-		"status_code": 200
-	},
 	"get_times": {
 		"method": "GET",
 		"endpoint": "courses/1/quizzes/1/submissions/1/time",
diff --git a/tests/settings.py b/tests/settings.py
index 679cc11..a817f9f 100644
--- a/tests/settings.py
+++ b/tests/settings.py
@@ -1,5 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
 BASE_URL = "https://example.com"
 BASE_URL_GRAPHQL = "https://example.com/api/"
 BASE_URL_WITH_VERSION = "https://example.com/api/v1/"
diff --git a/tests/test_account.py b/tests/test_account.py
index d3b3657..160491b 100644
--- a/tests/test_account.py
+++ b/tests/test_account.py
@@ -1,8 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import datetime
 import pytz
 import unittest
-import warnings
 
 import requests_mock
 
@@ -382,23 +380,6 @@ class TestAccount(unittest.TestCase):
 
         self.assertFalse(self.account.update(account=update_account_dict))
 
-    # list_roles()
-    def test_list_roles(self, m):
-        requires = {"account": ["get_roles", "get_roles_2"]}
-        register_uris(requires, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            roles = self.account.list_roles()
-            role_list = [role for role in roles]
-
-            self.assertEqual(len(role_list), 4)
-            self.assertIsInstance(role_list[0], Role)
-            self.assertTrue(hasattr(role_list[0], "role"))
-            self.assertTrue(hasattr(role_list[0], "label"))
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_roles()
     def test_get_roles(self, m):
         requires = {"account": ["get_roles", "get_roles_2"]}
@@ -482,21 +463,6 @@ class TestAccount(unittest.TestCase):
         enrollment_by_obj = self.account.get_enrollment(enrollment_by_id)
         self.assertIsInstance(enrollment_by_obj, Enrollment)
 
-    # list_groups()
-    def test_list_groups(self, m):
-        requires = {"account": ["get_groups_context", "get_groups_context2"]}
-        register_uris(requires, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            groups = self.account.list_groups()
-            group_list = [group for group in groups]
-
-            self.assertIsInstance(group_list[0], Group)
-            self.assertEqual(len(group_list), 4)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_groups()
     def test_get_groups(self, m):
         requires = {"account": ["get_groups_context", "get_groups_context2"]}
@@ -516,19 +482,6 @@ class TestAccount(unittest.TestCase):
         response = self.account.create_group_category(name=name_str)
         self.assertIsInstance(response, GroupCategory)
 
-    # list_group_categories()
-    def test_list_group_categories(self, m):
-        register_uris({"account": ["get_group_categories"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            response = self.account.list_group_categories()
-            category_list = [category for category in response]
-
-            self.assertIsInstance(category_list[0], GroupCategory)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_group_categories()
     def test_get_group_categories(self, m):
         register_uris({"account": ["get_group_categories"]}, m)
@@ -563,19 +516,6 @@ class TestAccount(unittest.TestCase):
         self.assertEqual(evnt.name, "Test Enrollment Term")
         self.assertEqual(evnt.id, 45)
 
-    # list_enrollment_terms()
-    def test_list_enrollment_terms(self, m):
-        register_uris({"account": ["get_enrollment_terms"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            response = self.account.list_enrollment_terms()
-            enrollment_terms_list = [category for category in response]
-
-            self.assertIsInstance(enrollment_terms_list[0], EnrollmentTerm)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_enrollment_term()
     def test_get_enrollment_term(self, m):
         register_uris({"account": ["get_enrollment_term"]}, m)
@@ -598,21 +538,6 @@ class TestAccount(unittest.TestCase):
 
         self.assertIsInstance(enrollment_terms_list[0], EnrollmentTerm)
 
-    # list_user_logins()
-    def test_list_user_logins(self, m):
-        requires = {"account": ["get_user_logins", "get_user_logins_2"]}
-        register_uris(requires, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            response = self.account.list_user_logins()
-            login_list = [login for login in response]
-
-            self.assertIsInstance(login_list[0], Login)
-            self.assertEqual(len(login_list), 2)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_user_logins()
     def test_get_user_logins(self, m):
         requires = {"account": ["get_user_logins", "get_user_logins_2"]}
@@ -732,33 +657,6 @@ class TestAccount(unittest.TestCase):
 
         self.assertIsInstance(response, list)
 
-    # list_authentication_providers()
-    def test_list_authentication_providers(self, m):
-        requires = {
-            "account": [
-                "list_authentication_providers",
-                "list_authentication_providers_2",
-            ]
-        }
-        register_uris(requires, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            authentication_providers = self.account.list_authentication_providers()
-            authentication_providers_list = [
-                authentication_provider
-                for authentication_provider in authentication_providers
-            ]
-
-            self.assertEqual(len(authentication_providers_list), 4)
-            self.assertIsInstance(
-                authentication_providers_list[0], AuthenticationProvider
-            )
-            self.assertTrue(hasattr(authentication_providers_list[0], "auth_type"))
-            self.assertTrue(hasattr(authentication_providers_list[0], "position"))
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_authentication_providers()
     def test_get_authentication_providers(self, m):
         requires = {
@@ -938,25 +836,6 @@ class TestAccount(unittest.TestCase):
         self.assertEqual(rubric.id, rubric_id)
         self.assertEqual(rubric.title, "Account Rubric 1")
 
-    # list_rubrics
-    def test_list_rubrics(self, m):
-        register_uris({"account": ["get_rubric_multiple"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            rubrics = self.account.list_rubrics()
-
-            self.assertEqual(len(list(rubrics)), 2)
-
-            self.assertIsInstance(rubrics[0], Rubric)
-            self.assertEqual(rubrics[0].id, 1)
-            self.assertEqual(rubrics[0].title, "Account Rubric 1")
-            self.assertIsInstance(rubrics[1], Rubric)
-            self.assertEqual(rubrics[1].id, 2)
-            self.assertEqual(rubrics[1].title, "Account Rubric 2")
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_rubrics
     def test_get_rubrics(self, m):
         register_uris({"account": ["get_rubric_multiple"]}, m)
diff --git a/tests/test_appointment_group.py b/tests/test_appointment_group.py
index bdde56e..61ed903 100644
--- a/tests/test_appointment_group.py
+++ b/tests/test_appointment_group.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_assignment.py b/tests/test_assignment.py
index 3ddab02..7f96109 100644
--- a/tests/test_assignment.py
+++ b/tests/test_assignment.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 import uuid
 
diff --git a/tests/test_authentication_event.py b/tests/test_authentication_event.py
index 2849060..415bccc 100644
--- a/tests/test_authentication_event.py
+++ b/tests/test_authentication_event.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_authentication_providers.py b/tests/test_authentication_providers.py
index e2e0203..ff7fda4 100644
--- a/tests/test_authentication_providers.py
+++ b/tests/test_authentication_providers.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_bookmark.py b/tests/test_bookmark.py
index 3f623f4..e984882 100644
--- a/tests/test_bookmark.py
+++ b/tests/test_bookmark.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_calendar_event.py b/tests/test_calendar_event.py
index 2ef823a..2254806 100644
--- a/tests/test_calendar_event.py
+++ b/tests/test_calendar_event.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_canvas.py b/tests/test_canvas.py
index 625f380..c21c56d 100644
--- a/tests/test_canvas.py
+++ b/tests/test_canvas.py
@@ -1,12 +1,9 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
 import unittest
 import warnings
 from datetime import datetime
 
 import pytz
 import requests_mock
-from six import text_type
 
 from canvasapi import Canvas
 from canvasapi.account import Account
@@ -36,12 +33,11 @@ class TestCanvas(unittest.TestCase):
 
     # Canvas()
     def test_init_deprecate_url_contains_version(self, m):
-        with warnings.catch_warnings(record=True) as w:
-            client = Canvas(settings.BASE_URL_WITH_VERSION, settings.API_KEY)
-            self.assertEqual(
-                client._Canvas__requester.base_url, "https://example.com/api/v1/"
-            )
-            self.assertTrue(issubclass(w[0].category, DeprecationWarning))
+        with self.assertRaises(
+            ValueError,
+            msg="`base_url` should not specify an API version. Remove trailing /api/v1/",
+        ):
+            Canvas(settings.BASE_URL_WITH_VERSION, settings.API_KEY)
 
     def test_init_warns_when_url_is_http(self, m):
         with warnings.catch_warnings(record=True):
@@ -169,7 +165,7 @@ class TestCanvas(unittest.TestCase):
         course = self.canvas.get_course(2)
 
         self.assertTrue(hasattr(course, "start_at"))
-        self.assertIsInstance(course.start_at, text_type)
+        self.assertIsInstance(course.start_at, str)
         self.assertTrue(hasattr(course, "start_at_date"))
         self.assertIsInstance(course.start_at_date, datetime)
         self.assertEqual(course.start_at_date.tzinfo, pytz.utc)
@@ -501,18 +497,6 @@ class TestCanvas(unittest.TestCase):
         with self.assertRaises(RequiredFieldMissing):
             self.canvas.create_calendar_event({})
 
-    # list_calendar_events()
-    def test_list_calendar_events(self, m):
-        register_uris({"calendar_event": ["list_calendar_events"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            cal_events = self.canvas.list_calendar_events()
-            cal_event_list = [cal_event for cal_event in cal_events]
-            self.assertEqual(len(cal_event_list), 2)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_calendar_events()
     def test_get_calendar_events(self, m):
         register_uris({"calendar_event": ["list_calendar_events"]}, m)
@@ -557,18 +541,6 @@ class TestCanvas(unittest.TestCase):
         self.assertEqual(cal_event.title, "Test Reservation")
         self.assertEqual(cal_event.user, 777)
 
-    # list_appointment_groups()
-    def test_list_appointment_groups(self, m):
-        register_uris({"appointment_group": ["list_appointment_groups"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            appt_groups = self.canvas.list_appointment_groups()
-            appt_groups_list = [appt_group for appt_group in appt_groups]
-            self.assertEqual(len(appt_groups_list), 2)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_appointment_groups()
     def test_get_appointment_groups(self, m):
         register_uris({"appointment_group": ["list_appointment_groups"]}, m)
@@ -611,35 +583,6 @@ class TestCanvas(unittest.TestCase):
         with self.assertRaises(RequiredFieldMissing):
             self.canvas.create_appointment_group({"context_codes": "course_123"})
 
-    # list_user_participants()
-    def test_list_user_participants(self, m):
-        register_uris(
-            {
-                "appointment_group": [
-                    "get_appointment_group_222",
-                    "list_user_participants",
-                ]
-            },
-            m,
-        )
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            users_by_id = self.canvas.list_user_participants(222)
-            users_list_by_id = [user for user in users_by_id]
-            self.assertEqual(len(users_list_by_id), 2)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            appointment_group_for_obj = self.canvas.get_appointment_group(222)
-            users_by_id = self.canvas.list_user_participants(appointment_group_for_obj)
-            users_list_by_id = [user for user in users_by_id]
-            self.assertEqual(len(users_list_by_id), 2)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_user_participants()
     def test_get_user_participants(self, m):
         register_uris(
@@ -661,37 +604,6 @@ class TestCanvas(unittest.TestCase):
         users_get_by_id = [user for user in users_by_id]
         self.assertEqual(len(users_get_by_id), 2)
 
-    # list_group_participants()
-    def test_list_group_participants(self, m):
-        register_uris(
-            {
-                "appointment_group": [
-                    "get_appointment_group_222",
-                    "list_group_participants",
-                ]
-            },
-            m,
-        )
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            groups_by_id = self.canvas.list_group_participants(222)
-            groups_list_by_id = [group for group in groups_by_id]
-            self.assertEqual(len(groups_list_by_id), 2)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            appointment_group_for_obj = self.canvas.get_appointment_group(222)
-            groups_by_obj = self.canvas.list_group_participants(
-                appointment_group_for_obj
-            )
-            groups_list_by_obj = [group for group in groups_by_obj]
-            self.assertEqual(len(groups_list_by_obj), 2)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_group_participants()
     def test_get_group_participants(self, m):
         register_uris(
diff --git a/tests/test_canvas_object.py b/tests/test_canvas_object.py
index 405f295..23f8018 100644
--- a/tests/test_canvas_object.py
+++ b/tests/test_canvas_object.py
@@ -1,30 +1,5 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
-import warnings
-
-from canvasapi.canvas_object import CanvasObject
 
 
 class TestCanvasObject(unittest.TestCase):
-
-    # to_json()
-    def test_canvas_object_to_json(self):
-        warnings.simplefilter("always", DeprecationWarning)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            attributes = {"name": "Test Object", "id": 1}
-            canvas_obj = CanvasObject(None, attributes)
-
-            prev_json = canvas_obj.to_json()
-            self.assertIsInstance(prev_json, str)
-
-            attributes.update({"name": "Test Object 2"})
-            canvas_obj.set_attributes(attributes)
-
-            self.assertNotEqual(canvas_obj.to_json(), prev_json)
-
-        self.assertEqual(len(warning_list), 4)
-        self.assertEqual(warning_list[0].category, DeprecationWarning)
-        self.assertEqual(warning_list[1].category, DeprecationWarning)
-        self.assertEqual(warning_list[2].category, DeprecationWarning)
-        self.assertEqual(warning_list[3].category, DeprecationWarning)
+    pass
diff --git a/tests/test_collaboration.py b/tests/test_collaboration.py
index 8b9ffaf..59eef6f 100644
--- a/tests/test_collaboration.py
+++ b/tests/test_collaboration.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_comm_messages.py b/tests/test_comm_messages.py
index 05d99de..885aa13 100644
--- a/tests/test_comm_messages.py
+++ b/tests/test_comm_messages.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_communication_channel.py b/tests/test_communication_channel.py
index 203ede3..d97b813 100644
--- a/tests/test_communication_channel.py
+++ b/tests/test_communication_channel.py
@@ -1,8 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
-import warnings
 
 from canvasapi import Canvas
 from canvasapi.notification_preference import NotificationPreference
@@ -26,20 +24,6 @@ class TestCommunicationChannel(unittest.TestCase):
         string = str(self.comm_chan)
         self.assertIsInstance(string, str)
 
-    # list_preferences()
-    def test_list_preferences(self, m):
-        register_uris({"communication_channel": ["list_preferences"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            preferences = self.comm_chan.list_preferences()
-            preference_list = [preference for preference in preferences]
-
-            self.assertEqual(len(preference_list), 2)
-            self.assertEqual(preference_list[0]["notification"], "new_announcement")
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_preferences()
     def test_get_preferences(self, m):
         register_uris({"communication_channel": ["list_preferences"]}, m)
@@ -50,20 +34,6 @@ class TestCommunicationChannel(unittest.TestCase):
         self.assertEqual(len(preference_list), 2)
         self.assertEqual(preference_list[0]["notification"], "new_announcement")
 
-    # list_preference_categories()
-    def test_list_preference_categories(self, m):
-        register_uris({"communication_channel": ["list_preference_categories"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            categories = self.comm_chan.list_preference_categories()
-
-            self.assertEqual(len(categories), 2)
-            self.assertIsInstance(categories, list)
-            self.assertEqual(categories[0], "announcement")
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_preference_categories()
     def test_get_preference_categories(self, m):
         register_uris({"communication_channel": ["list_preference_categories"]}, m)
diff --git a/tests/test_content_export.py b/tests/test_content_export.py
index 22887db..92ab224 100644
--- a/tests/test_content_export.py
+++ b/tests/test_content_export.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_content_migration.py b/tests/test_content_migration.py
index 59b757f..8a81a22 100644
--- a/tests/test_content_migration.py
+++ b/tests/test_content_migration.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_conversation.py b/tests/test_conversation.py
index aeee216..fcec1c2 100644
--- a/tests/test_conversation.py
+++ b/tests/test_conversation.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_course.py b/tests/test_course.py
index 43cd36b..78027cb 100644
--- a/tests/test_course.py
+++ b/tests/test_course.py
@@ -1,12 +1,9 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
+from urllib.parse import quote
 import uuid
-import warnings
 
 import requests
 import requests_mock
-from six import text_type
-from six.moves.urllib.parse import quote
 
 from canvasapi import Canvas
 from canvasapi.assignment import Assignment, AssignmentGroup, AssignmentOverride
@@ -43,7 +40,6 @@ from canvasapi.section import Section
 from canvasapi.submission import GroupedSubmission, Submission
 from canvasapi.tab import Tab
 from canvasapi.user import User
-from canvasapi.user import UserDisplay
 from canvasapi.usage_rights import UsageRights
 from canvasapi.content_migration import ContentMigration, Migrator
 from canvasapi.content_export import ContentExport
@@ -54,8 +50,6 @@ from tests.util import cleanup_file, register_uris
 @requests_mock.Mocker()
 class TestCourse(unittest.TestCase):
     def setUp(self):
-        warnings.simplefilter("always", DeprecationWarning)
-
         self.canvas = Canvas(settings.BASE_URL, settings.API_KEY)
 
         with requests_mock.Mocker() as m:
@@ -224,7 +218,7 @@ class TestCourse(unittest.TestCase):
         html_str = "<script></script><p>hello</p>"
         prev_html = self.course.preview_html(html_str)
 
-        self.assertIsInstance(prev_html, text_type)
+        self.assertIsInstance(prev_html, str)
         self.assertEqual(prev_html, "<p>hello</p>")
 
     # get_settings()
@@ -627,19 +621,6 @@ class TestCourse(unittest.TestCase):
         self.assertIsInstance(tool_list[0], ExternalTool)
         self.assertEqual(len(tool_list), 4)
 
-    def test_list_sections(self, m):
-        register_uris({"course": ["get_sections", "get_sections_p2"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            sections = self.course.list_sections()
-            section_list = [sect for sect in sections]
-
-            self.assertEqual(len(section_list), 4)
-            self.assertIsInstance(section_list[0], Section)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     def test_create_course_section(self, m):
         register_uris({"course": ["create_section"]}, m)
 
@@ -647,21 +628,6 @@ class TestCourse(unittest.TestCase):
 
         self.assertIsInstance(section, Section)
 
-    # list_groups()
-    def test_list_groups(self, m):
-        requires = {"course": ["list_groups_context", "list_groups_context2"]}
-        register_uris(requires, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            groups = self.course.list_groups()
-            group_list = [group for group in groups]
-
-            self.assertIsInstance(group_list[0], Group)
-            self.assertEqual(len(group_list), 4)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_gradebook_history_dates()
     def test_get_gradebook_history_dates(self, m):
         register_uris({"course": ["get_gradebook_history_dates"]}, m)
@@ -703,18 +669,6 @@ class TestCourse(unittest.TestCase):
         response = self.course.create_group_category(name=name_str)
         self.assertIsInstance(response, GroupCategory)
 
-    # list_group_categories()
-    def test_list_group_categories(self, m):
-        register_uris({"course": ["list_group_categories"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            response = self.course.list_group_categories()
-            category_list = [category for category in response]
-            self.assertIsInstance(category_list[0], GroupCategory)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_group_categories()
     def test_get_group_categories(self, m):
         register_uris({"course": ["list_group_categories"]}, m)
@@ -890,24 +844,6 @@ class TestCourse(unittest.TestCase):
             self.assertTrue(hasattr(assignment, "description"))
             self.assertEqual(assignment.course_id, self.course.id)
 
-    # list_assignment_groups()
-    def test_list_assignment_groups(self, m):
-        register_uris(
-            {"assignment": ["list_assignment_groups", "get_assignment_group"]}, m
-        )
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            response = self.course.list_assignment_groups()
-            asnt_group_list = [assignment_group for assignment_group in response]
-            self.assertIsInstance(asnt_group_list[0], AssignmentGroup)
-            self.assertTrue(hasattr(asnt_group_list[0], "id"))
-            self.assertTrue(hasattr(asnt_group_list[0], "name"))
-            self.assertTrue(hasattr(asnt_group_list[0], "course_id"))
-            self.assertEqual(asnt_group_list[0].course_id, 1)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_assignment_groups()
     def test_get_assignment_groups(self, m):
         register_uris(
@@ -1017,80 +953,6 @@ class TestCourse(unittest.TestCase):
         response = self.course.get_user_in_a_course_level_messaging_data(self.user)
         self.assertIsInstance(response, list)
 
-    # submit_assignment()
-    def test_submit_assignment(self, m):
-        register_uris({"assignment": ["submit"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            assignment_id = 1
-            sub_type = "online_upload"
-            sub_dict = {"submission_type": sub_type}
-            submission_by_id = self.course.submit_assignment(assignment_id, sub_dict)
-
-            self.assertIsInstance(submission_by_id, Submission)
-            self.assertTrue(hasattr(submission_by_id, "submission_type"))
-            self.assertEqual(submission_by_id.submission_type, sub_type)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            submission_by_obj = self.course.submit_assignment(self.assignment, sub_dict)
-
-            self.assertIsInstance(submission_by_obj, Submission)
-            self.assertTrue(hasattr(submission_by_obj, "submission_type"))
-            self.assertEqual(submission_by_obj.submission_type, sub_type)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-    def test_submit_assignment_fail(self, m):
-        with warnings.catch_warnings(record=True) as warning_list:
-            with self.assertRaises(RequiredFieldMissing):
-                self.course.submit_assignment(1, {})
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-    # list_submissions()
-    def test_list_submissions(self, m):
-        register_uris({"submission": ["list_submissions"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            assignment_id = 1
-            submissions_by_id = self.course.list_submissions(assignment_id)
-            submission_list_by_id = [submission for submission in submissions_by_id]
-
-            self.assertEqual(len(submission_list_by_id), 2)
-            self.assertIsInstance(submission_list_by_id[0], Submission)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            submissions_by_obj = self.course.list_submissions(self.assignment)
-            submission_list_by_obj = [submission for submission in submissions_by_obj]
-
-            self.assertEqual(len(submission_list_by_obj), 2)
-            self.assertIsInstance(submission_list_by_obj[0], Submission)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-    # list_multiple_submission()
-    def test_list_multiple_submissions(self, m):
-        register_uris({"course": ["list_multiple_submissions"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            submissions = self.course.list_multiple_submissions()
-            submission_list = [submission for submission in submissions]
-
-            self.assertEqual(len(submission_list), 2)
-            self.assertIsInstance(submission_list[0], Submission)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_multiple_submission()
     def test_get_multiple_submissions(self, m):
         register_uris({"course": ["list_multiple_submissions"]}, m)
@@ -1125,34 +987,6 @@ class TestCourse(unittest.TestCase):
 
         self.assertIn("Parameter `grouped` must", cm.exception.args[0])
 
-    # get_submission()
-    def test_get_submission(self, m):
-        register_uris(
-            {"course": ["get_assignment_by_id"], "submission": ["get_by_id_course"]}, m
-        )
-
-        assignment_for_id = 1
-        user_id = 1
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            submission_by_id = self.course.get_submission(assignment_for_id, user_id)
-            self.assertIsInstance(submission_by_id, Submission)
-            self.assertTrue(hasattr(submission_by_id, "submission_type"))
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            assignment_for_obj = self.course.get_assignment(1)
-            submission_by_obj = self.course.get_submission(
-                assignment_for_obj, self.user
-            )
-            self.assertIsInstance(submission_by_obj, Submission)
-            self.assertTrue(hasattr(submission_by_obj, "submission_type"))
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_submission_history
     def test_get_submission_history(self, m):
         register_uris({"course": ["get_submission_history"]}, m)
@@ -1163,136 +997,6 @@ class TestCourse(unittest.TestCase):
         self.assertIsInstance(sub_list[0], SubmissionHistory)
         self.assertIsInstance(sub_list[1], SubmissionHistory)
 
-    # update_submission()
-    def test_update_submission(self, m):
-        register_uris(
-            {
-                "course": ["get_assignment_by_id"],
-                "submission": ["edit", "get_by_id_course"],
-            },
-            m,
-        )
-
-        assignment_for_id = 1
-        user_id = 1
-        with warnings.catch_warnings(record=True) as warning_list:
-            submission = self.course.update_submission(
-                assignment_for_id, user_id, submission={"excuse": True}
-            )
-            self.assertIsInstance(submission, Submission)
-            self.assertTrue(hasattr(submission, "excused"))
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        assignment_for_obj = self.course.get_assignment(1)
-        with warnings.catch_warnings(record=True) as warning_list:
-            submission = self.course.update_submission(
-                assignment_for_obj, self.user, submission={"excuse": True}
-            )
-            self.assertIsInstance(submission, Submission)
-            self.assertTrue(hasattr(submission, "excused"))
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-    # list_gradeable_students()
-    def test_list_gradeable_students(self, m):
-        register_uris(
-            {"course": ["get_assignment_by_id", "list_gradeable_students"]}, m
-        )
-
-        assignment_for_id = 1
-        with warnings.catch_warnings(record=True) as warning_list:
-            students_by_id = self.course.list_gradeable_students(assignment_for_id)
-            student_list_by_id = [student for student in students_by_id]
-
-            self.assertEqual(len(student_list_by_id), 2)
-            self.assertIsInstance(student_list_by_id[0], UserDisplay)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        assignment_for_obj = self.course.get_assignment(1)
-        with warnings.catch_warnings(record=True) as warning_list:
-            students_by_id = self.course.list_gradeable_students(assignment_for_obj)
-            student_list_by_id = [student for student in students_by_id]
-
-            self.assertEqual(len(student_list_by_id), 2)
-            self.assertIsInstance(student_list_by_id[0], UserDisplay)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-    # mark_submission_as_read
-    def test_mark_submission_as_read(self, m):
-        register_uris(
-            {"course": ["get_assignment_by_id", "mark_submission_as_read"]}, m
-        )
-
-        assignment_for_id = 1
-        user_for_id = 1
-        with warnings.catch_warnings(record=True) as warning_list:
-            submission_by_id = self.course.mark_submission_as_read(
-                assignment_for_id, user_for_id
-            )
-            self.assertTrue(submission_by_id)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        assignment_for_obj = self.course.get_assignment(1)
-        with warnings.catch_warnings(record=True) as warning_list:
-            submission_by_obj = self.course.mark_submission_as_read(
-                assignment_for_obj, self.user
-            )
-            self.assertTrue(submission_by_obj)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-    # mark_submission_as_unread
-    def test_mark_submission_as_unread(self, m):
-        register_uris(
-            {"course": ["get_assignment_by_id", "mark_submission_as_unread"]}, m
-        )
-
-        assignment_for_id = 1
-        user_for_id = 1
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            submission_by_id = self.course.mark_submission_as_unread(
-                assignment_for_id, user_for_id
-            )
-            self.assertTrue(submission_by_id)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        assignment_for_obj = self.course.get_assignment(1)
-        with warnings.catch_warnings(record=True) as warning_list:
-            submission_by_obj = self.course.mark_submission_as_unread(
-                assignment_for_obj, self.user
-            )
-            self.assertTrue(submission_by_obj)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-    # list_external_feeds()
-    def test_list_external_feeds(self, m):
-        register_uris({"course": ["list_external_feeds"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            feeds = self.course.list_external_feeds()
-            feed_list = [feed for feed in feeds]
-            self.assertEqual(len(feed_list), 2)
-            self.assertTrue(hasattr(feed_list[0], "url"))
-            self.assertIsInstance(feed_list[0], ExternalFeed)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_external_feeds()
     def test_get_external_feeds(self, m):
         register_uris({"course": ["list_external_feeds"]}, m)
@@ -1326,19 +1030,6 @@ class TestCourse(unittest.TestCase):
         self.assertTrue(hasattr(deleted_ef_by_obj, "url"))
         self.assertEqual(deleted_ef_by_obj.display_name, "My Blog")
 
-    # list_files()
-    def test_list_files(self, m):
-        register_uris({"course": ["list_course_files", "list_course_files2"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            files = self.course.list_files()
-            file_list = [file for file in files]
-            self.assertEqual(len(file_list), 4)
-            self.assertIsInstance(file_list[0], File)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_files()
     def test_get_files(self, m):
         register_uris({"course": ["list_course_files", "list_course_files2"]}, m)
@@ -1360,19 +1051,6 @@ class TestCourse(unittest.TestCase):
         self.assertEqual(folder_by_obj.name, "Folder 1")
         self.assertIsInstance(folder_by_obj, Folder)
 
-    # list_folders()
-    def test_list_folders(self, m):
-        register_uris({"course": ["list_folders"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            folders = self.course.list_folders()
-            folder_list = [folder for folder in folders]
-            self.assertEqual(len(folder_list), 2)
-            self.assertIsInstance(folder_list[0], Folder)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_folders()
     def test_get_folders(self, m):
         register_uris({"course": ["list_folders"]}, m)
@@ -1390,19 +1068,6 @@ class TestCourse(unittest.TestCase):
         response = self.course.create_folder(name=name_str)
         self.assertIsInstance(response, Folder)
 
-    # list_tabs()
-    def test_list_tabs(self, m):
-        register_uris({"course": ["list_tabs"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            tabs = self.course.list_tabs()
-            tab_list = [tab for tab in tabs]
-            self.assertEqual(len(tab_list), 2)
-            self.assertIsInstance(tab_list[0], Tab)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_tabs()
     def test_get_tabs(self, m):
         register_uris({"course": ["list_tabs"]}, m)
@@ -1412,22 +1077,6 @@ class TestCourse(unittest.TestCase):
         self.assertEqual(len(tab_list), 2)
         self.assertIsInstance(tab_list[0], Tab)
 
-    # update_tab()
-    def test_update_tab(self, m):
-        register_uris({"course": ["update_tab"]}, m)
-
-        tab_id = "pages"
-        new_position = 3
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            tab = self.course.update_tab(tab_id, position=new_position)
-
-            self.assertIsInstance(tab, Tab)
-            self.assertEqual(tab.position, 3)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_rubric
     def test_get_rubric(self, m):
         register_uris({"course": ["get_rubric_single"]}, m)
@@ -1439,25 +1088,6 @@ class TestCourse(unittest.TestCase):
         self.assertEqual(rubric.id, rubric_id)
         self.assertEqual(rubric.title, "Course Rubric 1")
 
-    # list_rubrics
-    def test_list_rubrics(self, m):
-        register_uris({"course": ["get_rubric_multiple"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            rubrics = self.course.list_rubrics()
-
-            self.assertEqual(len(list(rubrics)), 2)
-
-            self.assertIsInstance(rubrics[0], Rubric)
-            self.assertEqual(rubrics[0].id, 1)
-            self.assertEqual(rubrics[0].title, "Course Rubric 1")
-            self.assertIsInstance(rubrics[1], Rubric)
-            self.assertEqual(rubrics[1].id, 2)
-            self.assertEqual(rubrics[1].title, "Course Rubric 2")
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_rubrics
     def test_get_rubrics(self, m):
         register_uris({"course": ["get_rubric_multiple"]}, m)
diff --git a/tests/test_course_epub_export.py b/tests/test_course_epub_export.py
index 9265cf7..6b7d36d 100644
--- a/tests/test_course_epub_export.py
+++ b/tests/test_course_epub_export.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_current_user.py b/tests/test_current_user.py
index 09b1ef7..ea46414 100644
--- a/tests/test_current_user.py
+++ b/tests/test_current_user.py
@@ -1,8 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
-import warnings
 
 from canvasapi import Canvas
 from canvasapi.bookmark import Bookmark
@@ -26,20 +24,6 @@ class TestCurrentUser(unittest.TestCase):
         string = str(self.user)
         self.assertIsInstance(string, str)
 
-    # list_groups()
-    def test_list_groups(self, m):
-        register_uris({"current_user": ["list_groups", "list_groups2"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            groups = self.user.list_groups()
-            group_list = [group for group in groups]
-
-            self.assertEqual(len(group_list), 4)
-            self.assertIsInstance(group_list[0], Group)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_groups()
     def test_get_groups(self, m):
         register_uris({"current_user": ["list_groups", "list_groups2"]}, m)
@@ -50,19 +34,6 @@ class TestCurrentUser(unittest.TestCase):
         self.assertEqual(len(group_list), 4)
         self.assertIsInstance(group_list[0], Group)
 
-    # list_bookmarks()
-    def test_list_bookmarks(self, m):
-        register_uris({"bookmark": ["list_bookmarks"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            bookmarks = self.user.list_bookmarks()
-            bookmark_list = [bookmark for bookmark in bookmarks]
-            self.assertEqual(len(bookmark_list), 2)
-            self.assertIsInstance(bookmark_list[0], Bookmark)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_bookmarks()
     def test_get_bookmarks(self, m):
         register_uris({"bookmark": ["list_bookmarks"]}, m)
diff --git a/tests/test_discussion_topic.py b/tests/test_discussion_topic.py
index 1c2a819..7c1dea4 100644
--- a/tests/test_discussion_topic.py
+++ b/tests/test_discussion_topic.py
@@ -1,8 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
-import warnings
 
 from canvasapi import Canvas
 from canvasapi.course import Course
@@ -58,24 +56,6 @@ class TestDiscussionTopic(unittest.TestCase):
         entry = self.discussion_topic.post_entry()
         self.assertTrue(entry)
 
-    # list_topic_entries()
-    def test_list_topic_entries(self, m):
-        register_uris({"discussion_topic": ["list_topic_entries"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            entries = self.discussion_topic.list_topic_entries()
-            entry_list = [entry for entry in entries]
-            self.assertEqual(len(entry_list), 2)
-
-            self.assertIsInstance(entry_list[0], DiscussionEntry)
-            self.assertTrue(hasattr(entry_list[0], "id"))
-            self.assertEqual(entry_list[0].id, 1)
-            self.assertTrue(hasattr(entry_list[0], "user_id"))
-            self.assertEqual(entry_list[0].user_id, 1)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_topic_entries()
     def test_get_topic_entries(self, m):
         register_uris({"discussion_topic": ["list_topic_entries"]}, m)
@@ -90,40 +70,6 @@ class TestDiscussionTopic(unittest.TestCase):
         self.assertTrue(hasattr(entry_list[0], "user_id"))
         self.assertEqual(entry_list[0].user_id, 1)
 
-    # list_entries()
-    def test_list_entries(self, m):
-        register_uris({"discussion_topic": ["list_entries"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            entries_by_id = self.discussion_topic.list_entries([1, 2, 3])
-            entry_list_by_id = [entry for entry in entries_by_id]
-            self.assertTrue(len(entry_list_by_id), 3)
-
-            entry_by_id = entry_list_by_id[-1]
-            self.assertIsInstance(entry_by_id, DiscussionEntry)
-            self.assertTrue(hasattr(entry_by_id, "id"))
-            self.assertEqual(entry_by_id.id, 3)
-            self.assertTrue(hasattr(entry_by_id, "message"))
-            self.assertEqual(entry_by_id.message, "Lower level entry")
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            entries_by_obj = self.discussion_topic.list_entries(entries_by_id)
-            entry_list_by_obj = [entry for entry in entries_by_obj]
-            self.assertTrue(len(entry_list_by_obj), 3)
-
-            entry_by_obj = entry_list_by_obj[-1]
-            self.assertIsInstance(entry_by_obj, DiscussionEntry)
-            self.assertTrue(hasattr(entry_by_obj, "id"))
-            self.assertEqual(entry_by_obj.id, 3)
-            self.assertTrue(hasattr(entry_by_obj, "message"))
-            self.assertEqual(entry_by_obj.message, "Lower level entry")
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_entries()
     def test_get_entries(self, m):
         register_uris({"discussion_topic": ["list_entries"]}, m)
@@ -353,25 +299,6 @@ class TestDiscussionEntry(unittest.TestCase):
         self.assertEqual(reply.message, message)
         self.assertTrue(hasattr(reply, "created_at"))
 
-    # list_replies()
-    def test_list_replies(self, m):
-        register_uris({"discussion_topic": ["list_entry_replies"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            replies = self.discussion_entry.list_replies()
-            reply_list = [reply for reply in replies]
-            self.assertTrue(len(reply_list), 5)
-
-            reply = reply_list[0]
-            self.assertIsInstance(reply, DiscussionEntry)
-            self.assertTrue(hasattr(reply, "id"))
-            self.assertEqual(reply.id, 5)
-            self.assertTrue(hasattr(reply, "message"))
-            self.assertEqual(reply.message, "Reply message 1")
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_replies()
     def test_get_replies(self, m):
         register_uris({"discussion_topic": ["list_entry_replies"]}, m)
diff --git a/tests/test_enrollment.py b/tests/test_enrollment.py
index 231cf02..111cf5d 100644
--- a/tests/test_enrollment.py
+++ b/tests/test_enrollment.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_enrollment_term.py b/tests/test_enrollment_term.py
index f4c0ef0..a8380a6 100644
--- a/tests/test_enrollment_term.py
+++ b/tests/test_enrollment_term.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_external_feed.py b/tests/test_external_feed.py
index c14fb01..dc892e6 100644
--- a/tests/test_external_feed.py
+++ b/tests/test_external_feed.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_external_tool.py b/tests/test_external_tool.py
index 309bb15..8e69b89 100644
--- a/tests/test_external_tool.py
+++ b/tests/test_external_tool.py
@@ -1,8 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
-from six import text_type
 
 from canvasapi import Canvas
 from canvasapi.account import Account
@@ -93,9 +91,7 @@ class TestExternalTool(unittest.TestCase):
         requires = {"external_tool": ["get_sessionless_launch_url_course"]}
         register_uris(requires, m)
 
-        self.assertIsInstance(
-            self.ext_tool_course.get_sessionless_launch_url(), text_type
-        )
+        self.assertIsInstance(self.ext_tool_course.get_sessionless_launch_url(), str)
 
     def test_get_sessionless_launch_url_no_url(self, m):
         requires = {
diff --git a/tests/test_favorite.py b/tests/test_favorite.py
index 71e0544..7a49114 100644
--- a/tests/test_favorite.py
+++ b/tests/test_favorite.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_feature.py b/tests/test_feature.py
index 507bdbd..f2ef4bb 100644
--- a/tests/test_feature.py
+++ b/tests/test_feature.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_file.py b/tests/test_file.py
index a5b32d8..45df8df 100644
--- a/tests/test_file.py
+++ b/tests/test_file.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 from os.path import isfile
 
diff --git a/tests/test_folder.py b/tests/test_folder.py
index c750dc3..a7c1df3 100644
--- a/tests/test_folder.py
+++ b/tests/test_folder.py
@@ -1,9 +1,7 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 import uuid
 
 import requests_mock
-import warnings
 
 from canvasapi import Canvas
 from canvasapi.file import File
@@ -27,19 +25,6 @@ class TestFolder(unittest.TestCase):
         string = str(self.folder)
         self.assertIsInstance(string, str)
 
-    # list_files()
-    def test_list_files(self, m):
-        register_uris({"folder": ["list_folder_files", "list_folder_files2"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            files = self.folder.list_files()
-            file_list = [file for file in files]
-            self.assertEqual(len(file_list), 4)
-            self.assertIsInstance(file_list[0], File)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_files()
     def test_get_files(self, m):
         register_uris({"folder": ["list_folder_files", "list_folder_files2"]}, m)
@@ -59,19 +44,6 @@ class TestFolder(unittest.TestCase):
         self.assertTrue(hasattr(deleted_folder, "name"))
         self.assertEqual(deleted_folder.full_name, "course_files/Folder 1")
 
-    # list_folders()
-    def test_list_folders(self, m):
-        register_uris({"folder": ["list_folders"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            folders = self.folder.list_folders()
-            folder_list = [folder for folder in folders]
-            self.assertEqual(len(folder_list), 2)
-            self.assertIsInstance(folder_list[0], Folder)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_folders()
     def test_get_folders(self, m):
         register_uris({"folder": ["list_folders"]}, m)
diff --git a/tests/test_gradebook_history.py b/tests/test_gradebook_history.py
index 7a20415..6ccf40b 100644
--- a/tests/test_gradebook_history.py
+++ b/tests/test_gradebook_history.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_grading_period.py b/tests/test_grading_period.py
index baffcc7..07aa7ca 100644
--- a/tests/test_grading_period.py
+++ b/tests/test_grading_period.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_grading_standard.py b/tests/test_grading_standard.py
index 32fe02d..29a8741 100644
--- a/tests/test_grading_standard.py
+++ b/tests/test_grading_standard.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_group.py b/tests/test_group.py
index ef61acc..5fa398a 100644
--- a/tests/test_group.py
+++ b/tests/test_group.py
@@ -1,11 +1,9 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
+from urllib.parse import quote
 import uuid
-import warnings
 
 import requests
 import requests_mock
-from six.moves.urllib.parse import quote
 
 from canvasapi import Canvas
 from canvasapi.assignment import AssignmentOverride
@@ -29,8 +27,6 @@ from tests.util import cleanup_file, register_uris
 @requests_mock.Mocker()
 class TestGroup(unittest.TestCase):
     def setUp(self):
-        warnings.simplefilter("always", DeprecationWarning)
-
         self.canvas = Canvas(settings.BASE_URL, settings.API_KEY)
 
         with requests_mock.Mocker() as m:
@@ -126,21 +122,6 @@ class TestGroup(unittest.TestCase):
         self.assertIsInstance(gmembership_list[0], GroupMembership)
         self.assertEqual(len(gmembership_list), 2)
 
-    # list_users()
-    def test_list_users(self, m):
-        register_uris({"group": ["list_users", "list_users_p2"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            from canvasapi.user import User
-
-            users = self.group.list_users()
-            user_list = [user for user in users]
-            self.assertIsInstance(user_list[0], User)
-            self.assertEqual(len(user_list), 4)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_users()
     def test_get_users(self, m):
         register_uris({"group": ["list_users", "list_users_p2"]}, m)
@@ -195,20 +176,6 @@ class TestGroup(unittest.TestCase):
         self.assertEqual(len(response), 2)
         self.assertIn("type", response[0])
 
-    # list_memberships()
-    def test_list_memberships(self, m):
-        register_uris({"group": ["list_memberships", "list_memberships_p2"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            response = self.group.list_memberships()
-            membership_list = [membership for membership in response]
-            self.assertEqual(len(membership_list), 4)
-            self.assertIsInstance(membership_list[0], GroupMembership)
-            self.assertTrue(hasattr(membership_list[0], "id"))
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_memberships()
     def test_get_memberships(self, m):
         register_uris({"group": ["list_memberships", "list_memberships_p2"]}, m)
@@ -366,20 +333,6 @@ class TestGroup(unittest.TestCase):
         with self.assertRaises(ValueError):
             self.group.reorder_pinned_topics(order=order)
 
-    # list_external_feeds()
-    def test_list_external_feeds(self, m):
-        register_uris({"group": ["list_external_feeds"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            feeds = self.group.list_external_feeds()
-            feed_list = [feed for feed in feeds]
-            self.assertEqual(len(feed_list), 2)
-            self.assertTrue(hasattr(feed_list[0], "url"))
-            self.assertIsInstance(feed_list[0], ExternalFeed)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_external_feeds()
     def test_get_external_feeds(self, m):
         register_uris({"group": ["list_external_feeds"]}, m)
@@ -414,19 +367,6 @@ class TestGroup(unittest.TestCase):
         self.assertTrue(hasattr(deleted_ef_by_obj, "url"))
         self.assertEqual(deleted_ef_by_obj.display_name, "My Blog")
 
-    # list_files()
-    def test_list_files(self, m):
-        register_uris({"group": ["list_group_files", "list_group_files2"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            files = self.group.list_files()
-            file_list = [file for file in files]
-            self.assertEqual(len(file_list), 4)
-            self.assertIsInstance(file_list[0], File)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_files()
     def test_get_files(self, m):
         register_uris({"group": ["list_group_files", "list_group_files2"]}, m)
@@ -448,19 +388,6 @@ class TestGroup(unittest.TestCase):
         self.assertEqual(folder_by_obj.name, "Folder 1")
         self.assertIsInstance(folder_by_obj, Folder)
 
-    # list_folders()
-    def test_list_folders(self, m):
-        register_uris({"group": ["list_folders"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            folders = self.group.list_folders()
-            folder_list = [folder for folder in folders]
-            self.assertEqual(len(folder_list), 2)
-            self.assertIsInstance(folder_list[0], Folder)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_folders()
     def test_get_folders(self, m):
         register_uris({"group": ["list_folders"]}, m)
@@ -478,19 +405,6 @@ class TestGroup(unittest.TestCase):
         response = self.group.create_folder(name=name_str)
         self.assertIsInstance(response, Folder)
 
-    # list_tabs()
-    def test_list_tabs(self, m):
-        register_uris({"group": ["list_tabs"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            tabs = self.group.list_tabs()
-            tab_list = [tab for tab in tabs]
-            self.assertEqual(len(tab_list), 2)
-            self.assertIsInstance(tab_list[0], Tab)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_tabs()
     def test_get_tabs(self, m):
         register_uris({"group": ["list_tabs"]}, m)
@@ -753,20 +667,6 @@ class TestGroupCategory(unittest.TestCase):
         self.assertIsInstance(response, dict)
         self.assertEqual(len(response), 0)
 
-    # list_groups()
-    def test_list_groups(self, m):
-        register_uris({"group": ["category_list_groups"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            response = self.group_category.list_groups()
-            group_list = [group for group in response]
-            self.assertEqual(len(group_list), 2)
-            self.assertIsInstance(group_list[0], Group)
-            self.assertTrue(hasattr(group_list[0], "id"))
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_groups()
     def test_get_groups(self, m):
         register_uris({"group": ["category_list_groups"]}, m)
@@ -777,22 +677,6 @@ class TestGroupCategory(unittest.TestCase):
         self.assertIsInstance(group_list[0], Group)
         self.assertTrue(hasattr(group_list[0], "id"))
 
-    # list_users()
-    def test_list_users(self, m):
-        from canvasapi.user import User
-
-        register_uris({"group": ["category_list_users"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            response = self.group_category.list_users()
-            user_list = [user for user in response]
-            self.assertEqual(len(user_list), 4)
-            self.assertIsInstance(user_list[0], User)
-            self.assertTrue(hasattr(user_list[0], "user_id"))
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_users()
     def test_get_users(self, m):
         from canvasapi.user import User
diff --git a/tests/test_licenses.py b/tests/test_licenses.py
index f5359f8..243066d 100644
--- a/tests/test_licenses.py
+++ b/tests/test_licenses.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_login.py b/tests/test_login.py
index d74198b..2cbe9d5 100644
--- a/tests/test_login.py
+++ b/tests/test_login.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_module.py b/tests/test_module.py
index 9c4210b..9f434d1 100644
--- a/tests/test_module.py
+++ b/tests/test_module.py
@@ -1,8 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
-import warnings
 
 from canvasapi import Canvas
 from canvasapi.exceptions import RequiredFieldMissing
@@ -55,22 +53,6 @@ class TestModule(unittest.TestCase):
         self.assertTrue(hasattr(relocked_module, "course_id"))
         self.assertEqual(relocked_module.course_id, self.course.id)
 
-    # list_module_items()
-    def test_list_module_items(self, m):
-        register_uris({"module": ["list_module_items", "list_module_items2"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            module_items = self.module.list_module_items()
-            module_item_list = [module_item for module_item in module_items]
-
-            self.assertEqual(len(module_item_list), 4)
-            self.assertIsInstance(module_item_list[0], ModuleItem)
-            self.assertTrue(hasattr(module_item_list[0], "course_id"))
-            self.assertEqual(module_item_list[0].course_id, self.course.id)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_module_items()
     def test_get_module_items(self, m):
         register_uris({"module": ["list_module_items", "list_module_items2"]}, m)
diff --git a/tests/test_notification_preference.py b/tests/test_notification_preference.py
index b2dab2d..40aa515 100644
--- a/tests/test_notification_preference.py
+++ b/tests/test_notification_preference.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_outcome.py b/tests/test_outcome.py
index 22b8fdc..0b52896 100644
--- a/tests/test_outcome.py
+++ b/tests/test_outcome.py
@@ -1,8 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
-import warnings
 
 from canvasapi import Canvas
 from canvasapi.outcome import Outcome, OutcomeGroup, OutcomeLink
@@ -13,8 +11,6 @@ from tests.util import register_uris
 @requests_mock.Mocker()
 class TestOutcome(unittest.TestCase):
     def setUp(self):
-        warnings.simplefilter("always", DeprecationWarning)
-
         self.canvas = Canvas(settings.BASE_URL, settings.API_KEY)
 
         with requests_mock.Mocker() as m:
@@ -205,52 +201,6 @@ class TestOutcomeGroup(unittest.TestCase):
         result = self.course_outcome_group.delete()
         self.assertTrue(result)
 
-    # list_linked_outcomes()
-    def test_list_linked_outcomes(self, m):
-        register_uris(
-            {
-                "outcome": [
-                    "outcome_group_list_linked_outcomes_account",
-                    "outcome_group_list_linked_outcomes_global",
-                    "outcome_group_list_linked_outcomes_courses",
-                ]
-            },
-            m,
-        )
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            result = self.account_outcome_group.list_linked_outcomes()
-            self.assertIsInstance(result[0], OutcomeLink)
-            self.assertEqual(result[0].outcome_group["id"], 2)
-            self.assertEqual(
-                result[0].outcome_group["title"], "Account Test Outcome Group"
-            )
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            result = self.canvas_outcome_group.list_linked_outcomes()
-            self.assertIsInstance(result[0], OutcomeLink)
-            self.assertEqual(result[0].outcome_group["id"], 2)
-            self.assertEqual(
-                result[0].outcome_group["title"], "Global Test Outcome Group"
-            )
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            result = self.course_outcome_group.list_linked_outcomes()
-            self.assertIsInstance(result[0], OutcomeLink)
-            self.assertEqual(result[0].outcome_group["id"], 2)
-            self.assertEqual(
-                result[0].outcome_group["title"], "Course Test Outcome Group"
-            )
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_linked_outcomes()
     def test_get_linked_outcomes(self, m):
         register_uris(
@@ -382,55 +332,6 @@ class TestOutcomeGroup(unittest.TestCase):
         result = self.course_outcome_group.unlink_outcome(3)
         self.assertTrue(result)
 
-    # list_subgroups()
-    def test_list_subgroups(self, m):
-        register_uris(
-            {
-                "outcome": [
-                    "outcome_group_list_subgroups_global",
-                    "outcome_group_list_subgroups_account",
-                    "outcome_group_list_subgroups_course",
-                ]
-            },
-            m,
-        )
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            result = self.canvas_outcome_group.list_subgroups()
-            self.assertIsInstance(result[0], OutcomeGroup)
-            self.assertEqual(result[0].id, 2)
-            self.assertEqual(result[0].title, "Global Listed Subgroup Title 1")
-            self.assertIsInstance(result[1], OutcomeGroup)
-            self.assertEqual(result[1].id, 3)
-            self.assertEqual(result[1].title, "Global Listed Subgroup Title 2")
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            result = self.account_outcome_group.list_subgroups()
-            self.assertIsInstance(result[0], OutcomeGroup)
-            self.assertEqual(result[0].id, 2)
-            self.assertEqual(result[0].title, "Account Listed Subgroup Title 1")
-            self.assertIsInstance(result[1], OutcomeGroup)
-            self.assertEqual(result[1].id, 3)
-            self.assertEqual(result[1].title, "Account Listed Subgroup Title 2")
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            result = self.course_outcome_group.list_subgroups()
-            self.assertIsInstance(result[0], OutcomeGroup)
-            self.assertEqual(result[0].id, 2)
-            self.assertEqual(result[0].title, "Course Listed Subgroup Title 1")
-            self.assertIsInstance(result[1], OutcomeGroup)
-            self.assertEqual(result[1].id, 3)
-            self.assertEqual(result[1].title, "Course Listed Subgroup Title 2")
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_subgroups()
     def test_get_subgroups(self, m):
         register_uris(
diff --git a/tests/test_outcome_import.py b/tests/test_outcome_import.py
index 694baae..1222ea0 100644
--- a/tests/test_outcome_import.py
+++ b/tests/test_outcome_import.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_page.py b/tests/test_page.py
index f7bbb3f..08e3b38 100644
--- a/tests/test_page.py
+++ b/tests/test_page.py
@@ -1,8 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
-import warnings
 
 from canvasapi.canvas import Canvas
 from canvasapi.course import Course
@@ -15,7 +13,6 @@ from tests.util import register_uris
 @requests_mock.Mocker()
 class TestPage(unittest.TestCase):
     def setUp(self):
-        warnings.simplefilter("always", DeprecationWarning)
 
         self.canvas = Canvas(settings.BASE_URL, settings.API_KEY)
 
@@ -55,20 +52,6 @@ class TestPage(unittest.TestCase):
 
         self.assertIsInstance(deleted_page, Page)
 
-    # list_revisions()
-    def test_list_revisions(self, m):
-        register_uris({"page": ["list_revisions", "list_revisions2"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            revisions = self.page_course.list_revisions()
-            rev_list = [rev for rev in revisions]
-
-            self.assertEqual(len(rev_list), 4)
-            self.assertIsInstance(rev_list[0], PageRevision)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_revisions()
     def test_get_revisions(self, m):
         register_uris({"page": ["list_revisions", "list_revisions2"]}, m)
diff --git a/tests/test_page_view.py b/tests/test_page_view.py
index b253146..564c36e 100644
--- a/tests/test_page_view.py
+++ b/tests/test_page_view.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_paginated_list.py b/tests/test_paginated_list.py
index 99fa473..3b9e604 100644
--- a/tests/test_paginated_list.py
+++ b/tests/test_paginated_list.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_peer_review.py b/tests/test_peer_review.py
index 9217efa..9420d59 100644
--- a/tests/test_peer_review.py
+++ b/tests/test_peer_review.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_planner.py b/tests/test_planner.py
index 5890c65..abc9217 100644
--- a/tests/test_planner.py
+++ b/tests/test_planner.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_poll.py b/tests/test_poll.py
index 1fbd781..468f257 100644
--- a/tests/test_poll.py
+++ b/tests/test_poll.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_poll_choice.py b/tests/test_poll_choice.py
index cdf5bed..0e87eab 100644
--- a/tests/test_poll_choice.py
+++ b/tests/test_poll_choice.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_poll_session.py b/tests/test_poll_session.py
index 4790fb7..2f8dd1e 100644
--- a/tests/test_poll_session.py
+++ b/tests/test_poll_session.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_poll_submission.py b/tests/test_poll_submission.py
index d11a355..58b289d 100644
--- a/tests/test_poll_submission.py
+++ b/tests/test_poll_submission.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_progress.py b/tests/test_progress.py
index b2fb930..8b32da9 100644
--- a/tests/test_progress.py
+++ b/tests/test_progress.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_quiz.py b/tests/test_quiz.py
index cf0b010..1c77972 100644
--- a/tests/test_quiz.py
+++ b/tests/test_quiz.py
@@ -1,9 +1,6 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
-import warnings
 
 import requests_mock
-from six import text_type
 
 from canvasapi import Canvas
 from canvasapi.exceptions import RequiredFieldMissing
@@ -245,32 +242,6 @@ class TestQuiz(unittest.TestCase):
 
         self.assertEqual(len(reports), 2)
 
-    # get_all_quiz_submissions()
-    def test_get_all_quiz_submissions(self, m):
-        register_uris({"quiz": ["get_all_quiz_submissions"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            submissions = self.quiz.get_all_quiz_submissions()
-
-            self.assertIsInstance(submissions, PaginatedList)
-
-            submission_list = [sub for sub in submissions]
-
-            self.assertEqual(len(submission_list), 2)
-
-            self.assertIsInstance(submission_list[0], QuizSubmission)
-            self.assertEqual(submission_list[0].id, 1)
-            self.assertTrue(hasattr(submission_list[0], "attempt"))
-            self.assertEqual(submission_list[0].attempt, 3)
-
-            self.assertIsInstance(submission_list[1], QuizSubmission)
-            self.assertEqual(submission_list[1].id, 2)
-            self.assertTrue(hasattr(submission_list[1], "score"))
-            self.assertEqual(submission_list[1].score, 5)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_submissions()
     def test_get_submissions(self, m):
         register_uris({"quiz": ["get_all_quiz_submissions"]}, m)
@@ -454,7 +425,7 @@ class TestQuizSubmission(unittest.TestCase):
         self.assertIn("end_at", submission)
         self.assertIn("time_left", submission)
         self.assertIsInstance(submission["time_left"], int)
-        self.assertIsInstance(submission["end_at"], text_type)
+        self.assertIsInstance(submission["end_at"], str)
 
     # update_score_and_comments
     def test_update_score_and_comments(self, m):
diff --git a/tests/test_quiz_group.py b/tests/test_quiz_group.py
index 2ae601d..fe13846 100644
--- a/tests/test_quiz_group.py
+++ b/tests/test_quiz_group.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_requester.py b/tests/test_requester.py
index 3225f33..68b4a01 100644
--- a/tests/test_requester.py
+++ b/tests/test_requester.py
@@ -1,10 +1,9 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 from datetime import datetime
 import unittest
+from urllib.parse import quote
 
 import requests
 import requests_mock
-from six.moves.urllib.parse import quote
 
 from canvasapi import Canvas
 from canvasapi.exceptions import (
diff --git a/tests/test_rubric.py b/tests/test_rubric.py
index d6bdae6..626adb5 100644
--- a/tests/test_rubric.py
+++ b/tests/test_rubric.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_scope.py b/tests/test_scope.py
index 83fd798..2e7b1c4 100644
--- a/tests/test_scope.py
+++ b/tests/test_scope.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_section.py b/tests/test_section.py
index 9dcada3..ce3f0ee 100644
--- a/tests/test_section.py
+++ b/tests/test_section.py
@@ -1,13 +1,10 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
-import warnings
 
 import requests_mock
 
 from canvasapi import Canvas
 from canvasapi.assignment import AssignmentOverride
 from canvasapi.enrollment import Enrollment
-from canvasapi.exceptions import RequiredFieldMissing
 from canvasapi.progress import Progress
 from canvasapi.section import Section
 from canvasapi.submission import GroupedSubmission, Submission
@@ -18,8 +15,6 @@ from tests.util import register_uris
 @requests_mock.Mocker()
 class TestSection(unittest.TestCase):
     def setUp(self):
-        warnings.simplefilter("always", DeprecationWarning)
-
         self.canvas = Canvas(settings.BASE_URL, settings.API_KEY)
 
         with requests_mock.Mocker() as m:
@@ -82,100 +77,6 @@ class TestSection(unittest.TestCase):
 
         self.assertIsInstance(deleted_section, Section)
 
-    # submit_assignment()
-    def test_submit_assignment(self, m):
-        register_uris(
-            {
-                "assignment": ["submit"],
-                "submission": ["get_by_id_section"],
-                "user": ["get_by_id", "get_user_assignments"],
-            },
-            m,
-        )
-
-        assignment_id = 1
-        sub_type = "online_upload"
-        sub_dict = {"submission_type": sub_type}
-        with warnings.catch_warnings(record=True) as warning_list:
-            assignment_by_id = self.section.submit_assignment(assignment_id, sub_dict)
-
-            self.assertIsInstance(assignment_by_id, Submission)
-            self.assertTrue(hasattr(assignment_by_id, "submission_type"))
-            self.assertEqual(assignment_by_id.submission_type, sub_type)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        user_obj = self.canvas.get_user(1)
-        assignments_obj = user_obj.get_assignments(1)
-        sub_type = "online_upload"
-        sub_dict = {"submission_type": sub_type}
-        with warnings.catch_warnings(record=True) as warning_list:
-            assignment_by_obj = self.section.submit_assignment(
-                assignments_obj[0], sub_dict
-            )
-
-            self.assertIsInstance(assignment_by_obj, Submission)
-            self.assertTrue(hasattr(assignment_by_obj, "submission_type"))
-            self.assertEqual(assignment_by_obj.submission_type, sub_type)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-    def test_subit_assignment_fail(self, m):
-        with warnings.catch_warnings(record=True) as warning_list:
-            with self.assertRaises(RequiredFieldMissing):
-                self.section.submit_assignment(1, {})
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-    # list_submissions()
-    def test_list_submissions(self, m):
-        register_uris(
-            {
-                "submission": ["list_submissions"],
-                "user": ["get_by_id", "get_user_assignments"],
-            },
-            m,
-        )
-
-        assignment_id = 1
-        with warnings.catch_warnings(record=True) as warning_list:
-            submissions_by_id = self.section.list_submissions(assignment_id)
-            submission_list_by_id = [submission for submission in submissions_by_id]
-
-            self.assertEqual(len(submission_list_by_id), 2)
-            self.assertIsInstance(submission_list_by_id[0], Submission)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        user_obj = self.canvas.get_user(1)
-        assignments_obj = user_obj.get_assignments(1)
-        with warnings.catch_warnings(record=True) as warning_list:
-            submissions_by_obj = self.section.list_submissions(assignments_obj[0])
-            submission_list_by_obj = [submission for submission in submissions_by_obj]
-
-            self.assertEqual(len(submission_list_by_obj), 2)
-            self.assertIsInstance(submission_list_by_obj[0], Submission)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-    # list_multiple_submission()
-    def test_list_multiple_submissions(self, m):
-        register_uris({"section": ["list_multiple_submissions"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            submissions = self.section.list_multiple_submissions()
-            submission_list = [submission for submission in submissions]
-
-            self.assertEqual(len(submission_list), 2)
-            self.assertIsInstance(submission_list[0], Submission)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_multiple_submission()
     def test_get_multiple_submissions(self, m):
         register_uris({"section": ["list_multiple_submissions"]}, m)
@@ -210,145 +111,6 @@ class TestSection(unittest.TestCase):
 
         self.assertIn("Parameter `grouped` must", cm.exception.args[0])
 
-    # get_submission()
-    def test_get_submission(self, m):
-        register_uris(
-            {
-                "submission": ["get_by_id_course"],
-                "user": ["get_by_id", "get_user_assignments"],
-            },
-            m,
-        )
-
-        assignment_id = 1
-        user_id = 1
-        with warnings.catch_warnings(record=True) as warning_list:
-            submission_by_id = self.section.get_submission(assignment_id, user_id)
-
-            self.assertIsInstance(submission_by_id, Submission)
-            self.assertTrue(hasattr(submission_by_id, "submission_type"))
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        user_obj = self.canvas.get_user(1)
-        assignments_obj = user_obj.get_assignments(1)
-        with warnings.catch_warnings(record=True) as warning_list:
-            submission_by_obj = self.section.get_submission(
-                assignments_obj[0], user_obj
-            )
-
-            self.assertIsInstance(submission_by_obj, Submission)
-            self.assertTrue(hasattr(submission_by_obj, "submission_type"))
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-    # update_submission()
-    def test_update_submission(self, m):
-        register_uris(
-            {
-                "submission": ["get_by_id_section", "edit"],
-                "user": ["get_by_id", "get_user_assignments"],
-            },
-            m,
-        )
-
-        assignment_id = 1
-        user_id = 1
-        with warnings.catch_warnings(record=True) as warning_list:
-            submission_by_id = self.section.update_submission(
-                assignment_id, user_id, submission={"excuse": True}
-            )
-
-            self.assertIsInstance(submission_by_id, Submission)
-            self.assertTrue(hasattr(submission_by_id, "excused"))
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        user_obj = self.canvas.get_user(1)
-        assignments_obj = user_obj.get_assignments(1)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            submission_by_obj = self.section.update_submission(
-                assignments_obj[0], user_obj, submission={"excuse": True}
-            )
-
-            self.assertIsInstance(submission_by_obj, Submission)
-            self.assertTrue(hasattr(submission_by_obj, "excused"))
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-    # mark_submission_as_read
-    def test_mark_submission_as_read(self, m):
-        register_uris(
-            {
-                "course": ["mark_submission_as_read"],
-                "submission": ["get_by_id_section"],
-                "user": ["get_by_id", "get_user_assignments"],
-            },
-            m,
-        )
-
-        submission_id = 1
-        user_id = 1
-        with warnings.catch_warnings(record=True) as warning_list:
-            submission_by_id = self.section.mark_submission_as_read(
-                submission_id, user_id
-            )
-
-            self.assertTrue(submission_by_id)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        user_obj = self.canvas.get_user(1)
-        with warnings.catch_warnings(record=True) as warning_list:
-            assignments_obj = user_obj.get_assignments(1)
-            submission_by_obj = self.section.mark_submission_as_read(
-                assignments_obj[0], user_obj
-            )
-
-            self.assertTrue(submission_by_obj)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-    # mark_submission_as_unread
-    def test_mark_submission_as_unread(self, m):
-        register_uris(
-            {
-                "course": ["mark_submission_as_unread"],
-                "submission": ["get_by_id_section"],
-                "user": ["get_by_id", "get_user_assignments"],
-            },
-            m,
-        )
-
-        user_id = 1
-        assignment_id = 1
-        with warnings.catch_warnings(record=True) as warning_list:
-            submission_by_id = self.section.mark_submission_as_unread(
-                assignment_id, user_id
-            )
-            self.assertTrue(submission_by_id)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
-        user_obj = self.canvas.get_user(1)
-        assignments_obj = user_obj.get_assignments(1)
-        with warnings.catch_warnings(record=True) as warning_list:
-            submission_by_obj = self.section.mark_submission_as_unread(
-                assignments_obj[0], user_obj
-            )
-            self.assertTrue(submission_by_obj)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     def test_submissions_bulk_update(self, m):
         register_uris({"section": ["update_submissions"]}, m)
         register_uris({"progress": ["course_progress"]}, m)
diff --git a/tests/test_sis_import.py b/tests/test_sis_import.py
index b517775..aeffe06 100644
--- a/tests/test_sis_import.py
+++ b/tests/test_sis_import.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_submission.py b/tests/test_submission.py
index 0bbe318..6495065 100644
--- a/tests/test_submission.py
+++ b/tests/test_submission.py
@@ -1,7 +1,5 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 import uuid
-import warnings
 
 import requests_mock
 
@@ -15,7 +13,6 @@ from tests.util import cleanup_file, register_uris
 @requests_mock.Mocker()
 class TestSubmission(unittest.TestCase):
     def setUp(self):
-        warnings.simplefilter("always", DeprecationWarning)
 
         self.canvas = Canvas(settings.BASE_URL, settings.API_KEY)
 
@@ -24,32 +21,25 @@ class TestSubmission(unittest.TestCase):
                 {
                     "course": ["get_by_id", "get_assignment_by_id"],
                     "section": ["get_by_id"],
-                    "submission": ["get_by_id_course", "get_by_id_section"],
+                    "submission": ["get_by_id_course"],
                 },
                 m,
             )
 
-            with warnings.catch_warnings(record=True) as warning_list:
-                self.course = self.canvas.get_course(1)
-                self.submission_course = self.course.get_submission(1, 1)
-
-                self.section = self.canvas.get_section(1)
-                self.submission_section = self.section.get_submission(1, 1)
-
-                self.assertEqual(len(warning_list), 2)
-                self.assertEqual(warning_list[0].category, DeprecationWarning)
-                self.assertEqual(warning_list[1].category, DeprecationWarning)
+            self.course = self.canvas.get_course(1)
+            self.assignment = self.course.get_assignment(1)
+            self.submission = self.assignment.get_submission(1)
 
     # __str__()
     def test__str__(self, m):
-        string = str(self.submission_course)
+        string = str(self.submission)
         self.assertIsInstance(string, str)
 
     # create_submission_peer_review()
     def test_create_submission_peer_review(self, m):
         register_uris({"submission": ["create_submission_peer_review"]}, m)
 
-        created_peer_review = self.submission_course.create_submission_peer_review(1)
+        created_peer_review = self.submission.create_submission_peer_review(1)
 
         self.assertIsInstance(created_peer_review, PeerReview)
         self.assertEqual(created_peer_review.user_id, 7)
@@ -58,7 +48,7 @@ class TestSubmission(unittest.TestCase):
     def test_delete_submission_peer_review(self, m):
         register_uris({"submission": ["delete_submission_peer_review"]}, m)
 
-        deleted_peer_review = self.submission_course.delete_submission_peer_review(1)
+        deleted_peer_review = self.submission.delete_submission_peer_review(1)
 
         self.assertIsInstance(deleted_peer_review, PeerReview)
         self.assertEqual(deleted_peer_review.user_id, 7)
@@ -67,19 +57,19 @@ class TestSubmission(unittest.TestCase):
     def test_edit(self, m):
         register_uris({"submission": ["edit"]}, m)
 
-        self.assertFalse(hasattr(self.submission_course, "excused"))
+        self.assertFalse(hasattr(self.submission, "excused"))
 
-        self.submission_course.edit(submission={"excuse": True})
+        self.submission.edit(submission={"excuse": True})
 
-        self.assertIsInstance(self.submission_course, Submission)
-        self.assertTrue(hasattr(self.submission_course, "excused"))
-        self.assertTrue(self.submission_course.excused)
+        self.assertIsInstance(self.submission, Submission)
+        self.assertTrue(hasattr(self.submission, "excused"))
+        self.assertTrue(self.submission.excused)
 
     # get_submission_peer_reviews()
     def test_get_submission_peer_reviews(self, m):
         register_uris({"submission": ["list_submission_peer_reviews"]}, m)
 
-        submission_peer_reviews = self.submission_course.get_submission_peer_reviews()
+        submission_peer_reviews = self.submission.get_submission_peer_reviews()
         submission_peer_review_list = [
             peer_review for peer_review in submission_peer_reviews
         ]
@@ -87,25 +77,22 @@ class TestSubmission(unittest.TestCase):
         self.assertEqual(len(submission_peer_review_list), 2)
         self.assertIsInstance(submission_peer_review_list[0], PeerReview)
 
-    # upload_comment()
-    def test_upload_comment(self, m):
-        register_uris(
-            {"submission": ["upload_comment", "upload_comment_final", "edit"]}, m
-        )
+    # mark_read()
+    def test_mark_read(self, m):
+        register_uris({"course": ["mark_submission_as_read"]}, m)
 
-        filename = "testfile_submission_{}".format(uuid.uuid4().hex)
+        marked_read = self.submission.mark_read()
+        self.assertTrue(marked_read)
 
-        try:
-            with open(filename, "w+") as file:
-                response = self.submission_course.upload_comment(file)
+    # mark_unread()
+    def test_mark_unread(self, m):
+        register_uris({"course": ["mark_submission_as_unread"]}, m)
 
-            self.assertTrue(response[0])
-            self.assertIsInstance(response[1], dict)
-            self.assertIn("url", response[1])
-        finally:
-            cleanup_file(filename)
+        marked_unread = self.submission.mark_unread()
+        self.assertTrue(marked_unread)
 
-    def test_upload_comment_section(self, m):
+    # upload_comment()
+    def test_upload_comment(self, m):
         register_uris(
             {"submission": ["upload_comment", "upload_comment_final", "edit"]}, m
         )
@@ -114,7 +101,7 @@ class TestSubmission(unittest.TestCase):
 
         try:
             with open(filename, "w+") as file:
-                response = self.submission_section.upload_comment(file)
+                response = self.submission.upload_comment(file)
 
             self.assertTrue(response[0])
             self.assertIsInstance(response[1], dict)
@@ -154,29 +141,6 @@ class TestGroupedSubmission(unittest.TestCase):
         self.assertIsInstance(grouped_submission.submissions, list)
         self.assertEqual(len(grouped_submission.submissions), 0)
 
-    def test__init__issue_303_regression(self):
-        """
-        Regression test for issue #303
-        https://github.com/ucfopen/canvasapi/issues/303
-        """
-        grouped_submission = GroupedSubmission(
-            self.canvas._Canvas__requester,
-            {
-                "user_id": 1,
-                "submissions": [
-                    {
-                        "id": 1,
-                        "assignments_id": 1,
-                        "user_id": 1,
-                        "html_url": "https://example.com/courses/1/assignments/1/submissions/1",
-                        "submission_type": "online_upload",
-                    }
-                ],
-            },
-        )
-        self.assertTrue(hasattr(grouped_submission, "submissions"))
-        self.assertIn("submissions", grouped_submission.attributes)
-
     # __str__()
     def test__str__(self):
         string = str(self.grouped_submission)
diff --git a/tests/test_tab.py b/tests/test_tab.py
index 8cc5b95..e9382ad 100644
--- a/tests/test_tab.py
+++ b/tests/test_tab.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_uploader.py b/tests/test_uploader.py
index 1cd96cd..73a234d 100644
--- a/tests/test_uploader.py
+++ b/tests/test_uploader.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 import uuid
 
diff --git a/tests/test_usage_rights.py b/tests/test_usage_rights.py
index 50256e1..9482c66 100644
--- a/tests/test_usage_rights.py
+++ b/tests/test_usage_rights.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 
 import requests_mock
diff --git a/tests/test_user.py b/tests/test_user.py
index dc027d8..90e4aea 100644
--- a/tests/test_user.py
+++ b/tests/test_user.py
@@ -1,7 +1,5 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 import uuid
-import warnings
 
 import requests_mock
 
@@ -31,7 +29,6 @@ from tests.util import cleanup_file, register_uris
 @requests_mock.Mocker()
 class TestUser(unittest.TestCase):
     def setUp(self):
-        warnings.simplefilter("always", DeprecationWarning)
 
         self.canvas = Canvas(settings.BASE_URL, settings.API_KEY)
 
@@ -223,19 +220,6 @@ class TestUser(unittest.TestCase):
         finally:
             cleanup_file(filename)
 
-    # list_calendar_events_for_user()
-    def test_list_calendar_events_for_user(self, m):
-        register_uris({"user": ["list_calendar_events_for_user"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            cal_events = self.user.list_calendar_events_for_user()
-            cal_event_list = [cal_event for cal_event in cal_events]
-            self.assertEqual(len(cal_event_list), 2)
-            self.assertIsInstance(cal_event_list[0], CalendarEvent)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_calendar_events_for_user()
     def test_get_calendar_events_for_user(self, m):
         register_uris({"user": ["list_calendar_events_for_user"]}, m)
@@ -245,19 +229,6 @@ class TestUser(unittest.TestCase):
         self.assertEqual(len(cal_event_list), 2)
         self.assertIsInstance(cal_event_list[0], CalendarEvent)
 
-    # list_communication_channels()
-    def test_list_communication_channels(self, m):
-        register_uris({"user": ["list_comm_channels", "list_comm_channels2"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            comm_channels = self.user.list_communication_channels()
-            channel_list = [channel for channel in comm_channels]
-            self.assertEqual(len(channel_list), 4)
-            self.assertIsInstance(channel_list[0], CommunicationChannel)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_communication_channels()
     def test_get_communication_channels(self, m):
         register_uris({"user": ["list_comm_channels", "list_comm_channels2"]}, m)
@@ -278,19 +249,6 @@ class TestUser(unittest.TestCase):
 
         self.assertIsInstance(new_channel, CommunicationChannel)
 
-    # list_files()
-    def test_list_files(self, m):
-        register_uris({"user": ["get_user_files", "get_user_files2"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            files = self.user.list_files()
-            file_list = [file for file in files]
-            self.assertEqual(len(file_list), 4)
-            self.assertIsInstance(file_list[0], File)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_files()
     def test_get_files(self, m):
         register_uris({"user": ["get_user_files", "get_user_files2"]}, m)
@@ -326,19 +284,6 @@ class TestUser(unittest.TestCase):
         self.assertEqual(folder_by_obj.name, "Folder 1")
         self.assertIsInstance(folder_by_obj, Folder)
 
-    # list_folders()
-    def test_list_folders(self, m):
-        register_uris({"user": ["list_folders"]}, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            folders = self.user.list_folders()
-            folder_list = [folder for folder in folders]
-            self.assertEqual(len(folder_list), 2)
-            self.assertIsInstance(folder_list[0], Folder)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_folders()
     def test_get_folders(self, m):
         register_uris({"user": ["list_folders"]}, m)
@@ -356,21 +301,6 @@ class TestUser(unittest.TestCase):
         response = self.user.create_folder(name=name_str)
         self.assertIsInstance(response, Folder)
 
-    # list_user_logins()
-    def test_list_user_logins(self, m):
-        requires = {"user": ["list_user_logins", "list_user_logins_2"]}
-        register_uris(requires, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            response = self.user.list_user_logins()
-            login_list = [login for login in response]
-
-            self.assertIsInstance(login_list[0], Login)
-            self.assertEqual(len(login_list), 2)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_user_logins()
     def test_get_user_logins(self, m):
         requires = {"user": ["list_user_logins", "list_user_logins_2"]}
@@ -382,21 +312,6 @@ class TestUser(unittest.TestCase):
         self.assertIsInstance(login_list[0], Login)
         self.assertEqual(len(login_list), 2)
 
-    # list_observees()
-    def test_list_observees(self, m):
-        requires = {"user": ["list_observees", "list_observees_2"]}
-        register_uris(requires, m)
-
-        with warnings.catch_warnings(record=True) as warning_list:
-            response = self.user.list_observees()
-            observees_list = [observees for observees in response]
-
-            self.assertIsInstance(observees_list[0], User)
-            self.assertEqual(len(observees_list), 4)
-
-            self.assertEqual(len(warning_list), 1)
-            self.assertEqual(warning_list[-1].category, DeprecationWarning)
-
     # get_observees()
     def test_get_observees(self, m):
         requires = {"user": ["list_observees", "list_observees_2"]}
diff --git a/tests/test_util.py b/tests/test_util.py
index b530100..dbf5377 100644
--- a/tests/test_util.py
+++ b/tests/test_util.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import unittest
 import uuid
 
@@ -18,8 +17,6 @@ from canvasapi.util import (
     normalize_bool,
 )
 from itertools import chain
-from six import integer_types, iterkeys, itervalues, iteritems, string_types, text_type
-from six.moves import zip
 from tests import settings
 from tests.util import cleanup_file, register_uris
 
@@ -33,9 +30,8 @@ class TestUtil(unittest.TestCase):
     def test_is_multivalued_bool(self, m):
         self.assertFalse(is_multivalued(False))
 
-    def test_is_multivalued_integer_types(self, m):
-        for type in integer_types:
-            self.assertFalse(is_multivalued(type(1)))
+    def test_is_multivalued_integer(self, m):
+        self.assertFalse(is_multivalued(int(1)))
 
     def test_is_multivalued_str(self, m):
         self.assertFalse(is_multivalued("string"))
@@ -71,13 +67,13 @@ class TestUtil(unittest.TestCase):
         self.assertTrue(is_multivalued(iter({"key": "value"})))
 
     def test_is_multivalued_dict_keys(self, m):
-        self.assertTrue(is_multivalued(iterkeys({"key": "value"})))
+        self.assertTrue(is_multivalued({"key": "value"}.keys()))
 
     def test_is_multivalued_dict_values(self, m):
-        self.assertTrue(is_multivalued(itervalues({"key": "value"})))
+        self.assertTrue(is_multivalued({"key": "value"}.values()))
 
     def test_is_multivalued_dict_items(self, m):
-        self.assertTrue(is_multivalued(iteritems({"key": "value"})))
+        self.assertTrue(is_multivalued({"key": "value"}.items()))
 
     def test_is_multivalued_generator_expr(self, m):
         self.assertTrue(is_multivalued(item for item in ("item",)))
@@ -428,7 +424,7 @@ class TestUtil(unittest.TestCase):
     def test_obj_or_id_user_self(self, m):
         user_id = obj_or_id("self", "user_id", (User,))
 
-        self.assertIsInstance(user_id, text_type)
+        self.assertIsInstance(user_id, str)
         self.assertEqual(user_id, "self")
 
     def test_obj_or_id_nonuser_self(self, m):
@@ -443,7 +439,7 @@ class TestUtil(unittest.TestCase):
 
         user_name = obj_or_str(user, "name", (User,))
 
-        self.assertIsInstance(user_name, string_types)
+        self.assertIsInstance(user_name, str)
         self.assertEqual(user_name, "John Doe")
 
     def test_obj_or_str_obj_no_attr(self, m):
@@ -461,7 +457,7 @@ class TestUtil(unittest.TestCase):
 
         user_name = obj_or_str(user, "name", (CourseNickname, User))
 
-        self.assertIsInstance(user_name, string_types)
+        self.assertIsInstance(user_name, str)
 
     def test_obj_or_str_invalid_attr_parameter(self, m):
         register_uris({"user": ["get_by_id"]}, m)
@@ -479,25 +475,17 @@ class TestUtil(unittest.TestCase):
     def test_get_institution_url(self, m):
         correct_url = "https://my.canvas.edu"
 
+        # strip trailing slash
         self.assertEqual(get_institution_url("https://my.canvas.edu/"), correct_url)
-        self.assertEqual(
-            get_institution_url("https://my.canvas.edu/api/v1"), correct_url
-        )
-        self.assertEqual(
-            get_institution_url("https://my.canvas.edu/api/v1/"), correct_url
-        )
+        # strip trailing slash but keep path
         self.assertEqual(
             get_institution_url("https://my.canvas.edu/test/2/"),
             correct_url + "/test/2",
         )
-        self.assertEqual(
-            get_institution_url("https://my.canvas.edu/test/2/api/v1"),
-            correct_url + "/test/2",
-        )
-        self.assertEqual(
-            get_institution_url("https://my.canvas.edu/test/2/api/v1/"),
-            correct_url + "/test/2",
-        )
+        # strip whitespace
+        self.assertEqual(get_institution_url(" https://my.canvas.edu "), correct_url)
+        # strip whitespace and trailing slash
+        self.assertEqual(get_institution_url(" https://my.canvas.edu/ "), correct_url)
 
     # file_or_path()
     def test_file_or_path_file(self, m):
diff --git a/tests/test_validate_docstrings.py b/tests/test_validate_docstrings.py
index 1dcaaeb..5138dc7 100644
--- a/tests/test_validate_docstrings.py
+++ b/tests/test_validate_docstrings.py
@@ -1,5 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
-
 import re
 import io
 
diff --git a/tests/util.py b/tests/util.py
index ef5dd70..c72d009 100644
--- a/tests/util.py
+++ b/tests/util.py
@@ -1,4 +1,3 @@
-from __future__ import absolute_import, division, print_function, unicode_literals
 import json
 import os