Browse Source

Change make Py3.9 preparations.

Change cElementTree has been removed.
Change base64.decodestring has been removed.
Change create central etree only importer for py2/py3.
Change improve central lxml_etree importer for py2/py3.
pull/1289/head
Prinz23 5 years ago
committed by JackDandy
parent
commit
deeea48e90
  1. 1
      CHANGES.md
  2. 9
      lib/_23.py
  3. 2
      lib/adba/aniDBfileInfo.py
  4. 5
      lib/feedparser_py3/http.py
  5. 4
      lib/feedparser_py3/mixin.py
  6. 19
      lib/lxml_etree/__init__.py
  7. 5
      sickbeard/notifiers/kodi.py
  8. 5
      sickbeard/notifiers/nmj.py
  9. 7
      sickbeard/notifiers/nmjv2.py
  10. 5
      sickbeard/notifiers/plex.py
  11. 5
      sickbeard/notifiers/xbmc.py

1
CHANGES.md

@ -40,6 +40,7 @@
* Change improve Popen resource usage under py2 * Change improve Popen resource usage under py2
* Add overall failure monitoring to History/Connect fails (renamed from "Provider fails") * Add overall failure monitoring to History/Connect fails (renamed from "Provider fails")
* Change log exception during updateCache in newznab * Change log exception during updateCache in newznab
* Change make Py3.9 preparations
[develop changelog] [develop changelog]

9
lib/_23.py

@ -155,6 +155,9 @@ if 2 != version_info[0]:
# noinspection PyUnresolvedReferences # noinspection PyUnresolvedReferences
from subprocess import Popen from subprocess import Popen
# noinspection PyUnresolvedReferences
import xml.etree.ElementTree as etree
native_timestamp = datetime.datetime.timestamp # type: Callable[[datetime.datetime], float] native_timestamp = datetime.datetime.timestamp # type: Callable[[datetime.datetime], float]
def unquote(string, encoding='utf-8', errors='replace'): def unquote(string, encoding='utf-8', errors='replace'):
@ -227,6 +230,12 @@ else:
# noinspection PyUnresolvedReferences,PyDeprecation # noinspection PyUnresolvedReferences,PyDeprecation
from inspect import getargspec from inspect import getargspec
try:
# noinspection PyPep8Naming
import xml.etree.cElementTree as etree
except ImportError:
# noinspection PyPep8Naming
import xml.etree.ElementTree as etree
def _totimestamp(dt=None): def _totimestamp(dt=None):
# type: (datetime.datetime) -> float # type: (datetime.datetime) -> float

2
lib/adba/aniDBfileInfo.py

@ -24,8 +24,8 @@ import pickle
import requests import requests
import sys import sys
import time import time
import xml.etree.cElementTree as etree
from _23 import etree
logger = logging.getLogger('adba') logger = logging.getLogger('adba')
logger.addHandler(logging.NullHandler()) logger.addHandler(logging.NullHandler())

5
lib/feedparser_py3/http.py

@ -71,9 +71,8 @@ import base64
from .datetimes import _parse_date from .datetimes import _parse_date
from .urls import convert_to_idn from .urls import convert_to_idn
# Python 3.1 deprecated decodestring in favor of decodebytes. _base64decode = base64.decodebytes
# This can be removed after Python 2.7 support is dropped.
_base64decode = getattr(base64, 'decodebytes', base64.decodestring)
try: try:
basestring basestring

4
lib/feedparser_py3/mixin.py

@ -48,9 +48,7 @@ from .util import FeedParserDict
from .urls import _urljoin, make_safe_absolute_uri, resolve_relative_uris from .urls import _urljoin, make_safe_absolute_uri, resolve_relative_uris
# Python 2.7 only offers "decodestring()". _base64decode = base64.decodebytes
# This name substitution can be removed when Python 2.7 support is dropped.
_base64decode = getattr(base64, 'decodebytes', base64.decodestring)
bytes_ = type(b'') bytes_ = type(b'')

19
lib/lxml_etree/__init__.py

@ -1,12 +1,19 @@
from sys import version_info
try: try:
# noinspection PyPackageRequirements # noinspection PyPackageRequirements
from lxml import etree from lxml import etree
is_lxml = True is_lxml = True
except ImportError: except ImportError:
is_lxml = False is_lxml = False
try: etree = None
# noinspection PyPep8Naming if 2 == version_info[0]:
import xml.etree.cElementTree as etree try:
except ImportError: # noinspection PyPep8Naming
# noinspection PyPep8Naming import xml.etree.cElementTree as etree
import xml.etree.ElementTree as etree except ImportError:
etree = None
if not is_lxml and not etree:
# noinspection PyPep8Naming
import xml.etree.ElementTree as etree

5
sickbeard/notifiers/kodi.py

@ -22,7 +22,6 @@ try:
except ImportError: except ImportError:
from lib import simplejson as json from lib import simplejson as json
import time import time
import xml.etree.cElementTree as XmlEtree
from .generic import Notifier from .generic import Notifier
from .. import logger from .. import logger
@ -30,7 +29,7 @@ import sickbeard
import sickbeard.helpers import sickbeard.helpers
from exceptions_helper import ex from exceptions_helper import ex
from _23 import decode_str, quote, unquote, unquote_plus from _23 import decode_str, etree, quote, unquote, unquote_plus
class KodiNotifier(Notifier): class KodiNotifier(Notifier):
@ -233,7 +232,7 @@ class KodiNotifier(Notifier):
return False return False
try: try:
et = XmlEtree.fromstring(quote(response, ':\\/<>')) et = etree.fromstring(quote(response, ':\\/<>'))
except SyntaxError as e: except SyntaxError as e:
self._log_error(u'Unable to parse XML in response: %s' % ex(e)) self._log_error(u'Unable to parse XML in response: %s' % ex(e))
return False return False

