diff options
author | grubert <grubert@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2008-11-30 08:59:04 +0000 |
---|---|---|
committer | grubert <grubert@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2008-11-30 08:59:04 +0000 |
commit | 0ff18fdc33cc580392454154a688284454435998 (patch) | |
tree | 95c2eda83bb02d2d579a62357caf7a7d50d7ad37 | |
parent | d0c1f1683f4b6d7b13209af03ec5b9d11e6192dc (diff) | |
download | docutils-0ff18fdc33cc580392454154a688284454435998.tar.gz |
Prepare for python 3.0: minimize "types" module where possible (gbrandl).
git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk/docutils@5738 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-rw-r--r-- | HISTORY.txt | 1 | ||||
-rw-r--r-- | docutils/core.py | 3 | ||||
-rw-r--r-- | docutils/frontend.py | 9 | ||||
-rw-r--r-- | docutils/io.py | 9 | ||||
-rw-r--r-- | docutils/nodes.py | 27 | ||||
-rw-r--r-- | docutils/parsers/rst/states.py | 4 | ||||
-rw-r--r-- | docutils/readers/python/moduleparser.py | 9 | ||||
-rw-r--r-- | docutils/statemachine.py | 2 | ||||
-rw-r--r-- | docutils/utils.py | 10 | ||||
-rw-r--r-- | docutils/writers/html4css1/__init__.py | 3 | ||||
-rw-r--r-- | docutils/writers/newlatex2e/__init__.py | 5 | ||||
-rw-r--r-- | test/DocutilsTestSupport.py | 11 | ||||
-rw-r--r-- | test/package_unittest.py | 3 | ||||
-rwxr-xr-x | test/test_language.py | 5 | ||||
-rwxr-xr-x | test/test_publisher.py | 5 | ||||
-rwxr-xr-x | test/test_readers/test_python/showparse | 3 | ||||
-rwxr-xr-x | test/test_settings.py | 1 |
17 files changed, 48 insertions, 62 deletions
diff --git a/HISTORY.txt b/HISTORY.txt index 74293cad8..da509812e 100644 --- a/HISTORY.txt +++ b/HISTORY.txt @@ -19,6 +19,7 @@ Changes Since 0.5 * General: + - Prepare for python 3.0: minimize "types" module where possible. - Apply [ 1878977 ] make_id(): deaccent characters. - Backwards-compatible changes to remove python2.6 -3 deprecation warnings - Text nodes now subclass unicode rather than UserString diff --git a/docutils/core.py b/docutils/core.py index bf3b2a4f1..fb3a6001a 100644 --- a/docutils/core.py +++ b/docutils/core.py @@ -16,7 +16,6 @@ __docformat__ = 'reStructuredText' import sys import pprint -from types import StringType from docutils import __version__, __version_details__, SettingsSpec from docutils import frontend, io, utils, readers, writers from docutils.frontend import OptionParser @@ -53,7 +52,7 @@ class Publisher: """A `docutils.writers.Writer` instance.""" for component in 'reader', 'parser', 'writer': - assert not isinstance(getattr(self, component), StringType), ( + assert not isinstance(getattr(self, component), str), ( 'passed string "%s" as "%s" parameter; pass an instance, ' 'or use the "%s_name" parameter instead (in ' 'docutils.core.publish_* convenience functions).' diff --git a/docutils/frontend.py b/docutils/frontend.py index c21bd2c2d..ab116a3e0 100644 --- a/docutils/frontend.py +++ b/docutils/frontend.py @@ -29,7 +29,6 @@ __docformat__ = 'reStructuredText' import os import os.path import sys -import types import warnings import ConfigParser as CP import codecs @@ -119,7 +118,7 @@ def validate_encoding_and_error_handler( def validate_boolean(setting, value, option_parser, config_parser=None, config_section=None): - if isinstance(value, types.UnicodeType): + if isinstance(value, unicode): try: return option_parser.booleans[value.strip().lower()] except KeyError: @@ -147,7 +146,7 @@ def validate_threshold(setting, value, option_parser, def validate_colon_separated_string_list( setting, value, option_parser, config_parser=None, config_section=None): - if isinstance(value, types.UnicodeType): + if isinstance(value, unicode): value = value.split(':') else: last = value.pop() @@ -195,7 +194,7 @@ def make_paths_absolute(pathdict, keys, base_path=None): for key in keys: if key in pathdict: value = pathdict[key] - if isinstance(value, types.ListType): + if isinstance(value, list): value = [make_one_path_absolute(base_path, path) for path in value] elif value: @@ -672,7 +671,7 @@ Skipping "%s" configuration file. """List of paths of configuration files read.""" def read(self, filenames, option_parser): - if type(filenames) in (types.StringType, types.UnicodeType): + if type(filenames) in (str, unicode): filenames = [filenames] for filename in filenames: try: diff --git a/docutils/io.py b/docutils/io.py index dcce35324..ec481fb45 100644 --- a/docutils/io.py +++ b/docutils/io.py @@ -15,7 +15,6 @@ try: except: pass import re -from types import UnicodeType from docutils import TransformSpec @@ -67,10 +66,10 @@ class Input(TransformSpec): locale.setlocale(locale.LC_ALL, '') """ if self.encoding and self.encoding.lower() == 'unicode': - assert isinstance(data, UnicodeType), ( + assert isinstance(data, unicode), ( 'input encoding is "unicode" ' 'but input is not a unicode object') - if isinstance(data, UnicodeType): + if isinstance(data, unicode): # Accept unicode even if self.encoding != 'unicode'. return data if self.encoding: @@ -187,11 +186,11 @@ class Output(TransformSpec): def encode(self, data): if self.encoding and self.encoding.lower() == 'unicode': - assert isinstance(data, UnicodeType), ( + assert isinstance(data, unicode), ( 'the encoding given is "unicode" but the output is not ' 'a Unicode string') return data - if not isinstance(data, UnicodeType): + if not isinstance(data, unicode): # Non-unicode (e.g. binary) output. return data else: diff --git a/docutils/nodes.py b/docutils/nodes.py index f299dcc91..4f445e139 100644 --- a/docutils/nodes.py +++ b/docutils/nodes.py @@ -25,8 +25,7 @@ import sys import os import re import warnings -from types import IntType, SliceType, StringType, UnicodeType, \ - TupleType, ListType, ClassType, TypeType +from types import ClassType, SliceType import unicodedata # ============================== @@ -226,7 +225,7 @@ class Node: siblings=1 # Check if `condition` is a class (check for TypeType for Python # implementations that use only new-style classes, like PyPy). - if isinstance(condition, (ClassType, TypeType)): + if isinstance(condition, (ClassType, type)): node_class = condition def condition(node, node_class=node_class): return isinstance(node, node_class) @@ -426,7 +425,7 @@ class Element(Node): def _dom_node(self, domroot): element = domroot.createElement(self.tagname) for attribute, value in self.attlist(): - if isinstance(value, ListType): + if isinstance(value, list): value = ' '.join([serial_escape('%s' % v) for v in value]) element.setAttribute(attribute, '%s' % value) for child in self.children: @@ -466,7 +465,7 @@ class Element(Node): for name, value in self.attlist(): if value is None: # boolean attribute parts.append(name) - elif isinstance(value, ListType): + elif isinstance(value, list): values = [serial_escape('%s' % v) for v in value] parts.append('%s="%s"' % (name, ' '.join(values))) else: @@ -485,9 +484,9 @@ class Element(Node): return len(self.children) def __getitem__(self, key): - if isinstance(key, UnicodeType) or isinstance(key, StringType): + if isinstance(key, unicode) or isinstance(key, str): return self.attributes[key] - elif isinstance(key, IntType): + elif isinstance(key, int): return self.children[key] elif isinstance(key, SliceType): assert key.step in (None, 1), 'cannot handle slice with stride' @@ -497,9 +496,9 @@ class Element(Node): 'an attribute name string') def __setitem__(self, key, item): - if isinstance(key, UnicodeType) or isinstance(key, StringType): + if isinstance(key, unicode) or isinstance(key, str): self.attributes[str(key)] = item - elif isinstance(key, IntType): + elif isinstance(key, int): self.setup_child(item) self.children[key] = item elif isinstance(key, SliceType): @@ -512,9 +511,9 @@ class Element(Node): 'an attribute name string') def __delitem__(self, key): - if isinstance(key, UnicodeType) or isinstance(key, StringType): + if isinstance(key, unicode) or isinstance(key, str): del self.attributes[key] - elif isinstance(key, IntType): + elif isinstance(key, int): del self.children[key] elif isinstance(key, SliceType): assert key.step in (None, 1), 'cannot handle slice with stride' @@ -658,7 +657,7 @@ class Element(Node): - `start`: Initial index to check. - `end`: Initial index to *not* check. """ - if not isinstance(childclass, TupleType): + if not isinstance(childclass, tuple): childclass = (childclass,) for index in range(start, min(len(self), end)): for c in childclass: @@ -678,7 +677,7 @@ class Element(Node): - `start`: Initial index to check. - `end`: Initial index to *not* check. """ - if not isinstance(childclass, TupleType): + if not isinstance(childclass, tuple): childclass = (childclass,) for index in range(start, min(len(self), end)): for c in childclass: @@ -1411,7 +1410,7 @@ class pending(Special, Invisible, Element): internals.append('%7s%s:' % ('', key)) internals.extend(['%9s%s' % ('', line) for line in value.pformat().splitlines()]) - elif value and isinstance(value, ListType) \ + elif value and isinstance(value, list) \ and isinstance(value[0], Node): internals.append('%7s%s:' % ('', key)) for v in value: diff --git a/docutils/parsers/rst/states.py b/docutils/parsers/rst/states.py index 35cb360c5..d6fb1d30f 100644 --- a/docutils/parsers/rst/states.py +++ b/docutils/parsers/rst/states.py @@ -106,7 +106,7 @@ __docformat__ = 'reStructuredText' import sys import re import roman -from types import TupleType, FunctionType, MethodType +from types import FunctionType, MethodType from docutils import nodes, statemachine, utils, urischemes from docutils import ApplicationError, DataError from docutils.statemachine import StateMachineWS, StateWS @@ -424,7 +424,7 @@ def build_regexp(definition, compile=1): name, prefix, suffix, parts = definition part_strings = [] for part in parts: - if type(part) is TupleType: + if type(part) is tuple: part_strings.append(build_regexp(part, None)) else: part_strings.append(part) diff --git a/docutils/readers/python/moduleparser.py b/docutils/readers/python/moduleparser.py index fadb3586b..93448d160 100644 --- a/docutils/readers/python/moduleparser.py +++ b/docutils/readers/python/moduleparser.py @@ -214,7 +214,6 @@ import tokenize import token from compiler.consts import OP_ASSIGN from compiler.visitor import ASTVisitor -from types import StringType, UnicodeType, TupleType from docutils.readers.python import pynodes from docutils.nodes import Text @@ -253,7 +252,7 @@ class DocstringVisitor(BaseVisitor): def visitConst(self, node): if self.documentable: - if type(node.value) in (StringType, UnicodeType): + if type(node.value) in (str, unicode): self.documentable.append(make_docstring(node.value, node.lineno)) else: self.documentable = None @@ -398,7 +397,7 @@ class FunctionVisitor(DocstringVisitor): node.lineno) #print >>sys.stderr, function_parameters for argname, default in zip(argnames, defaults): - if type(argname) is TupleType: + if type(argname) is tuple: parameter = pynodes.parameter_tuple() for tuplearg in argname: parameter.append(make_parameter(tuplearg)) @@ -615,7 +614,7 @@ class TokenParser: self._backquote = 0 self.note_token() else: # ignore these tokens: - assert (self.string in ('*', '**', '\n') + assert (self.string in ('*', '**', '\n') or self.type == tokenize.COMMENT), ( 'token=%r' % (self.token,)) else: @@ -737,7 +736,7 @@ def normalize_parameter_name(name): """ Converts a tuple like ``('a', ('b', 'c'), 'd')`` into ``'(a, (b, c), d)'`` """ - if type(name) is TupleType: + if type(name) is tuple: return '(%s)' % ', '.join([normalize_parameter_name(n) for n in name]) else: return name diff --git a/docutils/statemachine.py b/docutils/statemachine.py index c29f128a7..40630efe6 100644 --- a/docutils/statemachine.py +++ b/docutils/statemachine.py @@ -1410,7 +1410,7 @@ class StringList(ViewList): return # new in Python 2.4 for i in range(len(self.data)): line = self.data[i] - if isinstance(line, types.UnicodeType): + if isinstance(line, unicode): new = [] for char in line: new.append(char) diff --git a/docutils/utils.py b/docutils/utils.py index b88ffbbc1..3e67bb151 100644 --- a/docutils/utils.py +++ b/docutils/utils.py @@ -11,10 +11,8 @@ __docformat__ = 'reStructuredText' import sys import os import os.path -import types import warnings import unicodedata -from types import StringType, UnicodeType from docutils import ApplicationError, DataError from docutils import nodes @@ -110,12 +108,12 @@ class Reporter: if stream is None: stream = sys.stderr - elif type(stream) in (StringType, UnicodeType): + elif type(stream) in (str, unicode): # Leave stream untouched if it's ''. if stream != '': - if type(stream) == StringType: + if type(stream) == str: stream = open(stream, 'w') - elif type(stream) == UnicodeType: + elif type(stream) == unicode: stream = open(stream.encode(), 'w') self.stream = stream @@ -508,7 +506,7 @@ east_asian_widths = {'W': 2, # Wide column widths.""" def east_asian_column_width(text): - if isinstance(text, types.UnicodeType): + if isinstance(text, unicode): total = 0 for c in text: total += east_asian_widths[unicodedata.east_asian_width(c)] diff --git a/docutils/writers/html4css1/__init__.py b/docutils/writers/html4css1/__init__.py index a5da3b166..68122ab22 100644 --- a/docutils/writers/html4css1/__init__.py +++ b/docutils/writers/html4css1/__init__.py @@ -19,7 +19,6 @@ import os import os.path import time import re -from types import ListType try: import Image # check for the Python Imaging Library except ImportError: @@ -384,7 +383,7 @@ class HTMLTranslator(nodes.NodeVisitor): # value=None was used for boolean attributes without # value, but this isn't supported by XHTML. assert value is not None - if isinstance(value, ListType): + if isinstance(value, list): values = [unicode(v) for v in value] parts.append('%s="%s"' % (name.lower(), self.attval(' '.join(values)))) diff --git a/docutils/writers/newlatex2e/__init__.py b/docutils/writers/newlatex2e/__init__.py index 1d0da909e..dd229b5d5 100644 --- a/docutils/writers/newlatex2e/__init__.py +++ b/docutils/writers/newlatex2e/__init__.py @@ -15,7 +15,6 @@ __docformat__ = 'reStructuredText' import re import os.path -from types import ListType import docutils from docutils import nodes, writers, utils @@ -659,7 +658,7 @@ class LaTeXTranslator(nodes.SparseNodeVisitor): numatts = 0 pass_contents = self.pass_contents(node) for key, value in attlist: - if isinstance(value, ListType): + if isinstance(value, list): self.append(r'\renewcommand{\DEVattrlen}{%s}' % len(value)) for i in range(len(value)): self.append(r'\DECattr{%s}{%s}{%s}{%s}{' % @@ -735,7 +734,7 @@ class LaTeXTranslator(nodes.SparseNodeVisitor): self.append(r'\renewcommand{\DEVparent}{%s}' % self.node_name(node.parent)) for name, value in node.attlist(): - if not isinstance(value, ListType) and not ':' in name: + if not isinstance(value, list) and not ':' in name: # For non-list and non-special (like # 'xml:preserve') attributes, set # \DEVcurrentN<nodename>A<attribute> to the diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py index ce67ab262..7d286b283 100644 --- a/test/DocutilsTestSupport.py +++ b/test/DocutilsTestSupport.py @@ -47,7 +47,6 @@ import re import inspect import traceback from pprint import pformat -from types import UnicodeType, StringType testroot = os.path.abspath(os.path.dirname(__file__) or os.curdir) os.chdir(testroot) @@ -190,11 +189,11 @@ class CustomTestCase(StandardTestCase): def compare_output(self, input, output, expected): """`input`, `output`, and `expected` should all be strings.""" - if isinstance(input, UnicodeType): + if isinstance(input, unicode): input = input.encode('raw_unicode_escape') - if isinstance(output, UnicodeType): + if isinstance(output, unicode): output = output.encode('raw_unicode_escape') - if isinstance(expected, UnicodeType): + if isinstance(expected, unicode): expected = expected.encode('raw_unicode_escape') try: self.assertEquals(output, expected) @@ -847,10 +846,10 @@ def _format_str(*args): return_tuple = [] for i in args: r = repr(i) - if ( (isinstance(i, StringType) or isinstance(i, UnicodeType)) + if ( (isinstance(i, str) or isinstance(i, unicode)) and '\n' in i): stripped = '' - if isinstance(i, UnicodeType): + if isinstance(i, unicode): # stripped = 'u' or 'U' stripped = r[0] r = r[1:] diff --git a/test/package_unittest.py b/test/package_unittest.py index 2453b13a7..baf46e4f0 100644 --- a/test/package_unittest.py +++ b/test/package_unittest.py @@ -116,8 +116,7 @@ def loadTestModules(path, name='', packages=None): continue if type(suite) == types.FunctionType: testSuite.addTest(suite()) - elif type(suite) == types.InstanceType \ - and isinstance(suite, unittest.TestSuite): + elif isinstance(suite, unittest.TestSuite): testSuite.addTest(suite) else: raise AssertionError, "don't understand suite (%s)" % mod diff --git a/test/test_language.py b/test/test_language.py index 6fd0ee546..7d785fdb1 100755 --- a/test/test_language.py +++ b/test/test_language.py @@ -15,7 +15,6 @@ that language. import sys import os import re -from types import UnicodeType import DocutilsTestSupport # must be imported before docutils import docutils.languages import docutils.parsers.rst.languages @@ -145,7 +144,7 @@ class LanguageTestCase(DocutilsTestSupport.CustomTestCase): if failures: text = ('Module docutils.parsers.rst.languages.%s:\n %s' % (self.language, '\n '.join(failures))) - if type(text) == UnicodeType: + if type(text) is unicode: text = text.encode('raw_unicode_escape') self.fail(text) @@ -180,7 +179,7 @@ class LanguageTestCase(DocutilsTestSupport.CustomTestCase): if failures: text = ('Module docutils.parsers.rst.languages.%s:\n %s' % (self.language, '\n '.join(failures))) - if type(text) == UnicodeType: + if type(text) is unicode: text = text.encode('raw_unicode_escape') self.fail(text) diff --git a/test/test_publisher.py b/test/test_publisher.py index b532229b0..a95158fb5 100755 --- a/test/test_publisher.py +++ b/test/test_publisher.py @@ -9,7 +9,6 @@ Test the `Publisher` facade and the ``publish_*`` convenience functions. """ import pickle -from types import StringType, DictType import DocutilsTestSupport # must be imported before docutils import docutils from docutils import core, nodes, io @@ -96,7 +95,7 @@ class PublishDoctreeTestCase(DocutilsTestSupport.StandardTestCase, docutils.Sett reader_name='doctree', source_class=io.DocTreeInput, source=doctree, source_path='test', writer_name='html', settings_spec=self) - self.assert_(isinstance(parts, DictType)) + self.assert_(isinstance(parts, dict)) def test_publish_pickle(self): # Test publishing a document tree with pickling and unpickling. @@ -122,7 +121,7 @@ class PublishDoctreeTestCase(DocutilsTestSupport.StandardTestCase, docutils.Sett doctree.transformer = None doctree_pickled = pickle.dumps(doctree) - self.assert_(isinstance(doctree_pickled, StringType)) + self.assert_(isinstance(doctree_pickled, str)) del doctree # Unpickle the document. diff --git a/test/test_readers/test_python/showparse b/test/test_readers/test_python/showparse index 8144256d6..d4d9a2264 100755 --- a/test/test_readers/test_python/showparse +++ b/test/test_readers/test_python/showparse @@ -17,7 +17,6 @@ used for input. """ import sys -import types import parser import token import symbol @@ -32,7 +31,7 @@ def name_elements(ast): name = names[ast[0]] ast[0] = '%s (%s)' % (name, ast[0]) for node in ast[1:]: - if type(node) == types.ListType: + if type(node) is list: name_elements(node) if len(sys.argv) > 1: diff --git a/test/test_settings.py b/test/test_settings.py index fb050b2ad..9f573ae56 100755 --- a/test/test_settings.py +++ b/test/test_settings.py @@ -14,7 +14,6 @@ import docutils_difflib import pprint import warnings import unittest -from types import StringType import DocutilsTestSupport # must be imported before docutils from docutils import frontend, utils from docutils.writers import html4css1, pep_html |