summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgrubert <grubert@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2008-11-30 08:59:04 +0000
committergrubert <grubert@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>2008-11-30 08:59:04 +0000
commit0ff18fdc33cc580392454154a688284454435998 (patch)
tree95c2eda83bb02d2d579a62357caf7a7d50d7ad37
parentd0c1f1683f4b6d7b13209af03ec5b9d11e6192dc (diff)
downloaddocutils-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.txt1
-rw-r--r--docutils/core.py3
-rw-r--r--docutils/frontend.py9
-rw-r--r--docutils/io.py9
-rw-r--r--docutils/nodes.py27
-rw-r--r--docutils/parsers/rst/states.py4
-rw-r--r--docutils/readers/python/moduleparser.py9
-rw-r--r--docutils/statemachine.py2
-rw-r--r--docutils/utils.py10
-rw-r--r--docutils/writers/html4css1/__init__.py3
-rw-r--r--docutils/writers/newlatex2e/__init__.py5
-rw-r--r--test/DocutilsTestSupport.py11
-rw-r--r--test/package_unittest.py3
-rwxr-xr-xtest/test_language.py5
-rwxr-xr-xtest/test_publisher.py5
-rwxr-xr-xtest/test_readers/test_python/showparse3
-rwxr-xr-xtest/test_settings.py1
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