Remove Python 2 handling code

This commit is contained in:
Tom Niget 2023-07-08 15:20:14 +02:00 committed by Tom Niget
commit 6b5261fcba
39 changed files with 249 additions and 602 deletions

View file

@ -39,31 +39,6 @@ from apscheduler.triggers.interval import IntervalTrigger
from ga4mp import GtagMP from ga4mp import GtagMP
import pytz import pytz
PYTHON2 = sys.version_info[0] == 2
if PYTHON2:
import activity_handler
import activity_pinger
import common
import database
import datafactory
import exporter
import helpers
import libraries
import logger
import mobile_app
import newsletters
import newsletter_handler
import notification_handler
import notifiers
import plex
import plextv
import users
import versioncheck
import web_socket
import webstart
import config
else:
from plexpy import activity_handler from plexpy import activity_handler
from plexpy import activity_pinger from plexpy import activity_pinger
from plexpy import common from plexpy import common
@ -214,7 +189,6 @@ def initialize(config_file):
logger.initLogger(console=not QUIET, log_dir=CONFIG.LOG_DIR if log_writable else None, logger.initLogger(console=not QUIET, log_dir=CONFIG.LOG_DIR if log_writable else None,
verbose=VERBOSE) verbose=VERBOSE)
if not PYTHON2:
os.environ['PLEXAPI_CONFIG_PATH'] = os.path.join(DATA_DIR, 'plexapi.config.ini') os.environ['PLEXAPI_CONFIG_PATH'] = os.path.join(DATA_DIR, 'plexapi.config.ini')
os.environ['PLEXAPI_LOG_PATH'] = os.path.join(CONFIG.LOG_DIR, 'plexapi.log') os.environ['PLEXAPI_LOG_PATH'] = os.path.join(CONFIG.LOG_DIR, 'plexapi.log')
os.environ['PLEXAPI_LOG_LEVEL'] = 'DEBUG' os.environ['PLEXAPI_LOG_LEVEL'] = 'DEBUG'

View file

@ -25,15 +25,6 @@ from apscheduler.triggers.date import DateTrigger
import pytz import pytz
import plexpy import plexpy
if plexpy.PYTHON2:
import activity_processor
import common
import datafactory
import helpers
import logger
import notification_handler
import pmsconnect
else:
from plexpy import activity_processor from plexpy import activity_processor
from plexpy import common from plexpy import common
from plexpy import datafactory from plexpy import datafactory

View file

@ -19,18 +19,6 @@ from future.builtins import str
import threading import threading
import plexpy import plexpy
if plexpy.PYTHON2:
import activity_handler
import activity_processor
import database
import helpers
import libraries
import logger
import notification_handler
import plextv
import pmsconnect
import web_socket
else:
from plexpy import activity_handler from plexpy import activity_handler
from plexpy import activity_processor from plexpy import activity_processor
from plexpy import database from plexpy import database

View file

@ -21,14 +21,6 @@ from collections import defaultdict
import json import json
import plexpy import plexpy
if plexpy.PYTHON2:
import database
import helpers
import libraries
import logger
import pmsconnect
import users
else:
from plexpy import database from plexpy import database
from plexpy import helpers from plexpy import helpers
from plexpy import libraries from plexpy import libraries

View file

@ -36,21 +36,6 @@ import cherrypy
import xmltodict import xmltodict
import plexpy import plexpy
if plexpy.PYTHON2:
import common
import config
import database
import helpers
import libraries
import logger
import mobile_app
import notification_handler
import notifiers
import newsletter_handler
import newsletters
import plextv
import users
else:
from plexpy import common from plexpy import common
from plexpy import config from plexpy import config
from plexpy import database from plexpy import database

View file

@ -25,9 +25,6 @@ from __future__ import unicode_literals
from future.moves.urllib.request import FancyURLopener from future.moves.urllib.request import FancyURLopener
import plexpy import plexpy
if plexpy.PYTHON2:
from common import USER_AGENT
else:
from plexpy.common import USER_AGENT from plexpy.common import USER_AGENT

View file

@ -22,9 +22,6 @@ import platform
from collections import OrderedDict from collections import OrderedDict
import plexpy import plexpy
if plexpy.PYTHON2:
import version
else:
from plexpy import version from plexpy import version

View file

@ -27,10 +27,6 @@ from configobj import ConfigObj, ParseError
from hashing_passwords import make_hash from hashing_passwords import make_hash
import plexpy import plexpy
if plexpy.PYTHON2:
import helpers
import logger
else:
from plexpy import helpers from plexpy import helpers
from plexpy import logger from plexpy import logger

