diff --git a/Tautulli.py b/Tautulli.py
index eebfa55a..5d7f60df 100755
--- a/Tautulli.py
+++ b/Tautulli.py
@@ -23,7 +23,6 @@ import sys
# Ensure lib added to path, before any other imports
sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), 'lib'))
-from future.builtins import str
import appdirs
import argparse
diff --git a/plexpy/__init__.py b/plexpy/__init__.py
index ab1dafba..63f37035 100644
--- a/plexpy/__init__.py
+++ b/plexpy/__init__.py
@@ -13,14 +13,11 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import range
-from future.builtins import str
import ctypes
import datetime
import os
-import future.moves.queue as queue
+import queue
import sqlite3
import sys
import subprocess
diff --git a/plexpy/activity_handler.py b/plexpy/activity_handler.py
index ca873a8b..f2bcda50 100644
--- a/plexpy/activity_handler.py
+++ b/plexpy/activity_handler.py
@@ -13,9 +13,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import str
-from future.builtins import object
import datetime
import os
diff --git a/plexpy/activity_pinger.py b/plexpy/activity_pinger.py
index 93b52535..4f34c168 100644
--- a/plexpy/activity_pinger.py
+++ b/plexpy/activity_pinger.py
@@ -13,8 +13,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import str
import threading
diff --git a/plexpy/activity_processor.py b/plexpy/activity_processor.py
index 9bebd152..256565c4 100644
--- a/plexpy/activity_processor.py
+++ b/plexpy/activity_processor.py
@@ -13,9 +13,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import str
-from future.builtins import object
from collections import defaultdict
import json
diff --git a/plexpy/api2.py b/plexpy/api2.py
index c0dee8ed..9e44ca4f 100644
--- a/plexpy/api2.py
+++ b/plexpy/api2.py
@@ -16,9 +16,6 @@
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import str
-from future.builtins import object
from hashing_passwords import check_hash
from io import open
diff --git a/plexpy/classes.py b/plexpy/classes.py
index 0c220bbc..7cd39f53 100644
--- a/plexpy/classes.py
+++ b/plexpy/classes.py
@@ -20,9 +20,8 @@
#########################################
-from __future__ import unicode_literals
-from future.moves.urllib.request import FancyURLopener
+from urllib.request import FancyURLopener
import plexpy
from plexpy.common import USER_AGENT
diff --git a/plexpy/common.py b/plexpy/common.py
index e997d38c..20ddb2df 100644
--- a/plexpy/common.py
+++ b/plexpy/common.py
@@ -15,7 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
import distro
import platform
diff --git a/plexpy/config.py b/plexpy/config.py
index decf46f9..4c14742d 100644
--- a/plexpy/config.py
+++ b/plexpy/config.py
@@ -13,9 +13,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import object
-from future.builtins import str
import os
import re
diff --git a/plexpy/database.py b/plexpy/database.py
index 514a38c9..657aaf96 100644
--- a/plexpy/database.py
+++ b/plexpy/database.py
@@ -13,9 +13,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import str
-from future.builtins import object
import os
import sqlite3
diff --git a/plexpy/datafactory.py b/plexpy/datafactory.py
index 76113cd0..c01c0f7a 100644
--- a/plexpy/datafactory.py
+++ b/plexpy/datafactory.py
@@ -15,11 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import division
-from __future__ import unicode_literals
-from future.builtins import next
-from future.builtins import str
-from future.builtins import object
import json
diff --git a/plexpy/datatables.py b/plexpy/datatables.py
index ce78ef8f..c820bf1e 100644
--- a/plexpy/datatables.py
+++ b/plexpy/datatables.py
@@ -13,8 +13,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import object
import re
diff --git a/plexpy/exceptions.py b/plexpy/exceptions.py
index 96bb1032..4d4f2e88 100644
--- a/plexpy/exceptions.py
+++ b/plexpy/exceptions.py
@@ -13,7 +13,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
class PlexPyException(Exception):
diff --git a/plexpy/exporter.py b/plexpy/exporter.py
index 7d8a005d..a985709b 100644
--- a/plexpy/exporter.py
+++ b/plexpy/exporter.py
@@ -15,8 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import str
import csv
import json
diff --git a/plexpy/graphs.py b/plexpy/graphs.py
index 8a7fff5b..6352859e 100644
--- a/plexpy/graphs.py
+++ b/plexpy/graphs.py
@@ -15,10 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import str
-from future.builtins import range
-from future.builtins import object
import arrow
import datetime
diff --git a/plexpy/helpers.py b/plexpy/helpers.py
index 86bf5881..e38c0619 100644
--- a/plexpy/helpers.py
+++ b/plexpy/helpers.py
@@ -15,11 +15,7 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import division
-from __future__ import unicode_literals
-from future.builtins import zip
-from future.builtins import str
import arrow
import base64
@@ -50,7 +46,7 @@ import string
import sys
import time
import unicodedata
-from future.moves.urllib.parse import urlencode
+from urllib.parse import urlencode
from xml.dom import minidom
import xmltodict
diff --git a/plexpy/http_handler.py b/plexpy/http_handler.py
index aaddfcc5..c1026d2b 100644
--- a/plexpy/http_handler.py
+++ b/plexpy/http_handler.py
@@ -15,12 +15,9 @@
# You should have received a copy of the GNU General Public License
# along with PlexPy. If not, see .
-from __future__ import unicode_literals
-from future.builtins import object
-from future.builtins import str
from multiprocessing.dummy import Pool as ThreadPool
-from future.moves.urllib.parse import urljoin
+from urllib.parse import urljoin
import certifi
import requests
diff --git a/plexpy/libraries.py b/plexpy/libraries.py
index fb9c638b..2e342644 100644
--- a/plexpy/libraries.py
+++ b/plexpy/libraries.py
@@ -15,10 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import str
-from future.builtins import next
-from future.builtins import object
import json
import os
diff --git a/plexpy/lock.py b/plexpy/lock.py
index bd21840f..e0cbc632 100644
--- a/plexpy/lock.py
+++ b/plexpy/lock.py
@@ -15,10 +15,8 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import object
-import future.moves.queue as queue
+import queue
import time
import threading
diff --git a/plexpy/log_reader.py b/plexpy/log_reader.py
index d2e207bb..63a55d71 100644
--- a/plexpy/log_reader.py
+++ b/plexpy/log_reader.py
@@ -15,7 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
from io import open
import os
diff --git a/plexpy/logger.py b/plexpy/logger.py
index a4c0cad7..dcf509b9 100644
--- a/plexpy/logger.py
+++ b/plexpy/logger.py
@@ -15,8 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import str
from logging import handlers
diff --git a/plexpy/mobile_app.py b/plexpy/mobile_app.py
index c23d8540..16d59deb 100644
--- a/plexpy/mobile_app.py
+++ b/plexpy/mobile_app.py
@@ -15,8 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import str
import requests
import threading
diff --git a/plexpy/newsletter_handler.py b/plexpy/newsletter_handler.py
index 92af7f71..e1dcebfd 100644
--- a/plexpy/newsletter_handler.py
+++ b/plexpy/newsletter_handler.py
@@ -15,7 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
from io import open
import os
diff --git a/plexpy/newsletters.py b/plexpy/newsletters.py
index 1f388ad8..d74f81ef 100644
--- a/plexpy/newsletters.py
+++ b/plexpy/newsletters.py
@@ -15,10 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import next
-from future.builtins import str
-from future.builtins import object
import arrow
from collections import OrderedDict
diff --git a/plexpy/notification_handler.py b/plexpy/notification_handler.py
index 6e1f7019..6e874d49 100644
--- a/plexpy/notification_handler.py
+++ b/plexpy/notification_handler.py
@@ -16,12 +16,6 @@
# along with Tautulli. If not, see .
-from __future__ import division
-from __future__ import unicode_literals
-from future.builtins import next
-from future.builtins import map
-from future.builtins import str
-from future.builtins import range
import arrow
import bleach
diff --git a/plexpy/notifiers.py b/plexpy/notifiers.py
index 39721f58..b80e7f79 100644
--- a/plexpy/notifiers.py
+++ b/plexpy/notifiers.py
@@ -15,9 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import str
-from future.builtins import object
import base64
import bleach
@@ -37,8 +34,8 @@ import subprocess
import sys
import threading
import time
-from future.moves.urllib.parse import urlencode
-from future.moves.urllib.parse import urlparse
+from urllib.parse import urlencode
+from urllib.parse import urlparse
try:
from Cryptodome.Protocol.KDF import PBKDF2
diff --git a/plexpy/plex.py b/plexpy/plex.py
index 831e1185..ef4c8736 100644
--- a/plexpy/plex.py
+++ b/plexpy/plex.py
@@ -15,9 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import object
-from future.builtins import str
import plexpy
from plexpy import logger
diff --git a/plexpy/plexivity_import.py b/plexpy/plexivity_import.py
index 08cc28d9..38933847 100644
--- a/plexpy/plexivity_import.py
+++ b/plexpy/plexivity_import.py
@@ -15,8 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import str
import arrow
import sqlite3
diff --git a/plexpy/plextv.py b/plexpy/plextv.py
index 0675b207..44a1ac30 100644
--- a/plexpy/plextv.py
+++ b/plexpy/plextv.py
@@ -15,11 +15,7 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import next
-from future.builtins import str
-from future.builtins import object
-from future.moves.urllib.parse import unquote
+from urllib.parse import unquote
import json
diff --git a/plexpy/plexwatch_import.py b/plexpy/plexwatch_import.py
index d9cb26a2..ae356447 100644
--- a/plexpy/plexwatch_import.py
+++ b/plexpy/plexwatch_import.py
@@ -15,8 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import str
import sqlite3
from xml.dom import minidom
diff --git a/plexpy/pmsconnect.py b/plexpy/pmsconnect.py
index 022f0445..960b81c2 100644
--- a/plexpy/pmsconnect.py
+++ b/plexpy/pmsconnect.py
@@ -15,15 +15,11 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import next
-from future.builtins import str
-from future.builtins import object
import json
import os
import time
-from future.moves.urllib.parse import quote, quote_plus, urlencode
+from urllib.parse import quote, quote_plus, urlencode
from xml.dom.minidom import Node
import plexpy
diff --git a/plexpy/request.py b/plexpy/request.py
index 05804d99..c8f68c3b 100644
--- a/plexpy/request.py
+++ b/plexpy/request.py
@@ -15,8 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import str
from bs4 import BeautifulSoup
from xml.dom import minidom
diff --git a/plexpy/session.py b/plexpy/session.py
index 44a52759..2a548d6b 100644
--- a/plexpy/session.py
+++ b/plexpy/session.py
@@ -15,8 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import str
import cherrypy
diff --git a/plexpy/users.py b/plexpy/users.py
index 98645edb..9fc74313 100644
--- a/plexpy/users.py
+++ b/plexpy/users.py
@@ -15,11 +15,7 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import next
-from future.builtins import str
-from future.builtins import object
-from future.moves.urllib.parse import parse_qsl
+from urllib.parse import parse_qsl
import arrow
import httpagentparser
diff --git a/plexpy/version.py b/plexpy/version.py
index 5ca70297..e1e2c0d1 100644
--- a/plexpy/version.py
+++ b/plexpy/version.py
@@ -15,7 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
PLEXPY_BRANCH = "master"
PLEXPY_RELEASE_VERSION = "v2.13.2"
\ No newline at end of file
diff --git a/plexpy/versioncheck.py b/plexpy/versioncheck.py
index 4c849e8c..8c316e4d 100644
--- a/plexpy/versioncheck.py
+++ b/plexpy/versioncheck.py
@@ -15,10 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import division
-from __future__ import unicode_literals
-from future.builtins import next
-from future.builtins import str
import json
import os
diff --git a/plexpy/web_socket.py b/plexpy/web_socket.py
index 96fc2e33..2d0b105c 100644
--- a/plexpy/web_socket.py
+++ b/plexpy/web_socket.py
@@ -17,8 +17,6 @@
# Mostly borrowed from https://github.com/trakt/Plex-Trakt-Scrobbler
-from __future__ import unicode_literals
-from future.builtins import str
import json
import ssl
diff --git a/plexpy/webauth.py b/plexpy/webauth.py
index 3371ee6e..afbbec93 100644
--- a/plexpy/webauth.py
+++ b/plexpy/webauth.py
@@ -20,10 +20,9 @@
# Form based authentication for CherryPy. Requires the
# Session tool to be loaded.
-from future.builtins import object
from datetime import datetime, timedelta
-from future.moves.urllib.parse import quote, unquote
+from urllib.parse import quote, unquote
import cherrypy
from hashing_passwords import check_hash
diff --git a/plexpy/webserve.py b/plexpy/webserve.py
index 19fccd24..c944097a 100644
--- a/plexpy/webserve.py
+++ b/plexpy/webserve.py
@@ -15,10 +15,6 @@
# You should have received a copy of the GNU General Public License
# along with Tautulli. If not, see .
-from __future__ import unicode_literals
-from future.builtins import next
-from future.builtins import object
-from future.builtins import str
import csv
from io import open, BytesIO
@@ -31,7 +27,7 @@ import shutil
import sys
import threading
import zipfile
-from future.moves.urllib.parse import urlencode
+from urllib.parse import urlencode
import cherrypy
from cherrypy.lib.static import serve_file, serve_fileobj, serve_download