5
sickbeard/notifiers/nmj.py

@ -18,13 +18,12 @@
import re import re
import telnetlib import telnetlib
import xml.etree.cElementTree as XmlEtree
from .generic import BaseNotifier from .generic import BaseNotifier
import sickbeard import sickbeard
from exceptions_helper import ex from exceptions_helper import ex
from _23 import urlencode from _23 import etree, urlencode
# noinspection PyUnresolvedReferences # noinspection PyUnresolvedReferences
from six.moves import urllib from six.moves import urllib
@ -141,7 +140,7 @@ class NMJNotifier(BaseNotifier):
# try to parse the resulting XML # try to parse the resulting XML
try: try:
et = XmlEtree.fromstring(response) et = etree.fromstring(response)
result = et.findtext('returnValue') result = et.findtext('returnValue')
except SyntaxError as e: except SyntaxError as e:
self._log_error(u'Unable to parse XML returned from the Popcorn Hour: %s' % ex(e)) self._log_error(u'Unable to parse XML returned from the Popcorn Hour: %s' % ex(e))

7
sickbeard/notifiers/nmjv2.py

@ -19,13 +19,12 @@
import time import time
from xml.dom.minidom import parseString from xml.dom.minidom import parseString
import xml.etree.cElementTree as XmlEtree
from .generic import BaseNotifier from .generic import BaseNotifier
import sickbeard import sickbeard
from exceptions_helper import ex from exceptions_helper import ex
from _23 import urlencode from _23 import etree, urlencode
# noinspection PyUnresolvedReferences # noinspection PyUnresolvedReferences
from six.moves import urllib from six.moves import urllib
@ -133,14 +132,14 @@ class NMJv2Notifier(BaseNotifier):
return False return False
try: try:
et = XmlEtree.fromstring(response1) et = etree.fromstring(response1)
result1 = et.findtext('returnValue') result1 = et.findtext('returnValue')
except SyntaxError as e: except SyntaxError as e:
self._log_error(u'Unable to parse XML returned from the Popcorn Hour: update_scandir, %s' % ex(e)) self._log_error(u'Unable to parse XML returned from the Popcorn Hour: update_scandir, %s' % ex(e))
return False return False
try: try:
et = XmlEtree.fromstring(response2) et = etree.fromstring(response2)
result2 = et.findtext('returnValue') result2 = et.findtext('returnValue')
except SyntaxError as e: except SyntaxError as e:
self._log_error(u'Unable to parse XML returned from the Popcorn Hour: scanner_start, %s' % ex(e)) self._log_error(u'Unable to parse XML returned from the Popcorn Hour: scanner_start, %s' % ex(e))

5
sickbeard/notifiers/plex.py

@ -17,14 +17,13 @@
# along with SickGear. If not, see <http://www.gnu.org/licenses/>. # along with SickGear. If not, see <http://www.gnu.org/licenses/>.
import re import re
import xml.etree.cElementTree as XmlEtree
from .generic import Notifier from .generic import Notifier
import sickbeard import sickbeard
from encodingKludge import fixStupidEncodings from encodingKludge import fixStupidEncodings
from exceptions_helper import ex from exceptions_helper import ex
from _23 import b64encodestring, decode_str, filter_iter, list_values, unquote_plus, urlencode from _23 import b64encodestring, decode_str, etree, filter_iter, list_values, unquote_plus, urlencode
from six import iteritems, text_type, PY2 from six import iteritems, text_type, PY2
# noinspection PyUnresolvedReferences # noinspection PyUnresolvedReferences
from six.moves import urllib from six.moves import urllib
@ -175,7 +174,7 @@ class PLEXNotifier(Notifier):
try: try:
http_response_obj = urllib.request.urlopen(req) # PY2 http_response_obj has no `with` context manager http_response_obj = urllib.request.urlopen(req) # PY2 http_response_obj has no `with` context manager
auth_tree = XmlEtree.parse(http_response_obj) auth_tree = etree.parse(http_response_obj)
http_response_obj.close() http_response_obj.close()
token = auth_tree.findall('.//authentication-token')[0].text token = auth_tree.findall('.//authentication-token')[0].text
token_arg = '?X-Plex-Token=' + token token_arg = '?X-Plex-Token=' + token

5
sickbeard/notifiers/xbmc.py

@ -22,14 +22,13 @@ except ImportError:
from lib import simplejson as json from lib import simplejson as json
import socket import socket
import time import time
import xml.etree.cElementTree as XmlEtree
from .generic import Notifier from .generic import Notifier
import sickbeard import sickbeard
from exceptions_helper import ex from exceptions_helper import ex
from encodingKludge import fixStupidEncodings from encodingKludge import fixStupidEncodings
from _23 import b64encodestring, decode_str, quote, unquote, unquote_plus, urlencode from _23 import b64encodestring, decode_str, etree, quote, unquote, unquote_plus, urlencode
from six import PY2, text_type from six import PY2, text_type
# noinspection PyUnresolvedReferences # noinspection PyUnresolvedReferences
from six.moves import urllib from six.moves import urllib
@ -238,7 +237,7 @@ class XBMCNotifier(Notifier):
enc_sql_xml = quote(sql_xml, ':\\/<>') enc_sql_xml = quote(sql_xml, ':\\/<>')
try: try:
et = XmlEtree.fromstring(enc_sql_xml) et = etree.fromstring(enc_sql_xml)
except SyntaxError as e: except SyntaxError as e:
self._log_error(u'Unable to parse XML response: ' + ex(e)) self._log_error(u'Unable to parse XML response: ' + ex(e))
return False return False

Loading…
Cancel
Save