View file

@ -24,10 +24,6 @@ import threading
import time import time
import plexpy import plexpy
if plexpy.PYTHON2:
import helpers
import logger
else:
from plexpy import helpers from plexpy import helpers
from plexpy import logger from plexpy import logger

View file

@ -24,17 +24,6 @@ from future.builtins import object
import json import json
import plexpy import plexpy
if plexpy.PYTHON2:
import common
import database
import datatables
import libraries
import helpers
import logger
import pmsconnect
import session
import users
else:
from plexpy import libraries from plexpy import libraries
from plexpy import common from plexpy import common
from plexpy import database from plexpy import database

View file

@ -19,11 +19,6 @@ from future.builtins import object
import re import re
import plexpy import plexpy
if plexpy.PYTHON2:
import database
import helpers
import logger
else:
from plexpy import database from plexpy import database
from plexpy import helpers from plexpy import helpers
from plexpy import logger from plexpy import logger

View file

@ -30,14 +30,6 @@ from io import open
from multiprocessing.dummy import Pool as ThreadPool from multiprocessing.dummy import Pool as ThreadPool
import plexpy import plexpy
if plexpy.PYTHON2:
import database
import datatables
import helpers
import logger
import users
from plex import Plex
else:
from plexpy import database from plexpy import database
from plexpy import datatables from plexpy import datatables
from plexpy import helpers from plexpy import helpers

View file

@ -23,14 +23,6 @@ from future.builtins import object
import arrow import arrow
import datetime import datetime
import plexpy import plexpy
if plexpy.PYTHON2:
import common
import database
import helpers
import logger
import libraries
import session
else:
from plexpy import common from plexpy import common
from plexpy import database from plexpy import database
from plexpy import helpers from plexpy import helpers

View file

@ -55,12 +55,6 @@ from xml.dom import minidom
import xmltodict import xmltodict
import plexpy import plexpy
if plexpy.PYTHON2:
import common
import logger
import request
from api2 import API2
else:
from plexpy import common from plexpy import common
from plexpy import logger from plexpy import logger
from plexpy import request from plexpy import request
@ -889,17 +883,11 @@ def upload_to_cloudinary(img_data, img_title='', rating_key='', fallback=''):
api_secret=plexpy.CONFIG.CLOUDINARY_API_SECRET api_secret=plexpy.CONFIG.CLOUDINARY_API_SECRET
) )
# Cloudinary library has very poor support for non-ASCII characters on Python 2
if plexpy.PYTHON2:
_img_title = latinToAscii(img_title, replace=True)
else:
_img_title = img_title
try: try:
response = upload((img_title, img_data), response = upload((img_title, img_data),
public_id='{}_{}'.format(fallback, rating_key), public_id='{}_{}'.format(fallback, rating_key),
tags=['tautulli', fallback, str(rating_key)], tags=['tautulli', fallback, str(rating_key)],
context={'title': _img_title, 'rating_key': str(rating_key), 'fallback': fallback}) context={'title': img_title, 'rating_key': str(rating_key), 'fallback': fallback})
logger.debug("Tautulli Helpers :: Image '{}' ({}) uploaded to Cloudinary.".format(img_title, fallback)) logger.debug("Tautulli Helpers :: Image '{}' ({}) uploaded to Cloudinary.".format(img_title, fallback))
img_url = response.get('url', '') img_url = response.get('url', '')
except Exception as e: except Exception as e:
@ -1280,11 +1268,7 @@ def split_args(args=None):
if isinstance(args, list): if isinstance(args, list):
return args return args
elif isinstance(args, str): elif isinstance(args, str):
if plexpy.PYTHON2:
args = args.encode('utf-8')
args = shlex.split(args) args = shlex.split(args)
if plexpy.PYTHON2:
args = [a.decode('utf-8') for a in args]
return args return args
return [] return []

View file

@ -27,10 +27,6 @@ import requests
import urllib3 import urllib3
import plexpy import plexpy
if plexpy.PYTHON2:
import helpers
import logger
else:
from plexpy import helpers from plexpy import helpers
from plexpy import logger from plexpy import logger

View file

@ -25,18 +25,6 @@ import os
from datetime import datetime, timedelta from datetime import datetime, timedelta
import plexpy import plexpy
if plexpy.PYTHON2:
import common
import database
import datatables
import helpers
import logger
import plextv
import pmsconnect
import session
import users
from plex import Plex
else:
from plexpy import common from plexpy import common
from plexpy import database from plexpy import database
from plexpy import datatables from plexpy import datatables

