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. 31
      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
* Add overall failure monitoring to History/Connect fails (renamed from "Provider fails")
* Change log exception during updateCache in newznab
* Change make Py3.9 preparations
[develop changelog]

9
lib/_23.py

@ -155,6 +155,9 @@ if 2 != version_info[0]:
# noinspection PyUnresolvedReferences
from subprocess import Popen
# noinspection PyUnresolvedReferences
import xml.etree.ElementTree as etree
native_timestamp = datetime.datetime.timestamp # type: Callable[[datetime.datetime], float]
def unquote(string, encoding='utf-8', errors='replace'):
@ -227,6 +230,12 @@ else:
# noinspection PyUnresolvedReferences,PyDeprecation
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):
# type: (datetime.datetime) -> float

2
lib/adba/aniDBfileInfo.py

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

5
lib/feedparser_py3/http.py

@ -71,9 +71,8 @@ import base64
from .datetimes import _parse_date
from .urls import convert_to_idn
# Python 3.1 deprecated decodestring in favor of decodebytes.
# This can be removed after Python 2.7 support is dropped.
_base64decode = getattr(base64, 'decodebytes', base64.decodestring)
_base64decode = base64.decodebytes
try:
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
# Python 2.7 only offers "decodestring()".
# This name substitution can be removed when Python 2.7 support is dropped.
_base64decode = getattr(base64, 'decodebytes', base64.decodestring)
_base64decode = base64.decodebytes
bytes_ = type(b'')

31
lib/lxml_etree/__init__.py

@ -1,12 +1,19 @@
try:
# noinspection PyPackageRequirements
from lxml import etree
is_lxml = True
except ImportError:
is_lxml = False
try:
# noinspection PyPep8Naming
import xml.etree.cElementTree as etree
except ImportError:
# noinspection PyPep8Naming
import xml.etree.ElementTree as etree
from sys import version_info
try:
# noinspection PyPackageRequirements
from lxml import etree
is_lxml = True
except ImportError:
is_lxml = False
etree = None
if 2 == version_info[0]:
try:
# noinspection PyPep8Naming
import xml.etree.cElementTree 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:
from lib import simplejson as json
import time
import xml.etree.cElementTree as XmlEtree
from .generic import Notifier
from .. import logger
@ -30,7 +29,7 @@ import sickbeard
import sickbeard.helpers
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):
@ -233,7 +232,7 @@ class KodiNotifier(Notifier):
return False
try:
et = XmlEtree.fromstring(quote(response, ':\\/<>'))
et = etree.fromstring(quote(response, ':\\/<>'))
except SyntaxError as e:
self._log_error(u'Unable to parse XML in response: %s' % ex(e))
return False

5
sickbeard/notifiers/nmj.py

@ -18,13 +18,12 @@
import re
import telnetlib
import xml.etree.cElementTree as XmlEtree
from .generic import BaseNotifier
import sickbeard
from exceptions_helper import ex
from _23 import urlencode
from _23 import etree, urlencode
# noinspection PyUnresolvedReferences
from six.moves import urllib
@ -141,7 +140,7 @@ class NMJNotifier(BaseNotifier):
# try to parse the resulting XML
try:
et = XmlEtree.fromstring(response)
et = etree.fromstring(response)
result = et.findtext('returnValue')
except SyntaxError as 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
from xml.dom.minidom import parseString
import xml.etree.cElementTree as XmlEtree
from .generic import BaseNotifier
import sickbeard
from exceptions_helper import ex
from _23 import urlencode
from _23 import etree, urlencode
# noinspection PyUnresolvedReferences
from six.moves import urllib
@ -133,14 +132,14 @@ class NMJv2Notifier(BaseNotifier):
return False
try:
et = XmlEtree.fromstring(response1)
et = etree.fromstring(response1)
result1 = et.findtext('returnValue')
except SyntaxError as e:
self._log_error(u'Unable to parse XML returned from the Popcorn Hour: update_scandir, %s' % ex(e))
return False
try:
et = XmlEtree.fromstring(response2)
et = etree.fromstring(response2)
result2 = et.findtext('returnValue')
except SyntaxError as 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/>.
import re
import xml.etree.cElementTree as XmlEtree
from .generic import Notifier
import sickbeard
from encodingKludge import fixStupidEncodings
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
# noinspection PyUnresolvedReferences
from six.moves import urllib
@ -175,7 +174,7 @@ class PLEXNotifier(Notifier):
try:
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()
token = auth_tree.findall('.//authentication-token')[0].text
token_arg = '?X-Plex-Token=' + token

5
sickbeard/notifiers/xbmc.py

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

Loading…
Cancel
Save