From: Stephen F. <st...@th...> - 2019-08-25 15:57:21
|
Add aliases for symbols that have been removed in Python 3.x, namely basestring, unicode, unichr and StandardError. Signed-off-by: Stephen Finucane <st...@th...ru> --- docutils/docutils/__init__.py | 3 +- docutils/docutils/frontend.py | 3 + docutils/docutils/io.py | 3 + docutils/docutils/nodes.py | 8 ++- .../parsers/rst/directives/__init__.py | 3 + docutils/docutils/statemachine.py | 10 +++- docutils/docutils/transforms/frontmatter.py | 6 ++ docutils/docutils/transforms/universal.py | 5 ++ docutils/docutils/utils/__init__.py | 3 + docutils/docutils/utils/error_reporting.py | 10 +++- docutils/docutils/utils/math/math2html.py | 59 ++++--------------- docutils/docutils/writers/_html_base.py | 4 ++ docutils/docutils/writers/docutils_xml.py | 3 + docutils/docutils/writers/latex2e/__init__.py | 4 ++ docutils/docutils/writers/manpage.py | 2 +- docutils/test/DocutilsTestSupport.py | 4 ++ docutils/test/test__init__.py | 4 ++ docutils/test/test_error_reporting.py | 3 + docutils/test/test_language.py | 7 ++- docutils/test/test_nodes.py | 3 + .../test_rst/test_directives/test_include.py | 5 ++ .../test_rst/test_directives/test_tables.py | 5 ++ .../test_rst/test_directives/test_unicode.py | 6 ++ docutils/tools/dev/create_unimap.py | 10 ++-- 24 files changed, 111 insertions(+), 62 deletions(-) diff --git a/docutils/docutils/__init__.py b/docutils/docutils/__init__.py index d96c045d1..5f6a0877b 100644 --- a/docutils/docutils/__init__.py +++ b/docutils/docutils/__init__.py @@ -88,7 +88,8 @@ __version_details__ = 'release' """ -class ApplicationError(StandardError): pass +class ApplicationError(Exception): pass + class DataError(ApplicationError): pass diff --git a/docutils/docutils/frontend.py b/docutils/docutils/frontend.py index 94641c677..699dcbcbc 100644 --- a/docutils/docutils/frontend.py +++ b/docutils/docutils/frontend.py @@ -43,6 +43,9 @@ import docutils.nodes from docutils.utils.error_reporting import (locale_encoding, SafeString, ErrorOutput, ErrorString) +if sys.version_info >= (3, 0): + unicode = str # noqa + def store_multiple(option, opt, value, parser, *args, **kwargs): """ diff --git a/docutils/docutils/io.py b/docutils/docutils/io.py index dee53743d..fffc5b359 100644 --- a/docutils/docutils/io.py +++ b/docutils/docutils/io.py @@ -17,6 +17,9 @@ import codecs from docutils import TransformSpec from docutils.utils.error_reporting import locale_encoding, ErrorString, ErrorOutput +if sys.version_info >= (3, 0): + unicode = str # noqa + class InputError(IOError): pass class OutputError(IOError): pass diff --git a/docutils/docutils/nodes.py b/docutils/docutils/nodes.py index 7dcdbb1b8..0b73eabe2 100644 --- a/docutils/docutils/nodes.py +++ b/docutils/docutils/nodes.py @@ -30,6 +30,10 @@ import warnings import types import unicodedata +if sys.version_info >= (3, 0): + unicode = str # noqa + basestring = str # noqa + # ============================== # Functional Node Base Classes # ============================== @@ -61,7 +65,7 @@ class Node(object): """ return True - if sys.version_info < (3,): + if sys.version_info < (3, 0): # on 2.x, str(node) will be a byte string with Unicode # characters > 255 escaped; on 3.x this is no longer necessary def __str__(self): @@ -301,7 +305,7 @@ class Node(object): except IndexError: return None -if sys.version_info < (3,): +if sys.version_info < (3, 0): class reprunicode(unicode): """ A unicode sub-class that removes the initial u from unicode's repr. diff --git a/docutils/docutils/parsers/rst/directives/__init__.py b/docutils/docutils/parsers/rst/directives/__init__.py index 6f4211b74..6b6e022f7 100644 --- a/docutils/docutils/parsers/rst/directives/__init__.py +++ b/docutils/docutils/parsers/rst/directives/__init__.py @@ -16,6 +16,9 @@ from docutils import nodes from docutils.utils import split_escaped_whitespace, escape2null, unescape from docutils.parsers.rst.languages import en as _fallback_language_module +if sys.version_info >= (3, 0): + unichr = chr # noqa + _directive_registry = { 'attention': ('admonitions', 'Attention'), diff --git a/docutils/docutils/statemachine.py b/docutils/docutils/statemachine.py index 18386f369..028343819 100644 --- a/docutils/docutils/statemachine.py +++ b/docutils/docutils/statemachine.py @@ -114,6 +114,9 @@ import unicodedata from docutils import utils from docutils.utils.error_reporting import ErrorOutput +if sys.version_info >= (3, 0): + unicode = str # noqa + class StateMachine(object): @@ -1121,7 +1124,12 @@ class ViewList(object): def __ne__(self, other): return self.data != self.__cast(other) def __gt__(self, other): return self.data > self.__cast(other) def __ge__(self, other): return self.data >= self.__cast(other) - def __cmp__(self, other): return cmp(self.data, self.__cast(other)) + + def __cmp__(self, other): + # from https://docs.python.org/3.0/whatsnew/3.0.html + foo = self.data + bar = self.__cast(other) + return (foo > bar) - (foo < bar) def __cast(self, other): if isinstance(other, ViewList): diff --git a/docutils/docutils/transforms/frontmatter.py b/docutils/docutils/transforms/frontmatter.py index 8f7a72aa2..fc4427946 100644 --- a/docutils/docutils/transforms/frontmatter.py +++ b/docutils/docutils/transforms/frontmatter.py @@ -22,10 +22,16 @@ Transforms related to the front matter of a document or a section __docformat__ = 'reStructuredText' import re +import sys + from docutils import nodes, utils from docutils.transforms import TransformError, Transform +if sys.version_info >= (3, 0): + unicode = str # noqa + + class TitlePromoter(Transform): """ diff --git a/docutils/docutils/transforms/universal.py b/docutils/docutils/transforms/universal.py index fa39215cc..8e71842b1 100644 --- a/docutils/docutils/transforms/universal.py +++ b/docutils/docutils/transforms/universal.py @@ -17,12 +17,17 @@ Transforms needed by most or all documents: __docformat__ = 'reStructuredText' import re +import sys import time from docutils import nodes, utils from docutils.transforms import TransformError, Transform from docutils.utils import smartquotes +if sys.version_info >= (3, 0): + unicode = str # noqa + + class Decorations(Transform): """ diff --git a/docutils/docutils/utils/__init__.py b/docutils/docutils/utils/__init__.py index 4809f3ef0..e61b94878 100644 --- a/docutils/docutils/utils/__init__.py +++ b/docutils/docutils/utils/__init__.py @@ -22,6 +22,9 @@ from docutils.nodes import unescape import docutils.io from docutils.utils.error_reporting import ErrorOutput, SafeString +if sys.version_info >= (3, 0): + unicode = str + class SystemMessage(ApplicationError): diff --git a/docutils/docutils/utils/error_reporting.py b/docutils/docutils/utils/error_reporting.py index 253427b61..c7511e371 100644 --- a/docutils/docutils/utils/error_reporting.py +++ b/docutils/docutils/utils/error_reporting.py @@ -35,7 +35,8 @@ The `SafeString`, `ErrorString` and `ErrorOutput` classes handle common exceptions. """ -import sys, codecs +import codecs +import sys # Guess the locale's encoding. # If no valid guess can be made, locale_encoding is set to `None`: @@ -64,6 +65,9 @@ else: locale_encoding = None +if sys.version_info >= (3, 0): + unicode = str # noqa + class SafeString(object): """ @@ -199,9 +203,9 @@ class ErrorOutput(object): self.stream.write(data) except UnicodeEncodeError: self.stream.write(data.encode(self.encoding, self.encoding_errors)) - except TypeError: + except TypeError: if isinstance(data, unicode): # passed stream may expect bytes - self.stream.write(data.encode(self.encoding, + self.stream.write(data.encode(self.encoding, self.encoding_errors)) return if self.stream in (sys.stderr, sys.stdout): diff --git a/docutils/docutils/utils/math/math2html.py b/docutils/docutils/utils/math/math2html.py index 1f61e23f8..49671655c 100644 --- a/docutils/docutils/utils/math/math2html.py +++ b/docutils/docutils/utils/math/math2html.py @@ -20,10 +20,21 @@ # Alex 20101110 # eLyXer standalone formula conversion to HTML. +import codecs +import datetime +import gettext +import io +import os.path +import sys +import unicodedata +import urllib +if sys.version_info >= (3,0): + unicode = str #noqa + basestring = str # noqa + file = io.IOBase # noqa -import sys class Trace(object): "A tracing class" @@ -73,12 +84,6 @@ class Trace(object): show = classmethod(show) - - -import os.path -import sys - - class BibStylesConfig(object): "Configuration class from elyxer.config file" @@ -1305,17 +1310,6 @@ class BranchOptions(object): return 'options for ' + self.name + ': ' + unicode(self.options) - - -import urllib - - - - - - - - class Cloner(object): "An object used to clone other objects." @@ -1699,15 +1693,6 @@ class StringOutput(ContainerOutput): return [container.string] - - - - - -import sys -import codecs - - class LineReader(object): "Reads a file line by line" @@ -3094,24 +3079,6 @@ class FormulaFactory(object): return whole - - -import unicodedata - - - - - - - - - - - - -import gettext - - class Translator(object): "Reads the configuration file and tries to find a translation." "Otherwise falls back to the messages in the config file." @@ -4589,8 +4556,6 @@ class BeginCommand(CommandBit): FormulaCommand.types += [BeginCommand] -import datetime - class CombiningFunction(OneParamFunction): diff --git a/docutils/docutils/writers/_html_base.py b/docutils/docutils/writers/_html_base.py index 28464517b..6ab0c1615 100644 --- a/docutils/docutils/writers/_html_base.py +++ b/docutils/docutils/writers/_html_base.py @@ -40,6 +40,10 @@ from docutils.utils.math import (unichar2tex, pick_math_environment, math2html, latex2mathml, tex2mathml_extern) +if sys.version_info >= (3, 0): + unicode = str # noqa + + class Writer(writers.Writer): supported = ('html', 'xhtml') # update in subclass diff --git a/docutils/docutils/writers/docutils_xml.py b/docutils/docutils/writers/docutils_xml.py index eb28ab21b..194f21c62 100644 --- a/docutils/docutils/writers/docutils_xml.py +++ b/docutils/docutils/writers/docutils_xml.py @@ -17,6 +17,9 @@ from StringIO import StringIO import docutils from docutils import frontend, writers, nodes +if sys.version_info >= (3, 0): + unicode = str # noqa + class RawXmlError(docutils.ApplicationError): pass diff --git a/docutils/docutils/writers/latex2e/__init__.py b/docutils/docutils/writers/latex2e/__init__.py index 474feed3e..62b52731c 100644 --- a/docutils/docutils/writers/latex2e/__init__.py +++ b/docutils/docutils/writers/latex2e/__init__.py @@ -28,6 +28,10 @@ from docutils.transforms import writer_aux from docutils.utils.math import pick_math_environment, unichar2tex +if sys.version_info >= (3, 0): + unicode = str # noqa + + class Writer(writers.Writer): supported = ('latex','latex2e') diff --git a/docutils/docutils/writers/manpage.py b/docutils/docutils/writers/manpage.py index e1458070f..da72f60fb 100644 --- a/docutils/docutils/writers/manpage.py +++ b/docutils/docutils/writers/manpage.py @@ -255,7 +255,7 @@ class Translator(nodes.NodeVisitor): # ensure we get a ".TH" as viewers require it. self.append_header() # filter body - for i in xrange(len(self.body)-1, 0, -1): + for i in range(len(self.body)-1, 0, -1): # remove superfluous vertical gaps. if self.body[i] == '.sp\n': if self.body[i - 1][:4] in ('.BI ','.IP '): diff --git a/docutils/test/DocutilsTestSupport.py b/docutils/test/DocutilsTestSupport.py index b26fc44d8..eb9b8fa39 100644 --- a/docutils/test/DocutilsTestSupport.py +++ b/docutils/test/DocutilsTestSupport.py @@ -89,6 +89,10 @@ except: import pdb +if sys.version_info >= (3, 0): + unicode = str # noqa + + # Hack to make repr(StringList) look like repr(list): StringList.__repr__ = StringList.__str__ diff --git a/docutils/test/test__init__.py b/docutils/test/test__init__.py index f23c1f201..c66f97a02 100644 --- a/docutils/test/test__init__.py +++ b/docutils/test/test__init__.py @@ -16,6 +16,10 @@ import docutils import docutils.utils +if sys.version_info >= (3, 0): + unicode = str # noqa + + class ApplicationErrorTests(unittest.TestCase): def test_message(self): diff --git a/docutils/test/test_error_reporting.py b/docutils/test/test_error_reporting.py index 400e40ad7..41dbfc5df 100644 --- a/docutils/test/test_error_reporting.py +++ b/docutils/test/test_error_reporting.py @@ -44,6 +44,9 @@ if sys.version_info < (3, 0): # problems solved in py3k print('cannot test error reporting with problematic locales,\n' '`import locale` failed.') +if sys.version_info >= (3, 0): + unicode = str # noqa + # locales confirmed to use non-ASCII chars in the IOError message # for a missing file (https://bugs.gentoo.org/show_bug.cgi?id=349101) diff --git a/docutils/test/test_language.py b/docutils/test/test_language.py index 69fb36c0f..920d1b4e9 100755 --- a/docutils/test/test_language.py +++ b/docutils/test/test_language.py @@ -26,6 +26,9 @@ _reporter = docutils.utils.new_reporter('', _settings) reference_language = 'en' +if sys.version_info >= (3, 0): + unicode = str # noqa + class LanguageTestSuite(DocutilsTestSupport.CustomTestSuite): @@ -156,7 +159,7 @@ class LanguageTestCase(DocutilsTestSupport.CustomTestCase): if failures: text = ('Module docutils.parsers.rst.languages.%s:\n %s' % (self.language, '\n '.join(failures))) - if type(text) is unicode: + if isinstance(text, unicode): text = text.encode('raw_unicode_escape') self.fail(text) @@ -191,7 +194,7 @@ class LanguageTestCase(DocutilsTestSupport.CustomTestCase): if failures: text = ('Module docutils.parsers.rst.languages.%s:\n %s' % (self.language, '\n '.join(failures))) - if type(text) is unicode: + if isinstance(text, unicode): text = text.encode('raw_unicode_escape') self.fail(text) diff --git a/docutils/test/test_nodes.py b/docutils/test/test_nodes.py index 1badfd391..84da41f2c 100755 --- a/docutils/test/test_nodes.py +++ b/docutils/test/test_nodes.py @@ -17,6 +17,9 @@ from DocutilsTestSupport import nodes, utils debug = False +if sys.version_info >= (3, 0): + unicode = str # noqa + class TextTests(unittest.TestCase): diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_include.py b/docutils/test/test_parsers/test_rst/test_directives/test_include.py index 3dc775f3c..acd31e00b 100755 --- a/docutils/test/test_parsers/test_rst/test_directives/test_include.py +++ b/docutils/test/test_parsers/test_rst/test_directives/test_include.py @@ -14,6 +14,11 @@ from __init__ import DocutilsTestSupport from docutils.parsers.rst import states from docutils.utils.code_analyzer import with_pygments + +if sys.version_info >= (3, 0): + unichr = chr # noqa + + def suite(): s = DocutilsTestSupport.ParserTestSuite() if not with_pygments: diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_tables.py b/docutils/test/test_parsers/test_rst/test_directives/test_tables.py index a6a02f5fb..b187df32f 100755 --- a/docutils/test/test_parsers/test_rst/test_directives/test_tables.py +++ b/docutils/test/test_parsers/test_rst/test_directives/test_tables.py @@ -17,6 +17,11 @@ import platform from docutils.parsers.rst.directives import tables +if sys.version_info >= (3, 0): + unicode = str # noqa + unichr = chr # noqa + + def suite(): s = DocutilsTestSupport.ParserTestSuite() s.generateTests(totest) diff --git a/docutils/test/test_parsers/test_rst/test_directives/test_unicode.py b/docutils/test/test_parsers/test_rst/test_directives/test_unicode.py index 54ad6ff29..2d341d58a 100755 --- a/docutils/test/test_parsers/test_rst/test_directives/test_unicode.py +++ b/docutils/test/test_parsers/test_rst/test_directives/test_unicode.py @@ -8,9 +8,15 @@ Tests for misc.py "unicode" directive. """ +import sys + from __init__ import DocutilsTestSupport +if sys.version_info >= (3, 0): + unichr = chr # noqa + + def suite(): s = DocutilsTestSupport.ParserTestSuite() s.generateTests(totest) diff --git a/docutils/tools/dev/create_unimap.py b/docutils/tools/dev/create_unimap.py index b905f34f0..e08dbea9c 100755 --- a/docutils/tools/dev/create_unimap.py +++ b/docutils/tools/dev/create_unimap.py @@ -14,15 +14,15 @@ from xml.dom import minidom import sys import pprint -if sys.version_info >= (3,0): - unicode = str +if sys.version_info >= (3, 0): + unicode = str #noqa else: - bytes = str - chr = unichr + bytes = str # noqa + chr = unichr # noqa def w(s): - if sys.version_info >= (3,0) and isinstance(s, unicode): + if sys.version_info >= (3, 0) and isinstance(s, unicode): s = s.encode('utf8') sys.stdout.write(s) -- 2.21.0 |