View file

@ -23,9 +23,6 @@ import time
import threading import threading
import plexpy import plexpy
if plexpy.PYTHON2:
import logger
else:
from plexpy import logger from plexpy import logger

View file

@ -21,10 +21,6 @@ from io import open
import os import os
import plexpy import plexpy
if plexpy.PYTHON2:
import helpers
import logger
else:
from plexpy import helpers from plexpy import helpers
from plexpy import logger from plexpy import logger

View file

@ -29,11 +29,6 @@ import threading
import traceback import traceback
import plexpy import plexpy
if plexpy.PYTHON2:
import helpers
import users
from config import _BLACKLIST_KEYS, _WHITELIST_KEYS
else:
from plexpy import helpers, users from plexpy import helpers, users
from plexpy.config import _BLACKLIST_KEYS, _WHITELIST_KEYS from plexpy.config import _BLACKLIST_KEYS, _WHITELIST_KEYS

View file

@ -31,11 +31,6 @@ if HAS_PYOBJC:
import rumps import rumps
import plexpy import plexpy
if plexpy.PYTHON2:
import common
import logger
import versioncheck
else:
from plexpy import common from plexpy import common
from plexpy import logger from plexpy import logger
from plexpy import versioncheck from plexpy import versioncheck

View file

@ -22,11 +22,6 @@ import requests
import threading import threading
import plexpy import plexpy
if plexpy.PYTHON2:
import database
import helpers
import logger
else:
from plexpy import database from plexpy import database
from plexpy import helpers from plexpy import helpers
from plexpy import logger from plexpy import logger

View file

@ -24,12 +24,6 @@ from apscheduler.triggers.cron import CronTrigger
import email.utils import email.utils
import plexpy import plexpy
if plexpy.PYTHON2:
import database
import helpers
import logger
import newsletters
else:
from plexpy import database from plexpy import database
from plexpy import helpers from plexpy import helpers
from plexpy import logger from plexpy import logger

View file

@ -30,16 +30,6 @@ import os
import re import re
import plexpy import plexpy
if plexpy.PYTHON2:
import common
import database
import helpers
import libraries
import logger
import newsletter_handler
import pmsconnect
from notifiers import send_notification, EMAIL
else:
from plexpy import common from plexpy import common
from plexpy import database from plexpy import database
from plexpy import helpers from plexpy import helpers

View file

@ -39,18 +39,6 @@ import threading
import musicbrainzngs import musicbrainzngs
import plexpy import plexpy
if plexpy.PYTHON2:
import activity_processor
import common
import database
import datafactory
import logger
import helpers
import notifiers
import pmsconnect
import request
from newsletter_handler import notify as notify_newsletter
else:
from plexpy import activity_processor from plexpy import activity_processor
from plexpy import common from plexpy import common
from plexpy import database from plexpy import database
@ -2071,10 +2059,6 @@ class CustomFormatter(Formatter):
obj = self.convert_field(obj, conversion) obj = self.convert_field(obj, conversion)
# expand the format spec, if needed # expand the format spec, if needed
if plexpy.PYTHON2:
format_spec = self._vformat(format_spec, args, kwargs,
used_args, recursion_depth - 1)
else:
format_spec, auto_arg_index = self._vformat( format_spec, auto_arg_index = self._vformat(
format_spec, args, kwargs, format_spec, args, kwargs,
used_args, recursion_depth-1, used_args, recursion_depth-1,
@ -2090,7 +2074,4 @@ class CustomFormatter(Formatter):
result.append(suffix) result.append(suffix)
# result.append(self.format_field(obj, format_spec)) # result.append(self.format_field(obj, format_spec))
if plexpy.PYTHON2:
return ''.join(result)
else:
return ''.join(result), auto_arg_index return ''.join(result), auto_arg_index

View file

@ -61,16 +61,6 @@ import facebook
import twitter import twitter
import plexpy import plexpy
if plexpy.PYTHON2:
import common
import database
import helpers
import logger
import mobile_app
import pmsconnect
import request
import users
else:
from plexpy import common from plexpy import common
from plexpy import database from plexpy import database
from plexpy import helpers from plexpy import helpers
@ -3450,9 +3440,6 @@ class SCRIPTS(Notifier):
if self.pythonpath and plexpy.INSTALL_TYPE not in ('windows', 'macos'): if self.pythonpath and plexpy.INSTALL_TYPE not in ('windows', 'macos'):
custom_env['PYTHONPATH'] = os.pathsep.join([p for p in sys.path if p]) custom_env['PYTHONPATH'] = os.pathsep.join([p for p in sys.path if p])
if plexpy.PYTHON2:
custom_env = {k.encode('utf-8'): v.encode('utf-8') for k, v in custom_env.items()}
env = os.environ.copy() env = os.environ.copy()
env.update(custom_env) env.update(custom_env)
@ -3557,9 +3544,6 @@ class SCRIPTS(Notifier):
script.extend(script_args) script.extend(script_args)
if plexpy.PYTHON2:
script = [s.encode(plexpy.SYS_ENCODING, 'ignore') for s in script]
logger.debug("Tautulli Notifiers :: Full script is: %s" % script) logger.debug("Tautulli Notifiers :: Full script is: %s" % script)
logger.debug("Tautulli Notifiers :: Executing script in a new thread.") logger.debug("Tautulli Notifiers :: Executing script in a new thread.")
thread = threading.Thread(target=self.run_script, args=(script, user_id)).start() thread = threading.Thread(target=self.run_script, args=(script, user_id)).start()

View file

@ -20,9 +20,6 @@ from future.builtins import object
from future.builtins import str from future.builtins import str
import plexpy import plexpy
if plexpy.PYTHON2:
import logger
else:
from plexpy import logger from plexpy import logger

View file

@ -23,13 +23,6 @@ import sqlite3
from xml.dom import minidom from xml.dom import minidom
import plexpy import plexpy
if plexpy.PYTHON2:
import activity_processor
import database
import helpers
import logger
import users
else:
from plexpy import activity_processor from plexpy import activity_processor
from plexpy import database from plexpy import database
from plexpy import helpers from plexpy import helpers

View file

@ -24,16 +24,6 @@ from future.moves.urllib.parse import unquote
import json import json
import plexpy import plexpy
if plexpy.PYTHON2:
import common
import helpers
import http_handler
import logger
import users
import pmsconnect
import session
from plex import Plex
else:
from plexpy import common from plexpy import common
from plexpy import helpers from plexpy import helpers
from plexpy import http_handler from plexpy import http_handler

View file

@ -22,13 +22,6 @@ import sqlite3
from xml.dom import minidom from xml.dom import minidom
import plexpy import plexpy
if plexpy.PYTHON2:
import activity_processor
import database
import helpers
import logger
import users
else:
from plexpy import activity_processor from plexpy import activity_processor
from plexpy import database from plexpy import database
from plexpy import helpers from plexpy import helpers

View file

@ -27,17 +27,6 @@ from future.moves.urllib.parse import quote, quote_plus, urlencode
from xml.dom.minidom import Node from xml.dom.minidom import Node
import plexpy import plexpy
if plexpy.PYTHON2:
import activity_processor
import common
import helpers
import http_handler
import libraries
import logger
import plextv
import session
import users
else:
from plexpy import activity_processor from plexpy import activity_processor
from plexpy import common from plexpy import common
from plexpy import helpers from plexpy import helpers

View file

@ -26,10 +26,6 @@ import requests
from requests.packages import urllib3 from requests.packages import urllib3
import plexpy import plexpy
if plexpy.PYTHON2:
import lock
import logger
else:
from plexpy import lock from plexpy import lock
from plexpy import logger from plexpy import logger

View file

@ -21,10 +21,6 @@ from future.builtins import str
import cherrypy import cherrypy
import plexpy import plexpy
if plexpy.PYTHON2:
import common
import users
else:
from plexpy import common from plexpy import common
from plexpy import users from plexpy import users

View file

@ -26,16 +26,6 @@ import httpagentparser
from datetime import datetime, timedelta from datetime import datetime, timedelta
import plexpy import plexpy
if plexpy.PYTHON2:
import common
import database
import datatables
import helpers
import libraries
import logger
import plextv
import session
else:
from plexpy import common from plexpy import common
from plexpy import database from plexpy import database
from plexpy import datatables from plexpy import datatables

View file

@ -29,12 +29,6 @@ import subprocess
import tarfile import tarfile
import plexpy import plexpy
if plexpy.PYTHON2:
import common
import helpers
import logger
import request
else:
from plexpy import common from plexpy import common
from plexpy import helpers from plexpy import helpers
from plexpy import logger from plexpy import logger
@ -292,9 +286,6 @@ def check_github(scheduler=False, notify=False, use_cache=False):
'plexpy_update_commit': plexpy.LATEST_VERSION, 'plexpy_update_commit': plexpy.LATEST_VERSION,
'plexpy_update_behind': plexpy.COMMITS_BEHIND}) 'plexpy_update_behind': plexpy.COMMITS_BEHIND})
if plexpy.PYTHON2:
logger.warn('Tautulli is running using Python 2. Unable to run automatic update.')
elif scheduler and plexpy.CONFIG.PLEXPY_AUTO_UPDATE and \ elif scheduler and plexpy.CONFIG.PLEXPY_AUTO_UPDATE and \
not plexpy.DOCKER and not plexpy.SNAP and not plexpy.FROZEN: not plexpy.DOCKER and not plexpy.SNAP and not plexpy.FROZEN:
logger.info('Running automatic update.') logger.info('Running automatic update.')
@ -307,10 +298,6 @@ def check_github(scheduler=False, notify=False, use_cache=False):
def update(): def update():
if plexpy.PYTHON2:
logger.warn('Tautulli is running using Python 2. Unable to update.')
return
if not plexpy.UPDATE_AVAILABLE: if not plexpy.UPDATE_AVAILABLE:
return return

View file

@ -29,13 +29,6 @@ import certifi
import websocket import websocket
import plexpy import plexpy
if plexpy.PYTHON2:
import activity_handler
import activity_pinger
import activity_processor
import database
import logger
else:
from plexpy import activity_handler from plexpy import activity_handler
from plexpy import activity_pinger from plexpy import activity_pinger
from plexpy import activity_processor from plexpy import activity_processor

View file

@ -30,13 +30,6 @@ from hashing_passwords import check_hash
import jwt import jwt
import plexpy import plexpy
if plexpy.PYTHON2:
import logger
from database import MonitorDatabase
from helpers import timestamp
from users import Users, refresh_users
from plextv import PlexTV
else:
from plexpy import logger from plexpy import logger
from plexpy.database import MonitorDatabase from plexpy.database import MonitorDatabase
from plexpy.helpers import timestamp from plexpy.helpers import timestamp

View file

@ -49,42 +49,6 @@ if sys.version_info >= (3, 6):
import secrets import secrets
import plexpy import plexpy
if plexpy.PYTHON2:
import activity_pinger
import activity_processor
import common
import config
import database
import datafactory
import exporter
import graphs
import helpers
import http_handler
import libraries
import log_reader
import logger
import newsletter_handler
import newsletters
import mobile_app
import notification_handler
import notifiers
import plextv
import plexivity_import
import plexwatch_import
import pmsconnect
import users
import versioncheck
import web_socket
import webstart
from api2 import API2
from helpers import checked, addtoapi, get_ip, create_https_certificates, build_datatables_json, sanitize_out
from session import get_session_info, get_session_user_id, allow_session_user, allow_session_library
from webauth import AuthController, requireAuth, member_of, check_auth, get_jwt_token
if common.PLATFORM == 'Windows':
import windows
elif common.PLATFORM == 'Darwin':
import macos
else:
from plexpy import activity_pinger from plexpy import activity_pinger
from plexpy import activity_processor from plexpy import activity_processor
from plexpy import common from plexpy import common
@ -4367,8 +4331,6 @@ class WebInterface(object):
@cherrypy.expose @cherrypy.expose
@requireAuth(member_of("admin")) @requireAuth(member_of("admin"))
def update(self, **kwargs): def update(self, **kwargs):
if plexpy.PYTHON2:
raise cherrypy.HTTPRedirect(plexpy.HTTP_ROOT + "home?update=python2")
if plexpy.DOCKER or plexpy.SNAP: if plexpy.DOCKER or plexpy.SNAP:
raise cherrypy.HTTPRedirect(plexpy.HTTP_ROOT + "home") raise cherrypy.HTTPRedirect(plexpy.HTTP_ROOT + "home")

View file

@ -22,12 +22,6 @@ import sys
import cherrypy import cherrypy
import plexpy import plexpy
if plexpy.PYTHON2:
import logger
import webauth
from helpers import create_https_certificates
from webserve import WebInterface, BaseRedirect
else:
from plexpy import logger from plexpy import logger
from plexpy import webauth from plexpy import webauth
from plexpy.helpers import create_https_certificates from plexpy.helpers import create_https_certificates

View file

@ -30,11 +30,6 @@ except ImportError:
import _winreg as winreg import _winreg as winreg
import plexpy import plexpy
if plexpy.PYTHON2:
import common
import logger
import versioncheck
else:
from plexpy import common from plexpy import common
from plexpy import logger from plexpy import logger
from plexpy import versioncheck from plexpy import versioncheck