* [PR PATCH] python-docutils: update to 0.16
@ 2020-01-18 9:18 voidlinux-github
2020-01-18 9:21 ` [PR PATCH] [Updated] " voidlinux-github
2020-01-18 15:29 ` [PR PATCH] [Merged]: " voidlinux-github
0 siblings, 2 replies; 3+ messages in thread
From: voidlinux-github @ 2020-01-18 9:18 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 321 bytes --]
There is a new pull request by sgn against master on the void-packages repository
https://github.com/sgn/void-packages python-docutils-0.16
https://github.com/void-linux/void-packages/pull/18366
python-docutils: update to 0.16
A patch file from https://github.com/void-linux/void-packages/pull/18366.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-python-docutils-0.16-18366.patch --]
[-- Type: text/x-diff, Size: 376906 bytes --]
From e56f5b3a54bff66ca0fee58b263fb458fd982f7c Mon Sep 17 00:00:00 2001
From: Doan Tran Cong Danh <congdanhqx@gmail.com>
Date: Wed, 25 Dec 2019 12:53:32 +0700
Subject: [PATCH] python-docutils: update to 0.16
---
.../0001-py3-Use-new-style-classes.patch | 394 ----
.../0002-py3-Switch-to-print-functions.patch | 1517 ---------------
...3-Switch-to-except-foo-as-bar-syntax.patch | 719 -------
...-py3-Add-aliases-for-removed-symbols.patch | 599 ------
...ve-some-additional-undefined-symbols.patch | 80 -
...deprecated-form-of-raising-exception.patch | 263 ---
...-Replace-sys.maxint-with-sys.maxsize.patch | 103 -
...s.SliceType-with-slice-remove-types..patch | 128 --
.../0009-py3-Use-absolute_import-future.patch | 1699 -----------------
...3-Use-sorted-foo-instead-of-foo.sort.patch | 236 ---
...mplify-code-following-recent-changes.patch | 49 -
...e-foo-bar-instead-of-type-foo-is-bar.patch | 120 --
.../0013-Consistent-Python-3-checks.patch | 594 ------
...4-py3-Replace-foo.next-with-next-foo.patch | 74 -
...lace-foo.has_key-bar-with-bar-in-foo.patch | 38 -
...-definition-of-nodes.Element.__conta.patch | 47 -
...-ConfigParser-to-configparser-rename.patch | 93 -
.../patches/0018-py3-Replace-ur-prefix.patch | 599 ------
...es-to-facilitate-integration-of-py3-.patch | 920 ---------
...py3-Handle-StringIO-to-io-transition.patch | 78 -
...-Python-2-3-compatibility-definition.patch | 91 -
...ndle-urllib-urllib2-to-urlib.-rename.patch | 202 --
.../patches/0023-py3-Fix-magic-methods.patch | 352 ----
...y3-Wrap-foo.keys-zip-foo-bar-in-list.patch | 147 --
.../patches/0025-Simplify-code.patch | 84 -
...andle-os.getcwdu-to-os.getcwd-rename.patch | 42 -
.../python-docutils/patches/test-import.patch | 20 +
srcpkgs/python-docutils/template | 12 +-
28 files changed, 28 insertions(+), 9272 deletions(-)
delete mode 100644 srcpkgs/python-docutils/patches/0001-py3-Use-new-style-classes.patch
delete mode 100644 srcpkgs/python-docutils/patches/0002-py3-Switch-to-print-functions.patch
delete mode 100644 srcpkgs/python-docutils/patches/0003-py3-Switch-to-except-foo-as-bar-syntax.patch
delete mode 100644 srcpkgs/python-docutils/patches/0004-py3-Add-aliases-for-removed-symbols.patch
delete mode 100644 srcpkgs/python-docutils/patches/0005-py3-Resolve-some-additional-undefined-symbols.patch
delete mode 100644 srcpkgs/python-docutils/patches/0006-py3-Replace-deprecated-form-of-raising-exception.patch
delete mode 100644 srcpkgs/python-docutils/patches/0007-py3-Replace-sys.maxint-with-sys.maxsize.patch
delete mode 100644 srcpkgs/python-docutils/patches/0008-py3-Replace-types.SliceType-with-slice-remove-types..patch
delete mode 100644 srcpkgs/python-docutils/patches/0009-py3-Use-absolute_import-future.patch
delete mode 100644 srcpkgs/python-docutils/patches/0010-py3-Use-sorted-foo-instead-of-foo.sort.patch
delete mode 100644 srcpkgs/python-docutils/patches/0011-Cleanup-simplify-code-following-recent-changes.patch
delete mode 100644 srcpkgs/python-docutils/patches/0012-Use-isinstance-foo-bar-instead-of-type-foo-is-bar.patch
delete mode 100644 srcpkgs/python-docutils/patches/0013-Consistent-Python-3-checks.patch
delete mode 100644 srcpkgs/python-docutils/patches/0014-py3-Replace-foo.next-with-next-foo.patch
delete mode 100644 srcpkgs/python-docutils/patches/0015-py3-Replace-foo.has_key-bar-with-bar-in-foo.patch
delete mode 100644 srcpkgs/python-docutils/patches/0016-Remove-duplicate-definition-of-nodes.Element.__conta.patch
delete mode 100644 srcpkgs/python-docutils/patches/0017-Handle-ConfigParser-to-configparser-rename.patch
delete mode 100644 srcpkgs/python-docutils/patches/0018-py3-Replace-ur-prefix.patch
delete mode 100644 srcpkgs/python-docutils/patches/0019-Formatting-changes-to-facilitate-integration-of-py3-.patch
delete mode 100644 srcpkgs/python-docutils/patches/0020-py3-Handle-StringIO-to-io-transition.patch
delete mode 100644 srcpkgs/python-docutils/patches/0021-Remove-auxiliary-Python-2-3-compatibility-definition.patch
delete mode 100644 srcpkgs/python-docutils/patches/0022-py3-Handle-urllib-urllib2-to-urlib.-rename.patch
delete mode 100644 srcpkgs/python-docutils/patches/0023-py3-Fix-magic-methods.patch
delete mode 100644 srcpkgs/python-docutils/patches/0024-py3-Wrap-foo.keys-zip-foo-bar-in-list.patch
delete mode 100644 srcpkgs/python-docutils/patches/0025-Simplify-code.patch
delete mode 100644 srcpkgs/python-docutils/patches/0026-py3-Handle-os.getcwdu-to-os.getcwd-rename.patch
create mode 100644 srcpkgs/python-docutils/patches/test-import.patch
diff --git a/srcpkgs/python-docutils/patches/0001-py3-Use-new-style-classes.patch b/srcpkgs/python-docutils/patches/0001-py3-Use-new-style-classes.patch
deleted file mode 100644
index 1014ee6298a..00000000000
--- a/srcpkgs/python-docutils/patches/0001-py3-Use-new-style-classes.patch
+++ /dev/null
@@ -1,394 +0,0 @@
-From 41f436c476b1cb6736050a12de0c9732c800019a Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 19 Nov 2019 23:40:58 +0700
-Subject: [PATCH 01/26] py3: Use new style classes
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8345 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/__init__.py | 2 +-
- docutils/core.py | 2 +-
- docutils/nodes.py | 54 +++++++++++++++++++++--------
- docutils/parsers/rst/roles.py | 4 +--
- docutils/parsers/rst/states.py | 4 +--
- docutils/parsers/rst/tableparser.py | 2 +-
- docutils/statemachine.py | 8 ++---
- docutils/transforms/__init__.py | 2 +-
- docutils/utils/__init__.py | 2 +-
- docutils/utils/math/latex2mathml.py | 2 +-
- test/DocutilsTestSupport.py | 2 +-
- test/alltests.py | 2 +-
- test/test_statemachine.py | 2 +-
- tools/buildhtml.py | 4 +--
- tools/dev/create_unimap.py | 4 +--
- tools/dev/unicode2rstsubs.py | 2 +-
- 16 files changed, 61 insertions(+), 37 deletions(-)
-
-diff --git a/docutils/__init__.py b/docutils/__init__.py
-index f06e810..7d6a679 100644
---- a/docutils/__init__.py
-+++ b/docutils/__init__.py
-@@ -92,7 +92,7 @@ class ApplicationError(StandardError): pass
- class DataError(ApplicationError): pass
-
-
--class SettingsSpec:
-+class SettingsSpec(object):
-
- """
- Runtime setting specification base class.
-diff --git a/docutils/core.py b/docutils/core.py
-index 3dc12e8..2eebbf2 100644
---- a/docutils/core.py
-+++ b/docutils/core.py
-@@ -23,7 +23,7 @@ from docutils.transforms import Transformer
- from docutils.utils.error_reporting import ErrorOutput, ErrorString
- import docutils.readers.doctree
-
--class Publisher:
-+class Publisher(object):
-
- """
- A facade encapsulating the high-level logic of a Docutils system.
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index d830616..9573208 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -1112,12 +1112,12 @@ class FixedTextElement(TextElement):
- # Mixins
- # ========
-
--class Resolvable:
-+class Resolvable(object):
-
- resolved = 0
-
-
--class BackLinkable:
-+class BackLinkable(object):
-
- def add_backref(self, refid):
- self['backrefs'].append(refid)
-@@ -1127,39 +1127,63 @@ class BackLinkable:
- # Element Categories
- # ====================
-
--class Root: pass
-+class Root(object):
-+ pass
-+
-+
-+class Titular(object):
-+ pass
-
--class Titular: pass
-
--class PreBibliographic:
-+class PreBibliographic(object):
- """Category of Node which may occur before Bibliographic Nodes."""
-
--class Bibliographic: pass
-
--class Decorative(PreBibliographic): pass
-+class Bibliographic(object):
-+ pass
-+
-+
-+class Decorative(PreBibliographic):
-+ pass
-+
-+
-+class Structural(object):
-+ pass
-+
-+
-+class Body(object):
-+ pass
-
--class Structural: pass
-
--class Body: pass
-+class General(Body):
-+ pass
-
--class General(Body): pass
-
- class Sequential(Body):
- """List-like elements."""
-
-+
- class Admonition(Body): pass
-
-+
- class Special(Body):
- """Special internal body elements."""
-
-+
- class Invisible(PreBibliographic):
- """Internal elements that don't appear in output."""
-
--class Part: pass
-
--class Inline: pass
-+class Part(object):
-+ pass
-+
-+
-+class Inline(object):
-+ pass
-+
-
--class Referential(Resolvable): pass
-+class Referential(Resolvable):
-+ pass
-
-
- class Targetable(Resolvable):
-@@ -1171,7 +1195,7 @@ class Targetable(Resolvable):
- Required for MoinMoin/reST compatibility."""
-
-
--class Labeled:
-+class Labeled(object):
- """Contains a `label` as its first element."""
-
-
-@@ -1856,7 +1880,7 @@ node_class_names = """
- """A list of names of all concrete Node subclasses."""
-
-
--class NodeVisitor:
-+class NodeVisitor(object):
-
- """
- "Visitor" pattern [GoF95]_ abstract superclass implementation for
-diff --git a/docutils/parsers/rst/roles.py b/docutils/parsers/rst/roles.py
-index 918e564..aa42c80 100644
---- a/docutils/parsers/rst/roles.py
-+++ b/docutils/parsers/rst/roles.py
-@@ -181,7 +181,7 @@ def register_generic_role(canonical_name, node_class):
- register_canonical_role(canonical_name, role)
-
-
--class GenericRole:
-+class GenericRole(object):
-
- """
- Generic interpreted text role, where the interpreted text is simply
-@@ -198,7 +198,7 @@ class GenericRole:
- return [self.node_class(rawtext, utils.unescape(text), **options)], []
-
-
--class CustomRole:
-+class CustomRole(object):
-
- """
- Wrapper for custom interpreted text roles.
-diff --git a/docutils/parsers/rst/states.py b/docutils/parsers/rst/states.py
-index d8ca9f0..2ece3b3 100644
---- a/docutils/parsers/rst/states.py
-+++ b/docutils/parsers/rst/states.py
-@@ -126,7 +126,7 @@ class ParserError(ApplicationError): pass
- class MarkupMismatch(Exception): pass
-
-
--class Struct:
-+class Struct(object):
-
- """Stores data attributes for dotted-attribute access."""
-
-@@ -459,7 +459,7 @@ def build_regexp(definition, compile=True):
- return regexp
-
-
--class Inliner:
-+class Inliner(object):
-
- """
- Parse inline markup; call the `parse()` method.
-diff --git a/docutils/parsers/rst/tableparser.py b/docutils/parsers/rst/tableparser.py
-index e19388b..45af72f 100644
---- a/docutils/parsers/rst/tableparser.py
-+++ b/docutils/parsers/rst/tableparser.py
-@@ -40,7 +40,7 @@ class TableMarkupError(DataError):
- DataError.__init__(self, *args)
-
-
--class TableParser:
-+class TableParser(object):
-
- """
- Abstract superclass for the common parts of the syntax-specific parsers.
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index 6bb3c6b..2188982 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -114,7 +114,7 @@ from docutils import utils
- from docutils.utils.error_reporting import ErrorOutput
-
-
--class StateMachine:
-+class StateMachine(object):
-
- """
- A finite state machine for text filters using regular expressions.
-@@ -518,7 +518,7 @@ class StateMachine:
- observer(*info)
-
-
--class State:
-+class State(object):
-
- """
- State superclass. Contains a list of transitions, and transition methods.
-@@ -1034,7 +1034,7 @@ class StateWS(State):
- return context, next_state, results
-
-
--class _SearchOverride:
-+class _SearchOverride(object):
-
- """
- Mix-in class to override `StateMachine` regular expression behavior.
-@@ -1067,7 +1067,7 @@ class SearchStateMachineWS(_SearchOverride, StateMachineWS):
- pass
-
-
--class ViewList:
-+class ViewList(object):
-
- """
- List with extended functionality: slices of ViewList objects are child
-diff --git a/docutils/transforms/__init__.py b/docutils/transforms/__init__.py
-index b009c5f..9271133 100644
---- a/docutils/transforms/__init__.py
-+++ b/docutils/transforms/__init__.py
-@@ -30,7 +30,7 @@ from docutils import languages, ApplicationError, TransformSpec
- class TransformError(ApplicationError): pass
-
-
--class Transform:
-+class Transform(object):
-
- """
- Docutils transform component abstract base class.
-diff --git a/docutils/utils/__init__.py b/docutils/utils/__init__.py
-index be1c37e..7760f38 100644
---- a/docutils/utils/__init__.py
-+++ b/docutils/utils/__init__.py
-@@ -33,7 +33,7 @@ class SystemMessage(ApplicationError):
- class SystemMessagePropagation(ApplicationError): pass
-
-
--class Reporter:
-+class Reporter(object):
-
- """
- Info/warning/error reporter and ``system_message`` element generator.
-diff --git a/docutils/utils/math/latex2mathml.py b/docutils/utils/math/latex2mathml.py
-index bcb4877..1a01bc8 100644
---- a/docutils/utils/math/latex2mathml.py
-+++ b/docutils/utils/math/latex2mathml.py
-@@ -155,7 +155,7 @@ negatables = {'=': u'\u2260',
- r'\equiv': u'\u2262'}
-
- # LaTeX to MathML translation stuff:
--class math:
-+class math(object):
- """Base class for MathML elements."""
-
- nchildren = 1000000
-diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index 54ba1c4..f7986f5 100644
---- a/test/DocutilsTestSupport.py
-+++ b/test/DocutilsTestSupport.py
-@@ -92,7 +92,7 @@ except:
- StringList.__repr__ = StringList.__str__
-
-
--class DevNull:
-+class DevNull(object):
-
- """Output sink."""
-
-diff --git a/test/alltests.py b/test/alltests.py
-index 4a9b50f..9373124 100755
---- a/test/alltests.py
-+++ b/test/alltests.py
-@@ -24,7 +24,7 @@ import DocutilsTestSupport # must be imported before docutils
- import docutils
-
-
--class Tee:
-+class Tee(object):
-
- """Write to a file and a stream (default: stdout) simultaneously."""
-
-diff --git a/test/test_statemachine.py b/test/test_statemachine.py
-index 0e41337..07c561e 100755
---- a/test/test_statemachine.py
-+++ b/test/test_statemachine.py
-@@ -203,7 +203,7 @@ class SMWSTests(unittest.TestCase):
- self.assertEqual(self.sm.run(testtext), expected)
-
-
--class EmptyClass:
-+class EmptyClass(object):
- pass
-
-
-diff --git a/tools/buildhtml.py b/tools/buildhtml.py
-index 3333eab..aa4c759 100755
---- a/tools/buildhtml.py
-+++ b/tools/buildhtml.py
-@@ -107,7 +107,7 @@ class OptionParser(frontend.OptionParser):
- return source, destination
-
-
--class Struct:
-+class Struct(object):
-
- """Stores data attributes for dotted-attribute access."""
-
-@@ -115,7 +115,7 @@ class Struct:
- self.__dict__.update(keywordargs)
-
-
--class Builder:
-+class Builder(object):
-
- def __init__(self):
- self.publishers = {
-diff --git a/tools/dev/create_unimap.py b/tools/dev/create_unimap.py
-index 0e45458..a1d92ac 100755
---- a/tools/dev/create_unimap.py
-+++ b/tools/dev/create_unimap.py
-@@ -28,8 +28,8 @@ def w(s):
- text_map = {}
- math_map = {}
-
--class Visitor:
--
-+
-+class Visitor(object):
- """Node visitor for contents of unicode.xml."""
-
- def visit_character(self, node):
-diff --git a/tools/dev/unicode2rstsubs.py b/tools/dev/unicode2rstsubs.py
-index b741894..d719005 100755
---- a/tools/dev/unicode2rstsubs.py
-+++ b/tools/dev/unicode2rstsubs.py
-@@ -59,7 +59,7 @@ def process(infile):
- grouper.write_sets()
-
-
--class CharacterEntitySetExtractor:
-+class CharacterEntitySetExtractor(object):
-
- """
- Extracts character entity information from unicode.xml file, groups it by
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0002-py3-Switch-to-print-functions.patch b/srcpkgs/python-docutils/patches/0002-py3-Switch-to-print-functions.patch
deleted file mode 100644
index a6c73523433..00000000000
--- a/srcpkgs/python-docutils/patches/0002-py3-Switch-to-print-functions.patch
+++ /dev/null
@@ -1,1517 +0,0 @@
-From ede25690b4b71fbab02506f3a0919e9101b7b73b Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 19 Nov 2019 23:47:55 +0700
-Subject: [PATCH 02/26] py3: Switch to print functions
-
-Remove all uses of print as a statement. This includes comments, many of
-which are simply removed as noise (they're in version control and can be
-re-added later, if necessary).
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8346 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/core.py | 37 +++++++------
- docutils/io.py | 7 ++-
- docutils/nodes.py | 3 +-
- docutils/parsers/rst/directives/body.py | 3 +-
- docutils/parsers/rst/roles.py | 1 -
- docutils/parsers/rst/states.py | 4 +-
- docutils/statemachine.py | 55 +++++++++----------
- docutils/transforms/universal.py | 3 +-
- docutils/utils/__init__.py | 1 -
- docutils/utils/math/latex2mathml.py | 1 -
- docutils/utils/math/tex2mathml_extern.py | 7 ++-
- docutils/utils/smartquotes.py | 19 ++++---
- docutils/writers/_html_base.py | 9 ---
- docutils/writers/latex2e/__init__.py | 9 ++-
- install.py | 5 +-
- setup.py | 11 ++--
- test/DocutilsTestSupport.py | 27 ++++-----
- test/alltests.py | 32 +++++------
- test/package_unittest.py | 11 ++--
- test/test_error_reporting.py | 7 ++-
- test/test_functional.py | 5 +-
- test/test_io.py | 4 +-
- .../test_rst/test_directives/test_code.py | 14 +++--
- .../test_directives/test_code_long.py | 7 ++-
- .../test_directives/test_code_none.py | 4 +-
- .../test_rst/test_doctest_blocks.py | 12 ++--
- test/test_settings.py | 9 +--
- test/test_statemachine.py | 23 ++++----
- test/test_transforms/test_smartquotes.py | 10 ++--
- .../test_strip_elements_with_class.py | 2 +-
- test/test_viewlist.py | 14 -----
- tools/dev/create_unimap.py | 1 +
- tools/dev/generate_punctuation_chars.py | 48 +---------------
- tools/dev/profile_docutils.py | 1 +
- tools/dev/unicode2rstsubs.py | 1 +
- tools/quicktest.py | 1 +
- tools/rst2odt_prepstyles.py | 28 +++++-----
- 37 files changed, 195 insertions(+), 241 deletions(-)
-
-diff --git a/docutils/core.py b/docutils/core.py
-index 2eebbf2..6a99020 100644
---- a/docutils/core.py
-+++ b/docutils/core.py
-@@ -11,6 +11,7 @@ custom component objects first, and pass *them* to
-
- .. _The Docutils Publisher: http://docutils.sf.net/docs/api/publisher.html
- """
-+from __future__ import print_function
-
- __docformat__ = 'reStructuredText'
-
-@@ -243,24 +244,24 @@ class Publisher(object):
- if not self.document:
- return
- if self.settings.dump_settings:
-- print >>self._stderr, '\n::: Runtime settings:'
-- print >>self._stderr, pprint.pformat(self.settings.__dict__)
-+ print('\n::: Runtime settings:', file=self._stderr)
-+ print(pprint.pformat(self.settings.__dict__), file=self._stderr)
- if self.settings.dump_internals:
-- print >>self._stderr, '\n::: Document internals:'
-- print >>self._stderr, pprint.pformat(self.document.__dict__)
-+ print('\n::: Document internals:', file=self._stderr)
-+ print(pprint.pformat(self.document.__dict__), file=self._stderr)
- if self.settings.dump_transforms:
-- print >>self._stderr, '\n::: Transforms applied:'
-- print >>self._stderr, (' (priority, transform class, '
-- 'pending node details, keyword args)')
-- print >>self._stderr, pprint.pformat(
-+ print('\n::: Transforms applied:', file=self._stderr)
-+ print(' (priority, transform class, pending node details, '
-+ 'keyword args)', file=self._stderr)
-+ print(pprint.pformat(
- [(priority, '%s.%s' % (xclass.__module__, xclass.__name__),
- pending and pending.details, kwargs)
- for priority, xclass, pending, kwargs
-- in self.document.transformer.applied])
-+ in self.document.transformer.applied]), file=self._stderr)
- if self.settings.dump_pseudo_xml:
-- print >>self._stderr, '\n::: Pseudo-XML:'
-- print >>self._stderr, self.document.pformat().encode(
-- 'raw_unicode_escape')
-+ print('\n::: Pseudo-XML:', file=self._stderr)
-+ print(self.document.pformat().encode(
-+ 'raw_unicode_escape'), file=self._stderr)
-
- def report_Exception(self, error):
- if isinstance(error, utils.SystemMessage):
-@@ -275,8 +276,8 @@ class Publisher(object):
- u'Unable to open destination file for writing:\n'
- u' %s\n' % ErrorString(error))
- else:
-- print >>self._stderr, u'%s' % ErrorString(error)
-- print >>self._stderr, ("""\
-+ print(u'%s' % ErrorString(error), file=self._stderr)
-+ print(("""\
- Exiting due to error. Use "--traceback" to diagnose.
- Please report errors to <docutils-users@lists.sf.net>.
- Include "--traceback" output, Docutils version (%s%s),
-@@ -284,12 +285,12 @@ Python version (%s), your OS type & version, and the
- command line used.""" % (__version__,
- docutils.__version_details__ and
- ' [%s]'%docutils.__version_details__ or '',
-- sys.version.split()[0]))
-+ sys.version.split()[0])), file=self._stderr)
-
- def report_SystemMessage(self, error):
-- print >>self._stderr, ('Exiting due to level-%s (%s) system message.'
-- % (error.level,
-- utils.Reporter.levels[error.level]))
-+ print('Exiting due to level-%s (%s) system message.' % (
-+ error.level, utils.Reporter.levels[error.level]),
-+ file=self._stderr)
-
- def report_UnicodeError(self, error):
- data = error.object[error.start:error.end]
-diff --git a/docutils/io.py b/docutils/io.py
-index 79cb012..3b0f93e 100644
---- a/docutils/io.py
-+++ b/docutils/io.py
-@@ -6,6 +6,7 @@
- I/O classes provide a uniform API for low-level input and output. Subclasses
- exist for a variety of input/output mechanisms.
- """
-+from __future__ import print_function
-
- __docformat__ = 'reStructuredText'
-
-@@ -343,9 +344,9 @@ class FileOutput(Output):
- elif (# destination is file-type object -> check mode:
- mode and hasattr(self.destination, 'mode')
- and mode != self.destination.mode):
-- print >>self._stderr, ('Warning: Destination mode "%s" '
-- 'differs from specified mode "%s"' %
-- (self.destination.mode, mode))
-+ print('Warning: Destination mode "%s" differs from specified '
-+ 'mode "%s"' % (self.destination.mode, mode),
-+ file=self._stderr)
- if not destination_path:
- try:
- self.destination_path = self.destination.name
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index 9573208..8a5b7bb 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -19,6 +19,7 @@ hierarchy.
-
- .. _DTD: http://docutils.sourceforge.net/docs/ref/docutils.dtd
- """
-+from __future__ import print_function
-
- __docformat__ = 'reStructuredText'
-
-@@ -1724,7 +1725,7 @@ class system_message(Special, BackLinkable, PreBibliographic, Element):
- try:
- Element.__init__(self, rawsource, *children, **attributes)
- except:
-- print 'system_message: children=%r' % (children,)
-+ print('system_message: children=%r' % (children,))
- raise
-
- def astext(self):
-diff --git a/docutils/parsers/rst/directives/body.py b/docutils/parsers/rst/directives/body.py
-index c8bf172..b60c3ad 100644
---- a/docutils/parsers/rst/directives/body.py
-+++ b/docutils/parsers/rst/directives/body.py
-@@ -11,13 +11,13 @@ See `docutils.parsers.rst.directives` for API details.
- __docformat__ = 'reStructuredText'
-
-
--import sys
- from docutils import nodes
- from docutils.parsers.rst import Directive
- from docutils.parsers.rst import directives
- from docutils.parsers.rst.roles import set_classes
- from docutils.utils.code_analyzer import Lexer, LexerError, NumberLines
-
-+
- class BasePseudoSection(Directive):
-
- required_arguments = 1
-@@ -167,7 +167,6 @@ class CodeBlock(Directive):
- node.attributes['source'] = self.options['source']
- # analyze content and add nodes for every token
- for classes, value in tokens:
-- # print (classes, value)
- if classes:
- node += nodes.inline(value, value, classes=classes)
- else:
-diff --git a/docutils/parsers/rst/roles.py b/docutils/parsers/rst/roles.py
-index aa42c80..bf786b7 100644
---- a/docutils/parsers/rst/roles.py
-+++ b/docutils/parsers/rst/roles.py
-@@ -342,7 +342,6 @@ def code_role(role, rawtext, text, lineno, inliner, options={}, content=[]):
-
- # analyse content and add nodes for every token
- for classes, value in tokens:
-- # print (classes, value)
- if classes:
- node += nodes.inline(value, value, classes=classes)
- else:
-diff --git a/docutils/parsers/rst/states.py b/docutils/parsers/rst/states.py
-index 2ece3b3..a2970c8 100644
---- a/docutils/parsers/rst/states.py
-+++ b/docutils/parsers/rst/states.py
-@@ -2758,8 +2758,8 @@ class Text(RSTState):
- src, srcline = self.state_machine.get_source_and_line()
- # TODO: why is abs_line_number() == srcline+1
- # if the error is in a table (try with test_tables.py)?
-- # print "get_source_and_line", srcline
-- # print "abs_line_number", self.state_machine.abs_line_number()
-+ # print("get_source_and_line", srcline)
-+ # print("abs_line_number", self.state_machine.abs_line_number())
- msg = self.reporter.severe('Unexpected section title.',
- nodes.literal_block(blocktext, blocktext),
- source=src, line=srcline)
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index 2188982..6714a04 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -103,6 +103,7 @@ How To Use This Module
-
- sm.unlink()
- """
-+from __future__ import print_function
-
- __docformat__ = 'restructuredtext'
-
-@@ -213,15 +214,15 @@ class StateMachine(object):
- self.line_offset = -1
- self.current_state = initial_state or self.initial_state
- if self.debug:
-- print >>self._stderr, (
-+ print((
- u'\nStateMachine.run: input_lines (line_offset=%s):\n| %s'
-- % (self.line_offset, u'\n| '.join(self.input_lines)))
-+ % (self.line_offset, u'\n| '.join(self.input_lines))), file=self._stderr)
- transitions = None
- results = []
- state = self.get_state()
- try:
- if self.debug:
-- print >>self._stderr, '\nStateMachine.run: bof transition'
-+ print('\nStateMachine.run: bof transition', file=self._stderr)
- context, result = state.bof(context)
- results.extend(result)
- while True:
-@@ -231,17 +232,17 @@ class StateMachine(object):
- if self.debug:
- source, offset = self.input_lines.info(
- self.line_offset)
-- print >>self._stderr, (
-+ print((
- u'\nStateMachine.run: line (source=%r, '
- u'offset=%r):\n| %s'
-- % (source, offset, self.line))
-+ % (source, offset, self.line)), file=self._stderr)
- context, next_state, result = self.check_line(
- context, state, transitions)
- except EOFError:
- if self.debug:
-- print >>self._stderr, (
-+ print((
- '\nStateMachine.run: %s.eof transition'
-- % state.__class__.__name__)
-+ % state.__class__.__name__), file=self._stderr)
- result = state.eof(context)
- results.extend(result)
- break
-@@ -251,10 +252,10 @@ class StateMachine(object):
- self.previous_line() # back up for another try
- transitions = (exception.args[0],)
- if self.debug:
-- print >>self._stderr, (
-+ print((
- '\nStateMachine.run: TransitionCorrection to '
- 'state "%s", transition %s.'
-- % (state.__class__.__name__, transitions[0]))
-+ % (state.__class__.__name__, transitions[0])), file=self._stderr)
- continue
- except StateCorrection, exception:
- self.previous_line() # back up for another try
-@@ -264,10 +265,10 @@ class StateMachine(object):
- else:
- transitions = (exception.args[1],)
- if self.debug:
-- print >>self._stderr, (
-+ print((
- '\nStateMachine.run: StateCorrection to state '
- '"%s", transition %s.'
-- % (next_state, transitions[0]))
-+ % (next_state, transitions[0])), file=self._stderr)
- else:
- transitions = None
- state = self.get_state(next_state)
-@@ -288,11 +289,11 @@ class StateMachine(object):
- """
- if next_state:
- if self.debug and next_state != self.current_state:
-- print >>self._stderr, (
-+ print((
- '\nStateMachine.get_state: Changing state from '
- '"%s" to "%s" (input line %s).'
- % (self.current_state, next_state,
-- self.abs_line_number()))
-+ self.abs_line_number())), file=self._stderr)
- self.current_state = next_state
- try:
- return self.states[self.current_state]
-@@ -382,15 +383,11 @@ class StateMachine(object):
- # line is None if index is "Just past the end"
- src, srcline = self.get_source_and_line(offset + self.input_offset)
- return src, srcline + 1
-- except (IndexError): # `offset` is off the list
-+ except (IndexError): # `offset` is off the list
- src, srcline = None, None
- # raise AssertionError('cannot find line %d in %s lines' %
- # (offset, len(self.input_lines)))
- # # list(self.input_lines.lines())))
-- # assert offset == srcoffset, str(self.input_lines)
-- # print "get_source_and_line(%s):" % lineno,
-- # print offset + 1, '->', src, srcline
-- # print self.input_lines
- return (src, srcline)
-
- def insert_input(self, input_lines, source):
-@@ -445,24 +442,24 @@ class StateMachine(object):
- transitions = state.transition_order
- state_correction = None
- if self.debug:
-- print >>self._stderr, (
-+ print((
- '\nStateMachine.check_line: state="%s", transitions=%r.'
-- % (state.__class__.__name__, transitions))
-+ % (state.__class__.__name__, transitions)), file=self._stderr)
- for name in transitions:
- pattern, method, next_state = state.transitions[name]
- match = pattern.match(self.line)
- if match:
- if self.debug:
-- print >>self._stderr, (
-+ print((
- '\nStateMachine.check_line: Matched transition '
- '"%s" in state "%s".'
-- % (name, state.__class__.__name__))
-+ % (name, state.__class__.__name__)), file=self._stderr)
- return method(match, context, next_state)
- else:
- if self.debug:
-- print >>self._stderr, (
-+ print((
- '\nStateMachine.check_line: No match in state "%s".'
-- % state.__class__.__name__)
-+ % state.__class__.__name__), file=self._stderr)
- return state.no_match(context, transitions)
-
- def add_state(self, state_class):
-@@ -494,10 +491,10 @@ class StateMachine(object):
- def error(self):
- """Report error details."""
- type, value, module, line, function = _exception_data()
-- print >>self._stderr, u'%s: %s' % (type, value)
-- print >>self._stderr, 'input line %s' % (self.abs_line_number())
-- print >>self._stderr, (u'module %s, line %s, function %s' %
-- (module, line, function))
-+ print(u'%s: %s' % (type, value), file=self._stderr)
-+ print('input line %s' % (self.abs_line_number()), file=self._stderr)
-+ print((u'module %s, line %s, function %s' %
-+ (module, line, function)), file=self._stderr)
-
- def attach_observer(self, observer):
- """
-@@ -1329,7 +1326,7 @@ class ViewList(object):
- def pprint(self):
- """Print the list in `grep` format (`source:offset:value` lines)"""
- for line in self.xitems():
-- print "%s:%d:%s" % line
-+ print("%s:%d:%s" % line)
-
-
- class StringList(ViewList):
-diff --git a/docutils/transforms/universal.py b/docutils/transforms/universal.py
-index 3f8ddbc..47e1276 100644
---- a/docutils/transforms/universal.py
-+++ b/docutils/transforms/universal.py
-@@ -17,12 +17,12 @@ 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
-
-+
- class Decorations(Transform):
-
- """
-@@ -257,7 +257,6 @@ class SmartQuotes(Transform):
- alternative = smart_quotes.startswith('alt')
- except AttributeError:
- alternative = False
-- # print repr(alternative)
-
- document_language = self.document.settings.language_code
- lc_smartquotes = self.document.settings.smartquotes_locales
-diff --git a/docutils/utils/__init__.py b/docutils/utils/__init__.py
-index 7760f38..692335a 100644
---- a/docutils/utils/__init__.py
-+++ b/docutils/utils/__init__.py
-@@ -173,7 +173,6 @@ class Reporter(object):
- if not 'source' in attributes: # 'line' is absolute line number
- try: # look up (source, line-in-source)
- source, line = self.get_source_and_line(attributes.get('line'))
-- # print "locator lookup", kwargs.get('line'), "->", source, line
- except AttributeError:
- source, line = None, None
- if source is not None:
-diff --git a/docutils/utils/math/latex2mathml.py b/docutils/utils/math/latex2mathml.py
-index 1a01bc8..255e96f 100644
---- a/docutils/utils/math/latex2mathml.py
-+++ b/docutils/utils/math/latex2mathml.py
-@@ -384,7 +384,6 @@ def parse_latex_math(string, inline=True):
- c2 = string[1]
- else:
- c2 = ''
--## print n, string, c, c2, node.__class__.__name__
- if c == ' ':
- pass
- elif c == '\\':
-diff --git a/docutils/utils/math/tex2mathml_extern.py b/docutils/utils/math/tex2mathml_extern.py
-index e461836..3e7f158 100644
---- a/docutils/utils/math/tex2mathml_extern.py
-+++ b/docutils/utils/math/tex2mathml_extern.py
-@@ -15,6 +15,7 @@
- # Wrappers for TeX->MathML conversion by external tools
- # =====================================================
-
-+from __future__ import print_function
- import subprocess
-
- document_template = r"""\documentclass{article}
-@@ -141,6 +142,6 @@ def blahtexml(math_code, inline=True, reporter=None):
-
- if __name__ == "__main__":
- example = ur'\frac{\partial \sin^2(\alpha)}{\partial \vec r} \varpi \, \text{Grüße}'
-- # print latexml(example).encode('utf8')
-- # print ttm(example)#.encode('utf8')
-- print blahtexml(example).encode('utf8')
-+ # print(latexml(example).encode('utf8'))
-+ # print(ttm(example))
-+ print(blahtexml(example).encode('utf8'))
-diff --git a/docutils/utils/smartquotes.py b/docutils/utils/smartquotes.py
-index ebf0240..148a4c9 100644
---- a/docutils/utils/smartquotes.py
-+++ b/docutils/utils/smartquotes.py
-@@ -315,6 +315,7 @@ Version History
- 1.5_1.0: Tue, 09 Mar 2004 08:08:35 -0500
- - Initial release
- """
-+from __future__ import print_function
-
- options = r"""
- Options
-@@ -964,16 +965,16 @@ if __name__ == "__main__":
- args = parser.parse_args()
-
- if args.doc:
-- print (__doc__)
-+ print(__doc__)
- elif args.actionhelp:
-- print options
-+ print(options)
- elif args.stylehelp:
-- print
-- print "Available styles (primary open/close, secondary open/close)"
-- print "language tag quotes"
-- print "============ ======"
-+ print()
-+ print("Available styles (primary open/close, secondary open/close)")
-+ print("language tag quotes")
-+ print("============ ======")
- for key in sorted(smartchars.quotes.keys()):
-- print "%-14s %s" % (key, smartchars.quotes[key])
-+ print("%-14s %s" % (key, smartchars.quotes[key]))
- elif args.test:
- # Unit test output goes to stderr.
- import unittest
-@@ -1006,5 +1007,5 @@ if __name__ == "__main__":
- else:
- args.language += '-x-altquot'
- text = sys.stdin.read().decode(args.encoding)
-- print smartyPants(text, attr=args.action,
-- language=args.language).encode(args.encoding)
-+ print(smartyPants(text, attr=args.action,
-+ language=args.language).encode(args.encoding))
-diff --git a/docutils/writers/_html_base.py b/docutils/writers/_html_base.py
-index b357120..fa27911 100644
---- a/docutils/writers/_html_base.py
-+++ b/docutils/writers/_html_base.py
-@@ -494,7 +494,6 @@ class HTMLTranslator(nodes.NodeVisitor):
- # the end of this file).
-
- def is_compactable(self, node):
-- # print "is_compactable %s ?" % node.__class__,
- # explicite class arguments have precedence
- if 'compact' in node['classes']:
- return True
-@@ -503,11 +502,9 @@ class HTMLTranslator(nodes.NodeVisitor):
- # check config setting:
- if (isinstance(node, (nodes.field_list, nodes.definition_list))
- and not self.settings.compact_field_lists):
-- # print "`compact-field-lists` is False"
- return False
- if (isinstance(node, (nodes.enumerated_list, nodes.bullet_list))
- and not self.settings.compact_lists):
-- # print "`compact-lists` is False"
- return False
- # more special cases:
- if (self.topic_classes == ['contents']): # TODO: self.in_contents
-@@ -882,7 +879,6 @@ class HTMLTranslator(nodes.NodeVisitor):
- if 'sectnum' in node['classes']:
- # get section number (strip trailing no-break-spaces)
- sectnum = node.astext().rstrip(u' ')
-- # print sectnum.encode('utf-8')
- self.body.append('<span class="sectnum">%s</span> '
- % self.encode(sectnum))
- # Content already processed:
-@@ -1194,7 +1190,6 @@ class HTMLTranslator(nodes.NodeVisitor):
- pass # never reached
-
- def visit_math_block(self, node):
-- # print node.astext().encode('utf8')
- math_env = pick_math_environment(node.astext())
- self.visit_math(node, math_env=math_env)
-
-@@ -1611,20 +1606,16 @@ class SimpleListChecker(nodes.GenericNodeVisitor):
- raise nodes.NodeFound
-
- def visit_list_item(self, node):
-- # print "visiting list item", node.__class__
- children = [child for child in node.children
- if not isinstance(child, nodes.Invisible)]
-- # print "has %s visible children" % len(children)
- if (children and isinstance(children[0], nodes.paragraph)
- and (isinstance(children[-1], nodes.bullet_list) or
- isinstance(children[-1], nodes.enumerated_list) or
- isinstance(children[-1], nodes.field_list))):
- children.pop()
-- # print "%s children remain" % len(children)
- if len(children) <= 1:
- return
- else:
-- # print "found", child.__class__, "in", node.__class__
- raise nodes.NodeFound
-
- def pass_node(self, node):
-diff --git a/docutils/writers/latex2e/__init__.py b/docutils/writers/latex2e/__init__.py
-index 2ee1270..5c33d0a 100644
---- a/docutils/writers/latex2e/__init__.py
-+++ b/docutils/writers/latex2e/__init__.py
-@@ -15,7 +15,6 @@ __docformat__ = 'reStructuredText'
-
- import sys
- import os
--import time
- import re
- import string
- import urllib
-@@ -28,6 +27,7 @@ from docutils.utils.error_reporting import SafeString
- from docutils.transforms import writer_aux
- from docutils.utils.math import pick_math_environment, unichar2tex
-
-+
- class Writer(writers.Writer):
-
- supported = ('latex','latex2e')
-@@ -2283,14 +2283,14 @@ class LaTeXTranslator(nodes.NodeVisitor):
- href = self.document.nameids[node['refname']]
- # if not self.docutils_footnotes:
- # TODO: insert footnote content at (or near) this place
-- # print "footnote-ref to", node['refid']
-+ # print("footnote-ref to", node['refid'])
- # footnotes = (self.document.footnotes +
- # self.document.autofootnotes +
- # self.document.symbol_footnotes)
- # for footnote in footnotes:
-- # # print footnote['ids']
-+ # # print(footnote['ids'])
- # if node.get('refid', '') in footnote['ids']:
-- # print 'matches', footnote['ids']
-+ # print('matches', footnote['ids'])
- format = self.settings.footnote_references
- if format == 'brackets':
- self.append_hypertargets(node)
-@@ -2623,7 +2623,6 @@ class LaTeXTranslator(nodes.NodeVisitor):
- r'\begin{%s}' % math_env,
- '%s',
- r'\end{%s}' % math_env])
-- # print repr(wrapper), repr(math_code)
- self.out.append(wrapper % math_code)
- if node['classes']:
- self.depart_inline(node)
-diff --git a/install.py b/install.py
-index 2085627..b7de278 100755
---- a/install.py
-+++ b/install.py
-@@ -15,12 +15,13 @@ one of::
- python setup.py install --help
- python setup.py --help
- """
-+from __future__ import print_function
-
- from distutils import core
- from setup import do_setup
-
--if __name__ == '__main__' :
-- print __doc__
-+if __name__ == '__main__':
-+ print(__doc__)
- core._setup_stop_after = 'config'
- dist = do_setup()
- dist.commands = ['install']
-diff --git a/setup.py b/setup.py
-index f801ea2..4280b98 100755
---- a/setup.py
-+++ b/setup.py
-@@ -2,9 +2,12 @@
- # $Id: setup.py 8304 2019-07-30 09:51:07Z grubert $
- # Copyright: This file has been placed in the public domain.
-
-+from __future__ import print_function
-+
- import sys
- import os
- import glob
-+
- try:
- import setuptools
- from distutils.core import setup, Command
-@@ -17,10 +20,10 @@ try:
- from distutils.util import convert_path
- from distutils import log
- except ImportError:
-- print ('Error: The "distutils" standard module, which is required for the ')
-- print ('installation of Docutils, could not be found. You may need to ')
-- print ('install a package called "python-devel" (or similar) on your ')
-- print ('system using your package manager.')
-+ print('Error: The "distutils" standard module, which is required for the ')
-+ print('installation of Docutils, could not be found. You may need to ')
-+ print('install a package called "python-devel" (or similar) on your ')
-+ print('system using your package manager.')
- sys.exit(1)
-
-
-diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index f7986f5..25196ec 100644
---- a/test/DocutilsTestSupport.py
-+++ b/test/DocutilsTestSupport.py
-@@ -38,6 +38,7 @@ Exports the following:
- - `HtmlFragmentTestSuite`
- - `DevNull` (output sink)
- """
-+from __future__ import print_function
- __docformat__ = 'reStructuredText'
-
- import sys
-@@ -230,17 +231,17 @@ class CustomTestCase(StandardTestCase):
- try:
- self.assertEqual(output, expected)
- except AssertionError, error:
-- print >>sys.stderr, '\n%s\ninput:' % (self,)
-- print >>sys.stderr, input
-+ print('\n%s\ninput:' % (self,), file=sys.stderr)
-+ print(input, file=sys.stderr)
- try:
- comparison = ''.join(self.compare(expected.splitlines(1),
- output.splitlines(1)))
-- print >>sys.stderr, '-: expected\n+: output'
-- print >>sys.stderr, comparison
-+ print('-: expected\n+: output', file=sys.stderr)
-+ print(comparison, file=sys.stderr)
- except AttributeError: # expected or output not a string
- # alternative output for non-strings:
-- print >>sys.stderr, 'expected: %r' % expected
-- print >>sys.stderr, 'output: %r' % output
-+ print('expected: %r' % expected, file=sys.stderr)
-+ print('output: %r' % output, file=sys.stderr)
- raise error
-
-
-@@ -375,20 +376,20 @@ class TransformTestCase(CustomTestCase):
- def test_transforms_verbosely(self):
- if self.run_in_debugger:
- pdb.set_trace()
-- print '\n', self.id
-- print '-' * 70
-- print self.input
-+ print('\n', self.id)
-+ print('-' * 70)
-+ print(self.input)
- settings = self.settings.copy()
- settings.__dict__.update(self.suite_settings)
- document = utils.new_document('test data', settings)
- self.parser.parse(self.input, document)
-- print '-' * 70
-- print document.pformat()
-+ print('-' * 70)
-+ print(document.pformat())
- for transformClass in self.transforms:
- transformClass(document).apply()
- output = document.pformat()
-- print '-' * 70
-- print output
-+ print('-' * 70)
-+ print(output)
- self.compare_output(self.input, output, self.expected)
-
-
-diff --git a/test/alltests.py b/test/alltests.py
-index 9373124..364593f 100755
---- a/test/alltests.py
-+++ b/test/alltests.py
-@@ -1,12 +1,12 @@
- #!/bin/sh
- ''''exec python -u "$0" "$@" #'''
-+from __future__ import print_function
-
- # $Id: alltests.py 8124 2017-06-23 02:29:16Z goodger $
- # Author: David Goodger <goodger@python.org>
- # Copyright: This module has been placed in the public domain.
-
--__doc__ = \
--"""
-+__doc__ = """\
- All modules named 'test_*.py' in the current directory, and recursively in
- subdirectories (packages) called 'test_*', are loaded and test suites within
- are run.
-@@ -15,7 +15,7 @@ are run.
- import time
- # Start point for actual elapsed time, including imports
- # and setup outside of unittest.
--start = time.time()
-+start = time.time() # noqa
-
- import sys
- import os
-@@ -57,12 +57,13 @@ def pformat(suite):
- if line[-1:] == '[':
- indent += step
- else:
-- if line [-5:] == ']>]>,':
-+ if line[-5:] == ']>]>,':
- indent -= step * 2
- elif line[-3:] == ']>,':
- indent -= step
- return '\n'.join(output)
-
-+
- def suite():
- path, script = os.path.split(sys.argv[0])
- suite = package_unittest.loadTestModules(DocutilsTestSupport.testroot,
-@@ -70,26 +71,25 @@ def suite():
- sys.stdout.flush()
- return suite
-
-+
- # must redirect stderr *before* first import of unittest
- sys.stdout = sys.stderr = Tee('alltests.out')
-
--import package_unittest
-+import package_unittest # noqa
-
-
- if __name__ == '__main__':
- suite = suite()
-- print ('Testing Docutils %s with Python %s on %s at %s'
-- % (docutils.__version__, sys.version.split()[0],
-- time.strftime('%Y-%m-%d'), time.strftime('%H:%M:%S')))
-- print ('OS: %s %s %s (%s, %s)'
-- % (platform.system(), platform.release(), platform.version(),
-- sys.platform, platform.platform()))
-- print 'Working directory: %s' % os.getcwd()
-- print 'Docutils package: %s' % os.path.dirname(docutils.__file__)
-+ print('Testing Docutils %s with Python %s on %s at %s' % (
-+ docutils.__version__, sys.version.split()[0],
-+ time.strftime('%Y-%m-%d'), time.strftime('%H:%M:%S')))
-+ print('OS: %s %s %s (%s, %s)' % (
-+ platform.system(), platform.release(), platform.version(),
-+ sys.platform, platform.platform()))
-+ print('Working directory: %s' % os.getcwd())
-+ print('Docutils package: %s' % os.path.dirname(docutils.__file__))
- sys.stdout.flush()
- result = package_unittest.main(suite)
-- #if package_unittest.verbosity > 1:
-- # print >>sys.stderr, pformat(suite) # check the test suite
- finish = time.time()
-- print 'Elapsed time: %.3f seconds' % (finish - start)
-+ print('Elapsed time: %.3f seconds' % (finish - start))
- sys.exit(not result.wasSuccessful())
-diff --git a/test/package_unittest.py b/test/package_unittest.py
-index 0efab12..daf11f4 100644
---- a/test/package_unittest.py
-+++ b/test/package_unittest.py
-@@ -9,6 +9,7 @@ This module extends unittest.py with `loadTestModules()`, by loading multiple
- test modules from a directory. Optionally, test packages are also loaded,
- recursively.
- """
-+from __future__ import print_function
-
- import sys
- import os
-@@ -37,8 +38,8 @@ Options:
- def usageExit(msg=None):
- """Print usage and exit."""
- if msg:
-- print msg
-- print USAGE
-+ print(msg)
-+ print(USAGE)
- sys.exit(2)
-
- def parseArgs(argv=sys.argv):
-@@ -96,11 +97,11 @@ def loadTestModules(path, name='', packages=None):
- sys.path.insert(0, path)
- for mod in testModules:
- if debug:
-- print >>sys.stderr, "importing %s" % mod
-+ print("importing %s" % mod, file=sys.stderr)
- try:
- module = import_module(mod)
- except ImportError:
-- print >>sys.stderr, "ERROR: Can't import %s, skipping its tests:" % mod
-+ print("ERROR: Can't import %s, skipping its tests:" % mod, file=sys.stderr)
- sys.excepthook(*sys.exc_info())
- else:
- # if there's a suite defined, incorporate its contents
-@@ -148,7 +149,7 @@ def main(suite=None):
- suite = unittest.defaultTestLoader.loadTestsFromModule(
- __import__('__main__'))
- if debug:
-- print >>sys.stderr, "Debug: Suite=%s" % suite
-+ print("Debug: Suite=%s" % suite, file=sys.stderr)
- testRunner = unittest.TextTestRunner(verbosity=verbosity)
- # run suites (if we were called from test_all) or suite...
- if type(suite) == type([]):
-diff --git a/test/test_error_reporting.py b/test/test_error_reporting.py
-index 902e878..c4eae40 100644
---- a/test/test_error_reporting.py
-+++ b/test/test_error_reporting.py
-@@ -20,13 +20,14 @@ instances like, e.g., ::
- try:
- something
- except IOError, error:
-- print 'Found %s' % error
-+ print('Found %s' % error)
-
- unless the minimal required Python version has this problem fixed.
- """
-
- import unittest
--import sys, os
-+import sys
-+import os
- import codecs
- from io import StringIO, BytesIO
-
-@@ -42,7 +43,7 @@ if sys.version_info < (3,0): # problems solved in py3k
- # Why does getlocale return the defaultlocale in Python 3.2 ????
- # oldlocale = (None, None) # test suite runs without locale
- except ImportError:
-- print ('cannot test error reporting with problematic locales,\n'
-+ print('cannot test error reporting with problematic locales,\n'
- '`import locale` failed.')
-
-
-diff --git a/test/test_functional.py b/test/test_functional.py
-index 43710de..5d3beb9 100755
---- a/test/test_functional.py
-+++ b/test/test_functional.py
-@@ -9,6 +9,7 @@ Perform tests with the data in the functional/ directory.
-
- Read README.txt for details on how this is done.
- """
-+from __future__ import print_function
-
- import sys
- import os
-@@ -194,8 +195,8 @@ expected output and check it in:
- expected_path, params['destination_path']))
- if sys.version_info < (3,0):
- diff = diff.encode(sys.stderr.encoding or 'ascii', 'replace')
-- print >>sys.stderr, '\n%s:' % (self,)
-- print >>sys.stderr, diff
-+ print('\n%s:' % (self,), file=sys.stderr)
-+ print(diff, file=sys.stderr)
- raise
- # Execute optional function containing extra tests:
- if '_test_more' in namespace:
-diff --git a/test/test_io.py b/test/test_io.py
-index 6ea4789..737a19d 100755
---- a/test/test_io.py
-+++ b/test/test_io.py
-@@ -69,7 +69,7 @@ blah
- input = io.StringInput(source=b"""\
- #! python
- # -*- coding: ascii -*-
--print "hello world"
-+print("hello world")
- """)
- data = input.read()
- self.assertEqual(input.successful_encoding, 'ascii')
-@@ -77,7 +77,7 @@ print "hello world"
- #! python
- # extraneous comment; prevents coding slug from being read
- # -*- coding: ascii -*-
--print "hello world"
-+print("hello world")
- """)
- data = input.read()
- self.assertNotEqual(input.successful_encoding, 'ascii')
-diff --git a/test/test_parsers/test_rst/test_directives/test_code.py b/test/test_parsers/test_rst/test_directives/test_code.py
-index 30fe74f..51c1558 100644
---- a/test/test_parsers/test_rst/test_directives/test_code.py
-+++ b/test/test_parsers/test_rst/test_directives/test_code.py
-@@ -98,7 +98,7 @@ totest['code-parsing'] = [
- .. code:: python
- :class: testclass
-
-- print 'hello world' # to stdout
-+ print('hello world') # to stdout
- """,
- """\
- <document source="test data">
-@@ -106,9 +106,12 @@ totest['code-parsing'] = [
- \n\
- <inline classes="keyword">
- print
-- \n\
-+ <inline classes="punctuation">
-+ (
- <inline classes="literal string single">
- 'hello world'
-+ <inline classes="punctuation">
-+ )
- \n\
- <inline classes="comment single">
- # to stdout
-@@ -124,7 +127,7 @@ totest['code-parsing'] = [
- '''
-
- # and now for something completely different
-- print 8/2
-+ print(8/2)
- """,
- """\
- <document source="test data">
-@@ -163,13 +166,16 @@ totest['code-parsing'] = [
- \n\
- <inline classes="keyword">
- print
-- \n\
-+ <inline classes="punctuation">
-+ (
- <inline classes="literal number integer">
- 8
- <inline classes="operator">
- /
- <inline classes="literal number integer">
- 2
-+ <inline classes="punctuation">
-+ )
- """],
- ["""\
- .. code:: latex
-diff --git a/test/test_parsers/test_rst/test_directives/test_code_long.py b/test/test_parsers/test_rst/test_directives/test_code_long.py
-index 43eb886..74f16d5 100644
---- a/test/test_parsers/test_rst/test_directives/test_code_long.py
-+++ b/test/test_parsers/test_rst/test_directives/test_code_long.py
-@@ -29,7 +29,7 @@ totest['code-parsing-long'] = [
- '''
-
- # and now for something completely different
-- print 8/2
-+ print(8/2)
- """,
- """\
- <document source="test data">
-@@ -68,13 +68,16 @@ totest['code-parsing-long'] = [
- \n\
- <inline classes="keyword">
- print
-- \n\
-+ <inline classes="punctuation">
-+ (
- <inline classes="literal number integer">
- 8
- <inline classes="operator">
- /
- <inline classes="literal number integer">
- 2
-+ <inline classes="punctuation">
-+ )
- """],
- ["""\
- .. code:: latex
-diff --git a/test/test_parsers/test_rst/test_directives/test_code_none.py b/test/test_parsers/test_rst/test_directives/test_code_none.py
-index 86653e6..515772c 100644
---- a/test/test_parsers/test_rst/test_directives/test_code_none.py
-+++ b/test/test_parsers/test_rst/test_directives/test_code_none.py
-@@ -37,7 +37,7 @@ totest['code-parsing-none'] = [
- '''
-
- # and now for something completely different
-- print 8/2
-+ print(8/2)
- """,
- """\
- <document source="test data">
-@@ -59,7 +59,7 @@ totest['code-parsing-none'] = [
- # and now for something completely different
- <inline classes="ln">
- 12 \n\
-- print 8/2
-+ print(8/2)
- """],
- ["""\
- .. code:: latex
-diff --git a/test/test_parsers/test_rst/test_doctest_blocks.py b/test/test_parsers/test_rst/test_doctest_blocks.py
-index dabc2ec..4f367db 100755
---- a/test/test_parsers/test_rst/test_doctest_blocks.py
-+++ b/test/test_parsers/test_rst/test_doctest_blocks.py
-@@ -21,7 +21,7 @@ totest['doctest_blocks'] = [
- ["""\
- Paragraph.
-
-->>> print "Doctest block."
-+>>> print("Doctest block.")
- Doctest block.
-
- Paragraph.
-@@ -31,7 +31,7 @@ Paragraph.
- <paragraph>
- Paragraph.
- <doctest_block xml:space="preserve">
-- >>> print "Doctest block."
-+ >>> print("Doctest block.")
- Doctest block.
- <paragraph>
- Paragraph.
-@@ -39,7 +39,7 @@ Paragraph.
- ["""\
- Paragraph.
-
-->>> print " Indented output."
-+>>> print(" Indented output.")
- Indented output.
- """,
- """\
-@@ -47,13 +47,13 @@ Paragraph.
- <paragraph>
- Paragraph.
- <doctest_block xml:space="preserve">
-- >>> print " Indented output."
-+ >>> print(" Indented output.")
- Indented output.
- """],
- ["""\
- Paragraph.
-
-- >>> print " Indented block & output."
-+ >>> print(" Indented block & output.")
- Indented block & output.
- """,
- """\
-@@ -62,7 +62,7 @@ Paragraph.
- Paragraph.
- <block_quote>
- <doctest_block xml:space="preserve">
-- >>> print " Indented block & output."
-+ >>> print(" Indented block & output.")
- Indented block & output.
- """],
- ]
-diff --git a/test/test_settings.py b/test/test_settings.py
-index 5b687eb..d101a59 100755
---- a/test/test_settings.py
-+++ b/test/test_settings.py
-@@ -8,6 +8,7 @@
- """
- Tests of runtime settings.
- """
-+from __future__ import print_function
-
- import sys
- import os
-@@ -111,10 +112,10 @@ class ConfigFileTests(unittest.TestCase):
- try:
- self.assertEqual(result, expected)
- except AssertionError:
-- print >>sys.stderr, '\n%s\n' % (self,)
-- print >>sys.stderr, '-: expected\n+: result'
-- print >>sys.stderr, ''.join(self.compare(expected.splitlines(1),
-- result.splitlines(1)))
-+ print('\n%s\n' % (self,), file=sys.stderr)
-+ print('-: expected\n+: result', file=sys.stderr)
-+ print(''.join(self.compare(expected.splitlines(1),
-+ result.splitlines(1))), file=sys.stderr)
- raise
-
- def test_nofiles(self):
-diff --git a/test/test_statemachine.py b/test/test_statemachine.py
-index 07c561e..6352ca4 100755
---- a/test/test_statemachine.py
-+++ b/test/test_statemachine.py
-@@ -7,6 +7,7 @@
- """
- Test module for statemachine.py.
- """
-+from __future__ import print_function
-
- import unittest
- import sys
-@@ -56,47 +57,47 @@ class MockState(statemachine.StateWS):
- def bof(self, context):
- self.levelholder[0] += 1
- self.level = self.levelholder[0]
-- if self.debug: print >>sys.stderr, 'StateMachine%s' % self.level
-+ if self.debug: print('StateMachine%s' % self.level, file=sys.stderr)
- return [], ['StateMachine%s' % self.level]
-
- def blank(self, match, context, next_state):
- result = ['blank%s' % self.level]
-- if self.debug: print >>sys.stderr, 'blank%s' % self.level
-+ if self.debug: print('blank%s' % self.level, file=sys.stderr)
- if context and context[-1] and context[-1][-2:] == '::':
- result.extend(self.literalblock())
- return [], None, result
-
- def indent(self, match, context, next_state):
-- if self.debug: print >>sys.stderr, 'indent%s' % self.level
-+ if self.debug: print('indent%s' % self.level, file=sys.stderr)
- context, next_state, result = statemachine.StateWS.indent(
- self, match, context, next_state)
- return context, next_state, ['indent%s' % self.level] + result
-
- def known_indent(self, match, context, next_state):
-- if self.debug: print >>sys.stderr, 'known_indent%s' % self.level
-+ if self.debug: print('known_indent%s' % self.level, file=sys.stderr)
- context, next_state, result = statemachine.StateWS.known_indent(
- self, match, context, next_state)
- return context, next_state, ['known_indent%s' % self.level] + result
-
- def bullet(self, match, context, next_state):
-- if self.debug: print >>sys.stderr, 'bullet%s' % self.level
-+ if self.debug: print('bullet%s' % self.level, file=sys.stderr)
- context, next_state, result \
- = self.known_indent(match, context, next_state)
- return [], next_state, ['bullet%s' % self.level] + result
-
- def text(self, match, context, next_state):
-- if self.debug: print >>sys.stderr, 'text%s' % self.level
-+ if self.debug: print('text%s' % self.level, file=sys.stderr)
- return [match.string], next_state, ['text%s' % self.level]
-
- def literalblock(self):
- indented, indent, offset, good = self.state_machine.get_indented()
-- if self.debug: print >>sys.stderr, 'literalblock%s(%s)' % (self.level,
-- indent)
-+ if self.debug: print('literalblock%s(%s)' % (self.level,
-+ indent), file=sys.stderr)
- return ['literalblock%s(%s)' % (self.level, indent)]
-
- def eof(self, context):
- self.levelholder[0] -= 1
-- if self.debug: print >>sys.stderr, 'finished%s' % self.level
-+ if self.debug: print('finished%s' % self.level, file=sys.stderr)
- return ['finished%s' % self.level]
-
-
-@@ -169,10 +170,10 @@ class SMWSTests(unittest.TestCase):
- self.assertTrue(good)
- self.sm.previous_line(3)
- if self.sm.debug:
-- print '\ntest_get_indented: self.sm.line:\n', self.sm.line
-+ print('\ntest_get_indented: self.sm.line:\n', self.sm.line)
- indented, indent, offset, good = self.sm.get_indented()
- if self.sm.debug:
-- print '\ntest_get_indented: indented:\n', indented
-+ print('\ntest_get_indented: indented:\n', indented)
- self.assertEqual(indent, lbindent)
- self.assertEqual(indented, literalblock)
- self.assertEqual(offset, (len(para1) + len(item1) + len(item2)
-diff --git a/test/test_transforms/test_smartquotes.py b/test/test_transforms/test_smartquotes.py
-index fb46b30..e2874c0 100644
---- a/test/test_transforms/test_smartquotes.py
-+++ b/test/test_transforms/test_smartquotes.py
-@@ -18,7 +18,7 @@ Test module for universal.SmartQuotes transform.
- """
-
-
--from __init__ import DocutilsTestSupport # must be imported before docutils
-+from __init__ import DocutilsTestSupport # must be imported before docutils
- from docutils.transforms.universal import SmartQuotes
- from docutils.parsers.rst import Parser
-
-@@ -69,11 +69,11 @@ Do not "educate" quotes ``inside "literal" text`` and ::
- "literal" blocks.
-
- Keep quotes straight in code and math:
--:code:`print "hello"` :math:`1' 12"`.
-+:code:`print("hello")` :math:`1' 12"`.
-
- .. code::
-
-- print "hello"
-+ print("hello")
-
- .. math::
-
-@@ -92,13 +92,13 @@ u"""\
- <paragraph>
- Keep quotes straight in code and math:
- <literal classes="code">
-- print "hello"
-+ print("hello")
-
- <math>
- 1' 12"
- .
- <literal_block classes="code" xml:space="preserve">
-- print "hello"
-+ print("hello")
- <math_block xml:space="preserve">
- f'(x) = df(x)/dx
- """],
-diff --git a/test/test_transforms/test_strip_elements_with_class.py b/test/test_transforms/test_strip_elements_with_class.py
-index 7a36fb9..6503586 100644
---- a/test/test_transforms/test_strip_elements_with_class.py
-+++ b/test/test_transforms/test_strip_elements_with_class.py
-@@ -37,7 +37,7 @@ this is ham
- .. code::
- :class: spam
-
-- print "spam"
-+ print("spam")
-
- .. image:: spam.jpg
- :class: spam
-diff --git a/test/test_viewlist.py b/test/test_viewlist.py
-index 23ba033..f5df548 100755
---- a/test/test_viewlist.py
-+++ b/test/test_viewlist.py
-@@ -9,8 +9,6 @@ Test module for the ViewList class from statemachine.py.
- """
-
- import unittest
--import sys
--import re
- from DocutilsTestSupport import statemachine
-
-
-@@ -76,7 +74,6 @@ class ViewListTests(unittest.TestCase):
- self.assertEqual(a, a_list)
- self.assertEqual(a.items, [('a', i+1) for (i, v) in enumerate(a_list)])
- self.assertEqual(a.parent, self.a)
-- # a.pprint()
-
- def test_set_slice(self):
- a = statemachine.ViewList(self.a[:])
-@@ -84,8 +81,6 @@ class ViewListTests(unittest.TestCase):
- s[2:2] = self.b
- s_list = self.a_list[2:-2]
- s_list[2:2] = self.b_list
-- # s.pprint()
-- # s[1:4].pprint()
- self.assertEqual(s, s_list)
- self.assertEqual(s, a[2:-2])
- self.assertEqual(s.items, a[2:-2].items)
-@@ -119,7 +114,6 @@ class ViewListTests(unittest.TestCase):
- a = statemachine.ViewList(self.a)
- a.append('Q', 'runtime')
- a.append(self.b)
-- # a.pprint()
- self.assertEqual(a, a_list)
- self.assertEqual(a.info(len(self.a)), ('runtime', 0))
- self.assertEqual(a.info(-2), ('b', len(self.b) - 2))
-@@ -131,7 +125,6 @@ class ViewListTests(unittest.TestCase):
- a.extend(self.b)
- self.assertEqual(a, a_list)
- self.assertEqual(a.info(len(self.a) + 1), ('b', 1))
-- # a.pprint()
-
- def test_view(self):
- a = statemachine.ViewList(self.a[:])
-@@ -176,16 +169,9 @@ class ViewListTests(unittest.TestCase):
- def test_sort(self):
- c = self.c[:]
- c.reverse()
-- # c.pprint()
- c.sort()
- self.assertEqual(self.c, c)
-
--# print
--# print a
--# print s
--# print a.items
--# print s.items
--
-
- class StringList(unittest.TestCase):
-
-diff --git a/tools/dev/create_unimap.py b/tools/dev/create_unimap.py
-index a1d92ac..85ac264 100755
---- a/tools/dev/create_unimap.py
-+++ b/tools/dev/create_unimap.py
-@@ -9,6 +9,7 @@
- # Get unicode.xml from
- # <http://www.w3.org/2003/entities/xml/unicode.xml>.
-
-+from __future__ import print_function
- from xml.dom import minidom
- import sys
- import pprint
-diff --git a/tools/dev/generate_punctuation_chars.py b/tools/dev/generate_punctuation_chars.py
-index e05515d..5947fe5 100644
---- a/tools/dev/generate_punctuation_chars.py
-+++ b/tools/dev/generate_punctuation_chars.py
-@@ -33,14 +33,13 @@
- # .. _inline markup recognition rules:
- # ../../docs/ref/rst/restructuredtext.html#inline-markup
-
-+from __future__ import print_function
-
--# Setup::
--
--import sys, re
-+import sys
- import unicodedata
-
- if sys.version_info >= (3,):
-- unichr = chr # unichr not available in Py3k
-+ unichr = chr # unichr not available in Py3k
- else:
- import codecs
- sys.stdout = codecs.getwriter('UTF-8')(sys.stdout)
-@@ -421,44 +420,3 @@ if __name__ == '__main__':
- }
-
- print(module_template % substitutions)
--
--
--# test prints
--# ~~~~~~~~~~~
--#
--# For interactive use in development you may uncomment the following
--# definitions::
--
-- # print "wide" Unicode characters:
-- # ucharlists = unicode_charlists(unicode_punctuation_categories)
-- # for key in ucharlists:
-- # if key.endswith('wide'):
-- # print key, ucharlists[key]
--
-- # print 'openers = ', repr(openers)
-- # print 'closers = ', repr(closers)
-- # print 'delimiters = ', repr(delimiters)
-- # print 'closing_delimiters = ', repr(closing_delimiters)
--
-- # ucharlists = unicode_charlists(unicode_punctuation_categories)
-- # for cat, chars in ucharlists.items():
-- # # print cat, chars
-- # # compact output (visible with a comprehensive font):
-- # print (u":%s: %s" % (cat, u''.join(chars))).encode('utf8')
--
--# verbose print
--#
--# ::
--
-- # print 'openers:'
-- # for ch in openers:
-- # print ch.encode('utf8'), unicodedata.name(ch)
-- # print 'closers:'
-- # for ch in closers:
-- # print ch.encode('utf8'), unicodedata.name(ch)
-- # print 'delimiters:'
-- # for ch in delimiters:
-- # print ch.encode('utf8'), unicodedata.name(ch)
-- # print 'closing_delimiters:'
-- # for ch in closing_delimiters:
-- # print ch.encode('utf8'), unicodedata.name(ch)
-diff --git a/tools/dev/profile_docutils.py b/tools/dev/profile_docutils.py
-index 1f43ecc..4b9125d 100755
---- a/tools/dev/profile_docutils.py
-+++ b/tools/dev/profile_docutils.py
-@@ -4,6 +4,7 @@
- # Author: Lea Wiemann <LeWiemann@gmail.com>
- # Copyright: This script has been placed in the public domain.
-
-+from __future__ import print_function
- import os.path
- import docutils.core
- import hotshot.stats
-diff --git a/tools/dev/unicode2rstsubs.py b/tools/dev/unicode2rstsubs.py
-index d719005..b51eec4 100755
---- a/tools/dev/unicode2rstsubs.py
-+++ b/tools/dev/unicode2rstsubs.py
-@@ -19,6 +19,7 @@ The input file, unicode.xml, is maintained as part of the MathML 2
- Recommentation XML source, and is available from
- <http://www.w3.org/2003/entities/xml/>.
- """
-+from __future__ import print_function
-
- import sys
- import os
-diff --git a/tools/quicktest.py b/tools/quicktest.py
-index 4ddbe59..3b6b6b4 100755
---- a/tools/quicktest.py
-+++ b/tools/quicktest.py
-@@ -5,6 +5,7 @@
- # David Goodger <goodger@python.org>
- # Copyright: This module has been placed in the public domain.
-
-+from __future__ import print_function
- try:
- import locale
- locale.setlocale(locale.LC_ALL, '')
-diff --git a/tools/rst2odt_prepstyles.py b/tools/rst2odt_prepstyles.py
-index b0b7dcc..67f8942 100755
---- a/tools/rst2odt_prepstyles.py
-+++ b/tools/rst2odt_prepstyles.py
-@@ -9,9 +9,10 @@ Fix a word-processor-generated styles.odt for odtwriter use: Drop page size
- specifications from styles.xml in STYLE_FILE.odt.
- """
-
--#
- # Author: Michael Schutte <michi@uiae.at>
-
-+from __future__ import print_function
-+
- from lxml import etree
- import sys
- import zipfile
-@@ -24,28 +25,29 @@ NAMESPACES = {
- "fo": "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
- }
-
-+
- def prepstyle(filename):
--
-+
- zin = zipfile.ZipFile(filename)
- styles = zin.read("styles.xml")
--
-+
- root = etree.fromstring(styles)
-- for el in root.xpath("//style:page-layout-properties",
-- namespaces=NAMESPACES):
-+ for el in root.xpath("//style:page-layout-properties",
-+ namespaces=NAMESPACES):
- for attr in el.attrib:
- if attr.startswith("{%s}" % NAMESPACES["fo"]):
- del el.attrib[attr]
--
-+
- tempname = mkstemp()
- zout = zipfile.ZipFile(os.fdopen(tempname[0], "w"), "w",
-- zipfile.ZIP_DEFLATED)
--
-+ zipfile.ZIP_DEFLATED)
-+
- for item in zin.infolist():
- if item.filename == "styles.xml":
- zout.writestr(item, etree.tostring(root))
- else:
- zout.writestr(item, zin.read(item.filename))
--
-+
- zout.close()
- zin.close()
- shutil.move(tempname[1], filename)
-@@ -54,14 +56,12 @@ def prepstyle(filename):
- def main():
- args = sys.argv[1:]
- if len(args) != 1:
-- print >> sys.stderr, __doc__
-- print >> sys.stderr, "Usage: %s STYLE_FILE.odt\n" % sys.argv[0]
-+ print(__doc__, file=sys.stderr)
-+ print("Usage: %s STYLE_FILE.odt\n" % sys.argv[0], file=sys.stderr)
- sys.exit(1)
- filename = args[0]
- prepstyle(filename)
-
-+
- if __name__ == '__main__':
- main()
--
--
--# vim:tw=78:sw=4:sts=4:et:
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0003-py3-Switch-to-except-foo-as-bar-syntax.patch b/srcpkgs/python-docutils/patches/0003-py3-Switch-to-except-foo-as-bar-syntax.patch
deleted file mode 100644
index 261eb62c14e..00000000000
--- a/srcpkgs/python-docutils/patches/0003-py3-Switch-to-except-foo-as-bar-syntax.patch
+++ /dev/null
@@ -1,719 +0,0 @@
-From c361270fb4ee9172a337f5e9c0b014b362fb0b71 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 19 Nov 2019 23:49:35 +0700
-Subject: [PATCH 03/26] py3: Switch to 'except foo as bar' syntax
-
-This is the only form supported in Python 3.x.
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8347 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/core.py | 4 ++--
- docutils/frontend.py | 8 ++++----
- docutils/io.py | 12 ++++++------
- docutils/parsers/rst/directives/__init__.py | 6 +++---
- docutils/parsers/rst/directives/body.py | 2 +-
- docutils/parsers/rst/directives/html.py | 2 +-
- docutils/parsers/rst/directives/misc.py | 20 ++++++++++----------
- docutils/parsers/rst/directives/tables.py | 10 +++++-----
- docutils/parsers/rst/roles.py | 4 ++--
- docutils/parsers/rst/states.py | 20 ++++++++++----------
- docutils/statemachine.py | 6 +++---
- docutils/utils/__init__.py | 2 +-
- docutils/utils/error_reporting.py | 4 ++--
- docutils/writers/_html_base.py | 4 ++--
- docutils/writers/docutils_xml.py | 2 +-
- docutils/writers/latex2e/__init__.py | 2 +-
- test/DocutilsTestSupport.py | 8 ++++----
- test/package_unittest.py | 2 +-
- test/test_error_reporting.py | 14 +++++++-------
- test/test_language.py | 4 ++--
- test/test_publisher.py | 4 ++--
- test/test_utils.py | 2 +-
- 22 files changed, 71 insertions(+), 71 deletions(-)
-
-diff --git a/docutils/core.py b/docutils/core.py
-index 6a99020..12a0c93 100644
---- a/docutils/core.py
-+++ b/docutils/core.py
-@@ -219,10 +219,10 @@ class Publisher(object):
- self.apply_transforms()
- output = self.writer.write(self.document, self.destination)
- self.writer.assemble_parts()
-- except SystemExit, error:
-+ except SystemExit as error:
- exit = 1
- exit_status = error.code
-- except Exception, error:
-+ except Exception as error:
- if not self.settings: # exception too early to report nicely
- raise
- if self.settings.traceback: # Propagate exceptions?
-diff --git a/docutils/frontend.py b/docutils/frontend.py
-index 1aeae5c..689d904 100644
---- a/docutils/frontend.py
-+++ b/docutils/frontend.py
-@@ -62,7 +62,7 @@ def read_config_file(option, opt, value, parser):
- """
- try:
- new_settings = parser.get_config_file_settings(value)
-- except ValueError, error:
-+ except ValueError as error:
- parser.error(error)
- parser.values.update(new_settings, parser)
-
-@@ -346,7 +346,7 @@ class Option(optparse.Option):
- value = getattr(values, setting)
- try:
- new_value = self.validator(setting, value, parser)
-- except Exception, error:
-+ except Exception as error:
- raise (optparse.OptionValueError(
- 'Error in option "%s":\n %s'
- % (opt, ErrorString(error))),
-@@ -605,7 +605,7 @@ class OptionParser(optparse.OptionParser, docutils.SettingsSpec):
- if read_config_files and not self.defaults['_disable_config']:
- try:
- config_settings = self.get_standard_config_settings()
-- except ValueError, error:
-+ except ValueError as error:
- self.error(SafeString(error))
- self.set_defaults_from_dict(config_settings.__dict__)
-
-@@ -826,7 +826,7 @@ Skipping "%s" configuration file.
- new_value = option.validator(
- setting, value, option_parser,
- config_parser=self, config_section=section)
-- except Exception, error:
-+ except Exception as error:
- raise (ValueError(
- 'Error in config file "%s", section "[%s]":\n'
- ' %s\n'
-diff --git a/docutils/io.py b/docutils/io.py
-index 3b0f93e..4466fdb 100644
---- a/docutils/io.py
-+++ b/docutils/io.py
-@@ -114,7 +114,7 @@ class Input(TransformSpec):
- self.successful_encoding = enc
- # Return decoded, removing BOMs.
- return decoded.replace(u'\ufeff', u'')
-- except (UnicodeError, LookupError), err:
-+ except (UnicodeError, LookupError) as err:
- error = err # in Python 3, the <exception instance> is
- # local to the except clause
- raise UnicodeError(
-@@ -244,7 +244,7 @@ class FileInput(Input):
-
- try:
- self.source = open(source_path, mode, **kwargs)
-- except IOError, error:
-+ except IOError as error:
- raise InputError(error.errno, error.strerror, source_path)
- else:
- self.source = sys.stdin
-@@ -272,7 +272,7 @@ class FileInput(Input):
- data = b'\n'.join(data.splitlines()) + b'\n'
- else:
- data = self.source.read()
-- except (UnicodeError, LookupError), err: # (in Py3k read() decodes)
-+ except (UnicodeError, LookupError) as err: # (in Py3k read() decodes)
- if not self.encoding and self.source_path:
- # re-read in binary mode and decode with heuristics
- b_source = open(self.source_path, 'rb')
-@@ -362,7 +362,7 @@ class FileOutput(Output):
- kwargs = {}
- try:
- self.destination = open(self.destination_path, self.mode, **kwargs)
-- except IOError, error:
-+ except IOError as error:
- raise OutputError(error.errno, error.strerror,
- self.destination_path)
- self.opened = True
-@@ -384,7 +384,7 @@ class FileOutput(Output):
-
- try:
- self.destination.write(data)
-- except TypeError, e:
-+ except TypeError as e:
- if sys.version_info >= (3,0) and isinstance(data, bytes):
- try:
- self.destination.buffer.write(data)
-@@ -397,7 +397,7 @@ class FileOutput(Output):
- self.destination.encoding, self.encoding))
- else:
- raise e
-- except (UnicodeError, LookupError), err:
-+ except (UnicodeError, LookupError) as err:
- raise UnicodeError(
- 'Unable to encode output data. output-encoding is: '
- '%s.\n(%s)' % (self.encoding, ErrorString(err)))
-diff --git a/docutils/parsers/rst/directives/__init__.py b/docutils/parsers/rst/directives/__init__.py
-index e0d09fc..8789346 100644
---- a/docutils/parsers/rst/directives/__init__.py
-+++ b/docutils/parsers/rst/directives/__init__.py
-@@ -86,7 +86,7 @@ def directive(directive_name, language_module, document):
- canonicalname = None
- try:
- canonicalname = language_module.directives[normname]
-- except AttributeError, error:
-+ except AttributeError as error:
- msg_text.append('Problem retrieving directive entry from language '
- 'module %r: %s.' % (language_module, error))
- except KeyError:
-@@ -113,7 +113,7 @@ def directive(directive_name, language_module, document):
- return None, messages
- try:
- module = __import__(modulename, globals(), locals(), level=1)
-- except ImportError, detail:
-+ except ImportError as detail:
- messages.append(document.reporter.error(
- 'Error importing directive module "%s" (directive "%s"):\n%s'
- % (modulename, directive_name, detail),
-@@ -309,7 +309,7 @@ def unicode_code(code):
- return unichr(int(value, 16))
- else: # other text
- return code
-- except OverflowError, detail:
-+ except OverflowError as detail:
- raise ValueError('code too large (%s)' % detail)
-
- def single_char_or_unicode(argument):
-diff --git a/docutils/parsers/rst/directives/body.py b/docutils/parsers/rst/directives/body.py
-index b60c3ad..eef1df5 100644
---- a/docutils/parsers/rst/directives/body.py
-+++ b/docutils/parsers/rst/directives/body.py
-@@ -147,7 +147,7 @@ class CodeBlock(Directive):
- try:
- tokens = Lexer(u'\n'.join(self.content), language,
- self.state.document.settings.syntax_highlight)
-- except LexerError, error:
-+ except LexerError as error:
- raise self.warning(error)
-
- if 'number-lines' in self.options:
-diff --git a/docutils/parsers/rst/directives/html.py b/docutils/parsers/rst/directives/html.py
-index 78671e8..ea36936 100644
---- a/docutils/parsers/rst/directives/html.py
-+++ b/docutils/parsers/rst/directives/html.py
-@@ -55,7 +55,7 @@ class MetaBody(states.SpecializedBody):
- try:
- attname, val = utils.extract_name_value(token)[0]
- node[attname.lower()] = val
-- except utils.NameValueError, detail:
-+ except utils.NameValueError as detail:
- line = self.state_machine.line
- msg = self.reporter.error(
- 'Error parsing meta tag attribute "%s": %s.'
-diff --git a/docutils/parsers/rst/directives/misc.py b/docutils/parsers/rst/directives/misc.py
-index 7672de6..0fc3610 100644
---- a/docutils/parsers/rst/directives/misc.py
-+++ b/docutils/parsers/rst/directives/misc.py
-@@ -73,12 +73,12 @@ class Include(Directive):
- include_file = io.FileInput(source_path=path,
- encoding=encoding,
- error_handler=e_handler)
-- except UnicodeEncodeError, error:
-+ except UnicodeEncodeError as error:
- raise self.severe(u'Problems with "%s" directive path:\n'
- 'Cannot encode input file path "%s" '
- '(wrong locale?).' %
- (self.name, SafeString(path)))
-- except IOError, error:
-+ except IOError as error:
- raise self.severe(u'Problems with "%s" directive path:\n%s.' %
- (self.name, ErrorString(error)))
- startline = self.options.get('start-line', None)
-@@ -89,7 +89,7 @@ class Include(Directive):
- rawtext = ''.join(lines[startline:endline])
- else:
- rawtext = include_file.read()
-- except UnicodeError, error:
-+ except UnicodeError as error:
- raise self.severe(u'Problem with "%s" directive:\n%s' %
- (self.name, ErrorString(error)))
- # start-after/end-before: no restrictions on newlines in match-text,
-@@ -213,12 +213,12 @@ class Raw(Directive):
- # TODO: currently, raw input files are recorded as
- # dependencies even if not used for the chosen output format.
- self.state.document.settings.record_dependencies.add(path)
-- except IOError, error:
-+ except IOError as error:
- raise self.severe(u'Problems with "%s" directive path:\n%s.'
- % (self.name, ErrorString(error)))
- try:
- text = raw_file.read()
-- except UnicodeError, error:
-+ except UnicodeError as error:
- raise self.severe(u'Problem with "%s" directive:\n%s'
- % (self.name, ErrorString(error)))
- attributes['source'] = path
-@@ -230,7 +230,7 @@ class Raw(Directive):
- import urllib2
- try:
- raw_text = urllib2.urlopen(source).read()
-- except (urllib2.URLError, IOError, OSError), error:
-+ except (urllib2.URLError, IOError, OSError) as error:
- raise self.severe(u'Problems with "%s" directive URL "%s":\n%s.'
- % (self.name, self.options['url'], ErrorString(error)))
- raw_file = io.StringInput(source=raw_text, source_path=source,
-@@ -238,7 +238,7 @@ class Raw(Directive):
- error_handler=e_handler)
- try:
- text = raw_file.read()
-- except UnicodeError, error:
-+ except UnicodeError as error:
- raise self.severe(u'Problem with "%s" directive:\n%s'
- % (self.name, ErrorString(error)))
- attributes['source'] = source
-@@ -320,7 +320,7 @@ class Unicode(Directive):
- for code in codes:
- try:
- decoded = directives.unicode_code(code)
-- except ValueError, error:
-+ except ValueError as error:
- raise self.error(u'Invalid character code: %s\n%s'
- % (code, ErrorString(error)))
- element += nodes.Text(utils.unescape(decoded), decoded)
-@@ -406,7 +406,7 @@ class Role(Directive):
- self.state.parse_directive_block(
- self.content[1:], self.content_offset, converted_role,
- option_presets={}))
-- except states.MarkupError, detail:
-+ except states.MarkupError as detail:
- error = self.state_machine.reporter.error(
- 'Error in "%s" directive:\n%s.' % (self.name, detail),
- nodes.literal_block(self.block_text, self.block_text),
-@@ -415,7 +415,7 @@ class Role(Directive):
- if 'class' not in options:
- try:
- options['class'] = directives.class_option(new_role_name)
-- except ValueError, detail:
-+ except ValueError as detail:
- error = self.state_machine.reporter.error(
- u'Invalid argument for "%s" directive:\n%s.'
- % (self.name, SafeString(detail)), nodes.literal_block(
-diff --git a/docutils/parsers/rst/directives/tables.py b/docutils/parsers/rst/directives/tables.py
-index 83b7b53..b0a4eac 100644
---- a/docutils/parsers/rst/directives/tables.py
-+++ b/docutils/parsers/rst/directives/tables.py
-@@ -259,9 +259,9 @@ class CSVTable(Table):
- col_widths = self.get_column_widths(max_cols)
- self.extend_short_rows_with_empty_cells(max_cols,
- (table_head, table_body))
-- except SystemMessagePropagation, detail:
-+ except SystemMessagePropagation as detail:
- return [detail.args[0]]
-- except csv.Error, detail:
-+ except csv.Error as detail:
- message = str(detail)
- if sys.version_info < (3,) and '1-character string' in message:
- message += '\nwith Python 2.x this must be an ASCII character.'
-@@ -320,7 +320,7 @@ class CSVTable(Table):
- encoding=encoding,
- error_handler=error_handler)
- csv_data = csv_file.read().splitlines()
-- except IOError, error:
-+ except IOError as error:
- severe = self.state_machine.reporter.severe(
- u'Problems with "%s" directive path:\n%s.'
- % (self.name, SafeString(error)),
-@@ -336,7 +336,7 @@ class CSVTable(Table):
- source = self.options['url']
- try:
- csv_text = urllib2.urlopen(source).read()
-- except (urllib2.URLError, IOError, OSError, ValueError), error:
-+ except (urllib2.URLError, IOError, OSError, ValueError) as error:
- severe = self.state_machine.reporter.severe(
- 'Problems with "%s" directive URL "%s":\n%s.'
- % (self.name, self.options['url'], SafeString(error)),
-@@ -424,7 +424,7 @@ class ListTable(Table):
- header_rows = self.options.get('header-rows', 0)
- stub_columns = self.options.get('stub-columns', 0)
- self.check_table_dimensions(table_data, header_rows, stub_columns)
-- except SystemMessagePropagation, detail:
-+ except SystemMessagePropagation as detail:
- return [detail.args[0]]
- table_node = self.build_table_from_list(table_data, col_widths,
- header_rows, stub_columns)
-diff --git a/docutils/parsers/rst/roles.py b/docutils/parsers/rst/roles.py
-index bf786b7..49b61dc 100644
---- a/docutils/parsers/rst/roles.py
-+++ b/docutils/parsers/rst/roles.py
-@@ -109,7 +109,7 @@ def role(role_name, language_module, lineno, reporter):
- canonicalname = None
- try:
- canonicalname = language_module.roles[normname]
-- except AttributeError, error:
-+ except AttributeError as error:
- msg_text.append('Problem retrieving role entry from language '
- 'module %r: %s.' % (language_module, error))
- except KeyError:
-@@ -333,7 +333,7 @@ def code_role(role, rawtext, text, lineno, inliner, options={}, content=[]):
- try:
- tokens = Lexer(utils.unescape(text, True), language,
- inliner.document.settings.syntax_highlight)
-- except LexerError, error:
-+ except LexerError as error:
- msg = inliner.reporter.warning(error)
- prb = inliner.problematic(rawtext, rawtext, msg)
- return [prb], [msg]
-diff --git a/docutils/parsers/rst/states.py b/docutils/parsers/rst/states.py
-index a2970c8..c9b4fa3 100644
---- a/docutils/parsers/rst/states.py
-+++ b/docutils/parsers/rst/states.py
-@@ -1497,7 +1497,7 @@ class Body(RSTState):
- (optionlist.source, optionlist.line) = self.state_machine.get_source_and_line()
- try:
- listitem, blank_finish = self.option_list_item(match)
-- except MarkupError, error:
-+ except MarkupError as error:
- # This shouldn't happen; pattern won't match.
- msg = self.reporter.error(u'Invalid option list marker: %s' %
- error)
-@@ -1686,7 +1686,7 @@ class Body(RSTState):
- + 1)
- table = self.build_table(tabledata, tableline)
- nodelist = [table] + messages
-- except tableparser.TableMarkupError, err:
-+ except tableparser.TableMarkupError as err:
- nodelist = self.malformed_table(block, ' '.join(err.args),
- offset=err.offset) + messages
- else:
-@@ -1698,7 +1698,7 @@ class Body(RSTState):
- blank_finish = 1
- try:
- block = self.state_machine.get_text_block(flush_left=True)
-- except statemachine.UnexpectedIndentationError, err:
-+ except statemachine.UnexpectedIndentationError as err:
- block, src, srcline = err.args
- messages.append(self.reporter.error('Unexpected indentation.',
- source=src, line=srcline))
-@@ -2135,7 +2135,7 @@ class Body(RSTState):
- arguments, options, content, content_offset = (
- self.parse_directive_block(indented, line_offset,
- directive, option_presets))
-- except MarkupError, detail:
-+ except MarkupError as detail:
- error = self.reporter.error(
- 'Error in "%s" directive:\n%s.' % (type_name,
- ' '.join(detail.args)),
-@@ -2146,7 +2146,7 @@ class Body(RSTState):
- content_offset, block_text, self, self.state_machine)
- try:
- result = directive_instance.run()
-- except docutils.parsers.rst.DirectiveError, error:
-+ except docutils.parsers.rst.DirectiveError as error:
- msg_node = self.reporter.system_message(error.level, error.msg,
- line=lineno)
- msg_node += nodes.literal_block(block_text, block_text)
-@@ -2263,11 +2263,11 @@ class Body(RSTState):
- return 0, 'invalid option block'
- try:
- options = utils.extract_extension_options(node, option_spec)
-- except KeyError, detail:
-+ except KeyError as detail:
- return 0, ('unknown option: "%s"' % detail.args[0])
-- except (ValueError, TypeError), detail:
-+ except (ValueError, TypeError) as detail:
- return 0, ('invalid option value: %s' % ' '.join(detail.args))
-- except utils.ExtensionOptionError, detail:
-+ except utils.ExtensionOptionError as detail:
- return 0, ('invalid option data: %s' % ' '.join(detail.args))
- if blank_finish:
- return 1, options
-@@ -2354,7 +2354,7 @@ class Body(RSTState):
- if expmatch:
- try:
- return method(self, expmatch)
-- except MarkupError, error:
-+ except MarkupError as error:
- lineno = self.state_machine.abs_line_number()
- message = ' '.join(error.args)
- errors.append(self.reporter.warning(message, line=lineno))
-@@ -2777,7 +2777,7 @@ class Text(RSTState):
- msg = None
- try:
- block = self.state_machine.get_text_block(flush_left=True)
-- except statemachine.UnexpectedIndentationError, err:
-+ except statemachine.UnexpectedIndentationError as err:
- block, src, srcline = err.args
- msg = self.reporter.error('Unexpected indentation.',
- source=src, line=srcline)
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index 6714a04..6a2322c 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -248,7 +248,7 @@ class StateMachine(object):
- break
- else:
- results.extend(result)
-- except TransitionCorrection, exception:
-+ except TransitionCorrection as exception:
- self.previous_line() # back up for another try
- transitions = (exception.args[0],)
- if self.debug:
-@@ -257,7 +257,7 @@ class StateMachine(object):
- 'state "%s", transition %s.'
- % (state.__class__.__name__, transitions[0])), file=self._stderr)
- continue
-- except StateCorrection, exception:
-+ except StateCorrection as exception:
- self.previous_line() # back up for another try
- next_state = exception.args[0]
- if len(exception.args) == 1:
-@@ -413,7 +413,7 @@ class StateMachine(object):
- flush_left)
- self.next_line(len(block) - 1)
- return block
-- except UnexpectedIndentationError, err:
-+ except UnexpectedIndentationError as err:
- block = err.args[0]
- self.next_line(len(block) - 1) # advance to last line of block
- raise
-diff --git a/docutils/utils/__init__.py b/docutils/utils/__init__.py
-index 692335a..c71d508 100644
---- a/docutils/utils/__init__.py
-+++ b/docutils/utils/__init__.py
-@@ -326,7 +326,7 @@ def assemble_option_dict(option_list, options_spec):
- raise DuplicateOptionError('duplicate option "%s"' % name)
- try:
- options[name] = convertor(value)
-- except (ValueError, TypeError), detail:
-+ except (ValueError, TypeError) as detail:
- raise detail.__class__('(option: "%s"; value: %r)\n%s'
- % (name, value, ' '.join(detail.args)))
- return options
-diff --git a/docutils/utils/error_reporting.py b/docutils/utils/error_reporting.py
-index 02e62eb..8ea7108 100644
---- a/docutils/utils/error_reporting.py
-+++ b/docutils/utils/error_reporting.py
-@@ -49,7 +49,7 @@ else:
- # locale.getpreferredencoding([do_setlocale=True|False])
- # has side-effects | might return a wrong guess.
- # (cf. Update 1 in http://stackoverflow.com/questions/4082645/using-python-2-xs-locale-module-to-format-numbers-and-currency)
-- except ValueError, error: # OS X may set UTF-8 without language code
-+ except ValueError as error: # OS X may set UTF-8 without language code
- # see http://bugs.python.org/issue18378
- # and https://sourceforge.net/p/docutils/bugs/298/
- if "unknown locale: UTF-8" in error.args:
-@@ -113,7 +113,7 @@ class SafeString(object):
- if isinstance(self.data, EnvironmentError):
- u = u.replace(": u'", ": '") # normalize filename quoting
- return u
-- except UnicodeError, error: # catch ..Encode.. and ..Decode.. errors
-+ except UnicodeError as error: # catch ..Encode.. and ..Decode.. errors
- if isinstance(self.data, EnvironmentError):
- return u"[Errno %s] %s: '%s'" % (self.data.errno,
- SafeString(self.data.strerror, self.encoding,
-diff --git a/docutils/writers/_html_base.py b/docutils/writers/_html_base.py
-index fa27911..23efeea 100644
---- a/docutils/writers/_html_base.py
-+++ b/docutils/writers/_html_base.py
-@@ -302,7 +302,7 @@ class HTMLTranslator(nodes.NodeVisitor):
- content = io.FileInput(source_path=path,
- encoding='utf-8').read()
- self.settings.record_dependencies.add(path)
-- except IOError, err:
-+ except IOError as err:
- msg = u"Cannot embed stylesheet '%s': %s." % (
- path, SafeString(err.strerror))
- self.document.reporter.error(msg)
-@@ -1159,7 +1159,7 @@ class HTMLTranslator(nodes.NodeVisitor):
- 'with math-output "MathML"')
- except OSError:
- raise OSError('is "latexmlmath" in your PATH?')
-- except SyntaxError, err:
-+ except SyntaxError as err:
- err_node = self.document.reporter.error(err, base_node=node)
- self.visit_system_message(err_node)
- self.body.append(self.starttag(node, 'p'))
-diff --git a/docutils/writers/docutils_xml.py b/docutils/writers/docutils_xml.py
-index 148041a..e870ee1 100644
---- a/docutils/writers/docutils_xml.py
-+++ b/docutils/writers/docutils_xml.py
-@@ -186,7 +186,7 @@ class XMLTranslator(nodes.GenericNodeVisitor):
- xml_string = xml_string.encode('utf8')
- try:
- self.xmlparser.parse(StringIO(xml_string))
-- except xml.sax._exceptions.SAXParseException, error:
-+ except xml.sax._exceptions.SAXParseException as error:
- col_num = self.the_handle.locator.getColumnNumber()
- line_num = self.the_handle.locator.getLineNumber()
- srcline = node.line
-diff --git a/docutils/writers/latex2e/__init__.py b/docutils/writers/latex2e/__init__.py
-index 5c33d0a..5eaa7f0 100644
---- a/docutils/writers/latex2e/__init__.py
-+++ b/docutils/writers/latex2e/__init__.py
-@@ -1416,7 +1416,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
- content = io.FileInput(source_path=path,
- encoding='utf-8').read()
- self.settings.record_dependencies.add(path)
-- except IOError, err:
-+ except IOError as err:
- msg = u"Cannot embed stylesheet '%s':\n %s." % (
- path, SafeString(err.strerror))
- self.document.reporter.error(msg)
-diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index 25196ec..e77447a 100644
---- a/test/DocutilsTestSupport.py
-+++ b/test/DocutilsTestSupport.py
-@@ -230,7 +230,7 @@ class CustomTestCase(StandardTestCase):
- output = '\n'.join(output.splitlines())
- try:
- self.assertEqual(output, expected)
-- except AssertionError, error:
-+ except AssertionError as error:
- print('\n%s\ninput:' % (self,), file=sys.stderr)
- print(input, file=sys.stderr)
- try:
-@@ -543,7 +543,7 @@ class GridTableParserTestCase(CustomTestCase):
- self.parser.find_head_body_sep()
- self.parser.parse_table()
- output = self.parser.cells
-- except Exception, details:
-+ except Exception as details:
- output = '%s: %s' % (details.__class__.__name__, details)
- self.compare_output(self.input, pformat(output) + '\n',
- pformat(self.expected) + '\n')
-@@ -552,7 +552,7 @@ class GridTableParserTestCase(CustomTestCase):
- try:
- output = self.parser.parse(StringList(string2lines(self.input),
- 'test data'))
-- except Exception, details:
-+ except Exception as details:
- output = '%s: %s' % (details.__class__.__name__, details)
- self.compare_output(self.input, pformat(output) + '\n',
- pformat(self.expected) + '\n')
-@@ -865,7 +865,7 @@ def exception_data(func, *args, **kwds):
- """
- try:
- func(*args, **kwds)
-- except Exception, detail:
-+ except Exception as detail:
- return (detail, detail.args,
- '%s: %s' % (detail.__class__.__name__, detail))
-
-diff --git a/test/package_unittest.py b/test/package_unittest.py
-index daf11f4..16b00dc 100644
---- a/test/package_unittest.py
-+++ b/test/package_unittest.py
-@@ -64,7 +64,7 @@ def parseArgs(argv=sys.argv):
- debug =1
- if len(args) != 0:
- usageExit("No command-line arguments supported yet.")
-- except getopt.error, msg:
-+ except getopt.error as msg:
- usageExit(msg)
-
- def loadTestModules(path, name='', packages=None):
-diff --git a/test/test_error_reporting.py b/test/test_error_reporting.py
-index c4eae40..bae9db5 100644
---- a/test/test_error_reporting.py
-+++ b/test/test_error_reporting.py
-@@ -19,7 +19,7 @@ instances like, e.g., ::
-
- try:
- something
-- except IOError, error:
-+ except IOError as error:
- print('Found %s' % error)
-
- unless the minimal required Python version has this problem fixed.
-@@ -223,29 +223,29 @@ class SafeStringTests_locale(unittest.TestCase):
- us = u'\xfc'
- try:
- open(b'\xfc')
-- except IOError, e: # in Python 3 the name for the exception instance
-+ except IOError as e: # in Python 3 the name for the exception instance
- bioe = e # is local to the except clause
- try:
- open(u'\xfc')
-- except IOError, e:
-+ except IOError as e:
- uioe = e
- except UnicodeEncodeError:
- try:
- open(u'\xfc'.encode(sys.getfilesystemencoding(), 'replace'))
-- except IOError, e:
-+ except IOError as e:
- uioe = e
- try:
- os.chdir(b'\xfc')
-- except OSError, e:
-+ except OSError as e:
- bose = e
- try:
- os.chdir(u'\xfc')
-- except OSError, e:
-+ except OSError as e:
- uose = e
- except UnicodeEncodeError:
- try:
- os.chdir(u'\xfc'.encode(sys.getfilesystemencoding(), 'replace'))
-- except OSError, e:
-+ except OSError as e:
- uose = e
- # wrapped test data:
- wbioe = SafeString(bioe)
-diff --git a/test/test_language.py b/test/test_language.py
-index 70a497e..0e05d44 100755
---- a/test/test_language.py
-+++ b/test/test_language.py
-@@ -144,7 +144,7 @@ class LanguageTestCase(DocutilsTestSupport.CustomTestCase):
- func, msg = directives.directive(d, module, None)
- if not func:
- failures.append('"%s": unknown directive' % d)
-- except Exception, error:
-+ except Exception as error:
- failures.append('"%s": %s' % (d, error))
- inverted = self._invert(module.directives)
- canonical = directives._directive_registry.keys()
-@@ -179,7 +179,7 @@ class LanguageTestCase(DocutilsTestSupport.CustomTestCase):
- method = roles._role_registry[d]
- #if not method:
- # failures.append('"%s": unknown role' % d)
-- except KeyError, error:
-+ except KeyError as error:
- failures.append('"%s": %s' % (d, error))
- inverted = self._invert(module.roles)
- canonical = roles._role_registry.keys()
-diff --git a/test/test_publisher.py b/test/test_publisher.py
-index f04ebf7..04d9c71 100755
---- a/test/test_publisher.py
-+++ b/test/test_publisher.py
-@@ -65,7 +65,7 @@ class PublisherTests(DocutilsTestSupport.StandardTestCase):
- try:
- core.publish_cmdline(argv=['nonexisting/path'],
- settings_overrides={'traceback': True})
-- except IOError, e:
-+ except IOError as e:
- self.assertTrue(isinstance(e, io.InputError))
-
-
-@@ -74,7 +74,7 @@ class PublisherTests(DocutilsTestSupport.StandardTestCase):
- try:
- core.publish_cmdline(argv=['data/include.txt', 'nonexisting/path'],
- settings_overrides={'traceback': True})
-- except IOError, e:
-+ except IOError as e:
- self.assertTrue(isinstance(e, io.OutputError))
-
-
-diff --git a/test/test_utils.py b/test/test_utils.py
-index e1fcc8f..59e29c8 100755
---- a/test/test_utils.py
-+++ b/test/test_utils.py
-@@ -88,7 +88,7 @@ class ReporterTests(unittest.TestCase):
- and hence fails with unicode message"""
- try:
- raise Exception(u'mesidʒ')
-- except Exception, err:
-+ except Exception as err:
- sw = self.reporter.system_message(0, err)
- self.assertEqual(sw.pformat(), u"""\
- <system_message level="0" source="test data" type="DEBUG">
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0004-py3-Add-aliases-for-removed-symbols.patch b/srcpkgs/python-docutils/patches/0004-py3-Add-aliases-for-removed-symbols.patch
deleted file mode 100644
index 4d6d9e84f0c..00000000000
--- a/srcpkgs/python-docutils/patches/0004-py3-Add-aliases-for-removed-symbols.patch
+++ /dev/null
@@ -1,599 +0,0 @@
-From 447e4896c9b2487fb28c25f7564ebcb6733d2363 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 19 Nov 2019 23:50:50 +0700
-Subject: [PATCH 04/26] py3: Add aliases for removed symbols
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Add aliases for symbols that have been removed in Python 3.x, namely
-basestring, unicode, unichr and StandardError.
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-small fixes by Günter Milde.
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8348 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/__init__.py | 3 +-
- docutils/frontend.py | 3 +
- docutils/io.py | 3 +
- docutils/nodes.py | 8 ++-
- docutils/parsers/rst/directives/__init__.py | 3 +
- docutils/statemachine.py | 10 +++-
- docutils/transforms/frontmatter.py | 6 ++
- docutils/transforms/universal.py | 5 ++
- docutils/utils/__init__.py | 3 +
- docutils/utils/error_reporting.py | 10 +++-
- docutils/utils/math/math2html.py | 59 ++++---------------
- docutils/writers/_html_base.py | 4 ++
- docutils/writers/docutils_xml.py | 3 +
- docutils/writers/latex2e/__init__.py | 4 ++
- docutils/writers/manpage.py | 6 +-
- test/DocutilsTestSupport.py | 4 ++
- test/test__init__.py | 4 ++
- test/test_error_reporting.py | 3 +
- test/test_language.py | 7 ++-
- 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 ++
- tools/dev/create_unimap.py | 10 ++--
- 24 files changed, 115 insertions(+), 62 deletions(-)
-
-diff --git a/docutils/__init__.py b/docutils/__init__.py
-index 7d6a679..8178816 100644
---- a/docutils/__init__.py
-+++ b/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/frontend.py b/docutils/frontend.py
-index 689d904..ebdbd6a 100644
---- a/docutils/frontend.py
-+++ b/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/io.py b/docutils/io.py
-index 4466fdb..3cdf00e 100644
---- a/docutils/io.py
-+++ b/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/nodes.py b/docutils/nodes.py
-index 8a5b7bb..fa02c6e 100644
---- a/docutils/nodes.py
-+++ b/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/parsers/rst/directives/__init__.py b/docutils/parsers/rst/directives/__init__.py
-index 8789346..7bccb5b 100644
---- a/docutils/parsers/rst/directives/__init__.py
-+++ b/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/statemachine.py b/docutils/statemachine.py
-index 6a2322c..b56f3c5 100644
---- a/docutils/statemachine.py
-+++ b/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):
-
-@@ -1124,7 +1127,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
-+ mine = self.data
-+ yours = self.__cast(other)
-+ return (mine > yours) - (yours < mine)
-
- def __cast(self, other):
- if isinstance(other, ViewList):
-diff --git a/docutils/transforms/frontmatter.py b/docutils/transforms/frontmatter.py
-index f94c9da..1279f50 100644
---- a/docutils/transforms/frontmatter.py
-+++ b/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/transforms/universal.py b/docutils/transforms/universal.py
-index 47e1276..49fb2c8 100644
---- a/docutils/transforms/universal.py
-+++ b/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/utils/__init__.py b/docutils/utils/__init__.py
-index c71d508..77c70f8 100644
---- a/docutils/utils/__init__.py
-+++ b/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/utils/error_reporting.py b/docutils/utils/error_reporting.py
-index 8ea7108..8fcc816 100644
---- a/docutils/utils/error_reporting.py
-+++ b/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/utils/math/math2html.py b/docutils/utils/math/math2html.py
-index 1f61e23..4967165 100644
---- a/docutils/utils/math/math2html.py
-+++ b/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/writers/_html_base.py b/docutils/writers/_html_base.py
-index 23efeea..a7f3b53 100644
---- a/docutils/writers/_html_base.py
-+++ b/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/writers/docutils_xml.py b/docutils/writers/docutils_xml.py
-index e870ee1..34e810d 100644
---- a/docutils/writers/docutils_xml.py
-+++ b/docutils/writers/docutils_xml.py
-@@ -30,6 +30,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/writers/latex2e/__init__.py b/docutils/writers/latex2e/__init__.py
-index 5eaa7f0..e21c74b 100644
---- a/docutils/writers/latex2e/__init__.py
-+++ b/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/writers/manpage.py b/docutils/writers/manpage.py
-index 287c6f2..9c887c7 100644
---- a/docutils/writers/manpage.py
-+++ b/docutils/writers/manpage.py
-@@ -45,6 +45,10 @@ by the command whatis or apropos.
- __docformat__ = 'reStructuredText'
-
- import re
-+import sys
-+
-+if sys.version_info < (3, 0):
-+ range = xrange
-
- import docutils
- from docutils import nodes, writers, languages
-@@ -255,7 +259,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/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index e77447a..c6f5b9f 100644
---- a/test/DocutilsTestSupport.py
-+++ b/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/test/test__init__.py b/test/test__init__.py
-index 01a1c59..8f1d749 100644
---- a/test/test__init__.py
-+++ b/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/test/test_error_reporting.py b/test/test_error_reporting.py
-index bae9db5..893082c 100644
---- a/test/test_error_reporting.py
-+++ b/test/test_error_reporting.py
-@@ -46,6 +46,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/test/test_language.py b/test/test_language.py
-index 0e05d44..30af81a 100755
---- a/test/test_language.py
-+++ b/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/test/test_nodes.py b/test/test_nodes.py
-index f6bc6b2..924569f 100755
---- a/test/test_nodes.py
-+++ b/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/test/test_parsers/test_rst/test_directives/test_include.py b/test/test_parsers/test_rst/test_directives/test_include.py
-index 2a6e5be..6e9dc84 100755
---- a/test/test_parsers/test_rst/test_directives/test_include.py
-+++ b/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/test/test_parsers/test_rst/test_directives/test_tables.py b/test/test_parsers/test_rst/test_directives/test_tables.py
-index f7496ad..2c5f832 100755
---- a/test/test_parsers/test_rst/test_directives/test_tables.py
-+++ b/test/test_parsers/test_rst/test_directives/test_tables.py
-@@ -16,6 +16,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/test/test_parsers/test_rst/test_directives/test_unicode.py b/test/test_parsers/test_rst/test_directives/test_unicode.py
-index b140050..5cdfd5a 100755
---- a/test/test_parsers/test_rst/test_directives/test_unicode.py
-+++ b/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/tools/dev/create_unimap.py b/tools/dev/create_unimap.py
-index 85ac264..74e8bc7 100755
---- a/tools/dev/create_unimap.py
-+++ b/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.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0005-py3-Resolve-some-additional-undefined-symbols.patch b/srcpkgs/python-docutils/patches/0005-py3-Resolve-some-additional-undefined-symbols.patch
deleted file mode 100644
index 2288a9bc6be..00000000000
--- a/srcpkgs/python-docutils/patches/0005-py3-Resolve-some-additional-undefined-symbols.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 6bd112802f857b32764afe87ce7828db50077086 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 19 Nov 2019 23:52:14 +0700
-Subject: [PATCH 05/26] py3: Resolve some additional undefined symbols
-
-Found with flake8
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8352 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/utils/math/math2html.py | 8 ++++----
- tools/dev/generate_punctuation_chars.py | 11 -----------
- 2 files changed, 4 insertions(+), 15 deletions(-)
-
-diff --git a/docutils/utils/math/math2html.py b/docutils/utils/math/math2html.py
-index 4967165..4a7209d 100644
---- a/docutils/utils/math/math2html.py
-+++ b/docutils/utils/math/math2html.py
-@@ -1624,7 +1624,7 @@ class TaggedOutput(ContentsOutput):
-
- def open(self, container):
- "Get opening line."
-- if not self.checktag():
-+ if not self.checktag(container):
- return ''
- open = '<' + self.tag + '>'
- if self.breaklines:
-@@ -1633,7 +1633,7 @@ class TaggedOutput(ContentsOutput):
-
- def close(self, container):
- "Get closing line."
-- if not self.checktag():
-+ if not self.checktag(container):
- return ''
- close = '</' + self.tag.split()[0] + '>'
- if self.breaklines:
-@@ -1642,14 +1642,14 @@ class TaggedOutput(ContentsOutput):
-
- def selfclosing(self, container):
- "Get self-closing line."
-- if not self.checktag():
-+ if not self.checktag(container):
- return ''
- selfclosing = '<' + self.tag + '/>'
- if self.breaklines:
- return selfclosing + '\n'
- return selfclosing
-
-- def checktag(self):
-+ def checktag(self, container):
- "Check that the tag is valid."
- if not self.tag:
- Trace.error('No tag in ' + unicode(container))
-diff --git a/tools/dev/generate_punctuation_chars.py b/tools/dev/generate_punctuation_chars.py
-index 5947fe5..a30c5ca 100644
---- a/tools/dev/generate_punctuation_chars.py
-+++ b/tools/dev/generate_punctuation_chars.py
-@@ -319,17 +319,6 @@ def print_differences(old, new, name):
- else:
- print('%s unchanged' % name)
-
--def print_quote_pairs():
-- pairs = [(o,c) for o,c in quote_pairs.items()]
-- for o,c in sorted(pairs):
-- print((u'%s %s' % (o,c)).encode('utf8'))
--
-- # # Test open/close matching:
-- # for i in range(min(len(openers),len(closers))):
-- # print('%4d %s %s' % (i, openers[i].encode('utf8'),
-- # closers[i].encode('utf8'))
--
--
- # Output
- # ------
- #
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0006-py3-Replace-deprecated-form-of-raising-exception.patch b/srcpkgs/python-docutils/patches/0006-py3-Replace-deprecated-form-of-raising-exception.patch
deleted file mode 100644
index 2c2defe0593..00000000000
--- a/srcpkgs/python-docutils/patches/0006-py3-Replace-deprecated-form-of-raising-exception.patch
+++ /dev/null
@@ -1,263 +0,0 @@
-From efe0c9a75c5b2a8d094840927e93e0e873e77ece Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 19 Nov 2019 23:52:58 +0700
-Subject: [PATCH 06/26] py3: Replace deprecated form of raising exception
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8353 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/frontend.py | 25 ++++++++++---------------
- docutils/nodes.py | 12 ++++++------
- docutils/transforms/frontmatter.py | 4 ++--
- docutils/utils/roman.py | 9 +++++----
- docutils/writers/manpage.py | 4 ++--
- test/DocutilsTestSupport.py | 21 ++++-----------------
- test/package_unittest.py | 2 +-
- 7 files changed, 30 insertions(+), 47 deletions(-)
-
-diff --git a/docutils/frontend.py b/docutils/frontend.py
-index ebdbd6a..4b389b0 100644
---- a/docutils/frontend.py
-+++ b/docutils/frontend.py
-@@ -74,9 +74,8 @@ def validate_encoding(setting, value, option_parser,
- try:
- codecs.lookup(value)
- except LookupError:
-- raise (LookupError('setting "%s": unknown encoding: "%s"'
-- % (setting, value)),
-- None, sys.exc_info()[2])
-+ raise LookupError('setting "%s": unknown encoding: "%s"'
-+ % (setting, value))
- return value
-
- def validate_encoding_error_handler(setting, value, option_parser,
-@@ -84,12 +83,11 @@ def validate_encoding_error_handler(setting, value, option_parser,
- try:
- codecs.lookup_error(value)
- except LookupError:
-- raise (LookupError(
-+ raise LookupError(
- 'unknown encoding error handler: "%s" (choices: '
- '"strict", "ignore", "replace", "backslashreplace", '
- '"xmlcharrefreplace", and possibly others; see documentation for '
-- 'the Python ``codecs`` module)' % value),
-- None, sys.exc_info()[2])
-+ 'the Python ``codecs`` module)' % value)
- return value
-
- def validate_encoding_and_error_handler(
-@@ -125,8 +123,7 @@ def validate_boolean(setting, value, option_parser,
- try:
- return option_parser.booleans[value.strip().lower()]
- except KeyError:
-- raise (LookupError('unknown boolean value: "%s"' % value),
-- None, sys.exc_info()[2])
-+ raise LookupError('unknown boolean value: "%s"' % value)
-
- def validate_ternary(setting, value, option_parser,
- config_parser=None, config_section=None):
-@@ -157,8 +154,7 @@ def validate_threshold(setting, value, option_parser,
- try:
- return option_parser.thresholds[value.lower()]
- except (KeyError, AttributeError):
-- raise (LookupError('unknown threshold: %r.' % value),
-- None, sys.exc_info[2])
-+ raise LookupError('unknown threshold: %r.' % value)
-
- def validate_colon_separated_string_list(
- setting, value, option_parser, config_parser=None, config_section=None):
-@@ -350,10 +346,9 @@ class Option(optparse.Option):
- try:
- new_value = self.validator(setting, value, parser)
- except Exception as error:
-- raise (optparse.OptionValueError(
-+ raise optparse.OptionValueError(
- 'Error in option "%s":\n %s'
-- % (opt, ErrorString(error))),
-- None, sys.exc_info()[2])
-+ % (opt, ErrorString(error)))
- setattr(values, setting, new_value)
- if self.overrides:
- setattr(values, self.overrides, None)
-@@ -830,12 +825,12 @@ Skipping "%s" configuration file.
- setting, value, option_parser,
- config_parser=self, config_section=section)
- except Exception as error:
-- raise (ValueError(
-+ raise ValueError(
- 'Error in config file "%s", section "[%s]":\n'
- ' %s\n'
- ' %s = %s'
- % (filename, section, ErrorString(error),
-- setting, value)), None, sys.exc_info()[2])
-+ setting, value))
- self.set(section, setting, new_value)
- if option.overrides:
- self.set(section, option.overrides, None)
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index fa02c6e..71189ab 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -594,8 +594,8 @@ class Element(Node):
- assert key.step in (None, 1), 'cannot handle slice with stride'
- return self.children[key.start:key.stop]
- else:
-- raise TypeError, ('element index must be an integer, a slice, or '
-- 'an attribute name string')
-+ raise TypeError('element index must be an integer, a slice, or '
-+ 'an attribute name string')
-
- def __setitem__(self, key, item):
- if isinstance(key, basestring):
-@@ -609,8 +609,8 @@ class Element(Node):
- self.setup_child(node)
- self.children[key.start:key.stop] = item
- else:
-- raise TypeError, ('element index must be an integer, a slice, or '
-- 'an attribute name string')
-+ raise TypeError('element index must be an integer, a slice, or '
-+ 'an attribute name string')
-
- def __delitem__(self, key):
- if isinstance(key, basestring):
-@@ -621,8 +621,8 @@ class Element(Node):
- assert key.step in (None, 1), 'cannot handle slice with stride'
- del self.children[key.start:key.stop]
- else:
-- raise TypeError, ('element index must be an integer, a simple '
-- 'slice, or an attribute name string')
-+ raise TypeError('element index must be an integer, a simple '
-+ 'slice, or an attribute name string')
-
- def __add__(self, other):
- return self.children + other
-diff --git a/docutils/transforms/frontmatter.py b/docutils/transforms/frontmatter.py
-index 1279f50..23b9c95 100644
---- a/docutils/transforms/frontmatter.py
-+++ b/docutils/transforms/frontmatter.py
-@@ -57,7 +57,7 @@ class TitlePromoter(Transform):
- """
- # Type check
- if not isinstance(node, nodes.Element):
-- raise TypeError, 'node must be of Element-derived type.'
-+ raise TypeError('node must be of Element-derived type.')
-
- # `node` must not have a title yet.
- assert not (len(node) and isinstance(node[0], nodes.title))
-@@ -100,7 +100,7 @@ class TitlePromoter(Transform):
- """
- # Type check
- if not isinstance(node, nodes.Element):
-- raise TypeError, 'node must be of Element-derived type.'
-+ raise TypeError('node must be of Element-derived type.')
-
- subsection, index = self.candidate_index(node)
- if index is None:
-diff --git a/docutils/utils/roman.py b/docutils/utils/roman.py
-index 0335f29..fc4680d 100644
---- a/docutils/utils/roman.py
-+++ b/docutils/utils/roman.py
-@@ -40,9 +40,9 @@ romanNumeralMap = (('M', 1000),
- def toRoman(n):
- """convert integer to Roman numeral"""
- if not (0 < n < 5000):
-- raise OutOfRangeError, "number out of range (must be 1..4999)"
-+ raise OutOfRangeError("number out of range (must be 1..4999)")
- if int(n) != n:
-- raise NotIntegerError, "decimals can not be converted"
-+ raise NotIntegerError("decimals can not be converted")
-
- result = ""
- for numeral, integer in romanNumeralMap:
-@@ -67,9 +67,10 @@ romanNumeralPattern = re.compile("""
- def fromRoman(s):
- """convert Roman numeral to integer"""
- if not s:
-- raise InvalidRomanNumeralError, 'Input can not be blank'
-+ raise InvalidRomanNumeralError('Input can not be blank')
-+
- if not romanNumeralPattern.search(s):
-- raise InvalidRomanNumeralError, 'Invalid Roman numeral: %s' % s
-+ raise InvalidRomanNumeralError('Invalid Roman numeral: %s' % s)
-
- result = 0
- index = 0
-diff --git a/docutils/writers/manpage.py b/docutils/writers/manpage.py
-index 9c887c7..cbb8648 100644
---- a/docutils/writers/manpage.py
-+++ b/docutils/writers/manpage.py
-@@ -715,7 +715,7 @@ class Translator(nodes.NodeVisitor):
- pass
-
- def visit_header(self, node):
-- raise NotImplementedError, node.astext()
-+ raise NotImplementedError(node.astext())
-
- def depart_header(self, node):
- pass
-@@ -855,7 +855,7 @@ class Translator(nodes.NodeVisitor):
- self.depart_literal_block(node)
-
- def visit_meta(self, node):
-- raise NotImplementedError, node.astext()
-+ raise NotImplementedError(node.astext())
-
- def depart_meta(self, node):
- pass
-diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index c6f5b9f..a1fec25 100644
---- a/test/DocutilsTestSupport.py
-+++ b/test/DocutilsTestSupport.py
-@@ -123,30 +123,17 @@ class StandardTestCase(unittest.TestCase):
- operator.
- """
- if not first == second:
-- raise self.failureException, (
-- msg or '%s != %s' % _format_str(first, second))
-+ raise self.failureException(
-+ msg or '%s != %s' % _format_str(first, second))
-
- def assertNotEqual(self, first, second, msg=None):
- """Fail if the two objects are equal as determined by the '=='
- operator.
- """
- if first == second:
-- raise self.failureException, (
-- msg or '%s == %s' % _format_str(first, second))
-+ raise self.failureException(
-+ msg or '%s == %s' % _format_str(first, second))
-
-- # assertIn and assertNotIn: new in Python 2.7:
-- if sys.version_info < (2,7):
--
-- def assertIn(self, a, b, msg=None):
-- if a not in b:
-- raise self.failureException, (
-- msg or '%s not in %s' % _format_str(a, b))
--
-- def assertNotIn(self, a, b, msg=None):
-- if a in b:
-- raise self.failureException, (
-- msg or '%s in %s' % _format_str(a, b))
--
- # aliases for assertion methods, deprecated since Python 2.7
-
- failUnlessEqual = assertEquals = assertEqual
-diff --git a/test/package_unittest.py b/test/package_unittest.py
-index 16b00dc..4db826b 100644
---- a/test/package_unittest.py
-+++ b/test/package_unittest.py
-@@ -120,7 +120,7 @@ def loadTestModules(path, name='', packages=None):
- elif isinstance(suite, unittest.TestSuite):
- testSuite.addTest(suite)
- else:
-- raise AssertionError, "don't understand suite (%s)" % mod
-+ raise AssertionError("don't understand suite (%s)" % mod)
- sys.path.pop(0)
- return testSuite
-
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0007-py3-Replace-sys.maxint-with-sys.maxsize.patch b/srcpkgs/python-docutils/patches/0007-py3-Replace-sys.maxint-with-sys.maxsize.patch
deleted file mode 100644
index eb0c40f7a1f..00000000000
--- a/srcpkgs/python-docutils/patches/0007-py3-Replace-sys.maxint-with-sys.maxsize.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From d6f8634004aa679d2d71037bd63af82052f08fee Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 19 Nov 2019 23:53:54 +0700
-Subject: [PATCH 07/26] py3: Replace 'sys.maxint' with 'sys.maxsize'
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From the Python 3 release docs [1]:
-
- The sys.maxint constant was removed, since there is no longer a limit
- to the value of integers. However, sys.maxsize can be used as an
- integer larger than any practical list or string index. It conforms to
- the implementation’s “natural” integer size and is typically the
- same as sys.maxint in previous releases on the same platform (assuming
- the same build options).
-
-[1] https://docs.python.org/3.1/whatsnew/3.0.html#integers
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8354 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/nodes.py | 4 ++--
- docutils/parsers/rst/tableparser.py | 2 +-
- docutils/statemachine.py | 2 +-
- docutils/transforms/parts.py | 4 ++--
- 4 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index 71189ab..c524373 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -977,7 +977,7 @@ class Element(Node):
- 'Losing "%s" attribute: %s' % (att, self[att])
- self.parent.replace(self, new)
-
-- def first_child_matching_class(self, childclass, start=0, end=sys.maxint):
-+ def first_child_matching_class(self, childclass, start=0, end=sys.maxsize):
- """
- Return the index of the first child whose class exactly matches.
-
-@@ -997,7 +997,7 @@ class Element(Node):
- return None
-
- def first_child_not_matching_class(self, childclass, start=0,
-- end=sys.maxint):
-+ end=sys.maxsize):
- """
- Return the index of the first child whose class does *not* match.
-
-diff --git a/docutils/parsers/rst/tableparser.py b/docutils/parsers/rst/tableparser.py
-index 45af72f..2760ea0 100644
---- a/docutils/parsers/rst/tableparser.py
-+++ b/docutils/parsers/rst/tableparser.py
-@@ -498,7 +498,7 @@ class SimpleTableParser(TableParser):
- """
- # "Infinite" value for a dummy last column's beginning, used to
- # check for text overflow:
-- columns.append((sys.maxint, None))
-+ columns.append((sys.maxsize, None))
- lastcol = len(columns) - 2
- # combining characters do not contribute to the column width
- lines = [strip_combining_chars(line) for line in lines]
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index b56f3c5..5d7fe77 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -1341,7 +1341,7 @@ class StringList(ViewList):
-
- """A `ViewList` with string-specific methods."""
-
-- def trim_left(self, length, start=0, end=sys.maxint):
-+ def trim_left(self, length, start=0, end=sys.maxsize):
- """
- Trim `length` characters off the beginning of each item, in-place,
- from index `start` to `end`. No whitespace-checking is done on the
-diff --git a/docutils/transforms/parts.py b/docutils/transforms/parts.py
-index 11b1b23..7a2fa0f 100644
---- a/docutils/transforms/parts.py
-+++ b/docutils/transforms/parts.py
-@@ -37,7 +37,7 @@ class SectNum(Transform):
- self.startnode.parent.remove(self.startnode)
- if self.document.settings.sectnum_xform:
- if self.maxdepth is None:
-- self.maxdepth = sys.maxint
-+ self.maxdepth = sys.maxsize
- self.update_section_numbers(self.document)
- else: # store details for eventual section numbering by the writer
- self.document.settings.sectnum_depth = self.maxdepth
-@@ -120,7 +120,7 @@ class Contents(Transform):
- sections = [sect for sect in node if isinstance(sect, nodes.section)]
- entries = []
- autonum = 0
-- depth = self.startnode.details.get('depth', sys.maxint)
-+ depth = self.startnode.details.get('depth', sys.maxsize)
- for section in sections:
- title = section[0]
- auto = title.get('auto') # May be set by SectNum.
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0008-py3-Replace-types.SliceType-with-slice-remove-types..patch b/srcpkgs/python-docutils/patches/0008-py3-Replace-types.SliceType-with-slice-remove-types..patch
deleted file mode 100644
index 571c6fa7d6b..00000000000
--- a/srcpkgs/python-docutils/patches/0008-py3-Replace-types.SliceType-with-slice-remove-types..patch
+++ /dev/null
@@ -1,128 +0,0 @@
-From a46f2bdec20068cf79ff182ae024fc1989d45c74 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Mon, 26 Aug 2019 16:42:50 +0000
-Subject: [PATCH 08/26] py3: Replace 'types.SliceType' with slice, remove
- 'types.ClassType'.
-
-These types have been removed in Python 3,
-`SliceType` is an alias for `slice` already in Python 2.7,
-`ClassType` is for user-defined old-style classes (we now use only new style classes).
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8355 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/nodes.py | 11 +++++------
- docutils/statemachine.py | 5 ++---
- test/test_nodes.py | 4 ++--
- 3 files changed, 9 insertions(+), 11 deletions(-)
-
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index c524373..a8c0478 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -27,7 +27,6 @@ import sys
- import os
- import re
- import warnings
--import types
- import unicodedata
-
- if sys.version_info >= (3, 0):
-@@ -257,11 +256,11 @@ class Node(object):
- if include_self and descend and not siblings:
- if condition is None:
- return self._all_traverse()
-- elif isinstance(condition, (types.ClassType, type)):
-+ elif isinstance(condition, type):
- return self._fast_traverse(condition)
- # Check if `condition` is a class (check for TypeType for Python
- # implementations that use only new-style classes, like PyPy).
-- if isinstance(condition, (types.ClassType, type)):
-+ if isinstance(condition, type):
- node_class = condition
- def condition(node, node_class=node_class):
- return isinstance(node, node_class)
-@@ -590,7 +589,7 @@ class Element(Node):
- return self.attributes[key]
- elif isinstance(key, int):
- return self.children[key]
-- elif isinstance(key, types.SliceType):
-+ elif isinstance(key, slice):
- assert key.step in (None, 1), 'cannot handle slice with stride'
- return self.children[key.start:key.stop]
- else:
-@@ -603,7 +602,7 @@ class Element(Node):
- elif isinstance(key, int):
- self.setup_child(item)
- self.children[key] = item
-- elif isinstance(key, types.SliceType):
-+ elif isinstance(key, slice):
- assert key.step in (None, 1), 'cannot handle slice with stride'
- for node in item:
- self.setup_child(node)
-@@ -617,7 +616,7 @@ class Element(Node):
- del self.attributes[key]
- elif isinstance(key, int):
- del self.children[key]
-- elif isinstance(key, types.SliceType):
-+ elif isinstance(key, slice):
- assert key.step in (None, 1), 'cannot handle slice with stride'
- del self.children[key.start:key.stop]
- else:
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index 5d7fe77..068083a 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -109,7 +109,6 @@ __docformat__ = 'restructuredtext'
-
- import sys
- import re
--import types
- import unicodedata
- from docutils import utils
- from docutils.utils.error_reporting import ErrorOutput
-@@ -1148,7 +1147,7 @@ class ViewList(object):
- # just works.
-
- def __getitem__(self, i):
-- if isinstance(i, types.SliceType):
-+ if isinstance(i, slice):
- assert i.step in (None, 1), 'cannot handle slice with stride'
- return self.__class__(self.data[i.start:i.stop],
- items=self.items[i.start:i.stop],
-@@ -1157,7 +1156,7 @@ class ViewList(object):
- return self.data[i]
-
- def __setitem__(self, i, item):
-- if isinstance(i, types.SliceType):
-+ if isinstance(i, slice):
- assert i.step in (None, 1), 'cannot handle slice with stride'
- if not isinstance(item, ViewList):
- raise TypeError('assigning non-ViewList to ViewList slice')
-diff --git a/test/test_nodes.py b/test/test_nodes.py
-index 924569f..679c98e 100755
---- a/test/test_nodes.py
-+++ b/test/test_nodes.py
-@@ -11,7 +11,7 @@ Test module for nodes.py.
-
- import sys
- import unittest
--import types
-+
- import DocutilsTestSupport # must be imported before docutils
- from DocutilsTestSupport import nodes, utils
-
-@@ -359,7 +359,7 @@ class MiscTests(unittest.TestCase):
- node_class_names = []
- for x in dir(nodes):
- c = getattr(nodes, x)
-- if isinstance(c, (type, types.ClassType)) and \
-+ if isinstance(c, type) and \
- issubclass(c, nodes.Node) and len(c.__bases__) > 1:
- node_class_names.append(x)
- node_class_names.sort()
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0009-py3-Use-absolute_import-future.patch b/srcpkgs/python-docutils/patches/0009-py3-Use-absolute_import-future.patch
deleted file mode 100644
index 2e7d31c2f83..00000000000
--- a/srcpkgs/python-docutils/patches/0009-py3-Use-absolute_import-future.patch
+++ /dev/null
@@ -1,1699 +0,0 @@
-From 2384d685b2b38e30a0dbb60594c190f36ad7e3a7 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 19 Nov 2019 23:57:43 +0700
-Subject: [PATCH 09/26] py3: Use 'absolute_import' future
-
-This mostly applies to tests.
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8356 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/writers/odf_odt/__init__.py | 3 ++-
- test/test_parsers/test_get_parser_class.py | 3 ++-
- test/test_parsers/test_rst/test_SimpleTableParser.py | 3 ++-
- test/test_parsers/test_rst/test_TableParser.py | 3 ++-
- test/test_parsers/test_rst/test_block_quotes.py | 3 ++-
- test/test_parsers/test_rst/test_bullet_lists.py | 3 ++-
- .../test_rst/test_character_level_inline_markup.py | 3 ++-
- test/test_parsers/test_rst/test_citations.py | 3 ++-
- test/test_parsers/test_rst/test_comments.py | 3 ++-
- test/test_parsers/test_rst/test_definition_lists.py | 3 ++-
- .../test_rst/test_directives/test_admonitions.py | 3 ++-
- .../test_rst/test_directives/test_block_quotes.py | 3 ++-
- test/test_parsers/test_rst/test_directives/test_class.py | 3 ++-
- test/test_parsers/test_rst/test_directives/test_code.py | 3 ++-
- .../test_rst/test_directives/test_code_long.py | 3 ++-
- .../test_rst/test_directives/test_code_none.py | 3 ++-
- .../test_rst/test_directives/test_compound.py | 3 ++-
- .../test_rst/test_directives/test_container.py | 3 ++-
- .../test_rst/test_directives/test_contents.py | 3 ++-
- test/test_parsers/test_rst/test_directives/test_date.py | 3 ++-
- .../test_rst/test_directives/test_decorations.py | 4 +++-
- .../test_rst/test_directives/test_default_role.py | 3 ++-
- .../test_parsers/test_rst/test_directives/test_figures.py | 4 +++-
- test/test_parsers/test_rst/test_directives/test_images.py | 4 +++-
- .../test_parsers/test_rst/test_directives/test_include.py | 3 ++-
- .../test_rst/test_directives/test_line_blocks.py | 4 +++-
- test/test_parsers/test_rst/test_directives/test_math.py | 4 +++-
- test/test_parsers/test_rst/test_directives/test_meta.py | 4 +++-
- .../test_rst/test_directives/test_parsed_literals.py | 4 +++-
- test/test_parsers/test_rst/test_directives/test_raw.py | 5 ++++-
- .../test_parsers/test_rst/test_directives/test_replace.py | 3 ++-
- .../test_rst/test_directives/test_replace_fr.py | 3 ++-
- test/test_parsers/test_rst/test_directives/test_role.py | 3 ++-
- .../test_parsers/test_rst/test_directives/test_rubrics.py | 3 ++-
- .../test_parsers/test_rst/test_directives/test_sectnum.py | 4 +++-
- .../test_rst/test_directives/test_sidebars.py | 4 +++-
- test/test_parsers/test_rst/test_directives/test_tables.py | 4 +++-
- .../test_rst/test_directives/test_target_notes.py | 4 +++-
- .../test_rst/test_directives/test_test_directives.py | 4 +++-
- test/test_parsers/test_rst/test_directives/test_title.py | 4 +++-
- test/test_parsers/test_rst/test_directives/test_topics.py | 4 +++-
- .../test_parsers/test_rst/test_directives/test_unicode.py | 3 ++-
- .../test_parsers/test_rst/test_directives/test_unknown.py | 4 +++-
- test/test_parsers/test_rst/test_doctest_blocks.py | 4 +++-
- test/test_parsers/test_rst/test_east_asian_text.py | 5 ++++-
- test/test_parsers/test_rst/test_enumerated_lists.py | 4 +++-
- test/test_parsers/test_rst/test_field_lists.py | 4 +++-
- test/test_parsers/test_rst/test_footnotes.py | 4 +++-
- test/test_parsers/test_rst/test_inline_markup.py | 4 +++-
- test/test_parsers/test_rst/test_interpreted.py | 4 +++-
- test/test_parsers/test_rst/test_interpreted_fr.py | 4 +++-
- test/test_parsers/test_rst/test_line_blocks.py | 4 +++-
- test/test_parsers/test_rst/test_literal_blocks.py | 4 +++-
- test/test_parsers/test_rst/test_option_lists.py | 4 +++-
- test/test_parsers/test_rst/test_outdenting.py | 4 +++-
- test/test_parsers/test_rst/test_paragraphs.py | 4 +++-
- test/test_parsers/test_rst/test_section_headers.py | 8 ++++++--
- test/test_parsers/test_rst/test_substitutions.py | 4 +++-
- test/test_parsers/test_rst/test_tables.py | 5 ++++-
- test/test_parsers/test_rst/test_targets.py | 4 +++-
- test/test_parsers/test_rst/test_transitions.py | 4 +++-
- test/test_readers/test_get_reader_class.py | 5 +++--
- test/test_readers/test_pep/test_inline_markup.py | 3 ++-
- test/test_readers/test_pep/test_rfc2822.py | 4 +++-
- test/test_transforms/test___init__.py | 6 ++++--
- test/test_transforms/test_class.py | 3 ++-
- test/test_transforms/test_contents.py | 3 ++-
- test/test_transforms/test_docinfo.py | 3 ++-
- test/test_transforms/test_doctitle.py | 4 +++-
- test/test_transforms/test_expose_internals.py | 4 +++-
- test/test_transforms/test_filter.py | 3 ++-
- test/test_transforms/test_footnotes.py | 3 ++-
- test/test_transforms/test_hyperlinks.py | 4 ++--
- test/test_transforms/test_messages.py | 3 ++-
- test/test_transforms/test_peps.py | 3 ++-
- test/test_transforms/test_sectnum.py | 3 ++-
- test/test_transforms/test_smartquotes.py | 5 +++--
- test/test_transforms/test_strip_comments.py | 3 ++-
- test/test_transforms/test_strip_elements_with_class.py | 3 ++-
- test/test_transforms/test_substitutions.py | 3 ++-
- test/test_transforms/test_target_notes.py | 3 ++-
- test/test_transforms/test_transitions.py | 4 +++-
- test/test_transforms/test_writer_aux.py | 3 ++-
- test/test_writers/test_docutils_xml.py | 3 ++-
- test/test_writers/test_get_writer_class.py | 4 +++-
- test/test_writers/test_html4css1_misc.py | 7 +++++--
- test/test_writers/test_html4css1_parts.py | 4 +++-
- test/test_writers/test_html4css1_template.py | 3 ++-
- test/test_writers/test_html5_polyglot_misc.py | 7 +++++--
- test/test_writers/test_html5_polyglot_parts.py | 3 ++-
- test/test_writers/test_latex2e.py | 5 ++++-
- test/test_writers/test_manpage.py | 4 +++-
- test/test_writers/test_null.py | 4 +++-
- test/test_writers/test_odt.py | 3 ++-
- test/test_writers/test_pseudoxml.py | 4 +++-
- test/test_writers/test_s5.py | 3 ++-
- 96 files changed, 253 insertions(+), 103 deletions(-)
-
-diff --git a/docutils/writers/odf_odt/__init__.py b/docutils/writers/odf_odt/__init__.py
-index 5f62605..c0f43a5 100644
---- a/docutils/writers/odf_odt/__init__.py
-+++ b/docutils/writers/odf_odt/__init__.py
-@@ -6,6 +6,7 @@
- Open Document Format (ODF) Writer.
-
- """
-+from __future__ import absolute_import
-
- __docformat__ = 'reStructuredText'
-
-@@ -71,7 +72,7 @@ try:
- from .pygmentsformatter import OdtPygmentsProgFormatter, \
- OdtPygmentsLaTeXFormatter
- else:
-- from pygmentsformatter import OdtPygmentsProgFormatter, \
-+ from .pygmentsformatter import OdtPygmentsProgFormatter, \
- OdtPygmentsLaTeXFormatter
- except (ImportError, SyntaxError):
- pygments = None
-diff --git a/test/test_parsers/test_get_parser_class.py b/test/test_parsers/test_get_parser_class.py
-index 4de05cc..ca809d0 100644
---- a/test/test_parsers/test_get_parser_class.py
-+++ b/test/test_parsers/test_get_parser_class.py
-@@ -8,8 +8,9 @@
- """
- test get_parser_class
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.parsers import get_parser_class
-
- class GetParserClassTestCase(DocutilsTestSupport.StandardTestCase):
-diff --git a/test/test_parsers/test_rst/test_SimpleTableParser.py b/test/test_parsers/test_rst/test_SimpleTableParser.py
-index 864c545..2942e01 100755
---- a/test/test_parsers/test_rst/test_SimpleTableParser.py
-+++ b/test/test_parsers/test_rst/test_SimpleTableParser.py
-@@ -8,8 +8,9 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.SimpleTableParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_TableParser.py b/test/test_parsers/test_rst/test_TableParser.py
-index 189ef2a..ecafe8f 100755
---- a/test/test_parsers/test_rst/test_TableParser.py
-+++ b/test/test_parsers/test_rst/test_TableParser.py
-@@ -8,8 +8,9 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.GridTableParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_block_quotes.py b/test/test_parsers/test_rst/test_block_quotes.py
-index 171c784..2aee3c6 100755
---- a/test/test_parsers/test_rst/test_block_quotes.py
-+++ b/test/test_parsers/test_rst/test_block_quotes.py
-@@ -7,8 +7,9 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_bullet_lists.py b/test/test_parsers/test_rst/test_bullet_lists.py
-index 246cdbd..4fe963d 100755
---- a/test/test_parsers/test_rst/test_bullet_lists.py
-+++ b/test/test_parsers/test_rst/test_bullet_lists.py
-@@ -7,8 +7,9 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_character_level_inline_markup.py b/test/test_parsers/test_rst/test_character_level_inline_markup.py
-index b1d1885..6b42ed6 100644
---- a/test/test_parsers/test_rst/test_character_level_inline_markup.py
-+++ b/test/test_parsers/test_rst/test_character_level_inline_markup.py
-@@ -11,8 +11,9 @@ with the "character-level-inline-markup" setting.
-
- Experimental.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite(suite_settings={'character_level_inline_markup': True})
-diff --git a/test/test_parsers/test_rst/test_citations.py b/test/test_parsers/test_rst/test_citations.py
-index 03370a6..ead2b98 100755
---- a/test/test_parsers/test_rst/test_citations.py
-+++ b/test/test_parsers/test_rst/test_citations.py
-@@ -7,8 +7,9 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_comments.py b/test/test_parsers/test_rst/test_comments.py
-index 34f62e1..10cca78 100755
---- a/test/test_parsers/test_rst/test_comments.py
-+++ b/test/test_parsers/test_rst/test_comments.py
-@@ -7,8 +7,9 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_definition_lists.py b/test/test_parsers/test_rst/test_definition_lists.py
-index 1a80360..40c633c 100755
---- a/test/test_parsers/test_rst/test_definition_lists.py
-+++ b/test/test_parsers/test_rst/test_definition_lists.py
-@@ -7,8 +7,9 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_admonitions.py b/test/test_parsers/test_rst/test_directives/test_admonitions.py
-index faf5f66..3724131 100755
---- a/test/test_parsers/test_rst/test_directives/test_admonitions.py
-+++ b/test/test_parsers/test_rst/test_directives/test_admonitions.py
-@@ -7,8 +7,9 @@
- """
- Tests for admonitions.py directives.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_block_quotes.py b/test/test_parsers/test_rst/test_directives/test_block_quotes.py
-index 93bae9e..87a99d7 100755
---- a/test/test_parsers/test_rst/test_directives/test_block_quotes.py
-+++ b/test/test_parsers/test_rst/test_directives/test_block_quotes.py
-@@ -8,8 +8,9 @@
- Tests for the block quote directives "epigraph", "highlights", and
- "pull-quote".
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_class.py b/test/test_parsers/test_rst/test_directives/test_class.py
-index 544946d..d65c8b4 100755
---- a/test/test_parsers/test_rst/test_directives/test_class.py
-+++ b/test/test_parsers/test_rst/test_directives/test_class.py
-@@ -7,8 +7,9 @@
- """
- Tests for the 'class' directive.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_code.py b/test/test_parsers/test_rst/test_directives/test_code.py
-index 51c1558..bf7ebba 100644
---- a/test/test_parsers/test_rst/test_directives/test_code.py
-+++ b/test/test_parsers/test_rst/test_directives/test_code.py
-@@ -7,8 +7,9 @@
- """
- Test the 'code' directive in parsers/rst/directives/body.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.utils.code_analyzer import with_pygments
-
- def suite():
-diff --git a/test/test_parsers/test_rst/test_directives/test_code_long.py b/test/test_parsers/test_rst/test_directives/test_code_long.py
-index 74f16d5..1a55c97 100644
---- a/test/test_parsers/test_rst/test_directives/test_code_long.py
-+++ b/test/test_parsers/test_rst/test_directives/test_code_long.py
-@@ -7,8 +7,9 @@
- """
- Test the 'code' directive in body.py with syntax_highlight = 'long'.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.utils.code_analyzer import with_pygments
-
- def suite():
-diff --git a/test/test_parsers/test_rst/test_directives/test_code_none.py b/test/test_parsers/test_rst/test_directives/test_code_none.py
-index 515772c..23ae3d2 100644
---- a/test/test_parsers/test_rst/test_directives/test_code_none.py
-+++ b/test/test_parsers/test_rst/test_directives/test_code_none.py
-@@ -7,8 +7,9 @@
- """
- Test the 'code' directive in body.py with syntax_highlight = 'none'.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite(suite_settings={'syntax_highlight':'none'})
-diff --git a/test/test_parsers/test_rst/test_directives/test_compound.py b/test/test_parsers/test_rst/test_directives/test_compound.py
-index c0ef4b8..6bbab9c 100755
---- a/test/test_parsers/test_rst/test_directives/test_compound.py
-+++ b/test/test_parsers/test_rst/test_directives/test_compound.py
-@@ -7,8 +7,9 @@
- """
- Tests for the 'compound' directive from body.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_container.py b/test/test_parsers/test_rst/test_directives/test_container.py
-index 6b7b022..9ec5afc 100755
---- a/test/test_parsers/test_rst/test_directives/test_container.py
-+++ b/test/test_parsers/test_rst/test_directives/test_container.py
-@@ -7,8 +7,9 @@
- """
- Tests for the 'container' directive from body.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_contents.py b/test/test_parsers/test_rst/test_directives/test_contents.py
-index e1ef47f..a07ddd2 100755
---- a/test/test_parsers/test_rst/test_directives/test_contents.py
-+++ b/test/test_parsers/test_rst/test_directives/test_contents.py
-@@ -7,8 +7,9 @@
- """
- Tests for parts.py contents directive.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_date.py b/test/test_parsers/test_rst/test_directives/test_date.py
-index 87dc186..1f30128 100755
---- a/test/test_parsers/test_rst/test_directives/test_date.py
-+++ b/test/test_parsers/test_rst/test_directives/test_date.py
-@@ -7,8 +7,9 @@
- """
- Tests for the misc.py "date" directive.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- import time
-
- from docutils.utils.error_reporting import locale_encoding
-diff --git a/test/test_parsers/test_rst/test_directives/test_decorations.py b/test/test_parsers/test_rst/test_directives/test_decorations.py
-index b66f68d..63be131 100755
---- a/test/test_parsers/test_rst/test_directives/test_decorations.py
-+++ b/test/test_parsers/test_rst/test_directives/test_decorations.py
-@@ -7,8 +7,10 @@
- """
- Tests for the "header" & "footer" directives.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_default_role.py b/test/test_parsers/test_rst/test_directives/test_default_role.py
-index 15b0f56..f81c30b 100755
---- a/test/test_parsers/test_rst/test_directives/test_default_role.py
-+++ b/test/test_parsers/test_rst/test_directives/test_default_role.py
-@@ -7,8 +7,9 @@
- """
- Tests for misc.py "default-role" directive.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
-
- def suite():
-diff --git a/test/test_parsers/test_rst/test_directives/test_figures.py b/test/test_parsers/test_rst/test_directives/test_figures.py
-index de54190..09ced3f 100755
---- a/test/test_parsers/test_rst/test_directives/test_figures.py
-+++ b/test/test_parsers/test_rst/test_directives/test_figures.py
-@@ -7,8 +7,10 @@
- """
- Tests for images.py figure directives.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_images.py b/test/test_parsers/test_rst/test_directives/test_images.py
-index c52793c..e78caed 100755
---- a/test/test_parsers/test_rst/test_directives/test_images.py
-+++ b/test/test_parsers/test_rst/test_directives/test_images.py
-@@ -7,11 +7,13 @@
- """
- Tests for images.py image directives.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- from docutils.nodes import reprunicode
-
-+
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
-diff --git a/test/test_parsers/test_rst/test_directives/test_include.py b/test/test_parsers/test_rst/test_directives/test_include.py
-index 6e9dc84..d848262 100755
---- a/test/test_parsers/test_rst/test_directives/test_include.py
-+++ b/test/test_parsers/test_rst/test_directives/test_include.py
-@@ -7,10 +7,11 @@
- """
- Tests for misc.py "include" directive.
- """
-+from __future__ import absolute_import
-
- import os.path
- import sys
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.parsers.rst import states
- from docutils.utils.code_analyzer import with_pygments
-
-diff --git a/test/test_parsers/test_rst/test_directives/test_line_blocks.py b/test/test_parsers/test_rst/test_directives/test_line_blocks.py
-index 0fdfaba..d6bf31b 100755
---- a/test/test_parsers/test_rst/test_directives/test_line_blocks.py
-+++ b/test/test_parsers/test_rst/test_directives/test_line_blocks.py
-@@ -7,8 +7,10 @@
- """
- Tests for the body.py 'line-block' directive.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_math.py b/test/test_parsers/test_rst/test_directives/test_math.py
-index e8dfe27..2bac077 100644
---- a/test/test_parsers/test_rst/test_directives/test_math.py
-+++ b/test/test_parsers/test_rst/test_directives/test_math.py
-@@ -7,8 +7,10 @@
- """
- Tests for the 'math' directive.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_meta.py b/test/test_parsers/test_rst/test_directives/test_meta.py
-index bd7906d..8b15dde 100755
---- a/test/test_parsers/test_rst/test_directives/test_meta.py
-+++ b/test/test_parsers/test_rst/test_directives/test_meta.py
-@@ -7,8 +7,10 @@
- """
- Tests for html meta directives.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_parsed_literals.py b/test/test_parsers/test_rst/test_directives/test_parsed_literals.py
-index 6bf2cb1..4ea09e1 100755
---- a/test/test_parsers/test_rst/test_directives/test_parsed_literals.py
-+++ b/test/test_parsers/test_rst/test_directives/test_parsed_literals.py
-@@ -7,8 +7,10 @@
- """
- Tests for the body.py 'parsed-literal' directive.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_raw.py b/test/test_parsers/test_rst/test_directives/test_raw.py
-index f366f92..2da962a 100755
---- a/test/test_parsers/test_rst/test_directives/test_raw.py
-+++ b/test/test_parsers/test_rst/test_directives/test_raw.py
-@@ -7,10 +7,13 @@
- """
- Tests for misc.py "raw" directive.
- """
-+from __future__ import absolute_import
-
- import os.path
- import sys
--from __init__ import DocutilsTestSupport
-+
-+from . import DocutilsTestSupport
-+
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_replace.py b/test/test_parsers/test_rst/test_directives/test_replace.py
-index d2d3d8a..75e580b 100755
---- a/test/test_parsers/test_rst/test_directives/test_replace.py
-+++ b/test/test_parsers/test_rst/test_directives/test_replace.py
-@@ -7,8 +7,9 @@
- """
- Tests for misc.py "replace" directive.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
-
- def suite():
-diff --git a/test/test_parsers/test_rst/test_directives/test_replace_fr.py b/test/test_parsers/test_rst/test_directives/test_replace_fr.py
-index 6847c1c..78e4a45 100644
---- a/test/test_parsers/test_rst/test_directives/test_replace_fr.py
-+++ b/test/test_parsers/test_rst/test_directives/test_replace_fr.py
-@@ -8,8 +8,9 @@
- Tests for misc.py "replace" directive.
- Test in french (not default/fallback language).
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
-
- def suite():
-diff --git a/test/test_parsers/test_rst/test_directives/test_role.py b/test/test_parsers/test_rst/test_directives/test_role.py
-index 3f728f0..60d65e6 100755
---- a/test/test_parsers/test_rst/test_directives/test_role.py
-+++ b/test/test_parsers/test_rst/test_directives/test_role.py
-@@ -7,8 +7,9 @@
- """
- Tests for misc.py "role" directive.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
-
- def suite():
-diff --git a/test/test_parsers/test_rst/test_directives/test_rubrics.py b/test/test_parsers/test_rst/test_directives/test_rubrics.py
-index 70b6b00..52dcd5c 100755
---- a/test/test_parsers/test_rst/test_directives/test_rubrics.py
-+++ b/test/test_parsers/test_rst/test_directives/test_rubrics.py
-@@ -7,8 +7,9 @@
- """
- Tests for the "rubric" directive.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_sectnum.py b/test/test_parsers/test_rst/test_directives/test_sectnum.py
-index 7ab0486..4119607 100755
---- a/test/test_parsers/test_rst/test_directives/test_sectnum.py
-+++ b/test/test_parsers/test_rst/test_directives/test_sectnum.py
-@@ -7,8 +7,10 @@
- """
- Tests for the 'sectnum' directive.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_sidebars.py b/test/test_parsers/test_rst/test_directives/test_sidebars.py
-index 7c61dac..ef501ce 100755
---- a/test/test_parsers/test_rst/test_directives/test_sidebars.py
-+++ b/test/test_parsers/test_rst/test_directives/test_sidebars.py
-@@ -7,8 +7,10 @@
- """
- Tests for the "sidebar" directive.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_tables.py b/test/test_parsers/test_rst/test_directives/test_tables.py
-index 2c5f832..ee930c8 100755
---- a/test/test_parsers/test_rst/test_directives/test_tables.py
-+++ b/test/test_parsers/test_rst/test_directives/test_tables.py
-@@ -8,13 +8,15 @@
- Tests for tables.py directives.
- """
-
--from __init__ import DocutilsTestSupport
-+from __future__ import absolute_import
-
- import os, sys
- import csv
- import platform
- from docutils.parsers.rst.directives import tables
-
-+from . import DocutilsTestSupport
-+
-
- if sys.version_info >= (3, 0):
- unicode = str # noqa
-diff --git a/test/test_parsers/test_rst/test_directives/test_target_notes.py b/test/test_parsers/test_rst/test_directives/test_target_notes.py
-index 37a63f5..167cd8a 100755
---- a/test/test_parsers/test_rst/test_directives/test_target_notes.py
-+++ b/test/test_parsers/test_rst/test_directives/test_target_notes.py
-@@ -7,8 +7,10 @@
- """
- Tests for the target-notes directives.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_test_directives.py b/test/test_parsers/test_rst/test_directives/test_test_directives.py
-index 07e9bd2..65cffed 100755
---- a/test/test_parsers/test_rst/test_directives/test_test_directives.py
-+++ b/test/test_parsers/test_rst/test_directives/test_test_directives.py
-@@ -7,8 +7,10 @@
- """
- Tests for misc.py test directives.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_title.py b/test/test_parsers/test_rst/test_directives/test_title.py
-index 4a7cfd6..c24309c 100755
---- a/test/test_parsers/test_rst/test_directives/test_title.py
-+++ b/test/test_parsers/test_rst/test_directives/test_title.py
-@@ -7,8 +7,10 @@
- """
- Tests for the 'title' directive.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_topics.py b/test/test_parsers/test_rst/test_directives/test_topics.py
-index 9588599..fdd4bc3 100755
---- a/test/test_parsers/test_rst/test_directives/test_topics.py
-+++ b/test/test_parsers/test_rst/test_directives/test_topics.py
-@@ -7,8 +7,10 @@
- """
- Tests for the "topic" directive.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_unicode.py b/test/test_parsers/test_rst/test_directives/test_unicode.py
-index 5cdfd5a..b99b5d0 100755
---- a/test/test_parsers/test_rst/test_directives/test_unicode.py
-+++ b/test/test_parsers/test_rst/test_directives/test_unicode.py
-@@ -7,10 +7,11 @@
- """
- Tests for misc.py "unicode" directive.
- """
-+from __future__ import absolute_import
-
- import sys
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
-
- if sys.version_info >= (3, 0):
-diff --git a/test/test_parsers/test_rst/test_directives/test_unknown.py b/test/test_parsers/test_rst/test_directives/test_unknown.py
-index 69e2c01..98cb6b9 100755
---- a/test/test_parsers/test_rst/test_directives/test_unknown.py
-+++ b/test/test_parsers/test_rst/test_directives/test_unknown.py
-@@ -7,8 +7,10 @@
- """
- Tests for unknown directives.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_doctest_blocks.py b/test/test_parsers/test_rst/test_doctest_blocks.py
-index 4f367db..d7787d7 100755
---- a/test/test_parsers/test_rst/test_doctest_blocks.py
-+++ b/test/test_parsers/test_rst/test_doctest_blocks.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_east_asian_text.py b/test/test_parsers/test_rst/test_east_asian_text.py
-index e29ea82..d819ef8 100755
---- a/test/test_parsers/test_rst/test_east_asian_text.py
-+++ b/test/test_parsers/test_rst/test_east_asian_text.py
-@@ -8,15 +8,18 @@
- """
- Tests for East Asian text with double-width characters.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- import unicodedata
-+
- try:
- east_asian_width = unicodedata.east_asian_width
- except AttributeError:
- east_asian_width = None
-
-+
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
-diff --git a/test/test_parsers/test_rst/test_enumerated_lists.py b/test/test_parsers/test_rst/test_enumerated_lists.py
-index 09ea238..09bc005 100755
---- a/test/test_parsers/test_rst/test_enumerated_lists.py
-+++ b/test/test_parsers/test_rst/test_enumerated_lists.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_field_lists.py b/test/test_parsers/test_rst/test_field_lists.py
-index c51dd7c..34073aa 100755
---- a/test/test_parsers/test_rst/test_field_lists.py
-+++ b/test/test_parsers/test_rst/test_field_lists.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_footnotes.py b/test/test_parsers/test_rst/test_footnotes.py
-index fabfaf0..ba157d9 100755
---- a/test/test_parsers/test_rst/test_footnotes.py
-+++ b/test/test_parsers/test_rst/test_footnotes.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_inline_markup.py b/test/test_parsers/test_rst/test_inline_markup.py
-index d6fdac7..1762880 100755
---- a/test/test_parsers/test_rst/test_inline_markup.py
-+++ b/test/test_parsers/test_rst/test_inline_markup.py
-@@ -9,8 +9,10 @@
- Tests for inline markup in docutils/parsers/rst/states.py.
- Interpreted text tests are in a separate module, test_interpreted.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_interpreted.py b/test/test_parsers/test_rst/test_interpreted.py
-index 6dce09c..48b4ebe 100755
---- a/test/test_parsers/test_rst/test_interpreted.py
-+++ b/test/test_parsers/test_rst/test_interpreted.py
-@@ -7,10 +7,12 @@
- """
- Tests for interpreted text in docutils/parsers/rst/states.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.utils.code_analyzer import with_pygments
-
-+
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- if not with_pygments:
-diff --git a/test/test_parsers/test_rst/test_interpreted_fr.py b/test/test_parsers/test_rst/test_interpreted_fr.py
-index a0e1d78..046ab15 100644
---- a/test/test_parsers/test_rst/test_interpreted_fr.py
-+++ b/test/test_parsers/test_rst/test_interpreted_fr.py
-@@ -8,8 +8,10 @@
- Tests for interpreted text in docutils/parsers/rst/states.py.
- Test not default/fallback language french.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite(suite_settings={'language_code':'fr'})
-diff --git a/test/test_parsers/test_rst/test_line_blocks.py b/test/test_parsers/test_rst/test_line_blocks.py
-index d0a2776..3ab1764 100755
---- a/test/test_parsers/test_rst/test_line_blocks.py
-+++ b/test/test_parsers/test_rst/test_line_blocks.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_literal_blocks.py b/test/test_parsers/test_rst/test_literal_blocks.py
-index 62c9f40..172c438 100755
---- a/test/test_parsers/test_rst/test_literal_blocks.py
-+++ b/test/test_parsers/test_rst/test_literal_blocks.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_option_lists.py b/test/test_parsers/test_rst/test_option_lists.py
-index aa23e3e..740248f 100755
---- a/test/test_parsers/test_rst/test_option_lists.py
-+++ b/test/test_parsers/test_rst/test_option_lists.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_outdenting.py b/test/test_parsers/test_rst/test_outdenting.py
-index 1403ab7..5685767 100755
---- a/test/test_parsers/test_rst/test_outdenting.py
-+++ b/test/test_parsers/test_rst/test_outdenting.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_paragraphs.py b/test/test_parsers/test_rst/test_paragraphs.py
-index e4860e3..933c07b 100755
---- a/test/test_parsers/test_rst/test_paragraphs.py
-+++ b/test/test_parsers/test_rst/test_paragraphs.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_section_headers.py b/test/test_parsers/test_rst/test_section_headers.py
-index 0c8cd64..af3749c 100755
---- a/test/test_parsers/test_rst/test_section_headers.py
-+++ b/test/test_parsers/test_rst/test_section_headers.py
-@@ -5,9 +5,13 @@
- # Author: David Goodger <goodger@python.org>
- # Copyright: This module has been placed in the public domain.
-
--"""Tests for states.py."""
-+"""
-+Tests for states.py.
-+"""
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_substitutions.py b/test/test_parsers/test_rst/test_substitutions.py
-index e992cb2..774d71b 100755
---- a/test/test_parsers/test_rst/test_substitutions.py
-+++ b/test/test_parsers/test_rst/test_substitutions.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_tables.py b/test/test_parsers/test_rst/test_tables.py
-index ca249bb..4a690ff 100755
---- a/test/test_parsers/test_rst/test_tables.py
-+++ b/test/test_parsers/test_rst/test_tables.py
-@@ -7,9 +7,12 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-
- import os
--from __init__ import DocutilsTestSupport
-+
-+from . import DocutilsTestSupport
-+
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_targets.py b/test/test_parsers/test_rst/test_targets.py
-index f7ab8c0..6785ac3 100755
---- a/test/test_parsers/test_rst/test_targets.py
-+++ b/test/test_parsers/test_rst/test_targets.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_transitions.py b/test/test_parsers/test_rst/test_transitions.py
-index b21411c..d3a622a 100755
---- a/test/test_parsers/test_rst/test_transitions.py
-+++ b/test/test_parsers/test_rst/test_transitions.py
-@@ -7,8 +7,10 @@
- """
- Tests for transition markers.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_readers/test_get_reader_class.py b/test/test_readers/test_get_reader_class.py
-index b84dfb9..f177223 100644
---- a/test/test_readers/test_get_reader_class.py
-+++ b/test/test_readers/test_get_reader_class.py
-@@ -8,10 +8,12 @@
- """
- test get_reader_class
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.readers import get_reader_class
-
-+
- class GetReaderClassTestCase(DocutilsTestSupport.StandardTestCase):
-
- def test_registered_reader(self):
-@@ -29,4 +31,3 @@ class GetReaderClassTestCase(DocutilsTestSupport.StandardTestCase):
- if __name__ == '__main__':
- import unittest
- unittest.main()
--
-diff --git a/test/test_readers/test_pep/test_inline_markup.py b/test/test_readers/test_pep/test_inline_markup.py
-index 3bfd294..29074d8 100755
---- a/test/test_readers/test_pep/test_inline_markup.py
-+++ b/test/test_readers/test_pep/test_inline_markup.py
-@@ -7,8 +7,9 @@
- """
- Tests for inline markup in PEPs (readers/pep.py).
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
-
- def suite():
-diff --git a/test/test_readers/test_pep/test_rfc2822.py b/test/test_readers/test_pep/test_rfc2822.py
-index 7c1b26b..1123ee9 100755
---- a/test/test_readers/test_pep/test_rfc2822.py
-+++ b/test/test_readers/test_pep/test_rfc2822.py
-@@ -7,8 +7,10 @@
- """
- Tests for RFC-2822 headers in PEPs (readers/pep.py).
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.PEPParserTestSuite()
-diff --git a/test/test_transforms/test___init__.py b/test/test_transforms/test___init__.py
-index 366701b..fded179 100755
---- a/test/test_transforms/test___init__.py
-+++ b/test/test_transforms/test___init__.py
-@@ -7,11 +7,13 @@
- """
- Test module for transforms/__init__.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport # must be imported before docutils
--from docutils import transforms, utils
- import unittest
-
-+from . import DocutilsTestSupport # must be imported before docutils
-+from docutils import transforms, utils
-+
-
- class TestTransform(transforms.Transform):
-
-diff --git a/test/test_transforms/test_class.py b/test/test_transforms/test_class.py
-index 9ee0484..ebd6c5a 100755
---- a/test/test_transforms/test_class.py
-+++ b/test/test_transforms/test_class.py
-@@ -7,8 +7,9 @@
- """
- Tests for `docutils.transforms.misc.ClassAttribute`.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.parsers.rst import Parser
-
-
-diff --git a/test/test_transforms/test_contents.py b/test/test_transforms/test_contents.py
-index 1caa593..de05af7 100755
---- a/test/test_transforms/test_contents.py
-+++ b/test/test_transforms/test_contents.py
-@@ -8,8 +8,9 @@
- Tests for `docutils.transforms.parts.Contents` (via
- `docutils.transforms.universal.LastReaderPending`).
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.references import Substitutions
- from docutils.parsers.rst import Parser
-
-diff --git a/test/test_transforms/test_docinfo.py b/test/test_transforms/test_docinfo.py
-index 8b543df..1f0a4a8 100755
---- a/test/test_transforms/test_docinfo.py
-+++ b/test/test_transforms/test_docinfo.py
-@@ -8,8 +8,9 @@
- """
- Tests for docutils.transforms.frontmatter.DocInfo.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.frontmatter import DocInfo
- from docutils.parsers.rst import Parser
-
-diff --git a/test/test_transforms/test_doctitle.py b/test/test_transforms/test_doctitle.py
-index 6b354ab..7073e6a 100755
---- a/test/test_transforms/test_doctitle.py
-+++ b/test/test_transforms/test_doctitle.py
-@@ -7,12 +7,14 @@
- """
- Tests for docutils.transforms.frontmatter.DocTitle.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.frontmatter import DocTitle, SectionSubTitle
- from docutils.parsers.rst import Parser, Directive
- from docutils.parsers.rst.directives import register_directive
-
-+
- # dummy directive to test attribute merging:
- class AddNameToDocumentTitle(Directive):
- required_arguments = 0
-diff --git a/test/test_transforms/test_expose_internals.py b/test/test_transforms/test_expose_internals.py
-index 15d1d8a..9949d51 100755
---- a/test/test_transforms/test_expose_internals.py
-+++ b/test/test_transforms/test_expose_internals.py
-@@ -7,12 +7,14 @@
- """
- Test module for universal.ExposeInternals transform.
- """
-+from __future__ import absolute_import
-
-
--from __init__ import DocutilsTestSupport # must be imported before docutils
-+from . import DocutilsTestSupport # must be imported before docutils
- from docutils.transforms.universal import ExposeInternals
- from docutils.parsers.rst import Parser
-
-+
- def suite():
- parser = Parser()
- s = DocutilsTestSupport.TransformTestSuite(
-diff --git a/test/test_transforms/test_filter.py b/test/test_transforms/test_filter.py
-index ad82c2b..240e375 100755
---- a/test/test_transforms/test_filter.py
-+++ b/test/test_transforms/test_filter.py
-@@ -7,8 +7,9 @@
- """
- Tests for docutils.transforms.components.Filter.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.parsers.rst import Parser
-
-
-diff --git a/test/test_transforms/test_footnotes.py b/test/test_transforms/test_footnotes.py
-index ae01edf..0213e71 100755
---- a/test/test_transforms/test_footnotes.py
-+++ b/test/test_transforms/test_footnotes.py
-@@ -7,8 +7,9 @@
- """
- Tests for docutils.transforms.references.Footnotes.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.references import Footnotes
- from docutils.parsers.rst import Parser
-
-diff --git a/test/test_transforms/test_hyperlinks.py b/test/test_transforms/test_hyperlinks.py
-index df4d790..349c810 100755
---- a/test/test_transforms/test_hyperlinks.py
-+++ b/test/test_transforms/test_hyperlinks.py
-@@ -7,12 +7,12 @@
- """
- Tests for docutils.transforms.references.Hyperlinks.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.references import PropagateTargets, \
- AnonymousHyperlinks, IndirectHyperlinks, ExternalTargets, \
- InternalTargets, DanglingReferences
--
- from docutils.parsers.rst import Parser
-
-
-diff --git a/test/test_transforms/test_messages.py b/test/test_transforms/test_messages.py
-index 296fe98..8949c63 100755
---- a/test/test_transforms/test_messages.py
-+++ b/test/test_transforms/test_messages.py
-@@ -7,8 +7,9 @@
- """
- Tests for docutils.transforms.universal.Messages.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.universal import Messages
- from docutils.transforms.references import Substitutions
- from docutils.parsers.rst import Parser
-diff --git a/test/test_transforms/test_peps.py b/test/test_transforms/test_peps.py
-index 5505572..16c4bbb 100755
---- a/test/test_transforms/test_peps.py
-+++ b/test/test_transforms/test_peps.py
-@@ -7,8 +7,9 @@
- """
- Tests for docutils.transforms.peps.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.peps import TargetNotes
- from docutils.parsers.rst import Parser
-
-diff --git a/test/test_transforms/test_sectnum.py b/test/test_transforms/test_sectnum.py
-index 525a727..e389aee 100755
---- a/test/test_transforms/test_sectnum.py
-+++ b/test/test_transforms/test_sectnum.py
-@@ -8,8 +8,9 @@
- Tests for `docutils.transforms.parts.SectNum` (via
- `docutils.transforms.universal.LastReaderPending`).
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.references import Substitutions
- from docutils.parsers.rst import Parser
-
-diff --git a/test/test_transforms/test_smartquotes.py b/test/test_transforms/test_smartquotes.py
-index e2874c0..eb5c401 100644
---- a/test/test_transforms/test_smartquotes.py
-+++ b/test/test_transforms/test_smartquotes.py
-@@ -16,12 +16,13 @@
- """
- Test module for universal.SmartQuotes transform.
- """
-+from __future__ import absolute_import
-
--
--from __init__ import DocutilsTestSupport # must be imported before docutils
-+from . import DocutilsTestSupport # must be imported before docutils
- from docutils.transforms.universal import SmartQuotes
- from docutils.parsers.rst import Parser
-
-+
- def suite():
- parser = Parser()
- settings = {'smart_quotes': True}
-diff --git a/test/test_transforms/test_strip_comments.py b/test/test_transforms/test_strip_comments.py
-index f58404f..a03457b 100755
---- a/test/test_transforms/test_strip_comments.py
-+++ b/test/test_transforms/test_strip_comments.py
-@@ -7,8 +7,9 @@
- """
- Tests for docutils.transforms.universal.StripComments.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.universal import StripComments
- from docutils.parsers.rst import Parser
-
-diff --git a/test/test_transforms/test_strip_elements_with_class.py b/test/test_transforms/test_strip_elements_with_class.py
-index 6503586..11e6aa6 100644
---- a/test/test_transforms/test_strip_elements_with_class.py
-+++ b/test/test_transforms/test_strip_elements_with_class.py
-@@ -7,8 +7,9 @@
- """
- Tests for docutils.transforms.universal.StripComments.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.parsers.rst import Parser
- from docutils.transforms.universal import StripClassesAndElements
-
-diff --git a/test/test_transforms/test_substitutions.py b/test/test_transforms/test_substitutions.py
-index 7ea3e8a..1ec9bf1 100755
---- a/test/test_transforms/test_substitutions.py
-+++ b/test/test_transforms/test_substitutions.py
-@@ -7,8 +7,9 @@
- """
- Tests for docutils.transforms.references.Substitutions.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.references import Substitutions
- from docutils.parsers.rst import Parser
-
-diff --git a/test/test_transforms/test_target_notes.py b/test/test_transforms/test_target_notes.py
-index 3be4001..dcfb411 100755
---- a/test/test_transforms/test_target_notes.py
-+++ b/test/test_transforms/test_target_notes.py
-@@ -8,8 +8,9 @@
- Tests for `docutils.transforms.references.TargetNotes` (via
- `docutils.transforms.universal.LastReaderPending`).
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.references import PropagateTargets, \
- AnonymousHyperlinks, IndirectHyperlinks, ExternalTargets, \
- InternalTargets, DanglingReferences, Footnotes
-diff --git a/test/test_transforms/test_transitions.py b/test/test_transforms/test_transitions.py
-index c8ecaff..71347a2 100755
---- a/test/test_transforms/test_transitions.py
-+++ b/test/test_transforms/test_transitions.py
-@@ -7,11 +7,13 @@
- """
- Test module for misc.Transitions transform.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport # must be imported before docutils
-+from . import DocutilsTestSupport # must be imported before docutils
- from docutils.transforms.misc import Transitions
- from docutils.parsers.rst import Parser
-
-+
- def suite():
- parser = Parser()
- s = DocutilsTestSupport.TransformTestSuite(parser)
-diff --git a/test/test_transforms/test_writer_aux.py b/test/test_transforms/test_writer_aux.py
-index fc2e0d3..7272115 100755
---- a/test/test_transforms/test_writer_aux.py
-+++ b/test/test_transforms/test_writer_aux.py
-@@ -7,8 +7,9 @@
- """
- Test module for writer_aux transforms.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport # must be imported before docutils
-+from . import DocutilsTestSupport # must be imported before docutils
- from docutils.transforms import writer_aux
- from docutils.parsers.rst import Parser
-
-diff --git a/test/test_writers/test_docutils_xml.py b/test/test_writers/test_docutils_xml.py
-index 98541cf..5a6cda3 100755
---- a/test/test_writers/test_docutils_xml.py
-+++ b/test/test_writers/test_docutils_xml.py
-@@ -13,10 +13,11 @@ Test for docutils XML writer.
- ``<empty></empty>`` vs. ``<empty/>``. The sample strings in this test
- module mirrors the current behaviour of the docutils_xml writer.
- """
-+from __future__ import absolute_import
-
- from StringIO import StringIO
-
--from __init__ import DocutilsTestSupport # must be imported before docutils
-+from . import DocutilsTestSupport # must be imported before docutils
- import docutils
- import docutils.core
-
-diff --git a/test/test_writers/test_get_writer_class.py b/test/test_writers/test_get_writer_class.py
-index 78e6e8a..6af7097 100644
---- a/test/test_writers/test_get_writer_class.py
-+++ b/test/test_writers/test_get_writer_class.py
-@@ -8,10 +8,12 @@
- """
- test get_writer_class
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.writers import get_writer_class
-
-+
- class GetWriterClassTestCase(DocutilsTestSupport.StandardTestCase):
- #tests = ( ('manpage', 1), ('nope', 0), ('dummy-writer', 1))
-
-diff --git a/test/test_writers/test_html4css1_misc.py b/test/test_writers/test_html4css1_misc.py
-index 7df0176..534ebce 100755
---- a/test/test_writers/test_html4css1_misc.py
-+++ b/test/test_writers/test_html4css1_misc.py
-@@ -9,11 +9,14 @@
- """
- Miscellaneous HTML writer tests.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
--from docutils import core
- import os
-
-+from .__init__ import DocutilsTestSupport
-+from docutils import core
-+
-+
- class EncodingTestCase(DocutilsTestSupport.StandardTestCase):
-
- def test_xmlcharrefreplace(self):
-diff --git a/test/test_writers/test_html4css1_parts.py b/test/test_writers/test_html4css1_parts.py
-index 64ac2ac..9140cba 100755
---- a/test/test_writers/test_html4css1_parts.py
-+++ b/test/test_writers/test_html4css1_parts.py
-@@ -11,10 +11,12 @@ Note: the 'body' and 'whole' entries have been removed from the parts
- dictionaries (redundant), along with 'meta' and 'stylesheet' entries with
- standard values, and any entries with empty values.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils import core
-
-+
- def suite():
- s = DocutilsTestSupport.HtmlPublishPartsTestSuite()
- s.generateTests(totest)
-diff --git a/test/test_writers/test_html4css1_template.py b/test/test_writers/test_html4css1_template.py
-index 954f319..88eff36 100755
---- a/test/test_writers/test_html4css1_template.py
-+++ b/test/test_writers/test_html4css1_template.py
-@@ -7,11 +7,12 @@
- """
- Tests for the HTML writer.
- """
-+from __future__ import absolute_import
-
- import os
- import platform
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
-
- def suite():
-diff --git a/test/test_writers/test_html5_polyglot_misc.py b/test/test_writers/test_html5_polyglot_misc.py
-index 7f14133..9fec65f 100644
---- a/test/test_writers/test_html5_polyglot_misc.py
-+++ b/test/test_writers/test_html5_polyglot_misc.py
-@@ -9,11 +9,14 @@
- """
- Miscellaneous HTML writer tests.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
--from docutils import core
- import os
-
-+from . import DocutilsTestSupport
-+from docutils import core
-+
-+
- class EncodingTestCase(DocutilsTestSupport.StandardTestCase):
-
- def test_xmlcharrefreplace(self):
-diff --git a/test/test_writers/test_html5_polyglot_parts.py b/test/test_writers/test_html5_polyglot_parts.py
-index cb323b7..60ff689 100644
---- a/test/test_writers/test_html5_polyglot_parts.py
-+++ b/test/test_writers/test_html5_polyglot_parts.py
-@@ -11,8 +11,9 @@ Note: the 'body' and 'whole' entries have been removed from the parts
- dictionaries (redundant), along with 'meta' and 'stylesheet' entries with
- standard values, and any entries with empty values.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from DocutilsTestSupport import (HtmlWriterPublishPartsTestCase,
- HtmlPublishPartsTestSuite)
- from docutils import core, __version__
-diff --git a/test/test_writers/test_latex2e.py b/test/test_writers/test_latex2e.py
-index 88ba1a7..e9defeb 100755
---- a/test/test_writers/test_latex2e.py
-+++ b/test/test_writers/test_latex2e.py
-@@ -8,9 +8,12 @@
- """
- Tests for latex2e writer.
- """
-+from __future__ import absolute_import
-
- import string
--from __init__ import DocutilsTestSupport
-+
-+from . import DocutilsTestSupport
-+
-
- def suite():
- settings = {'use_latex_toc': False}
-diff --git a/test/test_writers/test_manpage.py b/test/test_writers/test_manpage.py
-index eec5400..a220444 100644
---- a/test/test_writers/test_manpage.py
-+++ b/test/test_writers/test_manpage.py
-@@ -7,8 +7,10 @@
- """
- Tests for manpage writer.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- settings = {}
-diff --git a/test/test_writers/test_null.py b/test/test_writers/test_null.py
-index c75f8a9..3cc8f37 100755
---- a/test/test_writers/test_null.py
-+++ b/test/test_writers/test_null.py
-@@ -7,8 +7,10 @@
- """
- Test for Null writer.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.PublishTestSuite('null')
-diff --git a/test/test_writers/test_odt.py b/test/test_writers/test_odt.py
-index 0efeae6..a47b7fb 100755
---- a/test/test_writers/test_odt.py
-+++ b/test/test_writers/test_odt.py
-@@ -29,6 +29,7 @@ Instructions for adding a new test:
- 5. If any other tests fail, that's a possible regression.
-
- """
-+from __future__ import absolute_import
-
- import sys
- import os
-@@ -36,7 +37,7 @@ import zipfile
- from xml.dom import minidom
- import tempfile
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- import docutils
- import docutils.core
-diff --git a/test/test_writers/test_pseudoxml.py b/test/test_writers/test_pseudoxml.py
-index 9dfa714..187dde9 100755
---- a/test/test_writers/test_pseudoxml.py
-+++ b/test/test_writers/test_pseudoxml.py
-@@ -7,8 +7,10 @@
- """
- Test for pseudo-XML writer.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.PublishTestSuite('pseudoxml')
-diff --git a/test/test_writers/test_s5.py b/test/test_writers/test_s5.py
-index 51972f3..1e955d3 100755
---- a/test/test_writers/test_s5.py
-+++ b/test/test_writers/test_s5.py
-@@ -7,11 +7,12 @@
- """
- Tests for the S5/HTML writer.
- """
-+from __future__ import absolute_import
-
- import os
- import platform
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
-
- def suite():
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0010-py3-Use-sorted-foo-instead-of-foo.sort.patch b/srcpkgs/python-docutils/patches/0010-py3-Use-sorted-foo-instead-of-foo.sort.patch
deleted file mode 100644
index deec162c377..00000000000
--- a/srcpkgs/python-docutils/patches/0010-py3-Use-sorted-foo-instead-of-foo.sort.patch
+++ /dev/null
@@ -1,236 +0,0 @@
-From 46d71ef146d5fe74b0186693f91a5f47585b1d79 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Mon, 26 Aug 2019 16:44:51 +0000
-Subject: [PATCH 10/26] py3: Use 'sorted(foo)' instead of 'foo.sort()'
-
-This works with iterators also (like 'dict.keys()' in Python 3)
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8357 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/nodes.py | 6 ++----
- docutils/parsers/rst/tableparser.py | 3 +--
- docutils/transforms/__init__.py | 3 +--
- docutils/utils/math/math2html.py | 3 +--
- docutils/writers/_html_base.py | 3 +--
- docutils/writers/latex2e/__init__.py | 3 +--
- test/DocutilsTestSupport.py | 3 +--
- test/test_dependencies.py | 9 +++------
- test/test_language.py | 6 ++----
- tools/dev/generate_punctuation_chars.py | 3 +--
- tools/dev/unicode2rstsubs.py | 6 ++----
- 11 files changed, 16 insertions(+), 32 deletions(-)
-
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index a8c0478..e29b887 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -649,8 +649,7 @@ class Element(Node):
- return atts
-
- def attlist(self):
-- attlist = self.non_default_attributes().items()
-- attlist.sort()
-+ attlist = sorted(self.non_default_attributes().items())
- return attlist
-
- def get(self, key, failobj=None):
-@@ -1782,8 +1781,7 @@ class pending(Special, Invisible, Element):
- ' .transform: %s.%s' % (self.transform.__module__,
- self.transform.__name__),
- ' .details:']
-- details = self.details.items()
-- details.sort()
-+ details = sorted(self.details.items())
- for key, value in details:
- if isinstance(value, Node):
- internals.append('%7s%s:' % ('', key))
-diff --git a/docutils/parsers/rst/tableparser.py b/docutils/parsers/rst/tableparser.py
-index 2760ea0..937aec8 100644
---- a/docutils/parsers/rst/tableparser.py
-+++ b/docutils/parsers/rst/tableparser.py
-@@ -286,8 +286,7 @@ class GridTableParser(TableParser):
- From the data collected by `scan_cell()`, convert to the final data
- structure.
- """
-- rowseps = self.rowseps.keys() # list of row boundaries
-- rowseps.sort()
-+ rowseps = sorted(self.rowseps.keys()) # list of row boundaries
- rowindex = {}
- for i in range(len(rowseps)):
- rowindex[rowseps[i]] = i # row boundary -> row number mapping
-diff --git a/docutils/transforms/__init__.py b/docutils/transforms/__init__.py
-index 9271133..d444fce 100644
---- a/docutils/transforms/__init__.py
-+++ b/docutils/transforms/__init__.py
-@@ -153,8 +153,7 @@ class Transformer(TransformSpec):
- unknown_reference_resolvers = []
- for i in components:
- unknown_reference_resolvers.extend(i.unknown_reference_resolvers)
-- decorated_list = [(f.priority, f) for f in unknown_reference_resolvers]
-- decorated_list.sort()
-+ decorated_list = sorted([(f.priority, f) for f in unknown_reference_resolvers])
- self.unknown_reference_resolvers.extend([f[1] for f in decorated_list])
-
- def apply_transforms(self):
-diff --git a/docutils/utils/math/math2html.py b/docutils/utils/math/math2html.py
-index 4a7209d..adcb1cc 100644
---- a/docutils/utils/math/math2html.py
-+++ b/docutils/utils/math/math2html.py
-@@ -2193,9 +2193,8 @@ class Container(object):
-
- def escape(self, line, replacements = EscapeConfig.entities):
- "Escape a line with replacements from elyxer.a map"
-- pieces = replacements.keys()
-+ pieces = sorted(replacements.keys())
- # do them in order
-- pieces.sort()
- for piece in pieces:
- if piece in line:
- line = line.replace(piece, replacements[piece])
-diff --git a/docutils/writers/_html_base.py b/docutils/writers/_html_base.py
-index a7f3b53..a957311 100644
---- a/docutils/writers/_html_base.py
-+++ b/docutils/writers/_html_base.py
-@@ -366,8 +366,7 @@ class HTMLTranslator(nodes.NodeVisitor):
- # Non-empty tag. Place the auxiliary <span> tag
- # *inside* the element, as the first child.
- suffix += '<span id="%s"></span>' % id
-- attlist = atts.items()
-- attlist.sort()
-+ attlist = sorted(atts.items())
- parts = [tagname]
- for name, value in attlist:
- # value=None was used for boolean attributes without
-diff --git a/docutils/writers/latex2e/__init__.py b/docutils/writers/latex2e/__init__.py
-index e21c74b..249ec4a 100644
---- a/docutils/writers/latex2e/__init__.py
-+++ b/docutils/writers/latex2e/__init__.py
-@@ -457,8 +457,7 @@ class SortableDict(dict):
- """
- def sortedkeys(self):
- """Return sorted list of keys"""
-- keys = self.keys()
-- keys.sort()
-+ keys = sorted(self.keys())
- return keys
-
- def sortedvalues(self):
-diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index a1fec25..21ea982 100644
---- a/test/DocutilsTestSupport.py
-+++ b/test/DocutilsTestSupport.py
-@@ -815,8 +815,7 @@ class HtmlWriterPublishPartsTestCase(WriterPublishTestCase):
- if not parts[key]:
- del parts[key]
- # standard output format:
-- keys = parts.keys()
-- keys.sort()
-+ keys = sorted(parts.keys())
- output = []
- for key in keys:
- output.append("%r: '''%s'''"
-diff --git a/test/test_dependencies.py b/test/test_dependencies.py
-index 298e8a4..0939b6d 100755
---- a/test/test_dependencies.py
-+++ b/test/test_dependencies.py
-@@ -54,9 +54,8 @@ class RecordDependenciesTests(unittest.TestCase):
- if PIL:
- keys += ['figure-image']
- expected = [paths[key] for key in keys]
-- record = self.get_record(writer_name='xml')
-+ record = sorted(self.get_record(writer_name='xml'))
- # the order of the files is arbitrary
-- record.sort()
- expected.sort()
- self.assertEqual(record, expected)
-
-@@ -67,9 +66,8 @@ class RecordDependenciesTests(unittest.TestCase):
- expected = [paths[key] for key in keys]
- # stylesheets are tested separately in test_stylesheet_dependencies():
- so = {'stylesheet_path': None, 'stylesheet': None}
-- record = self.get_record(writer_name='html', settings_overrides=so)
-+ record = sorted(self.get_record(writer_name='html', settings_overrides=so))
- # the order of the files is arbitrary
-- record.sort()
- expected.sort()
- self.assertEqual(record, expected)
-
-@@ -82,9 +80,8 @@ class RecordDependenciesTests(unittest.TestCase):
- if PIL:
- keys += ['figure-image']
- expected = [paths[key] for key in keys]
-- record = self.get_record(writer_name='latex')
-+ record = sorted(self.get_record(writer_name='latex'))
- # the order of the files is arbitrary
-- record.sort()
- expected.sort()
- self.assertEqual(record, expected)
-
-diff --git a/test/test_language.py b/test/test_language.py
-index 30af81a..31ac613 100755
---- a/test/test_language.py
-+++ b/test/test_language.py
-@@ -150,8 +150,7 @@ class LanguageTestCase(DocutilsTestSupport.CustomTestCase):
- except Exception as error:
- failures.append('"%s": %s' % (d, error))
- inverted = self._invert(module.directives)
-- canonical = directives._directive_registry.keys()
-- canonical.sort()
-+ canonical = sorted(directives._directive_registry.keys())
- canonical.remove('restructuredtext-test-directive')
- for name in canonical:
- if name not in inverted:
-@@ -185,8 +184,7 @@ class LanguageTestCase(DocutilsTestSupport.CustomTestCase):
- except KeyError as error:
- failures.append('"%s": %s' % (d, error))
- inverted = self._invert(module.roles)
-- canonical = roles._role_registry.keys()
-- canonical.sort()
-+ canonical = sorted(roles._role_registry.keys())
- canonical.remove('restructuredtext-unimplemented-role')
- for name in canonical:
- if name not in inverted:
-diff --git a/tools/dev/generate_punctuation_chars.py b/tools/dev/generate_punctuation_chars.py
-index a30c5ca..b718f78 100644
---- a/tools/dev/generate_punctuation_chars.py
-+++ b/tools/dev/generate_punctuation_chars.py
-@@ -269,8 +269,7 @@ def mark_intervals(s):
- Sort string and replace 'cdef' by 'c-f' and similar.
- """
- l =[]
-- s = [ord(ch) for ch in s]
-- s.sort()
-+ s = sorted([ord(ch) for ch in s])
- for n in s:
- try:
- if l[-1][-1]+1 == n:
-diff --git a/tools/dev/unicode2rstsubs.py b/tools/dev/unicode2rstsubs.py
-index b51eec4..ac38bf4 100755
---- a/tools/dev/unicode2rstsubs.py
-+++ b/tools/dev/unicode2rstsubs.py
-@@ -163,8 +163,7 @@ class CharacterEntitySetExtractor(object):
- return name
-
- def write_sets(self):
-- sets = list(self.sets.keys())
-- sets.sort()
-+ sets = sorted(self.sets.keys())
- for set_name in sets:
- self.write_set(set_name)
-
-@@ -177,8 +176,7 @@ class CharacterEntitySetExtractor(object):
- print('writing file "%s"' % outname)
- outfile.write(self.header + '\n')
- set = self.sets[set_name]
-- entities = [(e.lower(), e) for e in set.keys()]
-- entities.sort()
-+ entities = sorted([(e.lower(), e) for e in set.keys()])
- longest = 0
- for _, entity_name in entities:
- longest = max(longest, len(entity_name))
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0011-Cleanup-simplify-code-following-recent-changes.patch b/srcpkgs/python-docutils/patches/0011-Cleanup-simplify-code-following-recent-changes.patch
deleted file mode 100644
index 1db728871ae..00000000000
--- a/srcpkgs/python-docutils/patches/0011-Cleanup-simplify-code-following-recent-changes.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 792080ad1d8ac28483c9c147b0cb79f108b40571 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Mon, 26 Aug 2019 16:45:09 +0000
-Subject: [PATCH 11/26] Cleanup/simplify code following recent changes.
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8358 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/transforms/__init__.py | 4 ++--
- docutils/writers/odf_odt/__init__.py | 8 ++------
- 2 files changed, 4 insertions(+), 8 deletions(-)
-
-diff --git a/docutils/transforms/__init__.py b/docutils/transforms/__init__.py
-index d444fce..12bf6f9 100644
---- a/docutils/transforms/__init__.py
-+++ b/docutils/transforms/__init__.py
-@@ -153,8 +153,8 @@ class Transformer(TransformSpec):
- unknown_reference_resolvers = []
- for i in components:
- unknown_reference_resolvers.extend(i.unknown_reference_resolvers)
-- decorated_list = sorted([(f.priority, f) for f in unknown_reference_resolvers])
-- self.unknown_reference_resolvers.extend([f[1] for f in decorated_list])
-+ decorated_list = sorted((f.priority, f) for f in unknown_reference_resolvers)
-+ self.unknown_reference_resolvers.extend(f[1] for f in decorated_list)
-
- def apply_transforms(self):
- """Apply all of the stored transforms, in priority order."""
-diff --git a/docutils/writers/odf_odt/__init__.py b/docutils/writers/odf_odt/__init__.py
-index c0f43a5..417dc34 100644
---- a/docutils/writers/odf_odt/__init__.py
-+++ b/docutils/writers/odf_odt/__init__.py
-@@ -68,12 +68,8 @@ except ImportError:
- try:
- import pygments
- import pygments.lexers
-- if sys.version_info.major >= 3:
-- from .pygmentsformatter import OdtPygmentsProgFormatter, \
-- OdtPygmentsLaTeXFormatter
-- else:
-- from .pygmentsformatter import OdtPygmentsProgFormatter, \
-- OdtPygmentsLaTeXFormatter
-+ from .pygmentsformatter import (OdtPygmentsProgFormatter,
-+ OdtPygmentsLaTeXFormatter)
- except (ImportError, SyntaxError):
- pygments = None
-
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0012-Use-isinstance-foo-bar-instead-of-type-foo-is-bar.patch b/srcpkgs/python-docutils/patches/0012-Use-isinstance-foo-bar-instead-of-type-foo-is-bar.patch
deleted file mode 100644
index 0e1bb5ac093..00000000000
--- a/srcpkgs/python-docutils/patches/0012-Use-isinstance-foo-bar-instead-of-type-foo-is-bar.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From 88fdde83419b6c532948a64d2824f6a663ad33c3 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Mon, 26 Aug 2019 16:45:33 +0000
-Subject: [PATCH 12/26] Use 'isinstance(foo, bar)' instead of 'type(foo) is
- bar'
-
-This one is more stylistic than anything.
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8359 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/parsers/rst/directives/tables.py | 4 ++--
- docutils/parsers/rst/states.py | 2 +-
- docutils/statemachine.py | 2 +-
- docutils/utils/math/latex2mathml.py | 2 +-
- test/package_unittest.py | 4 ++--
- test/test_nodes.py | 2 +-
- 6 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/docutils/parsers/rst/directives/tables.py b/docutils/parsers/rst/directives/tables.py
-index b0a4eac..bf97e26 100644
---- a/docutils/parsers/rst/directives/tables.py
-+++ b/docutils/parsers/rst/directives/tables.py
-@@ -104,7 +104,7 @@ class Table(Directive):
- return self.options.get('widths', '')
-
- def get_column_widths(self, max_cols):
-- if type(self.widths) == list:
-+ if isinstance(self.widths, list):
- if len(self.widths) != max_cols:
- error = self.state_machine.reporter.error(
- '"%s" widths do not match the number of columns in table '
-@@ -152,7 +152,7 @@ class RSTTable(Table):
- if 'align' in self.options:
- table_node['align'] = self.options.get('align')
- tgroup = table_node[0]
-- if type(self.widths) == list:
-+ if isinstance(self.widths, list):
- colspecs = [child for child in tgroup.children
- if child.tagname == 'colspec']
- for colspec, col_width in zip(colspecs, self.widths):
-diff --git a/docutils/parsers/rst/states.py b/docutils/parsers/rst/states.py
-index c9b4fa3..2a2e33a 100644
---- a/docutils/parsers/rst/states.py
-+++ b/docutils/parsers/rst/states.py
-@@ -447,7 +447,7 @@ def build_regexp(definition, compile=True):
- name, prefix, suffix, parts = definition
- part_strings = []
- for part in parts:
-- if type(part) is tuple:
-+ if isinstance(part, tuple):
- part_strings.append(build_regexp(part, None))
- else:
- part_strings.append(part)
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index 068083a..6bc03f5 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -737,7 +737,7 @@ class State(object):
- names = []
- transitions = {}
- for namestate in name_list:
-- if type(namestate) is stringtype:
-+ if isinstance(namestate, stringtype):
- transitions[namestate] = self.make_transition(namestate)
- names.append(namestate)
- else:
-diff --git a/docutils/utils/math/latex2mathml.py b/docutils/utils/math/latex2mathml.py
-index 255e96f..b7ba048 100644
---- a/docutils/utils/math/latex2mathml.py
-+++ b/docutils/utils/math/latex2mathml.py
-@@ -168,7 +168,7 @@ class math(object):
-
- self.children = []
- if children is not None:
-- if type(children) is list:
-+ if isinstance(children, list):
- for child in children:
- self.append(child)
- else:
-diff --git a/test/package_unittest.py b/test/package_unittest.py
-index 4db826b..1c0f077 100644
---- a/test/package_unittest.py
-+++ b/test/package_unittest.py
-@@ -115,7 +115,7 @@ def loadTestModules(path, name='', packages=None):
- # to cheat:
- testSuite.addTest(moduleTests)
- continue
-- if type(suite) == types.FunctionType:
-+ if isinstance(suite, types.FunctionType):
- testSuite.addTest(suite())
- elif isinstance(suite, unittest.TestSuite):
- testSuite.addTest(suite)
-@@ -152,7 +152,7 @@ def main(suite=None):
- print("Debug: Suite=%s" % suite, file=sys.stderr)
- testRunner = unittest.TextTestRunner(verbosity=verbosity)
- # run suites (if we were called from test_all) or suite...
-- if type(suite) == type([]):
-+ if isinstance(suite, type([])):
- for s in suite:
- testRunner.run(s)
- else:
-diff --git a/test/test_nodes.py b/test/test_nodes.py
-index 679c98e..af04e86 100755
---- a/test/test_nodes.py
-+++ b/test/test_nodes.py
-@@ -121,7 +121,7 @@ class ElementTests(unittest.TestCase):
- self.assertEqual(repr(uelement), "<Element: <#text: 'gr\\xfcn'>>")
- else:
- self.assertEqual(repr(uelement), u"<Element: <#text: 'grün'>>")
-- self.assertTrue(isinstance(repr(uelement),str))
-+ self.assertTrue(isinstance(repr(uelement), str))
- self.assertEqual(str(element), '<Element>text\nmore</Element>')
- self.assertEqual(str(uelement), '<Element>gr\xfcn</Element>')
- dom = element.asdom()
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0013-Consistent-Python-3-checks.patch b/srcpkgs/python-docutils/patches/0013-Consistent-Python-3-checks.patch
deleted file mode 100644
index a0643ded4f1..00000000000
--- a/srcpkgs/python-docutils/patches/0013-Consistent-Python-3-checks.patch
+++ /dev/null
@@ -1,594 +0,0 @@
-From 7e79a539c426bbbb2932286b2efa2cf03a467e46 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Wed, 20 Nov 2019 00:02:34 +0700
-Subject: [PATCH 13/26] Consistent Python 3 checks.
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8360 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/frontend.py | 2 +-
- docutils/io.py | 4 ++--
- docutils/nodes.py | 12 ++++++------
- docutils/parsers/rst/directives/__init__.py | 2 +-
- docutils/parsers/rst/directives/misc.py | 4 ++--
- docutils/parsers/rst/directives/tables.py | 4 ++--
- docutils/statemachine.py | 2 +-
- docutils/transforms/frontmatter.py | 2 +-
- docutils/transforms/universal.py | 2 +-
- docutils/utils/__init__.py | 2 +-
- docutils/utils/error_reporting.py | 2 +-
- docutils/writers/_html_base.py | 2 +-
- docutils/writers/docutils_xml.py | 4 ++--
- docutils/writers/latex2e/__init__.py | 2 +-
- docutils/writers/manpage.py | 2 +-
- docutils/writers/odf_odt/__init__.py | 2 +-
- setup.py | 6 +++---
- test/DocutilsTestSupport.py | 4 ++--
- test/test__init__.py | 2 +-
- test/test_error_reporting.py | 2 +-
- test/test_language.py | 2 +-
- test/test_nodes.py | 16 ++++++++--------
- test/test_parsers/test_parser.py | 2 +-
- .../test_rst/test_directives/test_include.py | 2 +-
- .../test_rst/test_directives/test_tables.py | 2 +-
- .../test_rst/test_directives/test_unicode.py | 2 +-
- tools/dev/create_unimap.py | 4 ++--
- tools/dev/generate_punctuation_chars.py | 4 ++--
- 28 files changed, 49 insertions(+), 49 deletions(-)
-
-diff --git a/docutils/frontend.py b/docutils/frontend.py
-index 4b389b0..627f603 100644
---- a/docutils/frontend.py
-+++ b/docutils/frontend.py
-@@ -43,7 +43,7 @@ import docutils.nodes
- from docutils.utils.error_reporting import (locale_encoding, SafeString,
- ErrorOutput, ErrorString)
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/docutils/io.py b/docutils/io.py
-index 3cdf00e..fb354fd 100644
---- a/docutils/io.py
-+++ b/docutils/io.py
-@@ -17,7 +17,7 @@ import codecs
- from docutils import TransformSpec
- from docutils.utils.error_reporting import locale_encoding, ErrorString, ErrorOutput
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-@@ -208,7 +208,7 @@ class FileInput(Input):
- def __init__(self, source=None, source_path=None,
- encoding=None, error_handler='strict',
- autoclose=True,
-- mode='r' if sys.version_info >= (3, 4) else 'rU', **kwargs):
-+ mode='r' if sys.version_info >= (3,0) else 'rU', **kwargs):
- """
- :Parameters:
- - `source`: either a file-like object (which is read directly), or
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index e29b887..3d714a2 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -29,7 +29,7 @@ import re
- import warnings
- import unicodedata
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
- basestring = str # noqa
-
-@@ -64,7 +64,7 @@ class Node(object):
- """
- return True
-
-- if sys.version_info < (3, 0):
-+ 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):
-@@ -304,7 +304,7 @@ class Node(object):
- except IndexError:
- return None
-
--if sys.version_info < (3, 0):
-+if sys.version_info < (3,0):
- class reprunicode(unicode):
- """
- A unicode sub-class that removes the initial u from unicode's repr.
-@@ -320,7 +320,7 @@ def ensure_str(s):
- """
- Failsave conversion of `unicode` to `str`.
- """
-- if sys.version_info < (3,) and isinstance(s, unicode):
-+ if sys.version_info < (3,0) and isinstance(s, unicode):
- return s.encode('ascii', 'backslashreplace')
- return s
-
-@@ -352,7 +352,7 @@ class Text(Node, reprunicode):
- children = ()
- """Text nodes have no children, and cannot have children."""
-
-- if sys.version_info > (3,):
-+ if sys.version_info > (3,0):
- def __new__(cls, data, rawsource=None):
- """Prevent the rawsource argument from propagating to str."""
- if isinstance(data, bytes):
-@@ -544,7 +544,7 @@ class Element(Node):
- else:
- return self.emptytag()
-
-- if sys.version_info > (3,):
-+ if sys.version_info > (3,0):
- # 2to3 doesn't convert __unicode__ to __str__
- __str__ = __unicode__
-
-diff --git a/docutils/parsers/rst/directives/__init__.py b/docutils/parsers/rst/directives/__init__.py
-index 7bccb5b..14fe1ff 100644
---- a/docutils/parsers/rst/directives/__init__.py
-+++ b/docutils/parsers/rst/directives/__init__.py
-@@ -16,7 +16,7 @@ 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):
-+if sys.version_info >= (3,0):
- unichr = chr # noqa
-
-
-diff --git a/docutils/parsers/rst/directives/misc.py b/docutils/parsers/rst/directives/misc.py
-index 0fc3610..3b9b9de 100644
---- a/docutils/parsers/rst/directives/misc.py
-+++ b/docutils/parsers/rst/directives/misc.py
-@@ -473,7 +473,7 @@ class Date(Directive):
- 'Invalid context: the "%s" directive can only be used within '
- 'a substitution definition.' % self.name)
- format_str = '\n'.join(self.content) or '%Y-%m-%d'
-- if sys.version_info< (3, 0):
-+ if sys.version_info< (3,0):
- try:
- format_str = format_str.encode(locale_encoding or 'utf-8')
- except UnicodeEncodeError:
-@@ -498,7 +498,7 @@ class Date(Directive):
- # time.gmtime(int(source_date_epoch)))
- # else:
- text = time.strftime(format_str)
-- if sys.version_info< (3, 0):
-+ if sys.version_info< (3,0):
- # `text` is a byte string that may contain non-ASCII characters:
- try:
- text = text.decode(locale_encoding or 'utf-8')
-diff --git a/docutils/parsers/rst/directives/tables.py b/docutils/parsers/rst/directives/tables.py
-index bf97e26..36a52e7 100644
---- a/docutils/parsers/rst/directives/tables.py
-+++ b/docutils/parsers/rst/directives/tables.py
-@@ -263,7 +263,7 @@ class CSVTable(Table):
- return [detail.args[0]]
- except csv.Error as detail:
- message = str(detail)
-- if sys.version_info < (3,) and '1-character string' in message:
-+ if sys.version_info < (3,0) and '1-character string' in message:
- message += '\nwith Python 2.x this must be an ASCII character.'
- error = self.state_machine.reporter.error(
- 'Error with CSV data in "%s" directive:\n%s'
-@@ -356,7 +356,7 @@ class CSVTable(Table):
- raise SystemMessagePropagation(error)
- return csv_data, source
-
-- if sys.version_info < (3,):
-+ if sys.version_info < (3,0):
- # 2.x csv module doesn't do Unicode
- def decode_from_csv(s):
- return s.decode('utf-8')
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index 6bc03f5..16252bb 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -113,7 +113,7 @@ import unicodedata
- from docutils import utils
- from docutils.utils.error_reporting import ErrorOutput
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/docutils/transforms/frontmatter.py b/docutils/transforms/frontmatter.py
-index 23b9c95..345e290 100644
---- a/docutils/transforms/frontmatter.py
-+++ b/docutils/transforms/frontmatter.py
-@@ -28,7 +28,7 @@ from docutils import nodes, utils
- from docutils.transforms import TransformError, Transform
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/docutils/transforms/universal.py b/docutils/transforms/universal.py
-index 49fb2c8..770ec71 100644
---- a/docutils/transforms/universal.py
-+++ b/docutils/transforms/universal.py
-@@ -24,7 +24,7 @@ from docutils.transforms import TransformError, Transform
- from docutils.utils import smartquotes
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/docutils/utils/__init__.py b/docutils/utils/__init__.py
-index 77c70f8..de39247 100644
---- a/docutils/utils/__init__.py
-+++ b/docutils/utils/__init__.py
-@@ -22,7 +22,7 @@ from docutils.nodes import unescape
- import docutils.io
- from docutils.utils.error_reporting import ErrorOutput, SafeString
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str
-
-
-diff --git a/docutils/utils/error_reporting.py b/docutils/utils/error_reporting.py
-index 8fcc816..21bc55b 100644
---- a/docutils/utils/error_reporting.py
-+++ b/docutils/utils/error_reporting.py
-@@ -65,7 +65,7 @@ else:
- locale_encoding = None
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/docutils/writers/_html_base.py b/docutils/writers/_html_base.py
-index a957311..63d5a5b 100644
---- a/docutils/writers/_html_base.py
-+++ b/docutils/writers/_html_base.py
-@@ -40,7 +40,7 @@ from docutils.utils.math import (unichar2tex, pick_math_environment,
- math2html, latex2mathml, tex2mathml_extern)
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/docutils/writers/docutils_xml.py b/docutils/writers/docutils_xml.py
-index 34e810d..12306b6 100644
---- a/docutils/writers/docutils_xml.py
-+++ b/docutils/writers/docutils_xml.py
-@@ -30,7 +30,7 @@ from StringIO import StringIO
- import docutils
- from docutils import frontend, writers, nodes
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-@@ -185,7 +185,7 @@ class XMLTranslator(nodes.GenericNodeVisitor):
- self.output.append(xml_string)
- self.default_departure(node) # or not?
- # Check validity of raw XML:
-- if isinstance(xml_string, unicode) and sys.version_info < (3,):
-+ if isinstance(xml_string, unicode) and sys.version_info < (3,0):
- xml_string = xml_string.encode('utf8')
- try:
- self.xmlparser.parse(StringIO(xml_string))
-diff --git a/docutils/writers/latex2e/__init__.py b/docutils/writers/latex2e/__init__.py
-index 249ec4a..2c76b0f 100644
---- a/docutils/writers/latex2e/__init__.py
-+++ b/docutils/writers/latex2e/__init__.py
-@@ -28,7 +28,7 @@ from docutils.transforms import writer_aux
- from docutils.utils.math import pick_math_environment, unichar2tex
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/docutils/writers/manpage.py b/docutils/writers/manpage.py
-index cbb8648..52cd49c 100644
---- a/docutils/writers/manpage.py
-+++ b/docutils/writers/manpage.py
-@@ -47,7 +47,7 @@ __docformat__ = 'reStructuredText'
- import re
- import sys
-
--if sys.version_info < (3, 0):
-+if sys.version_info < (3,0):
- range = xrange
-
- import docutils
-diff --git a/docutils/writers/odf_odt/__init__.py b/docutils/writers/odf_odt/__init__.py
-index 417dc34..75f846c 100644
---- a/docutils/writers/odf_odt/__init__.py
-+++ b/docutils/writers/odf_odt/__init__.py
-@@ -947,7 +947,7 @@ class ODFTranslator(nodes.GenericNodeVisitor):
- self.document.reporter.warning(
- 'Style "%s" is not a style used by odtwriter.' % (
- rststyle, ))
-- if sys.version_info.major >= 3:
-+ if sys.version_info >= (3,0):
- self.format_map[rststyle] = format
- else:
- self.format_map[rststyle] = format.decode('utf-8')
-diff --git a/setup.py b/setup.py
-index 4280b98..12c398b 100755
---- a/setup.py
-+++ b/setup.py
-@@ -13,7 +13,7 @@ try:
- from distutils.core import setup, Command
- from distutils.command.build import build
- from distutils.command.build_py import build_py
-- if sys.version_info >= (3,):
-+ if sys.version_info >= (3,0):
- from distutils.command.build_py import build_py_2to3
- from distutils.util import copydir_run_2to3
- from distutils.command.install_data import install_data
-@@ -27,7 +27,7 @@ except ImportError:
- sys.exit(1)
-
-
--if sys.version_info >= (3,):
-+if sys.version_info >= (3,0):
- # copy-convert auxiliary python sources
- class copy_build_py_2to3(build_py_2to3):
- """Copy/convert Python source files in given directories recursively.
-@@ -97,7 +97,7 @@ def do_setup():
- kwargs['cmdclass'] = {'build_data': build_data,
- 'install_data': smart_install_data}
- # Auto-convert source code for Python 3
-- if sys.version_info >= (3,):
-+ if sys.version_info >= (3,0):
- kwargs['cmdclass']['build_py'] = copy_build_py_2to3
- else:
- kwargs['cmdclass']['build_py'] = build_py
-diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index 21ea982..390df5b 100644
---- a/test/DocutilsTestSupport.py
-+++ b/test/DocutilsTestSupport.py
-@@ -89,7 +89,7 @@ except:
- import pdb
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-@@ -202,7 +202,7 @@ class CustomTestCase(StandardTestCase):
- """`input`, `output`, and `expected` should all be strings."""
- if isinstance(input, unicode):
- input = input.encode('raw_unicode_escape')
-- if sys.version_info > (3,):
-+ if sys.version_info > (3,0):
- # API difference: Python 3's node.__str__ doesn't escape
- #assert expected is None or isinstance(expected, unicode)
- if isinstance(expected, bytes):
-diff --git a/test/test__init__.py b/test/test__init__.py
-index 8f1d749..87ec14f 100644
---- a/test/test__init__.py
-+++ b/test/test__init__.py
-@@ -16,7 +16,7 @@ import docutils
- import docutils.utils
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/test/test_error_reporting.py b/test/test_error_reporting.py
-index 893082c..4b337e3 100644
---- a/test/test_error_reporting.py
-+++ b/test/test_error_reporting.py
-@@ -46,7 +46,7 @@ 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):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/test/test_language.py b/test/test_language.py
-index 31ac613..455357a 100755
---- a/test/test_language.py
-+++ b/test/test_language.py
-@@ -26,7 +26,7 @@ _reporter = docutils.utils.new_reporter('', _settings)
-
- reference_language = 'en'
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/test/test_nodes.py b/test/test_nodes.py
-index af04e86..6805799 100755
---- a/test/test_nodes.py
-+++ b/test/test_nodes.py
-@@ -17,7 +17,7 @@ from DocutilsTestSupport import nodes, utils
-
- debug = False
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-@@ -36,7 +36,7 @@ class TextTests(unittest.TestCase):
- self.assertEqual(self.text.shortrepr(),
- r"<#text: 'Line 1.\nLine 2.'>")
- self.assertEqual(nodes.reprunicode('foo'), u'foo')
-- if sys.version_info < (3,):
-+ if sys.version_info < (3,0):
- self.assertEqual(repr(self.unicode_text), r"<#text: 'M\xf6hren'>")
- else:
- self.assertEqual(repr(self.unicode_text), u"<#text: 'Möhren'>")
-@@ -65,7 +65,7 @@ class TextTests(unittest.TestCase):
- self.assertEqual(stripped2, u's noc')
-
- def test_asciirestriction(self):
-- if sys.version_info < (3,):
-+ if sys.version_info < (3,0):
- self.assertRaises(UnicodeDecodeError, nodes.Text,
- b'hol%s' % chr(224))
- else:
-@@ -98,7 +98,7 @@ class ElementTests(unittest.TestCase):
- del element['attr']
- element['mark'] = u'\u2022'
- self.assertEqual(repr(element), '<Element: >')
-- if sys.version_info < (3,):
-+ if sys.version_info < (3,0):
- self.assertEqual(str(element), '<Element mark="\\u2022"/>')
- else:
- self.assertEqual(str(element), u'<Element mark="\u2022"/>')
-@@ -106,7 +106,7 @@ class ElementTests(unittest.TestCase):
- self.assertEqual(dom.toxml(), u'<Element mark="\u2022"/>')
- dom.unlink()
- element['names'] = ['nobody', u'имя', u'näs']
-- if sys.version_info < (3,):
-+ if sys.version_info < (3,0):
- self.assertEqual(repr(element),
- '<Element "nobody; \\u0438\\u043c\\u044f; n\\xe4s": >')
- else:
-@@ -117,7 +117,7 @@ class ElementTests(unittest.TestCase):
- element = nodes.Element('text\nmore', nodes.Text('text\nmore'))
- uelement = nodes.Element(u'grün', nodes.Text(u'grün'))
- self.assertEqual(repr(element), r"<Element: <#text: 'text\nmore'>>")
-- if sys.version_info < (3,):
-+ if sys.version_info < (3,0):
- self.assertEqual(repr(uelement), "<Element: <#text: 'gr\\xfcn'>>")
- else:
- self.assertEqual(repr(uelement), u"<Element: <#text: 'grün'>>")
-@@ -341,7 +341,7 @@ class MiscTests(unittest.TestCase):
- self.assertTrue(isinstance(nodes.reprunicode('foo'), unicode))
- self.assertEqual(nodes.reprunicode('foo'), u'foo')
- self.assertEqual(nodes.reprunicode(u'Möhre'), u'Möhre')
-- if sys.version_info < (3,): # strip leading "u" from representation
-+ if sys.version_info < (3,0): # strip leading "u" from representation
- self.assertEqual(repr(nodes.reprunicode(u'Möhre')),
- repr(u'Möhre')[1:])
- else: # no change to `unicode` under Python 3k
-@@ -350,7 +350,7 @@ class MiscTests(unittest.TestCase):
- def test_ensure_str(self):
- self.assertTrue(isinstance(nodes.ensure_str(u'über'), str))
- self.assertEqual(nodes.ensure_str('over'), 'over')
-- if sys.version_info < (3,): # strip leading "u" from representation
-+ if sys.version_info < (3,0): # strip leading "u" from representation
- self.assertEqual(nodes.ensure_str(u'über'), r'\xfcber')
- else:
- self.assertEqual(nodes.ensure_str(u'über'), r'über')
-diff --git a/test/test_parsers/test_parser.py b/test/test_parsers/test_parser.py
-index 6faecc7..6c57963 100644
---- a/test/test_parsers/test_parser.py
-+++ b/test/test_parsers/test_parser.py
-@@ -23,7 +23,7 @@ class RstParserTests(unittest.TestCase):
- document = utils.new_document('test data', frontend.OptionParser(
- components=(parser, )).get_default_values())
-
-- if sys.version_info < (3,):
-+ if sys.version_info < (3,0):
- # supplying string input is supported, but only if ascii-decodable
- self.assertRaises(UnicodeDecodeError,
- parser.parse, b'hol%s' % chr(224), document)
-diff --git a/test/test_parsers/test_rst/test_directives/test_include.py b/test/test_parsers/test_rst/test_directives/test_include.py
-index d848262..92d0193 100755
---- a/test/test_parsers/test_rst/test_directives/test_include.py
-+++ b/test/test_parsers/test_rst/test_directives/test_include.py
-@@ -16,7 +16,7 @@ from docutils.parsers.rst import states
- from docutils.utils.code_analyzer import with_pygments
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unichr = chr # noqa
-
-
-diff --git a/test/test_parsers/test_rst/test_directives/test_tables.py b/test/test_parsers/test_rst/test_directives/test_tables.py
-index ee930c8..9d417e8 100755
---- a/test/test_parsers/test_rst/test_directives/test_tables.py
-+++ b/test/test_parsers/test_rst/test_directives/test_tables.py
-@@ -18,7 +18,7 @@ from docutils.parsers.rst.directives import tables
- from . import DocutilsTestSupport
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
- unichr = chr # noqa
-
-diff --git a/test/test_parsers/test_rst/test_directives/test_unicode.py b/test/test_parsers/test_rst/test_directives/test_unicode.py
-index b99b5d0..576bc1d 100755
---- a/test/test_parsers/test_rst/test_directives/test_unicode.py
-+++ b/test/test_parsers/test_rst/test_directives/test_unicode.py
-@@ -14,7 +14,7 @@ import sys
- from . import DocutilsTestSupport
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unichr = chr # noqa
-
-
-diff --git a/tools/dev/create_unimap.py b/tools/dev/create_unimap.py
-index 74e8bc7..808861d 100755
---- a/tools/dev/create_unimap.py
-+++ b/tools/dev/create_unimap.py
-@@ -14,7 +14,7 @@ from xml.dom import minidom
- import sys
- import pprint
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str #noqa
- else:
- bytes = str # noqa
-@@ -22,7 +22,7 @@ else:
-
-
- 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)
-
-diff --git a/tools/dev/generate_punctuation_chars.py b/tools/dev/generate_punctuation_chars.py
-index b718f78..fbb72c0 100644
---- a/tools/dev/generate_punctuation_chars.py
-+++ b/tools/dev/generate_punctuation_chars.py
-@@ -38,7 +38,7 @@ from __future__ import print_function
- import sys
- import unicodedata
-
--if sys.version_info >= (3,):
-+if sys.version_info >= (3,0):
- unichr = chr # unichr not available in Py3k
- else:
- import codecs
-@@ -361,7 +361,7 @@ if __name__ == '__main__':
- # Import the punctuation_chars module from the source
- # or Py3k build path for local Python modules::
-
-- if sys.version_info < (3,):
-+ if sys.version_info < (3,0):
- sys.path.insert(0, '../../docutils')
- else:
- sys.path.insert(0, '../../build/lib')
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0014-py3-Replace-foo.next-with-next-foo.patch b/srcpkgs/python-docutils/patches/0014-py3-Replace-foo.next-with-next-foo.patch
deleted file mode 100644
index 54dff2a159a..00000000000
--- a/srcpkgs/python-docutils/patches/0014-py3-Replace-foo.next-with-next-foo.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From cfef74f567498f1e097761bc3cae7c0bde2451cc Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Mon, 26 Aug 2019 16:46:50 +0000
-Subject: [PATCH 14/26] py3: Replace 'foo.next()' with 'next(foo)'
-
-The former only works in Python 2, while the latter works in Python 2.7
-and 3.x.
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8361 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/utils/code_analyzer.py | 2 +-
- docutils/utils/math/math2html.py | 2 +-
- docutils/writers/manpage.py | 2 +-
- test/test_parsers/test_rst/test_directives/test_tables.py | 2 +-
- 4 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/docutils/utils/code_analyzer.py b/docutils/utils/code_analyzer.py
-index 6dc2e15..87a4584 100644
---- a/docutils/utils/code_analyzer.py
-+++ b/docutils/utils/code_analyzer.py
-@@ -83,7 +83,7 @@ class Lexer(object):
- Also strip the final newline (added by pygments).
- """
- tokens = iter(tokens)
-- (lasttype, lastval) = tokens.next()
-+ (lasttype, lastval) = next(tokens)
- for ttype, value in tokens:
- if ttype is lasttype:
- lastval += value
-diff --git a/docutils/utils/math/math2html.py b/docutils/utils/math/math2html.py
-index adcb1cc..ddaca48 100644
---- a/docutils/utils/math/math2html.py
-+++ b/docutils/utils/math/math2html.py
-@@ -2208,7 +2208,7 @@ class Container(object):
- if ord(pos.current()) > 128:
- codepoint = hex(ord(pos.current()))
- if codepoint == '0xd835':
-- codepoint = hex(ord(pos.next()) + 0xf800)
-+ codepoint = hex(ord(next(pos)) + 0xf800)
- result += '&#' + codepoint[1:] + ';'
- else:
- result += pos.current()
-diff --git a/docutils/writers/manpage.py b/docutils/writers/manpage.py
-index 52cd49c..b39cf25 100644
---- a/docutils/writers/manpage.py
-+++ b/docutils/writers/manpage.py
-@@ -812,7 +812,7 @@ class Translator(nodes.NodeVisitor):
- def visit_list_item(self, node):
- # man 7 man argues to use ".IP" instead of ".TP"
- self.body.append('.IP %s %d\n' % (
-- self._list_char[-1].next(),
-+ next(self._list_char[-1]),
- self._list_char[-1].get_width(),))
-
- def depart_list_item(self, node):
-diff --git a/test/test_parsers/test_rst/test_directives/test_tables.py b/test/test_parsers/test_rst/test_directives/test_tables.py
-index 9d417e8..cc450f3 100755
---- a/test/test_parsers/test_rst/test_directives/test_tables.py
-+++ b/test/test_parsers/test_rst/test_directives/test_tables.py
-@@ -59,7 +59,7 @@ def null_bytes():
- csv_data = unicode(csv_data, 'latin1').splitlines()
- reader = csv.reader([tables.CSVTable.encode_for_csv(line + '\n')
- for line in csv_data])
-- reader.next()
-+ next(reader)
-
- null_bytes_exception = DocutilsTestSupport.exception_data(null_bytes)[0]
-
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0015-py3-Replace-foo.has_key-bar-with-bar-in-foo.patch b/srcpkgs/python-docutils/patches/0015-py3-Replace-foo.has_key-bar-with-bar-in-foo.patch
deleted file mode 100644
index e53b109ee77..00000000000
--- a/srcpkgs/python-docutils/patches/0015-py3-Replace-foo.has_key-bar-with-bar-in-foo.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 006366f7baaf84baf0158ccd9036c9a53d27c965 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Mon, 26 Aug 2019 23:12:56 +0000
-Subject: [PATCH 15/26] py3: Replace 'foo.has_key(bar)' with 'bar in foo'
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8362 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/writers/manpage.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/docutils/writers/manpage.py b/docutils/writers/manpage.py
-index b39cf25..8bb025c 100644
---- a/docutils/writers/manpage.py
-+++ b/docutils/writers/manpage.py
-@@ -312,7 +312,7 @@ class Translator(nodes.NodeVisitor):
-
- def __init__(self, style):
- self._style = style
-- if node.has_key('start'):
-+ if 'start' in node:
- self._cnt = node['start'] - 1
- else:
- self._cnt = 0
-@@ -354,7 +354,7 @@ class Translator(nodes.NodeVisitor):
- def __repr__(self):
- return 'enum_style-%s' % list(self._style)
-
-- if node.has_key('enumtype'):
-+ if 'enumtype' in node:
- self._list_char.append(enum_char(node['enumtype']))
- else:
- self._list_char.append(enum_char('bullet'))
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0016-Remove-duplicate-definition-of-nodes.Element.__conta.patch b/srcpkgs/python-docutils/patches/0016-Remove-duplicate-definition-of-nodes.Element.__conta.patch
deleted file mode 100644
index bc71ea6e4e8..00000000000
--- a/srcpkgs/python-docutils/patches/0016-Remove-duplicate-definition-of-nodes.Element.__conta.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From bf370651321ed721777fe0bb1c4bd4652eea354c Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Mon, 26 Aug 2019 23:13:04 +0000
-Subject: [PATCH 16/26] Remove duplicate definition of
- `nodes.Element.__contains__`.
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8363 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/nodes.py | 14 ++++++--------
- 1 file changed, 6 insertions(+), 8 deletions(-)
-
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index 3d714a2..f8da02b 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -577,13 +577,6 @@ class Element(Node):
- def __len__(self):
- return len(self.children)
-
-- def __contains__(self, key):
-- # support both membership test for children and attributes
-- # (has_key is translated to "in" by 2to3)
-- if isinstance(key, basestring):
-- return key in self.attributes
-- return key in self.children
--
- def __getitem__(self, key):
- if isinstance(key, basestring):
- return self.attributes[key]
-@@ -668,7 +661,12 @@ class Element(Node):
- has_key = hasattr
-
- # support operator ``in``
-- __contains__ = hasattr
-+ def __contains__(self, key):
-+ # support both membership test for children and attributes
-+ # (has_key is translated to "in" by 2to3)
-+ if isinstance(key, basestring):
-+ return key in self.attributes
-+ return key in self.children
-
- def get_language_code(self, fallback=''):
- """Return node's language tag.
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0017-Handle-ConfigParser-to-configparser-rename.patch b/srcpkgs/python-docutils/patches/0017-Handle-ConfigParser-to-configparser-rename.patch
deleted file mode 100644
index 809c7341906..00000000000
--- a/srcpkgs/python-docutils/patches/0017-Handle-ConfigParser-to-configparser-rename.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From bcc08592dd85f2e7805ab3528659a4396f109b30 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Wed, 20 Nov 2019 00:05:43 +0700
-Subject: [PATCH 17/26] Handle 'ConfigParser' to 'configparser' rename.
-
-Based on a patch by Stephen Finucane.
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8364 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/frontend.py | 14 +++++++++-----
- docutils/writers/odf_odt/__init__.py | 4 ++--
- 2 files changed, 11 insertions(+), 7 deletions(-)
-
-diff --git a/docutils/frontend.py b/docutils/frontend.py
-index 627f603..815343d 100644
---- a/docutils/frontend.py
-+++ b/docutils/frontend.py
-@@ -33,10 +33,14 @@ import os
- import os.path
- import sys
- import warnings
--import ConfigParser as CP
- import codecs
- import optparse
- from optparse import SUPPRESS_HELP
-+if sys.version_info >= (3,0):
-+ from configparser import RawConfigParser
-+else:
-+ from ConfigParser import RawConfigParser
-+
- import docutils
- import docutils.utils
- import docutils.nodes
-@@ -735,7 +739,7 @@ class OptionParser(optparse.OptionParser, docutils.SettingsSpec):
- raise KeyError('No option with dest == %r.' % dest)
-
-
--class ConfigParser(CP.RawConfigParser):
-+class ConfigParser(RawConfigParser):
-
- old_settings = {
- 'pep_stylesheet': ('pep_html writer', 'stylesheet'),
-@@ -757,7 +761,7 @@ Skipping "%s" configuration file.
- """
-
- def __init__(self, *args, **kwargs):
-- CP.RawConfigParser.__init__(self, *args, **kwargs)
-+ RawConfigParser.__init__(self, *args, **kwargs)
-
- self._files = []
- """List of paths of configuration files read."""
-@@ -776,9 +780,9 @@ Skipping "%s" configuration file.
- continue
- try:
- if sys.version_info < (3,2):
-- CP.RawConfigParser.readfp(self, fp, filename)
-+ RawConfigParser.readfp(self, fp, filename)
- else:
-- CP.RawConfigParser.read_file(self, fp, filename)
-+ RawConfigParser.read_file(self, fp, filename)
- except UnicodeDecodeError:
- self._stderr.write(self.not_utf8_error % (filename, filename))
- fp.close()
-diff --git a/docutils/writers/odf_odt/__init__.py b/docutils/writers/odf_odt/__init__.py
-index 75f846c..f36980f 100644
---- a/docutils/writers/odf_odt/__init__.py
-+++ b/docutils/writers/odf_odt/__init__.py
-@@ -30,10 +30,12 @@ from docutils import frontend, nodes, utils, writers, languages
- from docutils.readers import standalone
- from docutils.transforms import references
- if type(sys.version_info)!=type((0,)) and sys.version_info.major >= 3:
-+ from configparser import ConfigParser
- from io import StringIO
- from urllib.request import urlopen
- from urllib.error import HTTPError
- else:
-+ from ConfigParser import ConfigParser
- from StringIO import StringIO
- from urllib2 import urlopen, HTTPError
-
-@@ -938,8 +940,6 @@ class ODFTranslator(nodes.GenericNodeVisitor):
- document.reporter)
- self.format_map = {}
- if self.settings.odf_config_file:
-- from configparser import ConfigParser
--
- parser = ConfigParser()
- parser.read(self.settings.odf_config_file)
- for rststyle, format in parser.items("Formats"):
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0018-py3-Replace-ur-prefix.patch b/srcpkgs/python-docutils/patches/0018-py3-Replace-ur-prefix.patch
deleted file mode 100644
index c401c4aebbc..00000000000
--- a/srcpkgs/python-docutils/patches/0018-py3-Replace-ur-prefix.patch
+++ /dev/null
@@ -1,599 +0,0 @@
-From ac408c7ed04500c83a47861c5ac88aee246d178c Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 27 Aug 2019 12:09:19 +0000
-Subject: [PATCH 18/26] py3: Replace 'ur' prefix
-
-While the 'u' prefix was backported to Python 3.3 or thereabouts, 'ur'
-remains invalid in Python 3. Just escape all backslashes and use plain
-old 'u'.
-
-Based on patch by Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8366 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/utils/math/latex2mathml.py | 28 +-
- docutils/utils/math/tex2mathml_extern.py | 3 +-
- docutils/utils/smartquotes.py | 24 +-
- docutils/writers/latex2e/__init__.py | 280 +++++++++---------
- docutils/writers/manpage.py | 8 +-
- .../test_rst/test_east_asian_text.py | 4 +-
- tools/dev/generate_punctuation_chars.py | 10 +-
- 7 files changed, 182 insertions(+), 175 deletions(-)
-
-diff --git a/docutils/utils/math/latex2mathml.py b/docutils/utils/math/latex2mathml.py
-index b7ba048..1f3bc18 100644
---- a/docutils/utils/math/latex2mathml.py
-+++ b/docutils/utils/math/latex2mathml.py
-@@ -6,12 +6,12 @@
- # Based on rst2mathml.py from the latex_math sandbox project
- # © 2005 Jens Jørgen Mortensen
- # :License: Released under the terms of the `2-Clause BSD license`_, in short:
--#
-+#
- # Copying and distribution of this file, with or without modification,
- # are permitted in any medium without royalty provided the copyright
- # notice and this notice are preserved.
- # This file is offered as-is, without any warranty.
--#
-+#
- # .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause
-
-
-@@ -412,7 +412,7 @@ def parse_latex_math(string, inline=True):
- node = entry
- skip = 2
- else:
-- raise SyntaxError(ur'Syntax error: "%s%s"' % (c, c2))
-+ raise SyntaxError(u'Syntax error: "%s%s"' % (c, c2))
- elif c.isalpha():
- node = node.append(mi(c))
- elif c.isdigit():
-@@ -453,7 +453,7 @@ def parse_latex_math(string, inline=True):
- node.close().append(entry)
- node = entry
- else:
-- raise SyntaxError(ur'Illegal character: "%s"' % c)
-+ raise SyntaxError(u'Illegal character: "%s"' % c)
- string = string[skip:]
- return tree
-
-@@ -474,15 +474,15 @@ def handle_keyword(name, node, string):
- node = entry
- elif name == 'end':
- if not string.startswith('{matrix}'):
-- raise SyntaxError(ur'Expected "\end{matrix}"!')
-+ raise SyntaxError(u'Expected "\\end{matrix}"!')
- skip += 8
- node = node.close().close().close()
- elif name in ('text', 'mathrm'):
- if string[0] != '{':
-- raise SyntaxError(ur'Expected "\text{...}"!')
-+ raise SyntaxError(u'Expected "\\text{...}"!')
- i = string.find('}')
- if i == -1:
-- raise SyntaxError(ur'Expected "\text{...}"!')
-+ raise SyntaxError(u'Expected "\\text{...}"!')
- node = node.append(mtext(string[1:i]))
- skip += i + 1
- elif name == 'sqrt':
-@@ -520,7 +520,7 @@ def handle_keyword(name, node, string):
- if string.startswith(operator):
- break
- else:
-- raise SyntaxError(ur'Expected something to negate: "\not ..."!')
-+ raise SyntaxError(u'Expected something to negate: "\\not ..."!')
- node = node.append(mo(negatables[operator]))
- skip += len(operator)
- elif name == 'mathbf':
-@@ -529,12 +529,12 @@ def handle_keyword(name, node, string):
- node = style
- elif name == 'mathbb':
- if string[0] != '{' or not string[1].isupper() or string[2] != '}':
-- raise SyntaxError(ur'Expected something like "\mathbb{A}"!')
-+ raise SyntaxError(u'Expected something like "\\mathbb{A}"!')
- node = node.append(mi(mathbb[string[1]]))
- skip += 3
- elif name in ('mathscr', 'mathcal'):
- if string[0] != '{' or string[2] != '}':
-- raise SyntaxError(ur'Expected something like "\mathscr{A}"!')
-+ raise SyntaxError(u'Expected something like "\\mathscr{A}"!')
- node = node.append(mi(mathscr[string[1]]))
- skip += 3
- elif name == 'colon': # "normal" colon, not binary operator
-@@ -559,12 +559,10 @@ def handle_keyword(name, node, string):
- return node, skip
-
- def tex2mathml(tex_math, inline=True):
-- """Return string with MathML code corresponding to `tex_math`.
--
-+ """Return string with MathML code corresponding to `tex_math`.
-+
- `inline`=True is for inline math and `inline`=False for displayed math.
- """
--
-+
- mathml_tree = parse_latex_math(tex_math, inline=inline)
- return ''.join(mathml_tree.xml())
--
--
-diff --git a/docutils/utils/math/tex2mathml_extern.py b/docutils/utils/math/tex2mathml_extern.py
-index 3e7f158..ab82a78 100644
---- a/docutils/utils/math/tex2mathml_extern.py
-+++ b/docutils/utils/math/tex2mathml_extern.py
-@@ -141,7 +141,8 @@ def blahtexml(math_code, inline=True, reporter=None):
- # self-test
-
- if __name__ == "__main__":
-- example = ur'\frac{\partial \sin^2(\alpha)}{\partial \vec r} \varpi \, \text{Grüße}'
-+ example = (u'\\frac{\\partial \\sin^2(\\alpha)}{\\partial \\vec r}'
-+ u'\\varpi \\, \\text{Grüße}')
- # print(latexml(example).encode('utf8'))
- # print(ttm(example))
- print(blahtexml(example).encode('utf8'))
-diff --git a/docutils/utils/smartquotes.py b/docutils/utils/smartquotes.py
-index 148a4c9..b38fa47 100644
---- a/docutils/utils/smartquotes.py
-+++ b/docutils/utils/smartquotes.py
-@@ -658,20 +658,21 @@ def educateQuotes(text, language='en'):
- text = re.sub(r"'(?=\d{2}s)", smart.apostrophe, text)
-
- # Get most opening single quotes:
-- opening_single_quotes_regex = re.compile(ur"""
-+ opening_single_quotes_regex = re.compile(u"""
- (# ?<= # look behind fails: requires fixed-width pattern
-- \s | # a whitespace char, or
-+ \\s | # a whitespace char, or
- %s | # another separating char, or
- | # a non-breaking space entity, or
-- [–—] | # literal dashes, or
-+ [\u2013 \u2014 ] | # literal dashes, or
- -- | # dumb dashes, or
- &[mn]dash; | # dash entities (named or
- %s | # decimal or
-- &\#x201[34]; # hex)
-+ &\\#x201[34]; # hex)
- )
- ' # the quote
-- (?=\w) # followed by a word character
-- """ % (open_class,dec_dashes), re.VERBOSE | re.UNICODE)
-+ (?=\\w) # followed by a word character
-+ """ % (open_class, dec_dashes), re.VERBOSE | re.UNICODE)
-+
- text = opening_single_quotes_regex.sub(r'\1'+smart.osquote, text)
-
- # In many locales, single closing quotes are different from apostrophe:
-@@ -691,20 +692,21 @@ def educateQuotes(text, language='en'):
- text = re.sub(r"""'""", smart.osquote, text)
-
- # Get most opening double quotes:
-- opening_double_quotes_regex = re.compile(ur"""
-+ opening_double_quotes_regex = re.compile(u"""
- (
-- \s | # a whitespace char, or
-+ \\s | # a whitespace char, or
- %s | # another separating char, or
- | # a non-breaking space entity, or
-- [–—] | # literal dashes, or
-+ [\u2013 \u2014 ] | # literal dashes, or
- -- | # dumb dashes, or
- &[mn]dash; | # dash entities (named or
- %s | # decimal or
-- &\#x201[34]; # hex)
-+ &\\#x201[34]; # hex)
- )
- " # the quote
-- (?=\w) # followed by a word character
-+ (?=\\w) # followed by a word character
- """ % (open_class,dec_dashes), re.VERBOSE | re.UNICODE)
-+
- text = opening_double_quotes_regex.sub(r'\1'+smart.opquote, text)
-
- # Double closing quotes:
-diff --git a/docutils/writers/latex2e/__init__.py b/docutils/writers/latex2e/__init__.py
-index 2c76b0f..636d477 100644
---- a/docutils/writers/latex2e/__init__.py
-+++ b/docutils/writers/latex2e/__init__.py
-@@ -704,165 +704,165 @@ class CharMaps(object):
-
- # characters that need escaping even in `alltt` environments:
- alltt = {
-- ord('\\'): ur'\textbackslash{}',
-- ord('{'): ur'\{',
-- ord('}'): ur'\}',
-+ ord('\\'): u'\\textbackslash{}',
-+ ord('{'): u'\\{',
-+ ord('}'): u'\\}',
- }
- # characters that normally need escaping:
- special = {
-- ord('#'): ur'\#',
-- ord('$'): ur'\$',
-- ord('%'): ur'\%',
-- ord('&'): ur'\&',
-- ord('~'): ur'\textasciitilde{}',
-- ord('_'): ur'\_',
-- ord('^'): ur'\textasciicircum{}',
-+ ord('#'): u'\\#',
-+ ord('$'): u'\\$',
-+ ord('%'): u'\\%',
-+ ord('&'): u'\\&',
-+ ord('~'): u'\\textasciitilde{}',
-+ ord('_'): u'\\_',
-+ ord('^'): u'\\textasciicircum{}',
- # straight double quotes are 'active' in many languages
-- ord('"'): ur'\textquotedbl{}',
-+ ord('"'): u'\\textquotedbl{}',
- # Square brackets are ordinary chars and cannot be escaped with '\',
- # so we put them in a group '{[}'. (Alternative: ensure that all
- # macros with optional arguments are terminated with {} and text
- # inside any optional argument is put in a group ``[{text}]``).
- # Commands with optional args inside an optional arg must be put in a
- # group, e.g. ``\item[{\hyperref[label]{text}}]``.
-- ord('['): ur'{[}',
-- ord(']'): ur'{]}',
-+ ord('['): u'{[}',
-+ ord(']'): u'{]}',
- # the soft hyphen is unknown in 8-bit text
- # and not properly handled by XeTeX
-- 0x00AD: ur'\-', # SOFT HYPHEN
-+ 0x00AD: u'\\-', # SOFT HYPHEN
- }
- # Unicode chars that are not recognized by LaTeX's utf8 encoding
- unsupported_unicode = {
- # TODO: ensure white space also at the beginning of a line?
-- # 0x00A0: ur'\leavevmode\nobreak\vadjust{}~'
-- 0x2000: ur'\enskip', # EN QUAD
-- 0x2001: ur'\quad', # EM QUAD
-- 0x2002: ur'\enskip', # EN SPACE
-- 0x2003: ur'\quad', # EM SPACE
-- 0x2008: ur'\,', # PUNCTUATION SPACE
-- 0x200b: ur'\hspace{0pt}', # ZERO WIDTH SPACE
-- 0x202F: ur'\,', # NARROW NO-BREAK SPACE
-- # 0x02d8: ur'\\u{ }', # BREVE
-- 0x2011: ur'\hbox{-}', # NON-BREAKING HYPHEN
-- 0x212b: ur'\AA', # ANGSTROM SIGN
-- 0x21d4: ur'\ensuremath{\Leftrightarrow}',
-+ # 0x00A0: u'\\leavevmode\\nobreak\\vadjust{}~'
-+ 0x2000: u'\\enskip', # EN QUAD
-+ 0x2001: u'\\quad', # EM QUAD
-+ 0x2002: u'\\enskip', # EN SPACE
-+ 0x2003: u'\\quad', # EM SPACE
-+ 0x2008: u'\\,', # PUNCTUATION SPACE
-+ 0x200b: u'\\hspace{0pt}', # ZERO WIDTH SPACE
-+ 0x202F: u'\\,', # NARROW NO-BREAK SPACE
-+ # 0x02d8: u'\\\u{ }', # BREVE
-+ 0x2011: u'\\hbox{-}', # NON-BREAKING HYPHEN
-+ 0x212b: u'\\AA', # ANGSTROM SIGN
-+ 0x21d4: u'\\ensuremath{\\Leftrightarrow}',
- # Docutils footnote symbols:
-- 0x2660: ur'\ensuremath{\spadesuit}',
-- 0x2663: ur'\ensuremath{\clubsuit}',
-- 0xfb00: ur'ff', # LATIN SMALL LIGATURE FF
-- 0xfb01: ur'fi', # LATIN SMALL LIGATURE FI
-- 0xfb02: ur'fl', # LATIN SMALL LIGATURE FL
-- 0xfb03: ur'ffi', # LATIN SMALL LIGATURE FFI
-- 0xfb04: ur'ffl', # LATIN SMALL LIGATURE FFL
-+ 0x2660: u'\\ensuremath{\\spadesuit}',
-+ 0x2663: u'\\ensuremath{\\clubsuit}',
-+ 0xfb00: u'ff', # LATIN SMALL LIGATURE FF
-+ 0xfb01: u'fi', # LATIN SMALL LIGATURE FI
-+ 0xfb02: u'fl', # LATIN SMALL LIGATURE FL
-+ 0xfb03: u'ffi', # LATIN SMALL LIGATURE FFI
-+ 0xfb04: u'ffl', # LATIN SMALL LIGATURE FFL
- }
- # Unicode chars that are recognized by LaTeX's utf8 encoding
- utf8_supported_unicode = {
-- 0x00A0: ur'~', # NO-BREAK SPACE
-- 0x00AB: ur'\guillemotleft{}', # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-- 0x00bb: ur'\guillemotright{}', # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-- 0x200C: ur'\textcompwordmark{}', # ZERO WIDTH NON-JOINER
-- 0x2013: ur'\textendash{}',
-- 0x2014: ur'\textemdash{}',
-- 0x2018: ur'\textquoteleft{}',
-- 0x2019: ur'\textquoteright{}',
-- 0x201A: ur'\quotesinglbase{}', # SINGLE LOW-9 QUOTATION MARK
-- 0x201C: ur'\textquotedblleft{}',
-- 0x201D: ur'\textquotedblright{}',
-- 0x201E: ur'\quotedblbase{}', # DOUBLE LOW-9 QUOTATION MARK
-- 0x2030: ur'\textperthousand{}', # PER MILLE SIGN
-- 0x2031: ur'\textpertenthousand{}', # PER TEN THOUSAND SIGN
-- 0x2039: ur'\guilsinglleft{}',
-- 0x203A: ur'\guilsinglright{}',
-- 0x2423: ur'\textvisiblespace{}', # OPEN BOX
-- 0x2020: ur'\dag{}',
-- 0x2021: ur'\ddag{}',
-- 0x2026: ur'\dots{}',
-- 0x2122: ur'\texttrademark{}',
-+ 0x00A0: u'~', # NO-BREAK SPACE
-+ 0x00AB: u'\\guillemotleft{}', # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-+ 0x00bb: u'\\guillemotright{}', # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-+ 0x200C: u'\\textcompwordmark{}', # ZERO WIDTH NON-JOINER
-+ 0x2013: u'\\textendash{}',
-+ 0x2014: u'\\textemdash{}',
-+ 0x2018: u'\\textquoteleft{}',
-+ 0x2019: u'\\textquoteright{}',
-+ 0x201A: u'\\quotesinglbase{}', # SINGLE LOW-9 QUOTATION MARK
-+ 0x201C: u'\\textquotedblleft{}',
-+ 0x201D: u'\\textquotedblright{}',
-+ 0x201E: u'\\quotedblbase{}', # DOUBLE LOW-9 QUOTATION MARK
-+ 0x2030: u'\\textperthousand{}', # PER MILLE SIGN
-+ 0x2031: u'\\textpertenthousand{}', # PER TEN THOUSAND SIGN
-+ 0x2039: u'\\guilsinglleft{}',
-+ 0x203A: u'\\guilsinglright{}',
-+ 0x2423: u'\\textvisiblespace{}', # OPEN BOX
-+ 0x2020: u'\\dag{}',
-+ 0x2021: u'\\ddag{}',
-+ 0x2026: u'\\dots{}',
-+ 0x2122: u'\\texttrademark{}',
- }
- # recognized with 'utf8', if textcomp is loaded
- textcomp = {
- # Latin-1 Supplement
-- 0x00a2: ur'\textcent{}', # ¢ CENT SIGN
-- 0x00a4: ur'\textcurrency{}', # ¤ CURRENCY SYMBOL
-- 0x00a5: ur'\textyen{}', # ¥ YEN SIGN
-- 0x00a6: ur'\textbrokenbar{}', # ¦ BROKEN BAR
-- 0x00a7: ur'\textsection{}', # § SECTION SIGN
-- 0x00a8: ur'\textasciidieresis{}', # ¨ DIAERESIS
-- 0x00a9: ur'\textcopyright{}', # © COPYRIGHT SIGN
-- 0x00aa: ur'\textordfeminine{}', # ª FEMININE ORDINAL INDICATOR
-- 0x00ac: ur'\textlnot{}', # ¬ NOT SIGN
-- 0x00ae: ur'\textregistered{}', # ® REGISTERED SIGN
-- 0x00af: ur'\textasciimacron{}', # ¯ MACRON
-- 0x00b0: ur'\textdegree{}', # ° DEGREE SIGN
-- 0x00b1: ur'\textpm{}', # ± PLUS-MINUS SIGN
-- 0x00b2: ur'\texttwosuperior{}', # ² SUPERSCRIPT TWO
-- 0x00b3: ur'\textthreesuperior{}', # ³ SUPERSCRIPT THREE
-- 0x00b4: ur'\textasciiacute{}', # ´ ACUTE ACCENT
-- 0x00b5: ur'\textmu{}', # µ MICRO SIGN
-- 0x00b6: ur'\textparagraph{}', # ¶ PILCROW SIGN # != \textpilcrow
-- 0x00b9: ur'\textonesuperior{}', # ¹ SUPERSCRIPT ONE
-- 0x00ba: ur'\textordmasculine{}', # º MASCULINE ORDINAL INDICATOR
-- 0x00bc: ur'\textonequarter{}', # 1/4 FRACTION
-- 0x00bd: ur'\textonehalf{}', # 1/2 FRACTION
-- 0x00be: ur'\textthreequarters{}', # 3/4 FRACTION
-- 0x00d7: ur'\texttimes{}', # × MULTIPLICATION SIGN
-- 0x00f7: ur'\textdiv{}', # ÷ DIVISION SIGN
-+ 0x00a2: u'\\textcent{}', # ¢ CENT SIGN
-+ 0x00a4: u'\\textcurrency{}', # ¤ CURRENCY SYMBOL
-+ 0x00a5: u'\\textyen{}', # ¥ YEN SIGN
-+ 0x00a6: u'\\textbrokenbar{}', # ¦ BROKEN BAR
-+ 0x00a7: u'\\textsection{}', # § SECTION SIGN
-+ 0x00a8: u'\\textasciidieresis{}', # ¨ DIAERESIS
-+ 0x00a9: u'\\textcopyright{}', # © COPYRIGHT SIGN
-+ 0x00aa: u'\\textordfeminine{}', # ª FEMININE ORDINAL INDICATOR
-+ 0x00ac: u'\\textlnot{}', # ¬ NOT SIGN
-+ 0x00ae: u'\\textregistered{}', # ® REGISTERED SIGN
-+ 0x00af: u'\\textasciimacron{}', # ¯ MACRON
-+ 0x00b0: u'\\textdegree{}', # ° DEGREE SIGN
-+ 0x00b1: u'\\textpm{}', # ± PLUS-MINUS SIGN
-+ 0x00b2: u'\\texttwosuperior{}', # ² SUPERSCRIPT TWO
-+ 0x00b3: u'\\textthreesuperior{}', # ³ SUPERSCRIPT THREE
-+ 0x00b4: u'\\textasciiacute{}', # ´ ACUTE ACCENT
-+ 0x00b5: u'\\textmu{}', # µ MICRO SIGN
-+ 0x00b6: u'\\textparagraph{}', # ¶ PILCROW SIGN # != \textpilcrow
-+ 0x00b9: u'\\textonesuperior{}', # ¹ SUPERSCRIPT ONE
-+ 0x00ba: u'\\textordmasculine{}', # º MASCULINE ORDINAL INDICATOR
-+ 0x00bc: u'\\textonequarter{}', # 1/4 FRACTION
-+ 0x00bd: u'\\textonehalf{}', # 1/2 FRACTION
-+ 0x00be: u'\\textthreequarters{}', # 3/4 FRACTION
-+ 0x00d7: u'\\texttimes{}', # × MULTIPLICATION SIGN
-+ 0x00f7: u'\\textdiv{}', # ÷ DIVISION SIGN
- # others
-- 0x0192: ur'\textflorin{}', # LATIN SMALL LETTER F WITH HOOK
-- 0x02b9: ur'\textasciiacute{}', # MODIFIER LETTER PRIME
-- 0x02ba: ur'\textacutedbl{}', # MODIFIER LETTER DOUBLE PRIME
-- 0x2016: ur'\textbardbl{}', # DOUBLE VERTICAL LINE
-- 0x2022: ur'\textbullet{}', # BULLET
-- 0x2032: ur'\textasciiacute{}', # PRIME
-- 0x2033: ur'\textacutedbl{}', # DOUBLE PRIME
-- 0x2035: ur'\textasciigrave{}', # REVERSED PRIME
-- 0x2036: ur'\textgravedbl{}', # REVERSED DOUBLE PRIME
-- 0x203b: ur'\textreferencemark{}', # REFERENCE MARK
-- 0x203d: ur'\textinterrobang{}', # INTERROBANG
-- 0x2044: ur'\textfractionsolidus{}', # FRACTION SLASH
-- 0x2045: ur'\textlquill{}', # LEFT SQUARE BRACKET WITH QUILL
-- 0x2046: ur'\textrquill{}', # RIGHT SQUARE BRACKET WITH QUILL
-- 0x2052: ur'\textdiscount{}', # COMMERCIAL MINUS SIGN
-- 0x20a1: ur'\textcolonmonetary{}', # COLON SIGN
-- 0x20a3: ur'\textfrenchfranc{}', # FRENCH FRANC SIGN
-- 0x20a4: ur'\textlira{}', # LIRA SIGN
-- 0x20a6: ur'\textnaira{}', # NAIRA SIGN
-- 0x20a9: ur'\textwon{}', # WON SIGN
-- 0x20ab: ur'\textdong{}', # DONG SIGN
-- 0x20ac: ur'\texteuro{}', # EURO SIGN
-- 0x20b1: ur'\textpeso{}', # PESO SIGN
-- 0x20b2: ur'\textguarani{}', # GUARANI SIGN
-- 0x2103: ur'\textcelsius{}', # DEGREE CELSIUS
-- 0x2116: ur'\textnumero{}', # NUMERO SIGN
-- 0x2117: ur'\textcircledP{}', # SOUND RECORDING COYRIGHT
-- 0x211e: ur'\textrecipe{}', # PRESCRIPTION TAKE
-- 0x2120: ur'\textservicemark{}', # SERVICE MARK
-- 0x2122: ur'\texttrademark{}', # TRADE MARK SIGN
-- 0x2126: ur'\textohm{}', # OHM SIGN
-- 0x2127: ur'\textmho{}', # INVERTED OHM SIGN
-- 0x212e: ur'\textestimated{}', # ESTIMATED SYMBOL
-- 0x2190: ur'\textleftarrow{}', # LEFTWARDS ARROW
-- 0x2191: ur'\textuparrow{}', # UPWARDS ARROW
-- 0x2192: ur'\textrightarrow{}', # RIGHTWARDS ARROW
-- 0x2193: ur'\textdownarrow{}', # DOWNWARDS ARROW
-- 0x2212: ur'\textminus{}', # MINUS SIGN
-- 0x2217: ur'\textasteriskcentered{}', # ASTERISK OPERATOR
-- 0x221a: ur'\textsurd{}', # SQUARE ROOT
-- 0x2422: ur'\textblank{}', # BLANK SYMBOL
-- 0x25e6: ur'\textopenbullet{}', # WHITE BULLET
-- 0x25ef: ur'\textbigcircle{}', # LARGE CIRCLE
-- 0x266a: ur'\textmusicalnote{}', # EIGHTH NOTE
-- 0x26ad: ur'\textmarried{}', # MARRIAGE SYMBOL
-- 0x26ae: ur'\textdivorced{}', # DIVORCE SYMBOL
-- 0x27e8: ur'\textlangle{}', # MATHEMATICAL LEFT ANGLE BRACKET
-- 0x27e9: ur'\textrangle{}', # MATHEMATICAL RIGHT ANGLE BRACKET
-+ 0x0192: u'\\textflorin{}', # LATIN SMALL LETTER F WITH HOOK
-+ 0x02b9: u'\\textasciiacute{}', # MODIFIER LETTER PRIME
-+ 0x02ba: u'\\textacutedbl{}', # MODIFIER LETTER DOUBLE PRIME
-+ 0x2016: u'\\textbardbl{}', # DOUBLE VERTICAL LINE
-+ 0x2022: u'\\textbullet{}', # BULLET
-+ 0x2032: u'\\textasciiacute{}', # PRIME
-+ 0x2033: u'\\textacutedbl{}', # DOUBLE PRIME
-+ 0x2035: u'\\textasciigrave{}', # REVERSED PRIME
-+ 0x2036: u'\\textgravedbl{}', # REVERSED DOUBLE PRIME
-+ 0x203b: u'\\textreferencemark{}', # REFERENCE MARK
-+ 0x203d: u'\\textinterrobang{}', # INTERROBANG
-+ 0x2044: u'\\textfractionsolidus{}', # FRACTION SLASH
-+ 0x2045: u'\\textlquill{}', # LEFT SQUARE BRACKET WITH QUILL
-+ 0x2046: u'\\textrquill{}', # RIGHT SQUARE BRACKET WITH QUILL
-+ 0x2052: u'\\textdiscount{}', # COMMERCIAL MINUS SIGN
-+ 0x20a1: u'\\textcolonmonetary{}', # COLON SIGN
-+ 0x20a3: u'\\textfrenchfranc{}', # FRENCH FRANC SIGN
-+ 0x20a4: u'\\textlira{}', # LIRA SIGN
-+ 0x20a6: u'\\textnaira{}', # NAIRA SIGN
-+ 0x20a9: u'\\textwon{}', # WON SIGN
-+ 0x20ab: u'\\textdong{}', # DONG SIGN
-+ 0x20ac: u'\\texteuro{}', # EURO SIGN
-+ 0x20b1: u'\\textpeso{}', # PESO SIGN
-+ 0x20b2: u'\\textguarani{}', # GUARANI SIGN
-+ 0x2103: u'\\textcelsius{}', # DEGREE CELSIUS
-+ 0x2116: u'\\textnumero{}', # NUMERO SIGN
-+ 0x2117: u'\\textcircledP{}', # SOUND RECORDING COYRIGHT
-+ 0x211e: u'\\textrecipe{}', # PRESCRIPTION TAKE
-+ 0x2120: u'\\textservicemark{}', # SERVICE MARK
-+ 0x2122: u'\\texttrademark{}', # TRADE MARK SIGN
-+ 0x2126: u'\\textohm{}', # OHM SIGN
-+ 0x2127: u'\\textmho{}', # INVERTED OHM SIGN
-+ 0x212e: u'\\textestimated{}', # ESTIMATED SYMBOL
-+ 0x2190: u'\\textleftarrow{}', # LEFTWARDS ARROW
-+ 0x2191: u'\\textuparrow{}', # UPWARDS ARROW
-+ 0x2192: u'\\textrightarrow{}', # RIGHTWARDS ARROW
-+ 0x2193: u'\\textdownarrow{}', # DOWNWARDS ARROW
-+ 0x2212: u'\\textminus{}', # MINUS SIGN
-+ 0x2217: u'\\textasteriskcentered{}', # ASTERISK OPERATOR
-+ 0x221a: u'\\textsurd{}', # SQUARE ROOT
-+ 0x2422: u'\\textblank{}', # BLANK SYMBOL
-+ 0x25e6: u'\\textopenbullet{}', # WHITE BULLET
-+ 0x25ef: u'\\textbigcircle{}', # LARGE CIRCLE
-+ 0x266a: u'\\textmusicalnote{}', # EIGHTH NOTE
-+ 0x26ad: u'\\textmarried{}', # MARRIAGE SYMBOL
-+ 0x26ae: u'\\textdivorced{}', # DIVORCE SYMBOL
-+ 0x27e8: u'\\textlangle{}', # MATHEMATICAL LEFT ANGLE BRACKET
-+ 0x27e9: u'\\textrangle{}', # MATHEMATICAL RIGHT ANGLE BRACKET
- }
- # Unicode chars that require a feature/package to render
- pifont = {
-- 0x2665: ur'\ding{170}', # black heartsuit
-- 0x2666: ur'\ding{169}', # black diamondsuit
-- 0x2713: ur'\ding{51}', # check mark
-- 0x2717: ur'\ding{55}', # check mark
-+ 0x2665: u'\\ding{170}', # black heartsuit
-+ 0x2666: u'\\ding{169}', # black diamondsuit
-+ 0x2713: u'\\ding{51}', # check mark
-+ 0x2717: u'\\ding{55}', # check mark
- }
- # TODO: greek alphabet ... ?
- # see also LaTeX codec
-@@ -1511,14 +1511,14 @@ class LaTeXTranslator(nodes.NodeVisitor):
- # the backslash doesn't work, so we use a mirrored slash.
- # \reflectbox is provided by graphicx:
- self.requirements['graphicx'] = self.graphicx_package
-- table[ord('\\')] = ur'\reflectbox{/}'
-+ table[ord('\\')] = u'\\reflectbox{/}'
- # * ``< | >`` come out as different chars (except for cmtt):
- else:
-- table[ord('|')] = ur'\textbar{}'
-- table[ord('<')] = ur'\textless{}'
-- table[ord('>')] = ur'\textgreater{}'
-+ table[ord('|')] = u'\\textbar{}'
-+ table[ord('<')] = u'\\textless{}'
-+ table[ord('>')] = u'\\textgreater{}'
- if self.insert_non_breaking_blanks:
-- table[ord(' ')] = ur'~'
-+ table[ord(' ')] = u'~'
- # tab chars may occur in included files (literal or code)
- # quick-and-dirty replacement with spaces
- # (for better results use `--literal-block-env=lstlisting`)
-@@ -2618,7 +2618,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
- math_code = '\n'.join([math_code] + self.ids_to_labels(node))
- if math_env == '$':
- if self.alltt:
-- wrapper = ur'\(%s\)'
-+ wrapper = u'\\(%s\\)'
- else:
- wrapper = u'$%s$'
- else:
-@@ -2769,9 +2769,9 @@ class LaTeXTranslator(nodes.NodeVisitor):
-
- def visit_reference(self, node):
- # We need to escape #, \, and % if we use the URL in a command.
-- special_chars = {ord('#'): ur'\#',
-- ord('%'): ur'\%',
-- ord('\\'): ur'\\',
-+ special_chars = {ord('#'): u'\\#',
-+ ord('%'): u'\\%',
-+ ord('\\'): u'\\\\',
- }
- # external reference (URL)
- if 'refuri' in node:
-diff --git a/docutils/writers/manpage.py b/docutils/writers/manpage.py
-index 8bb025c..ed163de 100644
---- a/docutils/writers/manpage.py
-+++ b/docutils/writers/manpage.py
-@@ -284,10 +284,10 @@ class Translator(nodes.NodeVisitor):
- text = node.astext()
- text = text.replace('\\','\\e')
- replace_pairs = [
-- (u'-', ur'\-'),
-- (u'\'', ur'\(aq'),
-- (u'´', ur'\''),
-- (u'`', ur'\(ga'),
-+ (u'-', u'\\-'),
-+ (u'\'', u'\\(aq'),
-+ (u'´', u"\\'"),
-+ (u'`', u'\\(ga'),
- ]
- for (in_char, out_markup) in replace_pairs:
- text = text.replace(in_char, out_markup)
-diff --git a/test/test_parsers/test_rst/test_east_asian_text.py b/test/test_parsers/test_rst/test_east_asian_text.py
-index d819ef8..a13c969 100755
---- a/test/test_parsers/test_rst/test_east_asian_text.py
-+++ b/test/test_parsers/test_rst/test_east_asian_text.py
-@@ -50,12 +50,12 @@ u"""\
- タイトル2
- ========
- """],
--[ur"""
-+[u"""
- +-----------------------+
- | * ヒョウ:ダイ1ギョウ |
- | * ダイ2ギョウ |
- +-----------------------+
--| \* ダイ1ギョウ |
-+| \\* ダイ1ギョウ |
- | * ダイ2ギョウ |
- +-----------------------+
- """,
-diff --git a/tools/dev/generate_punctuation_chars.py b/tools/dev/generate_punctuation_chars.py
-index fbb72c0..cfe97df 100644
---- a/tools/dev/generate_punctuation_chars.py
-+++ b/tools/dev/generate_punctuation_chars.py
-@@ -375,10 +375,16 @@ if __name__ == '__main__':
-
- print_differences(openers, o, 'openers')
- if o_wide:
-- print('+ openers-wide = ur"""%s"""' % o_wide.encode('utf8'))
-+ if sys.version_info < (3, 0):
-+ print('+ openers-wide = ur"""%s"""' % o_wide.encode('utf8'))
-+ else:
-+ print('+ openers-wide = r"""%s"""' % o_wide.encode('utf8'))
- print_differences(closers, c, 'closers')
- if c_wide:
-- print('+ closers-wide = ur"""%s"""' % c_wide.encode('utf8'))
-+ if sys.version_info < (3, 0):
-+ print('+ closers-wide = ur"""%s"""' % c_wide.encode('utf8'))
-+ else:
-+ print('+ closers-wide = r"""%s"""' % c_wide.encode('utf8'))
-
- print_differences(delimiters, d + d_wide, 'delimiters')
- print_differences(closing_delimiters, cd, 'closing_delimiters')
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0019-Formatting-changes-to-facilitate-integration-of-py3-.patch b/srcpkgs/python-docutils/patches/0019-Formatting-changes-to-facilitate-integration-of-py3-.patch
deleted file mode 100644
index 5acf6e90dbc..00000000000
--- a/srcpkgs/python-docutils/patches/0019-Formatting-changes-to-facilitate-integration-of-py3-.patch
+++ /dev/null
@@ -1,920 +0,0 @@
-From 2e6a65d93d4616f702bbc1f0f5b18c562e403956 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Wed, 20 Nov 2019 00:08:33 +0700
-Subject: [PATCH 19/26] Formatting changes to facilitate integration of "py3"
- patchset.
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8367 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/_compat.py | 2 +-
- docutils/core.py | 2 +-
- docutils/frontend.py | 4 ++--
- docutils/io.py | 18 +++++++++---------
- docutils/nodes.py | 12 ++++++------
- docutils/parsers/rst/directives/__init__.py | 2 +-
- docutils/parsers/rst/directives/misc.py | 4 ++--
- docutils/parsers/rst/directives/tables.py | 4 ++--
- docutils/statemachine.py | 2 +-
- docutils/transforms/frontmatter.py | 2 +-
- docutils/transforms/universal.py | 2 +-
- docutils/utils/__init__.py | 8 ++++----
- docutils/utils/error_reporting.py | 4 ++--
- docutils/utils/math/math2html.py | 6 +++---
- docutils/writers/_html_base.py | 2 +-
- docutils/writers/docutils_xml.py | 4 ++--
- docutils/writers/latex2e/__init__.py | 2 +-
- docutils/writers/manpage.py | 2 +-
- docutils/writers/odf_odt/__init__.py | 5 +++--
- setup.py | 6 +++---
- test/DocutilsTestSupport.py | 6 +++---
- test/test__init__.py | 2 +-
- test/test_command_line.py | 2 +-
- test/test_error_reporting.py | 4 ++--
- test/test_functional.py | 8 ++++----
- test/test_io.py | 8 ++++----
- test/test_language.py | 2 +-
- test/test_nodes.py | 16 ++++++++--------
- test/test_parsers/test_parser.py | 2 +-
- .../test_rst/test_directives/test_include.py | 4 ++--
- .../test_rst/test_directives/test_raw.py | 2 +-
- .../test_rst/test_directives/test_tables.py | 2 +-
- .../test_rst/test_directives/test_unicode.py | 2 +-
- tools/dev/create_unimap.py | 4 ++--
- tools/dev/generate_punctuation_chars.py | 4 ++--
- tools/dev/unicode2rstsubs.py | 2 +-
- 36 files changed, 82 insertions(+), 81 deletions(-)
-
-diff --git a/docutils/_compat.py b/docutils/_compat.py
-index c9de633..1ff959c 100644
---- a/docutils/_compat.py
-+++ b/docutils/_compat.py
-@@ -14,7 +14,7 @@ This module currently provides the following helper symbols:
-
- import sys
-
--if sys.version_info < (3,0):
-+if sys.version_info < (3, 0):
- u_prefix = 'u'
- from StringIO import StringIO as BytesIO
- else:
-diff --git a/docutils/core.py b/docutils/core.py
-index 12a0c93..d0db093 100644
---- a/docutils/core.py
-+++ b/docutils/core.py
-@@ -155,7 +155,7 @@ class Publisher(object):
- if argv is None:
- argv = sys.argv[1:]
- # converting to Unicode (Python 3 does this automatically):
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- # TODO: make this failsafe and reversible?
- argv_encoding = (frontend.locale_encoding or 'ascii')
- argv = [a.decode(argv_encoding) for a in argv]
-diff --git a/docutils/frontend.py b/docutils/frontend.py
-index 815343d..7bfff6a 100644
---- a/docutils/frontend.py
-+++ b/docutils/frontend.py
-@@ -36,7 +36,7 @@ import warnings
- import codecs
- import optparse
- from optparse import SUPPRESS_HELP
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- from configparser import RawConfigParser
- else:
- from ConfigParser import RawConfigParser
-@@ -47,7 +47,7 @@ import docutils.nodes
- from docutils.utils.error_reporting import (locale_encoding, SafeString,
- ErrorOutput, ErrorString)
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-diff --git a/docutils/io.py b/docutils/io.py
-index fb354fd..9c70f10 100644
---- a/docutils/io.py
-+++ b/docutils/io.py
-@@ -17,7 +17,7 @@ import codecs
- from docutils import TransformSpec
- from docutils.utils.error_reporting import locale_encoding, ErrorString, ErrorOutput
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-@@ -208,7 +208,7 @@ class FileInput(Input):
- def __init__(self, source=None, source_path=None,
- encoding=None, error_handler='strict',
- autoclose=True,
-- mode='r' if sys.version_info >= (3,0) else 'rU', **kwargs):
-+ mode='r' if sys.version_info >= (3, 0) else 'rU', **kwargs):
- """
- :Parameters:
- - `source`: either a file-like object (which is read directly), or
-@@ -239,7 +239,7 @@ class FileInput(Input):
- if source is None:
- if source_path:
- # Specify encoding in Python 3
-- if sys.version_info >= (3,0):
-+ if sys.version_info >= (3, 0):
- kwargs = {'encoding': self.encoding,
- 'errors': self.error_handler}
- else:
-@@ -251,7 +251,7 @@ class FileInput(Input):
- raise InputError(error.errno, error.strerror, source_path)
- else:
- self.source = sys.stdin
-- elif (sys.version_info >= (3,0) and
-+ elif (sys.version_info >= (3, 0) and
- check_encoding(self.source, self.encoding) is False):
- # TODO: re-open, warn or raise error?
- raise UnicodeError('Encoding clash: encoding given is "%s" '
-@@ -268,7 +268,7 @@ class FileInput(Input):
- Read and decode a single file and return the data (Unicode string).
- """
- try:
-- if self.source is sys.stdin and sys.version_info >= (3,0):
-+ if self.source is sys.stdin and sys.version_info >= (3, 0):
- # read as binary data to circumvent auto-decoding
- data = self.source.buffer.read()
- # normalize newlines
-@@ -358,7 +358,7 @@ class FileOutput(Output):
-
- def open(self):
- # Specify encoding in Python 3.
-- if sys.version_info >= (3,0) and 'b' not in self.mode:
-+ if sys.version_info >= (3, 0) and 'b' not in self.mode:
- kwargs = {'encoding': self.encoding,
- 'errors': self.error_handler}
- else:
-@@ -378,17 +378,17 @@ class FileOutput(Output):
- """
- if not self.opened:
- self.open()
-- if ('b' not in self.mode and sys.version_info < (3,0)
-+ if ('b' not in self.mode and sys.version_info < (3, 0)
- or check_encoding(self.destination, self.encoding) is False
- ):
- data = self.encode(data)
-- if sys.version_info >= (3,0) and os.linesep != '\n':
-+ if sys.version_info >= (3, 0) and os.linesep != '\n':
- data = data.replace(b'\n', bytes(os.linesep, 'ascii')) # fix endings
-
- try:
- self.destination.write(data)
- except TypeError as e:
-- if sys.version_info >= (3,0) and isinstance(data, bytes):
-+ if sys.version_info >= (3, 0) and isinstance(data, bytes):
- try:
- self.destination.buffer.write(data)
- except AttributeError:
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index f8da02b..dd9c4b6 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -29,7 +29,7 @@ import re
- import warnings
- import unicodedata
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
- basestring = str # noqa
-
-@@ -64,7 +64,7 @@ class Node(object):
- """
- return True
-
-- if sys.version_info < (3,0):
-+ 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):
-@@ -304,7 +304,7 @@ class Node(object):
- except IndexError:
- return None
-
--if sys.version_info < (3,0):
-+if sys.version_info < (3, 0):
- class reprunicode(unicode):
- """
- A unicode sub-class that removes the initial u from unicode's repr.
-@@ -320,7 +320,7 @@ def ensure_str(s):
- """
- Failsave conversion of `unicode` to `str`.
- """
-- if sys.version_info < (3,0) and isinstance(s, unicode):
-+ if sys.version_info < (3, 0) and isinstance(s, unicode):
- return s.encode('ascii', 'backslashreplace')
- return s
-
-@@ -352,7 +352,7 @@ class Text(Node, reprunicode):
- children = ()
- """Text nodes have no children, and cannot have children."""
-
-- if sys.version_info > (3,0):
-+ if sys.version_info > (3, 0):
- def __new__(cls, data, rawsource=None):
- """Prevent the rawsource argument from propagating to str."""
- if isinstance(data, bytes):
-@@ -544,7 +544,7 @@ class Element(Node):
- else:
- return self.emptytag()
-
-- if sys.version_info > (3,0):
-+ if sys.version_info > (3, 0):
- # 2to3 doesn't convert __unicode__ to __str__
- __str__ = __unicode__
-
-diff --git a/docutils/parsers/rst/directives/__init__.py b/docutils/parsers/rst/directives/__init__.py
-index 14fe1ff..7bccb5b 100644
---- a/docutils/parsers/rst/directives/__init__.py
-+++ b/docutils/parsers/rst/directives/__init__.py
-@@ -16,7 +16,7 @@ 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):
-+if sys.version_info >= (3, 0):
- unichr = chr # noqa
-
-
-diff --git a/docutils/parsers/rst/directives/misc.py b/docutils/parsers/rst/directives/misc.py
-index 3b9b9de..0fc3610 100644
---- a/docutils/parsers/rst/directives/misc.py
-+++ b/docutils/parsers/rst/directives/misc.py
-@@ -473,7 +473,7 @@ class Date(Directive):
- 'Invalid context: the "%s" directive can only be used within '
- 'a substitution definition.' % self.name)
- format_str = '\n'.join(self.content) or '%Y-%m-%d'
-- if sys.version_info< (3,0):
-+ if sys.version_info< (3, 0):
- try:
- format_str = format_str.encode(locale_encoding or 'utf-8')
- except UnicodeEncodeError:
-@@ -498,7 +498,7 @@ class Date(Directive):
- # time.gmtime(int(source_date_epoch)))
- # else:
- text = time.strftime(format_str)
-- if sys.version_info< (3,0):
-+ if sys.version_info< (3, 0):
- # `text` is a byte string that may contain non-ASCII characters:
- try:
- text = text.decode(locale_encoding or 'utf-8')
-diff --git a/docutils/parsers/rst/directives/tables.py b/docutils/parsers/rst/directives/tables.py
-index 36a52e7..b698e08 100644
---- a/docutils/parsers/rst/directives/tables.py
-+++ b/docutils/parsers/rst/directives/tables.py
-@@ -263,7 +263,7 @@ class CSVTable(Table):
- return [detail.args[0]]
- except csv.Error as detail:
- message = str(detail)
-- if sys.version_info < (3,0) and '1-character string' in message:
-+ if sys.version_info < (3, 0) and '1-character string' in message:
- message += '\nwith Python 2.x this must be an ASCII character.'
- error = self.state_machine.reporter.error(
- 'Error with CSV data in "%s" directive:\n%s'
-@@ -356,7 +356,7 @@ class CSVTable(Table):
- raise SystemMessagePropagation(error)
- return csv_data, source
-
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- # 2.x csv module doesn't do Unicode
- def decode_from_csv(s):
- return s.decode('utf-8')
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index 16252bb..6bc03f5 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -113,7 +113,7 @@ import unicodedata
- from docutils import utils
- from docutils.utils.error_reporting import ErrorOutput
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-diff --git a/docutils/transforms/frontmatter.py b/docutils/transforms/frontmatter.py
-index 345e290..23b9c95 100644
---- a/docutils/transforms/frontmatter.py
-+++ b/docutils/transforms/frontmatter.py
-@@ -28,7 +28,7 @@ from docutils import nodes, utils
- from docutils.transforms import TransformError, Transform
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-diff --git a/docutils/transforms/universal.py b/docutils/transforms/universal.py
-index 770ec71..49fb2c8 100644
---- a/docutils/transforms/universal.py
-+++ b/docutils/transforms/universal.py
-@@ -24,7 +24,7 @@ from docutils.transforms import TransformError, Transform
- from docutils.utils import smartquotes
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-diff --git a/docutils/utils/__init__.py b/docutils/utils/__init__.py
-index de39247..cc1fd1a 100644
---- a/docutils/utils/__init__.py
-+++ b/docutils/utils/__init__.py
-@@ -22,7 +22,7 @@ from docutils.nodes import unescape
- import docutils.io
- from docutils.utils.error_reporting import ErrorOutput, SafeString
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str
-
-
-@@ -592,7 +592,7 @@ def split_escaped_whitespace(text):
- return list(itertools.chain(*strings))
-
- def strip_combining_chars(text):
-- if isinstance(text, str) and sys.version_info < (3,0):
-+ if isinstance(text, str) and sys.version_info < (3, 0):
- return text
- return u''.join([c for c in text if not unicodedata.combining(c)])
-
-@@ -604,7 +604,7 @@ def find_combining_chars(text):
- [3, 6, 9]
-
- """
-- if isinstance(text, str) and sys.version_info < (3,0):
-+ if isinstance(text, str) and sys.version_info < (3, 0):
- return []
- return [i for i,c in enumerate(text) if unicodedata.combining(c)]
-
-@@ -638,7 +638,7 @@ def column_width(text):
-
- Correct ``len(text)`` for wide East Asian and combining Unicode chars.
- """
-- if isinstance(text, str) and sys.version_info < (3,0):
-+ if isinstance(text, str) and sys.version_info < (3, 0):
- return len(text)
- width = sum([east_asian_widths[unicodedata.east_asian_width(c)]
- for c in text])
-diff --git a/docutils/utils/error_reporting.py b/docutils/utils/error_reporting.py
-index 21bc55b..02a1dab 100644
---- a/docutils/utils/error_reporting.py
-+++ b/docutils/utils/error_reporting.py
-@@ -65,7 +65,7 @@ else:
- locale_encoding = None
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-@@ -93,7 +93,7 @@ class SafeString(object):
- for arg in self.data.args]
- return ', '.join(args)
- if isinstance(self.data, unicode):
-- if sys.version_info > (3,0):
-+ if sys.version_info > (3, 0):
- return self.data
- else:
- return self.data.encode(self.encoding,
-diff --git a/docutils/utils/math/math2html.py b/docutils/utils/math/math2html.py
-index ddaca48..475519f 100644
---- a/docutils/utils/math/math2html.py
-+++ b/docutils/utils/math/math2html.py
-@@ -30,7 +30,7 @@ import unicodedata
- import urllib
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str #noqa
- basestring = str # noqa
- file = io.IOBase # noqa
-@@ -73,7 +73,7 @@ class Trace(object):
-
- def show(cls, message, channel):
- "Show a message out of a channel"
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- message = message.encode('utf-8')
- channel.write(message + '\n')
-
-@@ -1785,7 +1785,7 @@ class LineWriter(object):
- "Write a string"
- if not self.file:
- self.file = codecs.open(self.filename, 'w', "utf-8")
-- if self.file == sys.stdout and sys.version_info < (3,0):
-+ if self.file == sys.stdout and sys.version_info < (3, 0):
- string = string.encode('utf-8')
- self.file.write(string)
-
-diff --git a/docutils/writers/_html_base.py b/docutils/writers/_html_base.py
-index 63d5a5b..a957311 100644
---- a/docutils/writers/_html_base.py
-+++ b/docutils/writers/_html_base.py
-@@ -40,7 +40,7 @@ from docutils.utils.math import (unichar2tex, pick_math_environment,
- math2html, latex2mathml, tex2mathml_extern)
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-diff --git a/docutils/writers/docutils_xml.py b/docutils/writers/docutils_xml.py
-index 12306b6..60ee07b 100644
---- a/docutils/writers/docutils_xml.py
-+++ b/docutils/writers/docutils_xml.py
-@@ -30,7 +30,7 @@ from StringIO import StringIO
- import docutils
- from docutils import frontend, writers, nodes
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-@@ -185,7 +185,7 @@ class XMLTranslator(nodes.GenericNodeVisitor):
- self.output.append(xml_string)
- self.default_departure(node) # or not?
- # Check validity of raw XML:
-- if isinstance(xml_string, unicode) and sys.version_info < (3,0):
-+ if isinstance(xml_string, unicode) and sys.version_info < (3, 0):
- xml_string = xml_string.encode('utf8')
- try:
- self.xmlparser.parse(StringIO(xml_string))
-diff --git a/docutils/writers/latex2e/__init__.py b/docutils/writers/latex2e/__init__.py
-index 636d477..05b55eb 100644
---- a/docutils/writers/latex2e/__init__.py
-+++ b/docutils/writers/latex2e/__init__.py
-@@ -28,7 +28,7 @@ from docutils.transforms import writer_aux
- from docutils.utils.math import pick_math_environment, unichar2tex
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-diff --git a/docutils/writers/manpage.py b/docutils/writers/manpage.py
-index ed163de..df4f1a3 100644
---- a/docutils/writers/manpage.py
-+++ b/docutils/writers/manpage.py
-@@ -47,7 +47,7 @@ __docformat__ = 'reStructuredText'
- import re
- import sys
-
--if sys.version_info < (3,0):
-+if sys.version_info < (3, 0):
- range = xrange
-
- import docutils
-diff --git a/docutils/writers/odf_odt/__init__.py b/docutils/writers/odf_odt/__init__.py
-index f36980f..c79d4c1 100644
---- a/docutils/writers/odf_odt/__init__.py
-+++ b/docutils/writers/odf_odt/__init__.py
-@@ -37,7 +37,8 @@ if type(sys.version_info)!=type((0,)) and sys.version_info.major >= 3:
- else:
- from ConfigParser import ConfigParser
- from StringIO import StringIO
-- from urllib2 import urlopen, HTTPError
-+ from urllib2 import HTTPError
-+ from urllib2 import urlopen
-
-
- VERSION = '1.0a'
-@@ -947,7 +948,7 @@ class ODFTranslator(nodes.GenericNodeVisitor):
- self.document.reporter.warning(
- 'Style "%s" is not a style used by odtwriter.' % (
- rststyle, ))
-- if sys.version_info >= (3,0):
-+ if sys.version_info >= (3, 0):
- self.format_map[rststyle] = format
- else:
- self.format_map[rststyle] = format.decode('utf-8')
-diff --git a/setup.py b/setup.py
-index 12c398b..d636f46 100755
---- a/setup.py
-+++ b/setup.py
-@@ -13,7 +13,7 @@ try:
- from distutils.core import setup, Command
- from distutils.command.build import build
- from distutils.command.build_py import build_py
-- if sys.version_info >= (3,0):
-+ if sys.version_info >= (3, 0):
- from distutils.command.build_py import build_py_2to3
- from distutils.util import copydir_run_2to3
- from distutils.command.install_data import install_data
-@@ -27,7 +27,7 @@ except ImportError:
- sys.exit(1)
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- # copy-convert auxiliary python sources
- class copy_build_py_2to3(build_py_2to3):
- """Copy/convert Python source files in given directories recursively.
-@@ -97,7 +97,7 @@ def do_setup():
- kwargs['cmdclass'] = {'build_data': build_data,
- 'install_data': smart_install_data}
- # Auto-convert source code for Python 3
-- if sys.version_info >= (3,0):
-+ if sys.version_info >= (3, 0):
- kwargs['cmdclass']['build_py'] = copy_build_py_2to3
- else:
- kwargs['cmdclass']['build_py'] = build_py
-diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index 390df5b..47ba83c 100644
---- a/test/DocutilsTestSupport.py
-+++ b/test/DocutilsTestSupport.py
-@@ -51,7 +51,7 @@ from pprint import pformat
-
- testroot = os.path.abspath(os.path.dirname(__file__) or os.curdir)
- os.chdir(testroot)
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- sys.path.insert(0, os.path.normpath(os.path.join(testroot,
- '..', 'build', 'lib')))
- sys.path.append(os.path.normpath(os.path.join(testroot, '..',
-@@ -89,7 +89,7 @@ except:
- import pdb
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-@@ -202,7 +202,7 @@ class CustomTestCase(StandardTestCase):
- """`input`, `output`, and `expected` should all be strings."""
- if isinstance(input, unicode):
- input = input.encode('raw_unicode_escape')
-- if sys.version_info > (3,0):
-+ if sys.version_info > (3, 0):
- # API difference: Python 3's node.__str__ doesn't escape
- #assert expected is None or isinstance(expected, unicode)
- if isinstance(expected, bytes):
-diff --git a/test/test__init__.py b/test/test__init__.py
-index 87ec14f..8f1d749 100644
---- a/test/test__init__.py
-+++ b/test/test__init__.py
-@@ -16,7 +16,7 @@ import docutils
- import docutils.utils
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-diff --git a/test/test_command_line.py b/test/test_command_line.py
-index eb6ca8a..d9e0850 100644
---- a/test/test_command_line.py
-+++ b/test/test_command_line.py
-@@ -33,7 +33,7 @@ class CommandLineEncodingTests(unittest.TestCase):
- if argv_encoding == 'ascii': # cannot test
- return
- sys.argv.append('--source-url=test.txt') # pure ASCII argument
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- sys.argv.append(u'--title=Dornröschen'.encode(argv_encoding))
- else:
- sys.argv.append(u'--title=Dornröschen')
-diff --git a/test/test_error_reporting.py b/test/test_error_reporting.py
-index 4b337e3..d1509c6 100644
---- a/test/test_error_reporting.py
-+++ b/test/test_error_reporting.py
-@@ -25,10 +25,10 @@ instances like, e.g., ::
- unless the minimal required Python version has this problem fixed.
- """
-
--import unittest
- import sys
- import os
- import codecs
-+import unittest
- from io import StringIO, BytesIO
-
- import DocutilsTestSupport # must be imported before docutils
-@@ -46,7 +46,7 @@ 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):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-diff --git a/test/test_functional.py b/test/test_functional.py
-index 5d3beb9..cdc75a0 100755
---- a/test/test_functional.py
-+++ b/test/test_functional.py
-@@ -160,7 +160,7 @@ expected output and check it in:
- output = docutils.core.publish_file(**params)
- # ensure output is unicode
- output_encoding = params.get('output_encoding', 'utf-8')
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- try:
- output = output.decode(output_encoding)
- except UnicodeDecodeError:
-@@ -172,14 +172,14 @@ expected output and check it in:
- no_expected = self.no_expected_template % {
- 'exp': expected_path, 'out': params['destination_path']}
- self.assertTrue(os.access(expected_path, os.R_OK), no_expected)
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- f = open(expected_path, 'r')
- else: # samples are UTF8 encoded. 'rb' leads to errors with Python 3!
- f = open(expected_path, 'r', encoding='utf-8')
- # Normalize line endings:
- expected = '\n'.join(f.read().splitlines())
- f.close()
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- try:
- expected = expected.decode(output_encoding)
- except UnicodeDecodeError:
-@@ -193,7 +193,7 @@ expected output and check it in:
- diff = ''.join(difflib.unified_diff(
- expected.splitlines(True), output.splitlines(True),
- expected_path, params['destination_path']))
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- diff = diff.encode(sys.stderr.encoding or 'ascii', 'replace')
- print('\n%s:' % (self,), file=sys.stderr)
- print(diff, file=sys.stderr)
-diff --git a/test/test_io.py b/test/test_io.py
-index 737a19d..6294613 100755
---- a/test/test_io.py
-+++ b/test/test_io.py
-@@ -103,7 +103,7 @@ print("hello world")
- # if no encoding is given, try decoding with utf8:
- input = io.FileInput(source_path='functional/input/cyrillic.txt')
- data = input.read()
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- # in Py3k, the locale encoding is used without --input-encoding
- # skipping the heuristic
- self.assertEqual(input.successful_encoding, 'utf-8')
-@@ -111,7 +111,7 @@ print("hello world")
- def test_heuristics_no_utf8(self):
- # if no encoding is given and decoding with utf8 fails,
- # use either the locale encoding (if specified) or latin-1:
-- if sys.version_info >= (3,0) and locale_encoding != "utf8":
-+ if sys.version_info >= (3, 0) and locale_encoding != "utf8":
- # in Py3k, the locale encoding is used without --input-encoding
- # skipping the heuristic unless decoding fails.
- return
-@@ -169,7 +169,7 @@ class OutputTests(unittest.TestCase):
- self.assertEqual(self.udrain.getvalue(), self.udata)
-
- def test_write_utf8(self):
-- if sys.version_info >= (3,0):
-+ if sys.version_info >= (3, 0):
- fo = io.FileOutput(destination=self.udrain, encoding='utf8',
- autoclose=False)
- fo.write(self.udata)
-@@ -189,7 +189,7 @@ class OutputTests(unittest.TestCase):
- self.assertEqual(self.bdrain.getvalue(), self.bdata)
-
- # Test for Python 3 features:
-- if sys.version_info >= (3,0):
-+ if sys.version_info >= (3, 0):
- def test_write_bytes_to_stdout(self):
- # try writing data to `destination.buffer`, if data is
- # instance of `bytes` and writing to `destination` fails:
-diff --git a/test/test_language.py b/test/test_language.py
-index 455357a..31ac613 100755
---- a/test/test_language.py
-+++ b/test/test_language.py
-@@ -26,7 +26,7 @@ _reporter = docutils.utils.new_reporter('', _settings)
-
- reference_language = 'en'
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-diff --git a/test/test_nodes.py b/test/test_nodes.py
-index 6805799..ec8824e 100755
---- a/test/test_nodes.py
-+++ b/test/test_nodes.py
-@@ -17,7 +17,7 @@ from DocutilsTestSupport import nodes, utils
-
- debug = False
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-@@ -36,7 +36,7 @@ class TextTests(unittest.TestCase):
- self.assertEqual(self.text.shortrepr(),
- r"<#text: 'Line 1.\nLine 2.'>")
- self.assertEqual(nodes.reprunicode('foo'), u'foo')
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- self.assertEqual(repr(self.unicode_text), r"<#text: 'M\xf6hren'>")
- else:
- self.assertEqual(repr(self.unicode_text), u"<#text: 'Möhren'>")
-@@ -65,7 +65,7 @@ class TextTests(unittest.TestCase):
- self.assertEqual(stripped2, u's noc')
-
- def test_asciirestriction(self):
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- self.assertRaises(UnicodeDecodeError, nodes.Text,
- b'hol%s' % chr(224))
- else:
-@@ -98,7 +98,7 @@ class ElementTests(unittest.TestCase):
- del element['attr']
- element['mark'] = u'\u2022'
- self.assertEqual(repr(element), '<Element: >')
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- self.assertEqual(str(element), '<Element mark="\\u2022"/>')
- else:
- self.assertEqual(str(element), u'<Element mark="\u2022"/>')
-@@ -106,7 +106,7 @@ class ElementTests(unittest.TestCase):
- self.assertEqual(dom.toxml(), u'<Element mark="\u2022"/>')
- dom.unlink()
- element['names'] = ['nobody', u'имя', u'näs']
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- self.assertEqual(repr(element),
- '<Element "nobody; \\u0438\\u043c\\u044f; n\\xe4s": >')
- else:
-@@ -117,7 +117,7 @@ class ElementTests(unittest.TestCase):
- element = nodes.Element('text\nmore', nodes.Text('text\nmore'))
- uelement = nodes.Element(u'grün', nodes.Text(u'grün'))
- self.assertEqual(repr(element), r"<Element: <#text: 'text\nmore'>>")
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- self.assertEqual(repr(uelement), "<Element: <#text: 'gr\\xfcn'>>")
- else:
- self.assertEqual(repr(uelement), u"<Element: <#text: 'grün'>>")
-@@ -341,7 +341,7 @@ class MiscTests(unittest.TestCase):
- self.assertTrue(isinstance(nodes.reprunicode('foo'), unicode))
- self.assertEqual(nodes.reprunicode('foo'), u'foo')
- self.assertEqual(nodes.reprunicode(u'Möhre'), u'Möhre')
-- if sys.version_info < (3,0): # strip leading "u" from representation
-+ if sys.version_info < (3, 0): # strip leading "u" from representation
- self.assertEqual(repr(nodes.reprunicode(u'Möhre')),
- repr(u'Möhre')[1:])
- else: # no change to `unicode` under Python 3k
-@@ -350,7 +350,7 @@ class MiscTests(unittest.TestCase):
- def test_ensure_str(self):
- self.assertTrue(isinstance(nodes.ensure_str(u'über'), str))
- self.assertEqual(nodes.ensure_str('over'), 'over')
-- if sys.version_info < (3,0): # strip leading "u" from representation
-+ if sys.version_info < (3, 0): # strip leading "u" from representation
- self.assertEqual(nodes.ensure_str(u'über'), r'\xfcber')
- else:
- self.assertEqual(nodes.ensure_str(u'über'), r'über')
-diff --git a/test/test_parsers/test_parser.py b/test/test_parsers/test_parser.py
-index 6c57963..d2142b4 100644
---- a/test/test_parsers/test_parser.py
-+++ b/test/test_parsers/test_parser.py
-@@ -23,7 +23,7 @@ class RstParserTests(unittest.TestCase):
- document = utils.new_document('test data', frontend.OptionParser(
- components=(parser, )).get_default_values())
-
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- # supplying string input is supported, but only if ascii-decodable
- self.assertRaises(UnicodeDecodeError,
- parser.parse, b'hol%s' % chr(224), document)
-diff --git a/test/test_parsers/test_rst/test_directives/test_include.py b/test/test_parsers/test_rst/test_directives/test_include.py
-index 92d0193..31a5c02 100755
---- a/test/test_parsers/test_rst/test_directives/test_include.py
-+++ b/test/test_parsers/test_rst/test_directives/test_include.py
-@@ -16,7 +16,7 @@ from docutils.parsers.rst import states
- from docutils.utils.code_analyzer import with_pygments
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unichr = chr # noqa
-
-
-@@ -48,7 +48,7 @@ include_literal = mydir('include_literal.txt')
- utf_16_file = mydir('utf-16.csv')
- utf_16_error_str = ("UnicodeDecodeError: 'ascii' codec can't decode byte 0xfe "
- "in position 0: ordinal not in range(128)")
--if sys.version_info < (3,0):
-+if sys.version_info < (3, 0):
- utf_16_error_str = ("UnicodeError: Unable to decode input data. "
- "Tried the following encodings: 'ascii'.\n"
- " (%s)" % utf_16_error_str)
-diff --git a/test/test_parsers/test_rst/test_directives/test_raw.py b/test/test_parsers/test_rst/test_directives/test_raw.py
-index 2da962a..b86b23f 100755
---- a/test/test_parsers/test_rst/test_directives/test_raw.py
-+++ b/test/test_parsers/test_rst/test_directives/test_raw.py
-@@ -26,7 +26,7 @@ utf_16_file = os.path.join(mydir, 'utf-16.csv')
- utf_16_file_rel = DocutilsTestSupport.utils.relative_path(None, utf_16_file)
- utf_16_error_str = ("UnicodeDecodeError: 'ascii' codec can't decode byte 0xfe "
- "in position 0: ordinal not in range(128)")
--if sys.version_info < (3,0):
-+if sys.version_info < (3, 0):
- utf_16_error_str = ("UnicodeError: Unable to decode input data. "
- "Tried the following encodings: 'ascii'.\n"
- " (%s)" % utf_16_error_str)
-diff --git a/test/test_parsers/test_rst/test_directives/test_tables.py b/test/test_parsers/test_rst/test_directives/test_tables.py
-index cc450f3..ca27f9a 100755
---- a/test/test_parsers/test_rst/test_directives/test_tables.py
-+++ b/test/test_parsers/test_rst/test_directives/test_tables.py
-@@ -18,7 +18,7 @@ from docutils.parsers.rst.directives import tables
- from . import DocutilsTestSupport
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
- unichr = chr # noqa
-
-diff --git a/test/test_parsers/test_rst/test_directives/test_unicode.py b/test/test_parsers/test_rst/test_directives/test_unicode.py
-index 576bc1d..b99b5d0 100755
---- a/test/test_parsers/test_rst/test_directives/test_unicode.py
-+++ b/test/test_parsers/test_rst/test_directives/test_unicode.py
-@@ -14,7 +14,7 @@ import sys
- from . import DocutilsTestSupport
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unichr = chr # noqa
-
-
-diff --git a/tools/dev/create_unimap.py b/tools/dev/create_unimap.py
-index 808861d..74e8bc7 100755
---- a/tools/dev/create_unimap.py
-+++ b/tools/dev/create_unimap.py
-@@ -14,7 +14,7 @@ from xml.dom import minidom
- import sys
- import pprint
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str #noqa
- else:
- bytes = str # noqa
-@@ -22,7 +22,7 @@ else:
-
-
- 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)
-
-diff --git a/tools/dev/generate_punctuation_chars.py b/tools/dev/generate_punctuation_chars.py
-index cfe97df..9f211b9 100644
---- a/tools/dev/generate_punctuation_chars.py
-+++ b/tools/dev/generate_punctuation_chars.py
-@@ -38,7 +38,7 @@ from __future__ import print_function
- import sys
- import unicodedata
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unichr = chr # unichr not available in Py3k
- else:
- import codecs
-@@ -361,7 +361,7 @@ if __name__ == '__main__':
- # Import the punctuation_chars module from the source
- # or Py3k build path for local Python modules::
-
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- sys.path.insert(0, '../../docutils')
- else:
- sys.path.insert(0, '../../build/lib')
-diff --git a/tools/dev/unicode2rstsubs.py b/tools/dev/unicode2rstsubs.py
-index ac38bf4..028af78 100755
---- a/tools/dev/unicode2rstsubs.py
-+++ b/tools/dev/unicode2rstsubs.py
-@@ -48,7 +48,7 @@ def main(argv=None):
- inpath = 'unicode.xml'
- if not os.path.isfile(inpath):
- usage(argv[0], 1, 'No such file: "%s".' % inpath)
-- if sys.version_info >= (3,0):
-+ if sys.version_info >= (3, 0):
- infile = open(inpath, mode='rb')
- else:
- infile = open(inpath)
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0020-py3-Handle-StringIO-to-io-transition.patch b/srcpkgs/python-docutils/patches/0020-py3-Handle-StringIO-to-io-transition.patch
deleted file mode 100644
index 164063dd5c3..00000000000
--- a/srcpkgs/python-docutils/patches/0020-py3-Handle-StringIO-to-io-transition.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 035c67105f3cbd12ccf6a708f38f1f7f5a17c699 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Wed, 20 Nov 2019 00:11:04 +0700
-Subject: [PATCH 20/26] py3: Handle 'StringIO' to 'io' transition.
-
-This isn't so much a rename as a migration, since things don't do the
-same thing.
-
-Based on patch by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8368 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/writers/docutils_xml.py | 7 ++++++-
- test/test_utils.py | 1 +
- test/test_writers/test_docutils_xml.py | 7 ++++++-
- 3 files changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/docutils/writers/docutils_xml.py b/docutils/writers/docutils_xml.py
-index 60ee07b..51ad6bd 100644
---- a/docutils/writers/docutils_xml.py
-+++ b/docutils/writers/docutils_xml.py
-@@ -25,11 +25,16 @@ if "_xmlplus" in xml.__path__[0]: # PyXML sub-module
- xml.__path__.reverse() # If both are available, prefer stdlib over PyXML
-
- import xml.sax.saxutils
--from StringIO import StringIO
-
- import docutils
- from docutils import frontend, writers, nodes
-
-+if sys.version_info >= (3, 0):
-+ from io import StringIO # noqa
-+else:
-+ from StringIO import StringIO # noqa
-+
-+
- if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-diff --git a/test/test_utils.py b/test/test_utils.py
-index 59e29c8..cb1ec9e 100755
---- a/test/test_utils.py
-+++ b/test/test_utils.py
-@@ -13,6 +13,7 @@ import unittest
- import sys
- import os
- from DocutilsTestSupport import docutils, utils, nodes
-+
- try:
- from io import StringIO
- except ImportError: # io is new in Python 2.6
-diff --git a/test/test_writers/test_docutils_xml.py b/test/test_writers/test_docutils_xml.py
-index 5a6cda3..ced3473 100755
---- a/test/test_writers/test_docutils_xml.py
-+++ b/test/test_writers/test_docutils_xml.py
-@@ -15,12 +15,17 @@ Test for docutils XML writer.
- """
- from __future__ import absolute_import
-
--from StringIO import StringIO
-+import sys
-
- from . import DocutilsTestSupport # must be imported before docutils
- import docutils
- import docutils.core
-
-+if sys.version_info >= (3, 0):
-+ from io import StringIO
-+else:
-+ from StringIO import StringIO
-+
- # sample strings
- # --------------
-
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0021-Remove-auxiliary-Python-2-3-compatibility-definition.patch b/srcpkgs/python-docutils/patches/0021-Remove-auxiliary-Python-2-3-compatibility-definition.patch
deleted file mode 100644
index cea269b1b69..00000000000
--- a/srcpkgs/python-docutils/patches/0021-Remove-auxiliary-Python-2-3-compatibility-definition.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 3a610d205259bcf7f22fd8c33c78ffb70829989d Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Wed, 20 Nov 2019 00:14:11 +0700
-Subject: [PATCH 21/26] Remove auxiliary Python 2/3 compatibility definition
- module.
-
-No longer required since setting minimal supported version to 2.7.
-The remaining issues are now handled directly in the affected modules.
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8369 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/_compat.py | 24 ------------------------
- test/test_publisher.py | 8 +++++++-
- test/test_writers/test_odt.py | 3 +--
- 3 files changed, 8 insertions(+), 27 deletions(-)
- delete mode 100644 docutils/_compat.py
-
-diff --git a/docutils/_compat.py b/docutils/_compat.py
-deleted file mode 100644
-index 1ff959c..0000000
---- a/docutils/_compat.py
-+++ /dev/null
-@@ -1,24 +0,0 @@
--# $Id: _compat.py 8164 2017-08-14 11:28:48Z milde $
--# Author: Georg Brandl <georg@python.org>
--# Copyright: This module has been placed in the public domain.
--
--"""
--Python 2/3 compatibility definitions.
--
--This module currently provides the following helper symbols:
--
--* u_prefix (unicode repr prefix: 'u' in 2.x, '' in 3.x)
-- (Required in docutils/test/test_publisher.py)
--* BytesIO (a StringIO class that works with bytestrings)
--"""
--
--import sys
--
--if sys.version_info < (3, 0):
-- u_prefix = 'u'
-- from StringIO import StringIO as BytesIO
--else:
-- u_prefix = b''
-- # using this hack since 2to3 "fixes" the relative import
-- # when using ``from io import BytesIO``
-- BytesIO = __import__('io').BytesIO
-diff --git a/test/test_publisher.py b/test/test_publisher.py
-index 04d9c71..2c3845c 100755
---- a/test/test_publisher.py
-+++ b/test/test_publisher.py
-@@ -9,10 +9,16 @@ Test the `Publisher` facade and the ``publish_*`` convenience functions.
- """
-
- import pickle
-+import sys
-+
- import DocutilsTestSupport # must be imported before docutils
- import docutils
- from docutils import core, nodes, io
--from docutils._compat import u_prefix
-+
-+if sys.version_info < (3, 0):
-+ u_prefix = 'u'
-+else:
-+ u_prefix = b''
-
-
- test_document = """\
-diff --git a/test/test_writers/test_odt.py b/test/test_writers/test_odt.py
-index a47b7fb..6ec3ef2 100755
---- a/test/test_writers/test_odt.py
-+++ b/test/test_writers/test_odt.py
-@@ -36,12 +36,11 @@ import os
- import zipfile
- from xml.dom import minidom
- import tempfile
-+from io import BytesIO
-
- from . import DocutilsTestSupport
--
- import docutils
- import docutils.core
--from docutils._compat import BytesIO
-
- #
- # Globals
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0022-py3-Handle-urllib-urllib2-to-urlib.-rename.patch b/srcpkgs/python-docutils/patches/0022-py3-Handle-urllib-urllib2-to-urlib.-rename.patch
deleted file mode 100644
index 0fa629ec2e9..00000000000
--- a/srcpkgs/python-docutils/patches/0022-py3-Handle-urllib-urllib2-to-urlib.-rename.patch
+++ /dev/null
@@ -1,202 +0,0 @@
-From 5ee24817411d9057c738dc1cd7cda8fc5fe03dd6 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 27 Aug 2019 12:10:39 +0000
-Subject: [PATCH 22/26] py3: Handle 'urllib', 'urllib2' to 'urlib.*' rename
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8370 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/parsers/rst/directives/images.py | 11 +++++++++--
- docutils/parsers/rst/directives/misc.py | 10 +++++++---
- docutils/parsers/rst/directives/tables.py | 11 ++++++++---
- docutils/utils/math/math2html.py | 8 ++++++--
- docutils/writers/_html_base.py | 7 +++++--
- docutils/writers/latex2e/__init__.py | 9 +++++++--
- 6 files changed, 42 insertions(+), 14 deletions(-)
-
-diff --git a/docutils/parsers/rst/directives/images.py b/docutils/parsers/rst/directives/images.py
-index c813fa3..383075b 100644
---- a/docutils/parsers/rst/directives/images.py
-+++ b/docutils/parsers/rst/directives/images.py
-@@ -10,12 +10,13 @@ __docformat__ = 'reStructuredText'
-
-
- import sys
--import urllib
-+
- from docutils import nodes, utils
- from docutils.parsers.rst import Directive
- from docutils.parsers.rst import directives, states
- from docutils.nodes import fully_normalize_name, whitespace_normalize_name
- from docutils.parsers.rst.roles import set_classes
-+
- try: # check for the Python Imaging Library
- import PIL.Image
- except ImportError:
-@@ -26,6 +27,12 @@ except ImportError:
- except ImportError:
- PIL = None
-
-+if sys.version_info >= (3, 0):
-+ from urllib.request import url2pathname
-+else:
-+ from urllib import url2pathname
-+
-+
- class Image(Directive):
-
- align_h_values = ('left', 'center', 'right')
-@@ -125,7 +132,7 @@ class Figure(Image):
- figure_node = nodes.figure('', image_node)
- if figwidth == 'image':
- if PIL and self.state.document.settings.file_insertion_enabled:
-- imagepath = urllib.url2pathname(image_node['uri'])
-+ imagepath = url2pathname(image_node['uri'])
- try:
- img = PIL.Image.open(
- imagepath.encode(sys.getfilesystemencoding()))
-diff --git a/docutils/parsers/rst/directives/misc.py b/docutils/parsers/rst/directives/misc.py
-index 0fc3610..f22dae2 100644
---- a/docutils/parsers/rst/directives/misc.py
-+++ b/docutils/parsers/rst/directives/misc.py
-@@ -227,10 +227,14 @@ class Raw(Directive):
- # Do not import urllib2 at the top of the module because
- # it may fail due to broken SSL dependencies, and it takes
- # about 0.15 seconds to load.
-- import urllib2
-+ if sys.version_info >= (3, 0):
-+ from urllib.request import urlopen
-+ from urllib.error import URLError
-+ else:
-+ from urllib2 import urlopen, URLError
- try:
-- raw_text = urllib2.urlopen(source).read()
-- except (urllib2.URLError, IOError, OSError) as error:
-+ raw_text = urlopen(source).read()
-+ except (URLError, IOError, OSError) as error:
- raise self.severe(u'Problems with "%s" directive URL "%s":\n%s.'
- % (self.name, self.options['url'], ErrorString(error)))
- raw_file = io.StringInput(source=raw_text, source_path=source,
-diff --git a/docutils/parsers/rst/directives/tables.py b/docutils/parsers/rst/directives/tables.py
-index b698e08..6284ab7 100644
---- a/docutils/parsers/rst/directives/tables.py
-+++ b/docutils/parsers/rst/directives/tables.py
-@@ -332,11 +332,16 @@ class CSVTable(Table):
- # Do not import urllib2 at the top of the module because
- # it may fail due to broken SSL dependencies, and it takes
- # about 0.15 seconds to load.
-- import urllib2
-+ if sys.version_info >= (3, 0):
-+ from urllib.request import urlopen
-+ from urllib.error import URLError
-+ else:
-+ from urllib2 import urlopen, URLError
-+
- source = self.options['url']
- try:
-- csv_text = urllib2.urlopen(source).read()
-- except (urllib2.URLError, IOError, OSError, ValueError) as error:
-+ csv_text = urlopen(source).read()
-+ except (URLError, IOError, OSError, ValueError) as error:
- severe = self.state_machine.reporter.severe(
- 'Problems with "%s" directive URL "%s":\n%s.'
- % (self.name, self.options['url'], SafeString(error)),
-diff --git a/docutils/utils/math/math2html.py b/docutils/utils/math/math2html.py
-index 475519f..757dec0 100644
---- a/docutils/utils/math/math2html.py
-+++ b/docutils/utils/math/math2html.py
-@@ -27,7 +27,11 @@ import io
- import os.path
- import sys
- import unicodedata
--import urllib
-+
-+if sys.version_info >= (3, 0):
-+ from urllib.parse import quote_plus
-+else:
-+ from urllib import quote_plus
-
-
- if sys.version_info >= (3, 0):
-@@ -2927,7 +2931,7 @@ class Formula(Container):
-
- def googlecharts(self):
- "Make the contents using Google Charts http://code.google.com/apis/chart/."
-- url = FormulaConfig.urls['googlecharts'] + urllib.quote_plus(self.parsed)
-+ url = FormulaConfig.urls['googlecharts'] + quote_plus(self.parsed)
- img = '<img class="chart" src="' + url + '" alt="' + self.parsed + '"/>'
- self.contents = [Constant(img)]
-
-diff --git a/docutils/writers/_html_base.py b/docutils/writers/_html_base.py
-index a957311..f91b06c 100644
---- a/docutils/writers/_html_base.py
-+++ b/docutils/writers/_html_base.py
-@@ -20,7 +20,6 @@
- import sys
- import os.path
- import re
--import urllib
-
- try: # check for the Python Imaging Library
- import PIL.Image
-@@ -39,6 +38,10 @@ from docutils.transforms import writer_aux
- from docutils.utils.math import (unichar2tex, pick_math_environment,
- math2html, latex2mathml, tex2mathml_extern)
-
-+if sys.version_info >= (3, 0):
-+ from urllib.request import url2pathname
-+else:
-+ from urllib import url2pathname
-
- if sys.version_info >= (3, 0):
- unicode = str # noqa
-@@ -923,7 +926,7 @@ class HTMLTranslator(nodes.NodeVisitor):
- if 'scale' in node:
- if (PIL and not ('width' in node and 'height' in node)
- and self.settings.file_insertion_enabled):
-- imagepath = urllib.url2pathname(uri)
-+ imagepath = url2pathname(uri)
- try:
- img = PIL.Image.open(
- imagepath.encode(sys.getfilesystemencoding()))
-diff --git a/docutils/writers/latex2e/__init__.py b/docutils/writers/latex2e/__init__.py
-index 05b55eb..a60de48 100644
---- a/docutils/writers/latex2e/__init__.py
-+++ b/docutils/writers/latex2e/__init__.py
-@@ -17,16 +17,21 @@ import sys
- import os
- import re
- import string
--import urllib
-+
- try:
- import roman
- except ImportError:
- import docutils.utils.roman as roman
-+
- from docutils import frontend, nodes, languages, writers, utils, io
- from docutils.utils.error_reporting import SafeString
- from docutils.transforms import writer_aux
- from docutils.utils.math import pick_math_environment, unichar2tex
-
-+if sys.version_info >= (3, 0):
-+ from urllib.request import url2pathname
-+else:
-+ from urllib import url2pathname
-
- if sys.version_info >= (3, 0):
- unicode = str # noqa
-@@ -2369,7 +2374,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
- self.requirements['graphicx'] = self.graphicx_package
- attrs = node.attributes
- # Convert image URI to a local file path
-- imagepath = urllib.url2pathname(attrs['uri']).replace('\\', '/')
-+ imagepath = url2pathname(attrs['uri']).replace('\\', '/')
- # alignment defaults:
- if not 'align' in attrs:
- # Set default align of image in a figure to 'center'
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0023-py3-Fix-magic-methods.patch b/srcpkgs/python-docutils/patches/0023-py3-Fix-magic-methods.patch
deleted file mode 100644
index c8aae35ae7a..00000000000
--- a/srcpkgs/python-docutils/patches/0023-py3-Fix-magic-methods.patch
+++ /dev/null
@@ -1,352 +0,0 @@
-From 0a68965b7f5880aeb8642a081ff5ebd86a0d1c4e Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 27 Aug 2019 12:10:52 +0000
-Subject: [PATCH 23/26] py3: Fix magic methods
-
-Python 3 uses '__bool__' and '__next__', where Python 2 used
-'__nonzero__' and 'next'. Use the new names but add aliases.
-
-Based on patch by Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8371 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/nodes.py | 8 +--
- docutils/utils/math/math2html.py | 93 +++++++++++++++++++++++++++-----
- docutils/writers/manpage.py | 6 ++-
- 3 files changed, 89 insertions(+), 18 deletions(-)
-
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index dd9c4b6..6fffa56 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -53,7 +53,7 @@ class Node(object):
- line = None
- """The line number (1-based) of the beginning of this Node in `source`."""
-
-- def __nonzero__(self):
-+ def __bool__(self):
- """
- Node instances are always true, even if they're empty. A node is more
- than a simple container. Its boolean "truth" does not depend on
-@@ -64,6 +64,9 @@ class Node(object):
- """
- return True
-
-+ if sys.version_info < (3, 0):
-+ __nonzero__ = __bool__
-+
- 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
-@@ -544,8 +547,7 @@ class Element(Node):
- else:
- return self.emptytag()
-
-- if sys.version_info > (3, 0):
-- # 2to3 doesn't convert __unicode__ to __str__
-+ if sys.version_info >= (3, 0):
- __str__ = __unicode__
-
- def starttag(self, quoteattr=None):
-diff --git a/docutils/utils/math/math2html.py b/docutils/utils/math/math2html.py
-index 757dec0..a7e2aed 100644
---- a/docutils/utils/math/math2html.py
-+++ b/docutils/utils/math/math2html.py
-@@ -1313,6 +1313,9 @@ class BranchOptions(object):
- "String representation"
- return 'options for ' + self.name + ': ' + unicode(self.options)
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-
- class Cloner(object):
- "An object used to clone other objects."
-@@ -1453,6 +1456,10 @@ class Parser(object):
- "Return a description"
- return self.__class__.__name__ + ' (' + unicode(self.begin) + ')'
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class LoneCommand(Parser):
- "A parser for just one command line"
-
-@@ -1986,6 +1993,10 @@ class EndingList(object):
- string = string[:-1]
- return string + ']'
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class PositionEnding(object):
- "An ending for a parsing position"
-
-@@ -2004,6 +2015,8 @@ class PositionEnding(object):
- string += ' (optional)'
- return string
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-
-
- class Position(Globable):
-@@ -2046,11 +2059,14 @@ class Position(Globable):
- self.skip(current)
- return current
-
-- def next(self):
-+ def __next__(self):
- "Advance the position and return the next character."
- self.skipcurrent()
- return self.current()
-
-+ if sys.version_info < (3, 0):
-+ next = __next__
-+
- def checkskip(self, string):
- "Check for a string at the given position; if there, skip it"
- if not self.checkfor(string):
-@@ -2312,6 +2328,10 @@ class Container(object):
- return self.__class__.__name__
- return self.__class__.__name__ + '@' + unicode(self.begin)
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class BlackBox(Container):
- "A container that does not output anything"
-
-@@ -2370,7 +2390,7 @@ class StringContainer(Container):
- def extracttext(self):
- "Return all text."
- return self.string
--
-+
- def __unicode__(self):
- "Return a printable representation."
- result = 'StringContainer'
-@@ -2381,6 +2401,10 @@ class StringContainer(Container):
- ellipsis = ''
- return result + ' (' + self.string.strip()[:15] + ellipsis + ')'
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class Constant(StringContainer):
- "A constant string"
-
-@@ -2392,6 +2416,10 @@ class Constant(StringContainer):
- def __unicode__(self):
- return 'Constant: ' + self.string
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class TaggedText(Container):
- "Text inside a tag"
-
-@@ -2421,9 +2449,8 @@ class TaggedText(Container):
- return 'Tagged <unknown tag>'
- return 'Tagged <' + self.output.tag + '>'
-
--
--
--
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-
-
- class DocumentParameters(object):
-@@ -2555,19 +2582,12 @@ class MacroParser(FormulaParser):
- "See if the formula is inlined"
- self.begin = reader.linenumber + 1
- return ['inline']
--
-+
- def parse(self, reader):
- "Parse the formula until the end"
- formula = self.parsemultiliner(reader, self.parent.start, self.ending)
- reader.nextline()
- return formula
--
--
--
--
--
--
--
-
-
- class FormulaBit(Container):
-@@ -2614,6 +2634,10 @@ class FormulaBit(Container):
- "Get a string representation"
- return self.__class__.__name__ + ' read in ' + self.original
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class TaggedBit(FormulaBit):
- "A tagged string in a formula"
-
-@@ -2656,6 +2680,10 @@ class FormulaConstant(Constant):
- "Return a printable representation."
- return 'Formula constant: ' + self.string
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class RawText(FormulaBit):
- "A bit of text inside a formula"
-
-@@ -2739,6 +2767,10 @@ class WhiteSpace(FormulaBit):
- "Return a printable representation."
- return 'Whitespace: *' + self.original + '*'
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class Bracket(FormulaBit):
- "A {} bracket inside a formula"
-
-@@ -2822,7 +2854,6 @@ class SquareBracket(Bracket):
- return bracket
-
-
--
- class MathsProcessor(object):
- "A processor for a maths construction inside the FormulaProcessor."
-
-@@ -2834,6 +2865,10 @@ class MathsProcessor(object):
- "Return a printable description."
- return 'Maths processor ' + self.__class__.__name__
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class FormulaProcessor(object):
- "A processor specifically for formulas."
-
-@@ -2997,6 +3032,10 @@ class Formula(Container):
- return 'Formula (' + self.partkey.number + ')'
- return 'Unnumbered formula'
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class WholeFormula(FormulaBit):
- "Parse a whole formula"
-
-@@ -3229,6 +3268,10 @@ class NumberCounter(object):
- result += ' in mode ' + self.mode
- return result
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class DependentCounter(NumberCounter):
- "A counter which depends on another one (the master)."
-
-@@ -3780,6 +3823,10 @@ class Link(Container):
- result += ' to ' + self.url
- return result
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class URL(Link):
- "A clickable URL"
-
-@@ -3948,6 +3995,10 @@ class Label(Link):
- return 'Unnamed label'
- return 'Label ' + self.key
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class Reference(Link):
- "A reference to a label."
-
-@@ -4008,6 +4059,8 @@ class Reference(Link):
- "Return a printable representation."
- return 'Reference ' + self.key
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-
-
- class FormulaCommand(FormulaBit):
-@@ -4630,6 +4683,10 @@ class LimitPreviousCommand(LimitCommand):
- "Return a printable representation."
- return 'Limit previous command'
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class LimitsProcessor(MathsProcessor):
- "A processor for limits inside an element."
-
-@@ -4854,6 +4911,10 @@ class ParameterDefinition(object):
- result += ' (empty)'
- return result
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class ParameterFunction(CommandBit):
- "A function with a variable number of parameters defined in a template."
- "The parameters are defined as a parameter definition."
-@@ -5306,6 +5367,10 @@ class FormulaMacro(Formula):
- "Return a printable representation."
- return 'Math macro'
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- FormulaFactory.types += [ MacroParameter ]
-
- FormulaCommand.types += [
-diff --git a/docutils/writers/manpage.py b/docutils/writers/manpage.py
-index df4f1a3..9809dd4 100644
---- a/docutils/writers/manpage.py
-+++ b/docutils/writers/manpage.py
-@@ -331,7 +331,7 @@ class Translator(nodes.NodeVisitor):
- elif style.endswith('roman'):
- self._indent = 5
-
-- def next(self):
-+ def __next__(self):
- if self._style == 'bullet':
- return self.enum_style[self._style]
- elif self._style == 'emdash':
-@@ -349,6 +349,10 @@ class Translator(nodes.NodeVisitor):
- return res.lower()
- else:
- return "%d." % self._cnt
-+
-+ if sys.version_info < (3, 0):
-+ next = __next__
-+
- def get_width(self):
- return self._indent
- def __repr__(self):
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0024-py3-Wrap-foo.keys-zip-foo-bar-in-list.patch b/srcpkgs/python-docutils/patches/0024-py3-Wrap-foo.keys-zip-foo-bar-in-list.patch
deleted file mode 100644
index b84a9dc6e5b..00000000000
--- a/srcpkgs/python-docutils/patches/0024-py3-Wrap-foo.keys-zip-foo-bar-in-list.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-From 7e601f5444051a78c0dc3fd6e3676193e7a30076 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 27 Aug 2019 12:11:15 +0000
-Subject: [PATCH 24/26] py3: Wrap 'foo.keys()', 'zip(foo, bar') in 'list'
-
-In Python 3, 'dict.keys()', 'zip' and 'map' no longer return a list but
-rather types 'dict_keys', 'zip' and 'map', respectively. You can't
-append to these types nor can you delete from them while in a loop. The
-simple solution to both issues is to wrap things in 'list'.
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8372 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/parsers/rst/tableparser.py | 2 +-
- docutils/statemachine.py | 2 +-
- docutils/utils/__init__.py | 2 +-
- docutils/utils/math/math2html.py | 2 +-
- docutils/writers/odf_odt/__init__.py | 3 +--
- test/DocutilsTestSupport.py | 2 +-
- test/test_functional.py | 2 +-
- test/test_language.py | 2 +-
- test/test_statemachine.py | 2 +-
- 9 files changed, 9 insertions(+), 10 deletions(-)
-
-diff --git a/docutils/parsers/rst/tableparser.py b/docutils/parsers/rst/tableparser.py
-index 937aec8..408d6d8 100644
---- a/docutils/parsers/rst/tableparser.py
-+++ b/docutils/parsers/rst/tableparser.py
-@@ -290,7 +290,7 @@ class GridTableParser(TableParser):
- rowindex = {}
- for i in range(len(rowseps)):
- rowindex[rowseps[i]] = i # row boundary -> row number mapping
-- colseps = self.colseps.keys() # list of column boundaries
-+ colseps = list(self.colseps.keys()) # list of column boundaries
- colseps.sort()
- colindex = {}
- for i in range(len(colseps)):
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index 6bc03f5..0cbf9d3 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -1297,7 +1297,7 @@ class ViewList(object):
- self.parent = None
-
- def sort(self, *args):
-- tmp = zip(self.data, self.items)
-+ tmp = list(zip(self.data, self.items))
- tmp.sort(*args)
- self.data = [entry[0] for entry in tmp]
- self.items = [entry[1] for entry in tmp]
-diff --git a/docutils/utils/__init__.py b/docutils/utils/__init__.py
-index cc1fd1a..437456b 100644
---- a/docutils/utils/__init__.py
-+++ b/docutils/utils/__init__.py
-@@ -618,7 +618,7 @@ def column_indices(text):
- """
- # TODO: account for asian wide chars here instead of using dummy
- # replacements in the tableparser?
-- string_indices = range(len(text))
-+ string_indices = list(range(len(text)))
- for index in find_combining_chars(text):
- string_indices[index] = None
- return [i for i in string_indices if i is not None]
-diff --git a/docutils/utils/math/math2html.py b/docutils/utils/math/math2html.py
-index a7e2aed..53dd836 100644
---- a/docutils/utils/math/math2html.py
-+++ b/docutils/utils/math/math2html.py
-@@ -2819,7 +2819,7 @@ class Bracket(FormulaBit):
-
- def innertext(self, pos):
- "Parse some text inside the bracket, following textual rules."
-- specialchars = FormulaConfig.symbolfunctions.keys()
-+ specialchars = list(FormulaConfig.symbolfunctions.keys())
- specialchars.append(FormulaConfig.starts['command'])
- specialchars.append(FormulaConfig.starts['bracket'])
- specialchars.append(Comment.start)
-diff --git a/docutils/writers/odf_odt/__init__.py b/docutils/writers/odf_odt/__init__.py
-index c79d4c1..ad32613 100644
---- a/docutils/writers/odf_odt/__init__.py
-+++ b/docutils/writers/odf_odt/__init__.py
-@@ -1169,8 +1169,7 @@ class ODFTranslator(nodes.GenericNodeVisitor):
- fin = os.popen("paperconf -s 2> /dev/null")
- content = fin.read()
- content = content.split()
-- content = map(float, content)
-- content = list(content)
-+ content = list(map(float, content))
- w, h = content
- except (IOError, ValueError):
- w, h = 612, 792 # default to Letter
-diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index 47ba83c..222c202 100644
---- a/test/DocutilsTestSupport.py
-+++ b/test/DocutilsTestSupport.py
-@@ -811,7 +811,7 @@ class HtmlWriterPublishPartsTestCase(WriterPublishTestCase):
- parts['html_prolog'] = parts['html_prolog'].replace(
- self.standard_html_prolog, '')
- # remove empty values:
-- for key in parts.keys():
-+ for key in list(parts.keys()):
- if not parts[key]:
- del parts[key]
- # standard output format:
-diff --git a/test/test_functional.py b/test/test_functional.py
-index cdc75a0..b02c250 100755
---- a/test/test_functional.py
-+++ b/test/test_functional.py
-@@ -152,7 +152,7 @@ expected output and check it in:
- del params['test_source']
- del params['test_destination']
- # Delete private stuff like params['__builtins__']:
-- for key in params.keys():
-+ for key in list(params.keys()):
- if key.startswith('_'):
- del params[key]
- # Get output (automatically written to the output/ directory
-diff --git a/test/test_language.py b/test/test_language.py
-index 31ac613..48cd06b 100755
---- a/test/test_language.py
-+++ b/test/test_language.py
-@@ -52,7 +52,7 @@ class LanguageTestSuite(DocutilsTestSupport.CustomTestSuite):
- match = self.language_module_pattern.match(mod)
- if match:
- languages[match.group(1)] = 1
-- self.languages = languages.keys()
-+ self.languages = list(languages.keys())
- # test language tag normalization:
- self.languages += ['en_gb', 'en_US', 'en-CA', 'de-DE', 'de-AT-1901',
- 'pt-BR', 'pt-foo-BR']
-diff --git a/test/test_statemachine.py b/test/test_statemachine.py
-index 6352ca4..87f5710 100755
---- a/test/test_statemachine.py
-+++ b/test/test_statemachine.py
-@@ -152,7 +152,7 @@ class SMWSTests(unittest.TestCase):
- self.sm.unlink()
-
- def test___init__(self):
-- self.assertEqual(self.sm.states.keys(), ['MockState'])
-+ self.assertEqual(list(self.sm.states.keys()), ['MockState'])
- self.assertEqual(len(self.sm.states['MockState'].transitions), 4)
-
- def test_get_indented(self):
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0025-Simplify-code.patch b/srcpkgs/python-docutils/patches/0025-Simplify-code.patch
deleted file mode 100644
index 05092a8f4e1..00000000000
--- a/srcpkgs/python-docutils/patches/0025-Simplify-code.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 1d4c3d48fd9a5606925562c1c97e67332578cc65 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 27 Aug 2019 12:11:30 +0000
-Subject: [PATCH 25/26] Simplify code.
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8373 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/parsers/rst/tableparser.py | 3 +--
- docutils/statemachine.py | 3 +--
- docutils/writers/odf_odt/__init__.py | 6 ++----
- test/DocutilsTestSupport.py | 10 +++-------
- 4 files changed, 7 insertions(+), 15 deletions(-)
-
-diff --git a/docutils/parsers/rst/tableparser.py b/docutils/parsers/rst/tableparser.py
-index 408d6d8..64a192f 100644
---- a/docutils/parsers/rst/tableparser.py
-+++ b/docutils/parsers/rst/tableparser.py
-@@ -290,8 +290,7 @@ class GridTableParser(TableParser):
- rowindex = {}
- for i in range(len(rowseps)):
- rowindex[rowseps[i]] = i # row boundary -> row number mapping
-- colseps = list(self.colseps.keys()) # list of column boundaries
-- colseps.sort()
-+ colseps = sorted(self.colseps.keys()) # list of column boundaries
- colindex = {}
- for i in range(len(colseps)):
- colindex[colseps[i]] = i # column boundary -> col number map
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index 0cbf9d3..ebb52ad 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -1297,8 +1297,7 @@ class ViewList(object):
- self.parent = None
-
- def sort(self, *args):
-- tmp = list(zip(self.data, self.items))
-- tmp.sort(*args)
-+ tmp = sorted(zip(self.data, self.items), *args)
- self.data = [entry[0] for entry in tmp]
- self.items = [entry[1] for entry in tmp]
- self.parent = None
-diff --git a/docutils/writers/odf_odt/__init__.py b/docutils/writers/odf_odt/__init__.py
-index ad32613..d03f8e0 100644
---- a/docutils/writers/odf_odt/__init__.py
-+++ b/docutils/writers/odf_odt/__init__.py
-@@ -1167,10 +1167,8 @@ class ODFTranslator(nodes.GenericNodeVisitor):
- def setup_paper(self, root_el):
- try:
- fin = os.popen("paperconf -s 2> /dev/null")
-- content = fin.read()
-- content = content.split()
-- content = list(map(float, content))
-- w, h = content
-+ dimensions = fin.read().split()
-+ w, h = (float(s) for s in dimensions)
- except (IOError, ValueError):
- w, h = 612, 792 # default to Letter
- finally:
-diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index 222c202..5e9fed9 100644
---- a/test/DocutilsTestSupport.py
-+++ b/test/DocutilsTestSupport.py
-@@ -810,14 +810,10 @@ class HtmlWriterPublishPartsTestCase(WriterPublishTestCase):
- self.standard_html_meta_value, '...')
- parts['html_prolog'] = parts['html_prolog'].replace(
- self.standard_html_prolog, '')
-- # remove empty values:
-- for key in list(parts.keys()):
-- if not parts[key]:
-- del parts[key]
-- # standard output format:
-- keys = sorted(parts.keys())
- output = []
-- for key in keys:
-+ for key in sorted(parts.keys()):
-+ if not parts[key]:
-+ continue
- output.append("%r: '''%s'''"
- % (key, parts[key]))
- if output[-1].endswith("\n'''"):
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0026-py3-Handle-os.getcwdu-to-os.getcwd-rename.patch b/srcpkgs/python-docutils/patches/0026-py3-Handle-os.getcwdu-to-os.getcwd-rename.patch
deleted file mode 100644
index fd46368beb2..00000000000
--- a/srcpkgs/python-docutils/patches/0026-py3-Handle-os.getcwdu-to-os.getcwd-rename.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From e90cfe945193ac99cc9ac7a439d1ccc2ad857a6c Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 27 Aug 2019 12:11:40 +0000
-Subject: [PATCH 26/26] py3: Handle 'os.getcwdu' to 'os.getcwd' rename
-
-We don't need to do the reverse since none of the callers seems to care.
-
-Based on patch by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8374 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/frontend.py | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/docutils/frontend.py b/docutils/frontend.py
-index 7bfff6a..372ca44 100644
---- a/docutils/frontend.py
-+++ b/docutils/frontend.py
-@@ -38,8 +38,10 @@ import optparse
- from optparse import SUPPRESS_HELP
- if sys.version_info >= (3, 0):
- from configparser import RawConfigParser
-+ from os import getcwd
- else:
- from ConfigParser import RawConfigParser
-+ from os import getcwdu as getcwd
-
- import docutils
- import docutils.utils
-@@ -256,7 +258,7 @@ def make_paths_absolute(pathdict, keys, base_path=None):
- `OptionParser.relative_path_settings`.
- """
- if base_path is None:
-- base_path = os.getcwdu() # type(base_path) == unicode
-+ base_path = os.getcwd() # type(base_path) == unicode
- # to allow combining non-ASCII cwd with unicode values in `pathdict`
- for key in keys:
- if key in pathdict:
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/test-import.patch b/srcpkgs/python-docutils/patches/test-import.patch
new file mode 100644
index 00000000000..12c22971680
--- /dev/null
+++ b/srcpkgs/python-docutils/patches/test-import.patch
@@ -0,0 +1,20 @@
+--- test/DocutilsTestSupport.py
++++ test/DocutilsTestSupport.py
+@@ -51,14 +51,9 @@
+
+ testroot = os.path.abspath(os.path.dirname(__file__) or os.curdir)
+ os.chdir(testroot)
+-if sys.version_info >= (3, 0):
+- sys.path.insert(0, os.path.normpath(os.path.join(testroot,
+- '..', 'build', 'lib')))
+- sys.path.append(os.path.normpath(os.path.join(testroot, '..',
+- 'build', 'lib', 'extras')))
+-else:
+- sys.path.insert(0, os.path.normpath(os.path.join(testroot, '..')))
+- sys.path.append(os.path.normpath(os.path.join(testroot, '..', 'extras')))
++builddir = 'build-%d.%d' % (sys.version_info.major, sys.version_info.minor)
++sys.path.insert(0, os.path.normpath(os.path.join(testroot, '..', builddir, 'lib')))
++sys.path.append(os.path.normpath(os.path.join(testroot, '..', builddir, 'lib', 'extras')))
+ sys.path.insert(0, testroot)
+
+ try:
diff --git a/srcpkgs/python-docutils/template b/srcpkgs/python-docutils/template
index a4c0bb915e0..32ab9f5e830 100644
--- a/srcpkgs/python-docutils/template
+++ b/srcpkgs/python-docutils/template
@@ -1,7 +1,7 @@
# Template file for 'python-docutils'
pkgname=python-docutils
-version=0.15.2
-revision=3
+version=0.16
+revision=1
archs=noarch
wrksrc="docutils-${version}"
build_style=python-module
@@ -14,9 +14,8 @@ maintainer="Alessio Sergi <al3hex@gmail.com>"
license="custom:Public Domain, BSD-2-Clause, GPL-3.0-or-later, Python-2.0"
homepage="http://docutils.sourceforge.net"
distfiles="${PYPI_SITE}/d/docutils/docutils-${version}.tar.gz"
-checksum=a2aeea129088da402665e92e0b25b04b073c04b2dce4ab65caaa38b7ce2e1a99
+checksum=c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc
checkdepends+="$depends python3-Pygments"
-patch_args="-Np1"
alternatives="
docutils:rst2html:/usr/bin/rst2html.py2
@@ -32,6 +31,11 @@ alternatives="
docutils:rst2xml:/usr/bin/rst2xml.py2
docutils:rstpep2html:/usr/bin/rstpep2html.py2"
+do_check() {
+ cd test
+ python3 alltests.py
+}
+
post_install() {
vlicense COPYING.txt COPYING
}
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PR PATCH] [Updated] python-docutils: update to 0.16
2020-01-18 9:18 [PR PATCH] python-docutils: update to 0.16 voidlinux-github
@ 2020-01-18 9:21 ` voidlinux-github
2020-01-18 15:29 ` [PR PATCH] [Merged]: " voidlinux-github
1 sibling, 0 replies; 3+ messages in thread
From: voidlinux-github @ 2020-01-18 9:21 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 326 bytes --]
There is an updated pull request by sgn against master on the void-packages repository
https://github.com/sgn/void-packages python-docutils-0.16
https://github.com/void-linux/void-packages/pull/18366
python-docutils: update to 0.16
A patch file from https://github.com/void-linux/void-packages/pull/18366.patch is attached
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: github-pr-python-docutils-0.16-18366.patch --]
[-- Type: text/x-diff, Size: 377340 bytes --]
From 2d81765792fcb1bbbcf1fedeaf1a896acaeb1db5 Mon Sep 17 00:00:00 2001
From: Doan Tran Cong Danh <congdanhqx@gmail.com>
Date: Wed, 25 Dec 2019 12:53:32 +0700
Subject: [PATCH] python-docutils: update to 0.16
---
.../0001-py3-Use-new-style-classes.patch | 394 ----
.../0002-py3-Switch-to-print-functions.patch | 1517 ---------------
...3-Switch-to-except-foo-as-bar-syntax.patch | 719 -------
...-py3-Add-aliases-for-removed-symbols.patch | 599 ------
...ve-some-additional-undefined-symbols.patch | 80 -
...deprecated-form-of-raising-exception.patch | 263 ---
...-Replace-sys.maxint-with-sys.maxsize.patch | 103 -
...s.SliceType-with-slice-remove-types..patch | 128 --
.../0009-py3-Use-absolute_import-future.patch | 1699 -----------------
...3-Use-sorted-foo-instead-of-foo.sort.patch | 236 ---
...mplify-code-following-recent-changes.patch | 49 -
...e-foo-bar-instead-of-type-foo-is-bar.patch | 120 --
.../0013-Consistent-Python-3-checks.patch | 594 ------
...4-py3-Replace-foo.next-with-next-foo.patch | 74 -
...lace-foo.has_key-bar-with-bar-in-foo.patch | 38 -
...-definition-of-nodes.Element.__conta.patch | 47 -
...-ConfigParser-to-configparser-rename.patch | 93 -
.../patches/0018-py3-Replace-ur-prefix.patch | 599 ------
...es-to-facilitate-integration-of-py3-.patch | 920 ---------
...py3-Handle-StringIO-to-io-transition.patch | 78 -
...-Python-2-3-compatibility-definition.patch | 91 -
...ndle-urllib-urllib2-to-urlib.-rename.patch | 202 --
.../patches/0023-py3-Fix-magic-methods.patch | 352 ----
...y3-Wrap-foo.keys-zip-foo-bar-in-list.patch | 147 --
.../patches/0025-Simplify-code.patch | 84 -
...andle-os.getcwdu-to-os.getcwd-rename.patch | 42 -
.../python-docutils/patches/test-import.patch | 20 +
srcpkgs/python-docutils/template | 14 +-
28 files changed, 28 insertions(+), 9274 deletions(-)
delete mode 100644 srcpkgs/python-docutils/patches/0001-py3-Use-new-style-classes.patch
delete mode 100644 srcpkgs/python-docutils/patches/0002-py3-Switch-to-print-functions.patch
delete mode 100644 srcpkgs/python-docutils/patches/0003-py3-Switch-to-except-foo-as-bar-syntax.patch
delete mode 100644 srcpkgs/python-docutils/patches/0004-py3-Add-aliases-for-removed-symbols.patch
delete mode 100644 srcpkgs/python-docutils/patches/0005-py3-Resolve-some-additional-undefined-symbols.patch
delete mode 100644 srcpkgs/python-docutils/patches/0006-py3-Replace-deprecated-form-of-raising-exception.patch
delete mode 100644 srcpkgs/python-docutils/patches/0007-py3-Replace-sys.maxint-with-sys.maxsize.patch
delete mode 100644 srcpkgs/python-docutils/patches/0008-py3-Replace-types.SliceType-with-slice-remove-types..patch
delete mode 100644 srcpkgs/python-docutils/patches/0009-py3-Use-absolute_import-future.patch
delete mode 100644 srcpkgs/python-docutils/patches/0010-py3-Use-sorted-foo-instead-of-foo.sort.patch
delete mode 100644 srcpkgs/python-docutils/patches/0011-Cleanup-simplify-code-following-recent-changes.patch
delete mode 100644 srcpkgs/python-docutils/patches/0012-Use-isinstance-foo-bar-instead-of-type-foo-is-bar.patch
delete mode 100644 srcpkgs/python-docutils/patches/0013-Consistent-Python-3-checks.patch
delete mode 100644 srcpkgs/python-docutils/patches/0014-py3-Replace-foo.next-with-next-foo.patch
delete mode 100644 srcpkgs/python-docutils/patches/0015-py3-Replace-foo.has_key-bar-with-bar-in-foo.patch
delete mode 100644 srcpkgs/python-docutils/patches/0016-Remove-duplicate-definition-of-nodes.Element.__conta.patch
delete mode 100644 srcpkgs/python-docutils/patches/0017-Handle-ConfigParser-to-configparser-rename.patch
delete mode 100644 srcpkgs/python-docutils/patches/0018-py3-Replace-ur-prefix.patch
delete mode 100644 srcpkgs/python-docutils/patches/0019-Formatting-changes-to-facilitate-integration-of-py3-.patch
delete mode 100644 srcpkgs/python-docutils/patches/0020-py3-Handle-StringIO-to-io-transition.patch
delete mode 100644 srcpkgs/python-docutils/patches/0021-Remove-auxiliary-Python-2-3-compatibility-definition.patch
delete mode 100644 srcpkgs/python-docutils/patches/0022-py3-Handle-urllib-urllib2-to-urlib.-rename.patch
delete mode 100644 srcpkgs/python-docutils/patches/0023-py3-Fix-magic-methods.patch
delete mode 100644 srcpkgs/python-docutils/patches/0024-py3-Wrap-foo.keys-zip-foo-bar-in-list.patch
delete mode 100644 srcpkgs/python-docutils/patches/0025-Simplify-code.patch
delete mode 100644 srcpkgs/python-docutils/patches/0026-py3-Handle-os.getcwdu-to-os.getcwd-rename.patch
create mode 100644 srcpkgs/python-docutils/patches/test-import.patch
diff --git a/srcpkgs/python-docutils/patches/0001-py3-Use-new-style-classes.patch b/srcpkgs/python-docutils/patches/0001-py3-Use-new-style-classes.patch
deleted file mode 100644
index 1014ee6298a..00000000000
--- a/srcpkgs/python-docutils/patches/0001-py3-Use-new-style-classes.patch
+++ /dev/null
@@ -1,394 +0,0 @@
-From 41f436c476b1cb6736050a12de0c9732c800019a Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 19 Nov 2019 23:40:58 +0700
-Subject: [PATCH 01/26] py3: Use new style classes
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8345 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/__init__.py | 2 +-
- docutils/core.py | 2 +-
- docutils/nodes.py | 54 +++++++++++++++++++++--------
- docutils/parsers/rst/roles.py | 4 +--
- docutils/parsers/rst/states.py | 4 +--
- docutils/parsers/rst/tableparser.py | 2 +-
- docutils/statemachine.py | 8 ++---
- docutils/transforms/__init__.py | 2 +-
- docutils/utils/__init__.py | 2 +-
- docutils/utils/math/latex2mathml.py | 2 +-
- test/DocutilsTestSupport.py | 2 +-
- test/alltests.py | 2 +-
- test/test_statemachine.py | 2 +-
- tools/buildhtml.py | 4 +--
- tools/dev/create_unimap.py | 4 +--
- tools/dev/unicode2rstsubs.py | 2 +-
- 16 files changed, 61 insertions(+), 37 deletions(-)
-
-diff --git a/docutils/__init__.py b/docutils/__init__.py
-index f06e810..7d6a679 100644
---- a/docutils/__init__.py
-+++ b/docutils/__init__.py
-@@ -92,7 +92,7 @@ class ApplicationError(StandardError): pass
- class DataError(ApplicationError): pass
-
-
--class SettingsSpec:
-+class SettingsSpec(object):
-
- """
- Runtime setting specification base class.
-diff --git a/docutils/core.py b/docutils/core.py
-index 3dc12e8..2eebbf2 100644
---- a/docutils/core.py
-+++ b/docutils/core.py
-@@ -23,7 +23,7 @@ from docutils.transforms import Transformer
- from docutils.utils.error_reporting import ErrorOutput, ErrorString
- import docutils.readers.doctree
-
--class Publisher:
-+class Publisher(object):
-
- """
- A facade encapsulating the high-level logic of a Docutils system.
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index d830616..9573208 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -1112,12 +1112,12 @@ class FixedTextElement(TextElement):
- # Mixins
- # ========
-
--class Resolvable:
-+class Resolvable(object):
-
- resolved = 0
-
-
--class BackLinkable:
-+class BackLinkable(object):
-
- def add_backref(self, refid):
- self['backrefs'].append(refid)
-@@ -1127,39 +1127,63 @@ class BackLinkable:
- # Element Categories
- # ====================
-
--class Root: pass
-+class Root(object):
-+ pass
-+
-+
-+class Titular(object):
-+ pass
-
--class Titular: pass
-
--class PreBibliographic:
-+class PreBibliographic(object):
- """Category of Node which may occur before Bibliographic Nodes."""
-
--class Bibliographic: pass
-
--class Decorative(PreBibliographic): pass
-+class Bibliographic(object):
-+ pass
-+
-+
-+class Decorative(PreBibliographic):
-+ pass
-+
-+
-+class Structural(object):
-+ pass
-+
-+
-+class Body(object):
-+ pass
-
--class Structural: pass
-
--class Body: pass
-+class General(Body):
-+ pass
-
--class General(Body): pass
-
- class Sequential(Body):
- """List-like elements."""
-
-+
- class Admonition(Body): pass
-
-+
- class Special(Body):
- """Special internal body elements."""
-
-+
- class Invisible(PreBibliographic):
- """Internal elements that don't appear in output."""
-
--class Part: pass
-
--class Inline: pass
-+class Part(object):
-+ pass
-+
-+
-+class Inline(object):
-+ pass
-+
-
--class Referential(Resolvable): pass
-+class Referential(Resolvable):
-+ pass
-
-
- class Targetable(Resolvable):
-@@ -1171,7 +1195,7 @@ class Targetable(Resolvable):
- Required for MoinMoin/reST compatibility."""
-
-
--class Labeled:
-+class Labeled(object):
- """Contains a `label` as its first element."""
-
-
-@@ -1856,7 +1880,7 @@ node_class_names = """
- """A list of names of all concrete Node subclasses."""
-
-
--class NodeVisitor:
-+class NodeVisitor(object):
-
- """
- "Visitor" pattern [GoF95]_ abstract superclass implementation for
-diff --git a/docutils/parsers/rst/roles.py b/docutils/parsers/rst/roles.py
-index 918e564..aa42c80 100644
---- a/docutils/parsers/rst/roles.py
-+++ b/docutils/parsers/rst/roles.py
-@@ -181,7 +181,7 @@ def register_generic_role(canonical_name, node_class):
- register_canonical_role(canonical_name, role)
-
-
--class GenericRole:
-+class GenericRole(object):
-
- """
- Generic interpreted text role, where the interpreted text is simply
-@@ -198,7 +198,7 @@ class GenericRole:
- return [self.node_class(rawtext, utils.unescape(text), **options)], []
-
-
--class CustomRole:
-+class CustomRole(object):
-
- """
- Wrapper for custom interpreted text roles.
-diff --git a/docutils/parsers/rst/states.py b/docutils/parsers/rst/states.py
-index d8ca9f0..2ece3b3 100644
---- a/docutils/parsers/rst/states.py
-+++ b/docutils/parsers/rst/states.py
-@@ -126,7 +126,7 @@ class ParserError(ApplicationError): pass
- class MarkupMismatch(Exception): pass
-
-
--class Struct:
-+class Struct(object):
-
- """Stores data attributes for dotted-attribute access."""
-
-@@ -459,7 +459,7 @@ def build_regexp(definition, compile=True):
- return regexp
-
-
--class Inliner:
-+class Inliner(object):
-
- """
- Parse inline markup; call the `parse()` method.
-diff --git a/docutils/parsers/rst/tableparser.py b/docutils/parsers/rst/tableparser.py
-index e19388b..45af72f 100644
---- a/docutils/parsers/rst/tableparser.py
-+++ b/docutils/parsers/rst/tableparser.py
-@@ -40,7 +40,7 @@ class TableMarkupError(DataError):
- DataError.__init__(self, *args)
-
-
--class TableParser:
-+class TableParser(object):
-
- """
- Abstract superclass for the common parts of the syntax-specific parsers.
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index 6bb3c6b..2188982 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -114,7 +114,7 @@ from docutils import utils
- from docutils.utils.error_reporting import ErrorOutput
-
-
--class StateMachine:
-+class StateMachine(object):
-
- """
- A finite state machine for text filters using regular expressions.
-@@ -518,7 +518,7 @@ class StateMachine:
- observer(*info)
-
-
--class State:
-+class State(object):
-
- """
- State superclass. Contains a list of transitions, and transition methods.
-@@ -1034,7 +1034,7 @@ class StateWS(State):
- return context, next_state, results
-
-
--class _SearchOverride:
-+class _SearchOverride(object):
-
- """
- Mix-in class to override `StateMachine` regular expression behavior.
-@@ -1067,7 +1067,7 @@ class SearchStateMachineWS(_SearchOverride, StateMachineWS):
- pass
-
-
--class ViewList:
-+class ViewList(object):
-
- """
- List with extended functionality: slices of ViewList objects are child
-diff --git a/docutils/transforms/__init__.py b/docutils/transforms/__init__.py
-index b009c5f..9271133 100644
---- a/docutils/transforms/__init__.py
-+++ b/docutils/transforms/__init__.py
-@@ -30,7 +30,7 @@ from docutils import languages, ApplicationError, TransformSpec
- class TransformError(ApplicationError): pass
-
-
--class Transform:
-+class Transform(object):
-
- """
- Docutils transform component abstract base class.
-diff --git a/docutils/utils/__init__.py b/docutils/utils/__init__.py
-index be1c37e..7760f38 100644
---- a/docutils/utils/__init__.py
-+++ b/docutils/utils/__init__.py
-@@ -33,7 +33,7 @@ class SystemMessage(ApplicationError):
- class SystemMessagePropagation(ApplicationError): pass
-
-
--class Reporter:
-+class Reporter(object):
-
- """
- Info/warning/error reporter and ``system_message`` element generator.
-diff --git a/docutils/utils/math/latex2mathml.py b/docutils/utils/math/latex2mathml.py
-index bcb4877..1a01bc8 100644
---- a/docutils/utils/math/latex2mathml.py
-+++ b/docutils/utils/math/latex2mathml.py
-@@ -155,7 +155,7 @@ negatables = {'=': u'\u2260',
- r'\equiv': u'\u2262'}
-
- # LaTeX to MathML translation stuff:
--class math:
-+class math(object):
- """Base class for MathML elements."""
-
- nchildren = 1000000
-diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index 54ba1c4..f7986f5 100644
---- a/test/DocutilsTestSupport.py
-+++ b/test/DocutilsTestSupport.py
-@@ -92,7 +92,7 @@ except:
- StringList.__repr__ = StringList.__str__
-
-
--class DevNull:
-+class DevNull(object):
-
- """Output sink."""
-
-diff --git a/test/alltests.py b/test/alltests.py
-index 4a9b50f..9373124 100755
---- a/test/alltests.py
-+++ b/test/alltests.py
-@@ -24,7 +24,7 @@ import DocutilsTestSupport # must be imported before docutils
- import docutils
-
-
--class Tee:
-+class Tee(object):
-
- """Write to a file and a stream (default: stdout) simultaneously."""
-
-diff --git a/test/test_statemachine.py b/test/test_statemachine.py
-index 0e41337..07c561e 100755
---- a/test/test_statemachine.py
-+++ b/test/test_statemachine.py
-@@ -203,7 +203,7 @@ class SMWSTests(unittest.TestCase):
- self.assertEqual(self.sm.run(testtext), expected)
-
-
--class EmptyClass:
-+class EmptyClass(object):
- pass
-
-
-diff --git a/tools/buildhtml.py b/tools/buildhtml.py
-index 3333eab..aa4c759 100755
---- a/tools/buildhtml.py
-+++ b/tools/buildhtml.py
-@@ -107,7 +107,7 @@ class OptionParser(frontend.OptionParser):
- return source, destination
-
-
--class Struct:
-+class Struct(object):
-
- """Stores data attributes for dotted-attribute access."""
-
-@@ -115,7 +115,7 @@ class Struct:
- self.__dict__.update(keywordargs)
-
-
--class Builder:
-+class Builder(object):
-
- def __init__(self):
- self.publishers = {
-diff --git a/tools/dev/create_unimap.py b/tools/dev/create_unimap.py
-index 0e45458..a1d92ac 100755
---- a/tools/dev/create_unimap.py
-+++ b/tools/dev/create_unimap.py
-@@ -28,8 +28,8 @@ def w(s):
- text_map = {}
- math_map = {}
-
--class Visitor:
--
-+
-+class Visitor(object):
- """Node visitor for contents of unicode.xml."""
-
- def visit_character(self, node):
-diff --git a/tools/dev/unicode2rstsubs.py b/tools/dev/unicode2rstsubs.py
-index b741894..d719005 100755
---- a/tools/dev/unicode2rstsubs.py
-+++ b/tools/dev/unicode2rstsubs.py
-@@ -59,7 +59,7 @@ def process(infile):
- grouper.write_sets()
-
-
--class CharacterEntitySetExtractor:
-+class CharacterEntitySetExtractor(object):
-
- """
- Extracts character entity information from unicode.xml file, groups it by
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0002-py3-Switch-to-print-functions.patch b/srcpkgs/python-docutils/patches/0002-py3-Switch-to-print-functions.patch
deleted file mode 100644
index a6c73523433..00000000000
--- a/srcpkgs/python-docutils/patches/0002-py3-Switch-to-print-functions.patch
+++ /dev/null
@@ -1,1517 +0,0 @@
-From ede25690b4b71fbab02506f3a0919e9101b7b73b Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 19 Nov 2019 23:47:55 +0700
-Subject: [PATCH 02/26] py3: Switch to print functions
-
-Remove all uses of print as a statement. This includes comments, many of
-which are simply removed as noise (they're in version control and can be
-re-added later, if necessary).
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8346 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/core.py | 37 +++++++------
- docutils/io.py | 7 ++-
- docutils/nodes.py | 3 +-
- docutils/parsers/rst/directives/body.py | 3 +-
- docutils/parsers/rst/roles.py | 1 -
- docutils/parsers/rst/states.py | 4 +-
- docutils/statemachine.py | 55 +++++++++----------
- docutils/transforms/universal.py | 3 +-
- docutils/utils/__init__.py | 1 -
- docutils/utils/math/latex2mathml.py | 1 -
- docutils/utils/math/tex2mathml_extern.py | 7 ++-
- docutils/utils/smartquotes.py | 19 ++++---
- docutils/writers/_html_base.py | 9 ---
- docutils/writers/latex2e/__init__.py | 9 ++-
- install.py | 5 +-
- setup.py | 11 ++--
- test/DocutilsTestSupport.py | 27 ++++-----
- test/alltests.py | 32 +++++------
- test/package_unittest.py | 11 ++--
- test/test_error_reporting.py | 7 ++-
- test/test_functional.py | 5 +-
- test/test_io.py | 4 +-
- .../test_rst/test_directives/test_code.py | 14 +++--
- .../test_directives/test_code_long.py | 7 ++-
- .../test_directives/test_code_none.py | 4 +-
- .../test_rst/test_doctest_blocks.py | 12 ++--
- test/test_settings.py | 9 +--
- test/test_statemachine.py | 23 ++++----
- test/test_transforms/test_smartquotes.py | 10 ++--
- .../test_strip_elements_with_class.py | 2 +-
- test/test_viewlist.py | 14 -----
- tools/dev/create_unimap.py | 1 +
- tools/dev/generate_punctuation_chars.py | 48 +---------------
- tools/dev/profile_docutils.py | 1 +
- tools/dev/unicode2rstsubs.py | 1 +
- tools/quicktest.py | 1 +
- tools/rst2odt_prepstyles.py | 28 +++++-----
- 37 files changed, 195 insertions(+), 241 deletions(-)
-
-diff --git a/docutils/core.py b/docutils/core.py
-index 2eebbf2..6a99020 100644
---- a/docutils/core.py
-+++ b/docutils/core.py
-@@ -11,6 +11,7 @@ custom component objects first, and pass *them* to
-
- .. _The Docutils Publisher: http://docutils.sf.net/docs/api/publisher.html
- """
-+from __future__ import print_function
-
- __docformat__ = 'reStructuredText'
-
-@@ -243,24 +244,24 @@ class Publisher(object):
- if not self.document:
- return
- if self.settings.dump_settings:
-- print >>self._stderr, '\n::: Runtime settings:'
-- print >>self._stderr, pprint.pformat(self.settings.__dict__)
-+ print('\n::: Runtime settings:', file=self._stderr)
-+ print(pprint.pformat(self.settings.__dict__), file=self._stderr)
- if self.settings.dump_internals:
-- print >>self._stderr, '\n::: Document internals:'
-- print >>self._stderr, pprint.pformat(self.document.__dict__)
-+ print('\n::: Document internals:', file=self._stderr)
-+ print(pprint.pformat(self.document.__dict__), file=self._stderr)
- if self.settings.dump_transforms:
-- print >>self._stderr, '\n::: Transforms applied:'
-- print >>self._stderr, (' (priority, transform class, '
-- 'pending node details, keyword args)')
-- print >>self._stderr, pprint.pformat(
-+ print('\n::: Transforms applied:', file=self._stderr)
-+ print(' (priority, transform class, pending node details, '
-+ 'keyword args)', file=self._stderr)
-+ print(pprint.pformat(
- [(priority, '%s.%s' % (xclass.__module__, xclass.__name__),
- pending and pending.details, kwargs)
- for priority, xclass, pending, kwargs
-- in self.document.transformer.applied])
-+ in self.document.transformer.applied]), file=self._stderr)
- if self.settings.dump_pseudo_xml:
-- print >>self._stderr, '\n::: Pseudo-XML:'
-- print >>self._stderr, self.document.pformat().encode(
-- 'raw_unicode_escape')
-+ print('\n::: Pseudo-XML:', file=self._stderr)
-+ print(self.document.pformat().encode(
-+ 'raw_unicode_escape'), file=self._stderr)
-
- def report_Exception(self, error):
- if isinstance(error, utils.SystemMessage):
-@@ -275,8 +276,8 @@ class Publisher(object):
- u'Unable to open destination file for writing:\n'
- u' %s\n' % ErrorString(error))
- else:
-- print >>self._stderr, u'%s' % ErrorString(error)
-- print >>self._stderr, ("""\
-+ print(u'%s' % ErrorString(error), file=self._stderr)
-+ print(("""\
- Exiting due to error. Use "--traceback" to diagnose.
- Please report errors to <docutils-users@lists.sf.net>.
- Include "--traceback" output, Docutils version (%s%s),
-@@ -284,12 +285,12 @@ Python version (%s), your OS type & version, and the
- command line used.""" % (__version__,
- docutils.__version_details__ and
- ' [%s]'%docutils.__version_details__ or '',
-- sys.version.split()[0]))
-+ sys.version.split()[0])), file=self._stderr)
-
- def report_SystemMessage(self, error):
-- print >>self._stderr, ('Exiting due to level-%s (%s) system message.'
-- % (error.level,
-- utils.Reporter.levels[error.level]))
-+ print('Exiting due to level-%s (%s) system message.' % (
-+ error.level, utils.Reporter.levels[error.level]),
-+ file=self._stderr)
-
- def report_UnicodeError(self, error):
- data = error.object[error.start:error.end]
-diff --git a/docutils/io.py b/docutils/io.py
-index 79cb012..3b0f93e 100644
---- a/docutils/io.py
-+++ b/docutils/io.py
-@@ -6,6 +6,7 @@
- I/O classes provide a uniform API for low-level input and output. Subclasses
- exist for a variety of input/output mechanisms.
- """
-+from __future__ import print_function
-
- __docformat__ = 'reStructuredText'
-
-@@ -343,9 +344,9 @@ class FileOutput(Output):
- elif (# destination is file-type object -> check mode:
- mode and hasattr(self.destination, 'mode')
- and mode != self.destination.mode):
-- print >>self._stderr, ('Warning: Destination mode "%s" '
-- 'differs from specified mode "%s"' %
-- (self.destination.mode, mode))
-+ print('Warning: Destination mode "%s" differs from specified '
-+ 'mode "%s"' % (self.destination.mode, mode),
-+ file=self._stderr)
- if not destination_path:
- try:
- self.destination_path = self.destination.name
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index 9573208..8a5b7bb 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -19,6 +19,7 @@ hierarchy.
-
- .. _DTD: http://docutils.sourceforge.net/docs/ref/docutils.dtd
- """
-+from __future__ import print_function
-
- __docformat__ = 'reStructuredText'
-
-@@ -1724,7 +1725,7 @@ class system_message(Special, BackLinkable, PreBibliographic, Element):
- try:
- Element.__init__(self, rawsource, *children, **attributes)
- except:
-- print 'system_message: children=%r' % (children,)
-+ print('system_message: children=%r' % (children,))
- raise
-
- def astext(self):
-diff --git a/docutils/parsers/rst/directives/body.py b/docutils/parsers/rst/directives/body.py
-index c8bf172..b60c3ad 100644
---- a/docutils/parsers/rst/directives/body.py
-+++ b/docutils/parsers/rst/directives/body.py
-@@ -11,13 +11,13 @@ See `docutils.parsers.rst.directives` for API details.
- __docformat__ = 'reStructuredText'
-
-
--import sys
- from docutils import nodes
- from docutils.parsers.rst import Directive
- from docutils.parsers.rst import directives
- from docutils.parsers.rst.roles import set_classes
- from docutils.utils.code_analyzer import Lexer, LexerError, NumberLines
-
-+
- class BasePseudoSection(Directive):
-
- required_arguments = 1
-@@ -167,7 +167,6 @@ class CodeBlock(Directive):
- node.attributes['source'] = self.options['source']
- # analyze content and add nodes for every token
- for classes, value in tokens:
-- # print (classes, value)
- if classes:
- node += nodes.inline(value, value, classes=classes)
- else:
-diff --git a/docutils/parsers/rst/roles.py b/docutils/parsers/rst/roles.py
-index aa42c80..bf786b7 100644
---- a/docutils/parsers/rst/roles.py
-+++ b/docutils/parsers/rst/roles.py
-@@ -342,7 +342,6 @@ def code_role(role, rawtext, text, lineno, inliner, options={}, content=[]):
-
- # analyse content and add nodes for every token
- for classes, value in tokens:
-- # print (classes, value)
- if classes:
- node += nodes.inline(value, value, classes=classes)
- else:
-diff --git a/docutils/parsers/rst/states.py b/docutils/parsers/rst/states.py
-index 2ece3b3..a2970c8 100644
---- a/docutils/parsers/rst/states.py
-+++ b/docutils/parsers/rst/states.py
-@@ -2758,8 +2758,8 @@ class Text(RSTState):
- src, srcline = self.state_machine.get_source_and_line()
- # TODO: why is abs_line_number() == srcline+1
- # if the error is in a table (try with test_tables.py)?
-- # print "get_source_and_line", srcline
-- # print "abs_line_number", self.state_machine.abs_line_number()
-+ # print("get_source_and_line", srcline)
-+ # print("abs_line_number", self.state_machine.abs_line_number())
- msg = self.reporter.severe('Unexpected section title.',
- nodes.literal_block(blocktext, blocktext),
- source=src, line=srcline)
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index 2188982..6714a04 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -103,6 +103,7 @@ How To Use This Module
-
- sm.unlink()
- """
-+from __future__ import print_function
-
- __docformat__ = 'restructuredtext'
-
-@@ -213,15 +214,15 @@ class StateMachine(object):
- self.line_offset = -1
- self.current_state = initial_state or self.initial_state
- if self.debug:
-- print >>self._stderr, (
-+ print((
- u'\nStateMachine.run: input_lines (line_offset=%s):\n| %s'
-- % (self.line_offset, u'\n| '.join(self.input_lines)))
-+ % (self.line_offset, u'\n| '.join(self.input_lines))), file=self._stderr)
- transitions = None
- results = []
- state = self.get_state()
- try:
- if self.debug:
-- print >>self._stderr, '\nStateMachine.run: bof transition'
-+ print('\nStateMachine.run: bof transition', file=self._stderr)
- context, result = state.bof(context)
- results.extend(result)
- while True:
-@@ -231,17 +232,17 @@ class StateMachine(object):
- if self.debug:
- source, offset = self.input_lines.info(
- self.line_offset)
-- print >>self._stderr, (
-+ print((
- u'\nStateMachine.run: line (source=%r, '
- u'offset=%r):\n| %s'
-- % (source, offset, self.line))
-+ % (source, offset, self.line)), file=self._stderr)
- context, next_state, result = self.check_line(
- context, state, transitions)
- except EOFError:
- if self.debug:
-- print >>self._stderr, (
-+ print((
- '\nStateMachine.run: %s.eof transition'
-- % state.__class__.__name__)
-+ % state.__class__.__name__), file=self._stderr)
- result = state.eof(context)
- results.extend(result)
- break
-@@ -251,10 +252,10 @@ class StateMachine(object):
- self.previous_line() # back up for another try
- transitions = (exception.args[0],)
- if self.debug:
-- print >>self._stderr, (
-+ print((
- '\nStateMachine.run: TransitionCorrection to '
- 'state "%s", transition %s.'
-- % (state.__class__.__name__, transitions[0]))
-+ % (state.__class__.__name__, transitions[0])), file=self._stderr)
- continue
- except StateCorrection, exception:
- self.previous_line() # back up for another try
-@@ -264,10 +265,10 @@ class StateMachine(object):
- else:
- transitions = (exception.args[1],)
- if self.debug:
-- print >>self._stderr, (
-+ print((
- '\nStateMachine.run: StateCorrection to state '
- '"%s", transition %s.'
-- % (next_state, transitions[0]))
-+ % (next_state, transitions[0])), file=self._stderr)
- else:
- transitions = None
- state = self.get_state(next_state)
-@@ -288,11 +289,11 @@ class StateMachine(object):
- """
- if next_state:
- if self.debug and next_state != self.current_state:
-- print >>self._stderr, (
-+ print((
- '\nStateMachine.get_state: Changing state from '
- '"%s" to "%s" (input line %s).'
- % (self.current_state, next_state,
-- self.abs_line_number()))
-+ self.abs_line_number())), file=self._stderr)
- self.current_state = next_state
- try:
- return self.states[self.current_state]
-@@ -382,15 +383,11 @@ class StateMachine(object):
- # line is None if index is "Just past the end"
- src, srcline = self.get_source_and_line(offset + self.input_offset)
- return src, srcline + 1
-- except (IndexError): # `offset` is off the list
-+ except (IndexError): # `offset` is off the list
- src, srcline = None, None
- # raise AssertionError('cannot find line %d in %s lines' %
- # (offset, len(self.input_lines)))
- # # list(self.input_lines.lines())))
-- # assert offset == srcoffset, str(self.input_lines)
-- # print "get_source_and_line(%s):" % lineno,
-- # print offset + 1, '->', src, srcline
-- # print self.input_lines
- return (src, srcline)
-
- def insert_input(self, input_lines, source):
-@@ -445,24 +442,24 @@ class StateMachine(object):
- transitions = state.transition_order
- state_correction = None
- if self.debug:
-- print >>self._stderr, (
-+ print((
- '\nStateMachine.check_line: state="%s", transitions=%r.'
-- % (state.__class__.__name__, transitions))
-+ % (state.__class__.__name__, transitions)), file=self._stderr)
- for name in transitions:
- pattern, method, next_state = state.transitions[name]
- match = pattern.match(self.line)
- if match:
- if self.debug:
-- print >>self._stderr, (
-+ print((
- '\nStateMachine.check_line: Matched transition '
- '"%s" in state "%s".'
-- % (name, state.__class__.__name__))
-+ % (name, state.__class__.__name__)), file=self._stderr)
- return method(match, context, next_state)
- else:
- if self.debug:
-- print >>self._stderr, (
-+ print((
- '\nStateMachine.check_line: No match in state "%s".'
-- % state.__class__.__name__)
-+ % state.__class__.__name__), file=self._stderr)
- return state.no_match(context, transitions)
-
- def add_state(self, state_class):
-@@ -494,10 +491,10 @@ class StateMachine(object):
- def error(self):
- """Report error details."""
- type, value, module, line, function = _exception_data()
-- print >>self._stderr, u'%s: %s' % (type, value)
-- print >>self._stderr, 'input line %s' % (self.abs_line_number())
-- print >>self._stderr, (u'module %s, line %s, function %s' %
-- (module, line, function))
-+ print(u'%s: %s' % (type, value), file=self._stderr)
-+ print('input line %s' % (self.abs_line_number()), file=self._stderr)
-+ print((u'module %s, line %s, function %s' %
-+ (module, line, function)), file=self._stderr)
-
- def attach_observer(self, observer):
- """
-@@ -1329,7 +1326,7 @@ class ViewList(object):
- def pprint(self):
- """Print the list in `grep` format (`source:offset:value` lines)"""
- for line in self.xitems():
-- print "%s:%d:%s" % line
-+ print("%s:%d:%s" % line)
-
-
- class StringList(ViewList):
-diff --git a/docutils/transforms/universal.py b/docutils/transforms/universal.py
-index 3f8ddbc..47e1276 100644
---- a/docutils/transforms/universal.py
-+++ b/docutils/transforms/universal.py
-@@ -17,12 +17,12 @@ 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
-
-+
- class Decorations(Transform):
-
- """
-@@ -257,7 +257,6 @@ class SmartQuotes(Transform):
- alternative = smart_quotes.startswith('alt')
- except AttributeError:
- alternative = False
-- # print repr(alternative)
-
- document_language = self.document.settings.language_code
- lc_smartquotes = self.document.settings.smartquotes_locales
-diff --git a/docutils/utils/__init__.py b/docutils/utils/__init__.py
-index 7760f38..692335a 100644
---- a/docutils/utils/__init__.py
-+++ b/docutils/utils/__init__.py
-@@ -173,7 +173,6 @@ class Reporter(object):
- if not 'source' in attributes: # 'line' is absolute line number
- try: # look up (source, line-in-source)
- source, line = self.get_source_and_line(attributes.get('line'))
-- # print "locator lookup", kwargs.get('line'), "->", source, line
- except AttributeError:
- source, line = None, None
- if source is not None:
-diff --git a/docutils/utils/math/latex2mathml.py b/docutils/utils/math/latex2mathml.py
-index 1a01bc8..255e96f 100644
---- a/docutils/utils/math/latex2mathml.py
-+++ b/docutils/utils/math/latex2mathml.py
-@@ -384,7 +384,6 @@ def parse_latex_math(string, inline=True):
- c2 = string[1]
- else:
- c2 = ''
--## print n, string, c, c2, node.__class__.__name__
- if c == ' ':
- pass
- elif c == '\\':
-diff --git a/docutils/utils/math/tex2mathml_extern.py b/docutils/utils/math/tex2mathml_extern.py
-index e461836..3e7f158 100644
---- a/docutils/utils/math/tex2mathml_extern.py
-+++ b/docutils/utils/math/tex2mathml_extern.py
-@@ -15,6 +15,7 @@
- # Wrappers for TeX->MathML conversion by external tools
- # =====================================================
-
-+from __future__ import print_function
- import subprocess
-
- document_template = r"""\documentclass{article}
-@@ -141,6 +142,6 @@ def blahtexml(math_code, inline=True, reporter=None):
-
- if __name__ == "__main__":
- example = ur'\frac{\partial \sin^2(\alpha)}{\partial \vec r} \varpi \, \text{Grüße}'
-- # print latexml(example).encode('utf8')
-- # print ttm(example)#.encode('utf8')
-- print blahtexml(example).encode('utf8')
-+ # print(latexml(example).encode('utf8'))
-+ # print(ttm(example))
-+ print(blahtexml(example).encode('utf8'))
-diff --git a/docutils/utils/smartquotes.py b/docutils/utils/smartquotes.py
-index ebf0240..148a4c9 100644
---- a/docutils/utils/smartquotes.py
-+++ b/docutils/utils/smartquotes.py
-@@ -315,6 +315,7 @@ Version History
- 1.5_1.0: Tue, 09 Mar 2004 08:08:35 -0500
- - Initial release
- """
-+from __future__ import print_function
-
- options = r"""
- Options
-@@ -964,16 +965,16 @@ if __name__ == "__main__":
- args = parser.parse_args()
-
- if args.doc:
-- print (__doc__)
-+ print(__doc__)
- elif args.actionhelp:
-- print options
-+ print(options)
- elif args.stylehelp:
-- print
-- print "Available styles (primary open/close, secondary open/close)"
-- print "language tag quotes"
-- print "============ ======"
-+ print()
-+ print("Available styles (primary open/close, secondary open/close)")
-+ print("language tag quotes")
-+ print("============ ======")
- for key in sorted(smartchars.quotes.keys()):
-- print "%-14s %s" % (key, smartchars.quotes[key])
-+ print("%-14s %s" % (key, smartchars.quotes[key]))
- elif args.test:
- # Unit test output goes to stderr.
- import unittest
-@@ -1006,5 +1007,5 @@ if __name__ == "__main__":
- else:
- args.language += '-x-altquot'
- text = sys.stdin.read().decode(args.encoding)
-- print smartyPants(text, attr=args.action,
-- language=args.language).encode(args.encoding)
-+ print(smartyPants(text, attr=args.action,
-+ language=args.language).encode(args.encoding))
-diff --git a/docutils/writers/_html_base.py b/docutils/writers/_html_base.py
-index b357120..fa27911 100644
---- a/docutils/writers/_html_base.py
-+++ b/docutils/writers/_html_base.py
-@@ -494,7 +494,6 @@ class HTMLTranslator(nodes.NodeVisitor):
- # the end of this file).
-
- def is_compactable(self, node):
-- # print "is_compactable %s ?" % node.__class__,
- # explicite class arguments have precedence
- if 'compact' in node['classes']:
- return True
-@@ -503,11 +502,9 @@ class HTMLTranslator(nodes.NodeVisitor):
- # check config setting:
- if (isinstance(node, (nodes.field_list, nodes.definition_list))
- and not self.settings.compact_field_lists):
-- # print "`compact-field-lists` is False"
- return False
- if (isinstance(node, (nodes.enumerated_list, nodes.bullet_list))
- and not self.settings.compact_lists):
-- # print "`compact-lists` is False"
- return False
- # more special cases:
- if (self.topic_classes == ['contents']): # TODO: self.in_contents
-@@ -882,7 +879,6 @@ class HTMLTranslator(nodes.NodeVisitor):
- if 'sectnum' in node['classes']:
- # get section number (strip trailing no-break-spaces)
- sectnum = node.astext().rstrip(u' ')
-- # print sectnum.encode('utf-8')
- self.body.append('<span class="sectnum">%s</span> '
- % self.encode(sectnum))
- # Content already processed:
-@@ -1194,7 +1190,6 @@ class HTMLTranslator(nodes.NodeVisitor):
- pass # never reached
-
- def visit_math_block(self, node):
-- # print node.astext().encode('utf8')
- math_env = pick_math_environment(node.astext())
- self.visit_math(node, math_env=math_env)
-
-@@ -1611,20 +1606,16 @@ class SimpleListChecker(nodes.GenericNodeVisitor):
- raise nodes.NodeFound
-
- def visit_list_item(self, node):
-- # print "visiting list item", node.__class__
- children = [child for child in node.children
- if not isinstance(child, nodes.Invisible)]
-- # print "has %s visible children" % len(children)
- if (children and isinstance(children[0], nodes.paragraph)
- and (isinstance(children[-1], nodes.bullet_list) or
- isinstance(children[-1], nodes.enumerated_list) or
- isinstance(children[-1], nodes.field_list))):
- children.pop()
-- # print "%s children remain" % len(children)
- if len(children) <= 1:
- return
- else:
-- # print "found", child.__class__, "in", node.__class__
- raise nodes.NodeFound
-
- def pass_node(self, node):
-diff --git a/docutils/writers/latex2e/__init__.py b/docutils/writers/latex2e/__init__.py
-index 2ee1270..5c33d0a 100644
---- a/docutils/writers/latex2e/__init__.py
-+++ b/docutils/writers/latex2e/__init__.py
-@@ -15,7 +15,6 @@ __docformat__ = 'reStructuredText'
-
- import sys
- import os
--import time
- import re
- import string
- import urllib
-@@ -28,6 +27,7 @@ from docutils.utils.error_reporting import SafeString
- from docutils.transforms import writer_aux
- from docutils.utils.math import pick_math_environment, unichar2tex
-
-+
- class Writer(writers.Writer):
-
- supported = ('latex','latex2e')
-@@ -2283,14 +2283,14 @@ class LaTeXTranslator(nodes.NodeVisitor):
- href = self.document.nameids[node['refname']]
- # if not self.docutils_footnotes:
- # TODO: insert footnote content at (or near) this place
-- # print "footnote-ref to", node['refid']
-+ # print("footnote-ref to", node['refid'])
- # footnotes = (self.document.footnotes +
- # self.document.autofootnotes +
- # self.document.symbol_footnotes)
- # for footnote in footnotes:
-- # # print footnote['ids']
-+ # # print(footnote['ids'])
- # if node.get('refid', '') in footnote['ids']:
-- # print 'matches', footnote['ids']
-+ # print('matches', footnote['ids'])
- format = self.settings.footnote_references
- if format == 'brackets':
- self.append_hypertargets(node)
-@@ -2623,7 +2623,6 @@ class LaTeXTranslator(nodes.NodeVisitor):
- r'\begin{%s}' % math_env,
- '%s',
- r'\end{%s}' % math_env])
-- # print repr(wrapper), repr(math_code)
- self.out.append(wrapper % math_code)
- if node['classes']:
- self.depart_inline(node)
-diff --git a/install.py b/install.py
-index 2085627..b7de278 100755
---- a/install.py
-+++ b/install.py
-@@ -15,12 +15,13 @@ one of::
- python setup.py install --help
- python setup.py --help
- """
-+from __future__ import print_function
-
- from distutils import core
- from setup import do_setup
-
--if __name__ == '__main__' :
-- print __doc__
-+if __name__ == '__main__':
-+ print(__doc__)
- core._setup_stop_after = 'config'
- dist = do_setup()
- dist.commands = ['install']
-diff --git a/setup.py b/setup.py
-index f801ea2..4280b98 100755
---- a/setup.py
-+++ b/setup.py
-@@ -2,9 +2,12 @@
- # $Id: setup.py 8304 2019-07-30 09:51:07Z grubert $
- # Copyright: This file has been placed in the public domain.
-
-+from __future__ import print_function
-+
- import sys
- import os
- import glob
-+
- try:
- import setuptools
- from distutils.core import setup, Command
-@@ -17,10 +20,10 @@ try:
- from distutils.util import convert_path
- from distutils import log
- except ImportError:
-- print ('Error: The "distutils" standard module, which is required for the ')
-- print ('installation of Docutils, could not be found. You may need to ')
-- print ('install a package called "python-devel" (or similar) on your ')
-- print ('system using your package manager.')
-+ print('Error: The "distutils" standard module, which is required for the ')
-+ print('installation of Docutils, could not be found. You may need to ')
-+ print('install a package called "python-devel" (or similar) on your ')
-+ print('system using your package manager.')
- sys.exit(1)
-
-
-diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index f7986f5..25196ec 100644
---- a/test/DocutilsTestSupport.py
-+++ b/test/DocutilsTestSupport.py
-@@ -38,6 +38,7 @@ Exports the following:
- - `HtmlFragmentTestSuite`
- - `DevNull` (output sink)
- """
-+from __future__ import print_function
- __docformat__ = 'reStructuredText'
-
- import sys
-@@ -230,17 +231,17 @@ class CustomTestCase(StandardTestCase):
- try:
- self.assertEqual(output, expected)
- except AssertionError, error:
-- print >>sys.stderr, '\n%s\ninput:' % (self,)
-- print >>sys.stderr, input
-+ print('\n%s\ninput:' % (self,), file=sys.stderr)
-+ print(input, file=sys.stderr)
- try:
- comparison = ''.join(self.compare(expected.splitlines(1),
- output.splitlines(1)))
-- print >>sys.stderr, '-: expected\n+: output'
-- print >>sys.stderr, comparison
-+ print('-: expected\n+: output', file=sys.stderr)
-+ print(comparison, file=sys.stderr)
- except AttributeError: # expected or output not a string
- # alternative output for non-strings:
-- print >>sys.stderr, 'expected: %r' % expected
-- print >>sys.stderr, 'output: %r' % output
-+ print('expected: %r' % expected, file=sys.stderr)
-+ print('output: %r' % output, file=sys.stderr)
- raise error
-
-
-@@ -375,20 +376,20 @@ class TransformTestCase(CustomTestCase):
- def test_transforms_verbosely(self):
- if self.run_in_debugger:
- pdb.set_trace()
-- print '\n', self.id
-- print '-' * 70
-- print self.input
-+ print('\n', self.id)
-+ print('-' * 70)
-+ print(self.input)
- settings = self.settings.copy()
- settings.__dict__.update(self.suite_settings)
- document = utils.new_document('test data', settings)
- self.parser.parse(self.input, document)
-- print '-' * 70
-- print document.pformat()
-+ print('-' * 70)
-+ print(document.pformat())
- for transformClass in self.transforms:
- transformClass(document).apply()
- output = document.pformat()
-- print '-' * 70
-- print output
-+ print('-' * 70)
-+ print(output)
- self.compare_output(self.input, output, self.expected)
-
-
-diff --git a/test/alltests.py b/test/alltests.py
-index 9373124..364593f 100755
---- a/test/alltests.py
-+++ b/test/alltests.py
-@@ -1,12 +1,12 @@
- #!/bin/sh
- ''''exec python -u "$0" "$@" #'''
-+from __future__ import print_function
-
- # $Id: alltests.py 8124 2017-06-23 02:29:16Z goodger $
- # Author: David Goodger <goodger@python.org>
- # Copyright: This module has been placed in the public domain.
-
--__doc__ = \
--"""
-+__doc__ = """\
- All modules named 'test_*.py' in the current directory, and recursively in
- subdirectories (packages) called 'test_*', are loaded and test suites within
- are run.
-@@ -15,7 +15,7 @@ are run.
- import time
- # Start point for actual elapsed time, including imports
- # and setup outside of unittest.
--start = time.time()
-+start = time.time() # noqa
-
- import sys
- import os
-@@ -57,12 +57,13 @@ def pformat(suite):
- if line[-1:] == '[':
- indent += step
- else:
-- if line [-5:] == ']>]>,':
-+ if line[-5:] == ']>]>,':
- indent -= step * 2
- elif line[-3:] == ']>,':
- indent -= step
- return '\n'.join(output)
-
-+
- def suite():
- path, script = os.path.split(sys.argv[0])
- suite = package_unittest.loadTestModules(DocutilsTestSupport.testroot,
-@@ -70,26 +71,25 @@ def suite():
- sys.stdout.flush()
- return suite
-
-+
- # must redirect stderr *before* first import of unittest
- sys.stdout = sys.stderr = Tee('alltests.out')
-
--import package_unittest
-+import package_unittest # noqa
-
-
- if __name__ == '__main__':
- suite = suite()
-- print ('Testing Docutils %s with Python %s on %s at %s'
-- % (docutils.__version__, sys.version.split()[0],
-- time.strftime('%Y-%m-%d'), time.strftime('%H:%M:%S')))
-- print ('OS: %s %s %s (%s, %s)'
-- % (platform.system(), platform.release(), platform.version(),
-- sys.platform, platform.platform()))
-- print 'Working directory: %s' % os.getcwd()
-- print 'Docutils package: %s' % os.path.dirname(docutils.__file__)
-+ print('Testing Docutils %s with Python %s on %s at %s' % (
-+ docutils.__version__, sys.version.split()[0],
-+ time.strftime('%Y-%m-%d'), time.strftime('%H:%M:%S')))
-+ print('OS: %s %s %s (%s, %s)' % (
-+ platform.system(), platform.release(), platform.version(),
-+ sys.platform, platform.platform()))
-+ print('Working directory: %s' % os.getcwd())
-+ print('Docutils package: %s' % os.path.dirname(docutils.__file__))
- sys.stdout.flush()
- result = package_unittest.main(suite)
-- #if package_unittest.verbosity > 1:
-- # print >>sys.stderr, pformat(suite) # check the test suite
- finish = time.time()
-- print 'Elapsed time: %.3f seconds' % (finish - start)
-+ print('Elapsed time: %.3f seconds' % (finish - start))
- sys.exit(not result.wasSuccessful())
-diff --git a/test/package_unittest.py b/test/package_unittest.py
-index 0efab12..daf11f4 100644
---- a/test/package_unittest.py
-+++ b/test/package_unittest.py
-@@ -9,6 +9,7 @@ This module extends unittest.py with `loadTestModules()`, by loading multiple
- test modules from a directory. Optionally, test packages are also loaded,
- recursively.
- """
-+from __future__ import print_function
-
- import sys
- import os
-@@ -37,8 +38,8 @@ Options:
- def usageExit(msg=None):
- """Print usage and exit."""
- if msg:
-- print msg
-- print USAGE
-+ print(msg)
-+ print(USAGE)
- sys.exit(2)
-
- def parseArgs(argv=sys.argv):
-@@ -96,11 +97,11 @@ def loadTestModules(path, name='', packages=None):
- sys.path.insert(0, path)
- for mod in testModules:
- if debug:
-- print >>sys.stderr, "importing %s" % mod
-+ print("importing %s" % mod, file=sys.stderr)
- try:
- module = import_module(mod)
- except ImportError:
-- print >>sys.stderr, "ERROR: Can't import %s, skipping its tests:" % mod
-+ print("ERROR: Can't import %s, skipping its tests:" % mod, file=sys.stderr)
- sys.excepthook(*sys.exc_info())
- else:
- # if there's a suite defined, incorporate its contents
-@@ -148,7 +149,7 @@ def main(suite=None):
- suite = unittest.defaultTestLoader.loadTestsFromModule(
- __import__('__main__'))
- if debug:
-- print >>sys.stderr, "Debug: Suite=%s" % suite
-+ print("Debug: Suite=%s" % suite, file=sys.stderr)
- testRunner = unittest.TextTestRunner(verbosity=verbosity)
- # run suites (if we were called from test_all) or suite...
- if type(suite) == type([]):
-diff --git a/test/test_error_reporting.py b/test/test_error_reporting.py
-index 902e878..c4eae40 100644
---- a/test/test_error_reporting.py
-+++ b/test/test_error_reporting.py
-@@ -20,13 +20,14 @@ instances like, e.g., ::
- try:
- something
- except IOError, error:
-- print 'Found %s' % error
-+ print('Found %s' % error)
-
- unless the minimal required Python version has this problem fixed.
- """
-
- import unittest
--import sys, os
-+import sys
-+import os
- import codecs
- from io import StringIO, BytesIO
-
-@@ -42,7 +43,7 @@ if sys.version_info < (3,0): # problems solved in py3k
- # Why does getlocale return the defaultlocale in Python 3.2 ????
- # oldlocale = (None, None) # test suite runs without locale
- except ImportError:
-- print ('cannot test error reporting with problematic locales,\n'
-+ print('cannot test error reporting with problematic locales,\n'
- '`import locale` failed.')
-
-
-diff --git a/test/test_functional.py b/test/test_functional.py
-index 43710de..5d3beb9 100755
---- a/test/test_functional.py
-+++ b/test/test_functional.py
-@@ -9,6 +9,7 @@ Perform tests with the data in the functional/ directory.
-
- Read README.txt for details on how this is done.
- """
-+from __future__ import print_function
-
- import sys
- import os
-@@ -194,8 +195,8 @@ expected output and check it in:
- expected_path, params['destination_path']))
- if sys.version_info < (3,0):
- diff = diff.encode(sys.stderr.encoding or 'ascii', 'replace')
-- print >>sys.stderr, '\n%s:' % (self,)
-- print >>sys.stderr, diff
-+ print('\n%s:' % (self,), file=sys.stderr)
-+ print(diff, file=sys.stderr)
- raise
- # Execute optional function containing extra tests:
- if '_test_more' in namespace:
-diff --git a/test/test_io.py b/test/test_io.py
-index 6ea4789..737a19d 100755
---- a/test/test_io.py
-+++ b/test/test_io.py
-@@ -69,7 +69,7 @@ blah
- input = io.StringInput(source=b"""\
- #! python
- # -*- coding: ascii -*-
--print "hello world"
-+print("hello world")
- """)
- data = input.read()
- self.assertEqual(input.successful_encoding, 'ascii')
-@@ -77,7 +77,7 @@ print "hello world"
- #! python
- # extraneous comment; prevents coding slug from being read
- # -*- coding: ascii -*-
--print "hello world"
-+print("hello world")
- """)
- data = input.read()
- self.assertNotEqual(input.successful_encoding, 'ascii')
-diff --git a/test/test_parsers/test_rst/test_directives/test_code.py b/test/test_parsers/test_rst/test_directives/test_code.py
-index 30fe74f..51c1558 100644
---- a/test/test_parsers/test_rst/test_directives/test_code.py
-+++ b/test/test_parsers/test_rst/test_directives/test_code.py
-@@ -98,7 +98,7 @@ totest['code-parsing'] = [
- .. code:: python
- :class: testclass
-
-- print 'hello world' # to stdout
-+ print('hello world') # to stdout
- """,
- """\
- <document source="test data">
-@@ -106,9 +106,12 @@ totest['code-parsing'] = [
- \n\
- <inline classes="keyword">
- print
-- \n\
-+ <inline classes="punctuation">
-+ (
- <inline classes="literal string single">
- 'hello world'
-+ <inline classes="punctuation">
-+ )
- \n\
- <inline classes="comment single">
- # to stdout
-@@ -124,7 +127,7 @@ totest['code-parsing'] = [
- '''
-
- # and now for something completely different
-- print 8/2
-+ print(8/2)
- """,
- """\
- <document source="test data">
-@@ -163,13 +166,16 @@ totest['code-parsing'] = [
- \n\
- <inline classes="keyword">
- print
-- \n\
-+ <inline classes="punctuation">
-+ (
- <inline classes="literal number integer">
- 8
- <inline classes="operator">
- /
- <inline classes="literal number integer">
- 2
-+ <inline classes="punctuation">
-+ )
- """],
- ["""\
- .. code:: latex
-diff --git a/test/test_parsers/test_rst/test_directives/test_code_long.py b/test/test_parsers/test_rst/test_directives/test_code_long.py
-index 43eb886..74f16d5 100644
---- a/test/test_parsers/test_rst/test_directives/test_code_long.py
-+++ b/test/test_parsers/test_rst/test_directives/test_code_long.py
-@@ -29,7 +29,7 @@ totest['code-parsing-long'] = [
- '''
-
- # and now for something completely different
-- print 8/2
-+ print(8/2)
- """,
- """\
- <document source="test data">
-@@ -68,13 +68,16 @@ totest['code-parsing-long'] = [
- \n\
- <inline classes="keyword">
- print
-- \n\
-+ <inline classes="punctuation">
-+ (
- <inline classes="literal number integer">
- 8
- <inline classes="operator">
- /
- <inline classes="literal number integer">
- 2
-+ <inline classes="punctuation">
-+ )
- """],
- ["""\
- .. code:: latex
-diff --git a/test/test_parsers/test_rst/test_directives/test_code_none.py b/test/test_parsers/test_rst/test_directives/test_code_none.py
-index 86653e6..515772c 100644
---- a/test/test_parsers/test_rst/test_directives/test_code_none.py
-+++ b/test/test_parsers/test_rst/test_directives/test_code_none.py
-@@ -37,7 +37,7 @@ totest['code-parsing-none'] = [
- '''
-
- # and now for something completely different
-- print 8/2
-+ print(8/2)
- """,
- """\
- <document source="test data">
-@@ -59,7 +59,7 @@ totest['code-parsing-none'] = [
- # and now for something completely different
- <inline classes="ln">
- 12 \n\
-- print 8/2
-+ print(8/2)
- """],
- ["""\
- .. code:: latex
-diff --git a/test/test_parsers/test_rst/test_doctest_blocks.py b/test/test_parsers/test_rst/test_doctest_blocks.py
-index dabc2ec..4f367db 100755
---- a/test/test_parsers/test_rst/test_doctest_blocks.py
-+++ b/test/test_parsers/test_rst/test_doctest_blocks.py
-@@ -21,7 +21,7 @@ totest['doctest_blocks'] = [
- ["""\
- Paragraph.
-
-->>> print "Doctest block."
-+>>> print("Doctest block.")
- Doctest block.
-
- Paragraph.
-@@ -31,7 +31,7 @@ Paragraph.
- <paragraph>
- Paragraph.
- <doctest_block xml:space="preserve">
-- >>> print "Doctest block."
-+ >>> print("Doctest block.")
- Doctest block.
- <paragraph>
- Paragraph.
-@@ -39,7 +39,7 @@ Paragraph.
- ["""\
- Paragraph.
-
-->>> print " Indented output."
-+>>> print(" Indented output.")
- Indented output.
- """,
- """\
-@@ -47,13 +47,13 @@ Paragraph.
- <paragraph>
- Paragraph.
- <doctest_block xml:space="preserve">
-- >>> print " Indented output."
-+ >>> print(" Indented output.")
- Indented output.
- """],
- ["""\
- Paragraph.
-
-- >>> print " Indented block & output."
-+ >>> print(" Indented block & output.")
- Indented block & output.
- """,
- """\
-@@ -62,7 +62,7 @@ Paragraph.
- Paragraph.
- <block_quote>
- <doctest_block xml:space="preserve">
-- >>> print " Indented block & output."
-+ >>> print(" Indented block & output.")
- Indented block & output.
- """],
- ]
-diff --git a/test/test_settings.py b/test/test_settings.py
-index 5b687eb..d101a59 100755
---- a/test/test_settings.py
-+++ b/test/test_settings.py
-@@ -8,6 +8,7 @@
- """
- Tests of runtime settings.
- """
-+from __future__ import print_function
-
- import sys
- import os
-@@ -111,10 +112,10 @@ class ConfigFileTests(unittest.TestCase):
- try:
- self.assertEqual(result, expected)
- except AssertionError:
-- print >>sys.stderr, '\n%s\n' % (self,)
-- print >>sys.stderr, '-: expected\n+: result'
-- print >>sys.stderr, ''.join(self.compare(expected.splitlines(1),
-- result.splitlines(1)))
-+ print('\n%s\n' % (self,), file=sys.stderr)
-+ print('-: expected\n+: result', file=sys.stderr)
-+ print(''.join(self.compare(expected.splitlines(1),
-+ result.splitlines(1))), file=sys.stderr)
- raise
-
- def test_nofiles(self):
-diff --git a/test/test_statemachine.py b/test/test_statemachine.py
-index 07c561e..6352ca4 100755
---- a/test/test_statemachine.py
-+++ b/test/test_statemachine.py
-@@ -7,6 +7,7 @@
- """
- Test module for statemachine.py.
- """
-+from __future__ import print_function
-
- import unittest
- import sys
-@@ -56,47 +57,47 @@ class MockState(statemachine.StateWS):
- def bof(self, context):
- self.levelholder[0] += 1
- self.level = self.levelholder[0]
-- if self.debug: print >>sys.stderr, 'StateMachine%s' % self.level
-+ if self.debug: print('StateMachine%s' % self.level, file=sys.stderr)
- return [], ['StateMachine%s' % self.level]
-
- def blank(self, match, context, next_state):
- result = ['blank%s' % self.level]
-- if self.debug: print >>sys.stderr, 'blank%s' % self.level
-+ if self.debug: print('blank%s' % self.level, file=sys.stderr)
- if context and context[-1] and context[-1][-2:] == '::':
- result.extend(self.literalblock())
- return [], None, result
-
- def indent(self, match, context, next_state):
-- if self.debug: print >>sys.stderr, 'indent%s' % self.level
-+ if self.debug: print('indent%s' % self.level, file=sys.stderr)
- context, next_state, result = statemachine.StateWS.indent(
- self, match, context, next_state)
- return context, next_state, ['indent%s' % self.level] + result
-
- def known_indent(self, match, context, next_state):
-- if self.debug: print >>sys.stderr, 'known_indent%s' % self.level
-+ if self.debug: print('known_indent%s' % self.level, file=sys.stderr)
- context, next_state, result = statemachine.StateWS.known_indent(
- self, match, context, next_state)
- return context, next_state, ['known_indent%s' % self.level] + result
-
- def bullet(self, match, context, next_state):
-- if self.debug: print >>sys.stderr, 'bullet%s' % self.level
-+ if self.debug: print('bullet%s' % self.level, file=sys.stderr)
- context, next_state, result \
- = self.known_indent(match, context, next_state)
- return [], next_state, ['bullet%s' % self.level] + result
-
- def text(self, match, context, next_state):
-- if self.debug: print >>sys.stderr, 'text%s' % self.level
-+ if self.debug: print('text%s' % self.level, file=sys.stderr)
- return [match.string], next_state, ['text%s' % self.level]
-
- def literalblock(self):
- indented, indent, offset, good = self.state_machine.get_indented()
-- if self.debug: print >>sys.stderr, 'literalblock%s(%s)' % (self.level,
-- indent)
-+ if self.debug: print('literalblock%s(%s)' % (self.level,
-+ indent), file=sys.stderr)
- return ['literalblock%s(%s)' % (self.level, indent)]
-
- def eof(self, context):
- self.levelholder[0] -= 1
-- if self.debug: print >>sys.stderr, 'finished%s' % self.level
-+ if self.debug: print('finished%s' % self.level, file=sys.stderr)
- return ['finished%s' % self.level]
-
-
-@@ -169,10 +170,10 @@ class SMWSTests(unittest.TestCase):
- self.assertTrue(good)
- self.sm.previous_line(3)
- if self.sm.debug:
-- print '\ntest_get_indented: self.sm.line:\n', self.sm.line
-+ print('\ntest_get_indented: self.sm.line:\n', self.sm.line)
- indented, indent, offset, good = self.sm.get_indented()
- if self.sm.debug:
-- print '\ntest_get_indented: indented:\n', indented
-+ print('\ntest_get_indented: indented:\n', indented)
- self.assertEqual(indent, lbindent)
- self.assertEqual(indented, literalblock)
- self.assertEqual(offset, (len(para1) + len(item1) + len(item2)
-diff --git a/test/test_transforms/test_smartquotes.py b/test/test_transforms/test_smartquotes.py
-index fb46b30..e2874c0 100644
---- a/test/test_transforms/test_smartquotes.py
-+++ b/test/test_transforms/test_smartquotes.py
-@@ -18,7 +18,7 @@ Test module for universal.SmartQuotes transform.
- """
-
-
--from __init__ import DocutilsTestSupport # must be imported before docutils
-+from __init__ import DocutilsTestSupport # must be imported before docutils
- from docutils.transforms.universal import SmartQuotes
- from docutils.parsers.rst import Parser
-
-@@ -69,11 +69,11 @@ Do not "educate" quotes ``inside "literal" text`` and ::
- "literal" blocks.
-
- Keep quotes straight in code and math:
--:code:`print "hello"` :math:`1' 12"`.
-+:code:`print("hello")` :math:`1' 12"`.
-
- .. code::
-
-- print "hello"
-+ print("hello")
-
- .. math::
-
-@@ -92,13 +92,13 @@ u"""\
- <paragraph>
- Keep quotes straight in code and math:
- <literal classes="code">
-- print "hello"
-+ print("hello")
-
- <math>
- 1' 12"
- .
- <literal_block classes="code" xml:space="preserve">
-- print "hello"
-+ print("hello")
- <math_block xml:space="preserve">
- f'(x) = df(x)/dx
- """],
-diff --git a/test/test_transforms/test_strip_elements_with_class.py b/test/test_transforms/test_strip_elements_with_class.py
-index 7a36fb9..6503586 100644
---- a/test/test_transforms/test_strip_elements_with_class.py
-+++ b/test/test_transforms/test_strip_elements_with_class.py
-@@ -37,7 +37,7 @@ this is ham
- .. code::
- :class: spam
-
-- print "spam"
-+ print("spam")
-
- .. image:: spam.jpg
- :class: spam
-diff --git a/test/test_viewlist.py b/test/test_viewlist.py
-index 23ba033..f5df548 100755
---- a/test/test_viewlist.py
-+++ b/test/test_viewlist.py
-@@ -9,8 +9,6 @@ Test module for the ViewList class from statemachine.py.
- """
-
- import unittest
--import sys
--import re
- from DocutilsTestSupport import statemachine
-
-
-@@ -76,7 +74,6 @@ class ViewListTests(unittest.TestCase):
- self.assertEqual(a, a_list)
- self.assertEqual(a.items, [('a', i+1) for (i, v) in enumerate(a_list)])
- self.assertEqual(a.parent, self.a)
-- # a.pprint()
-
- def test_set_slice(self):
- a = statemachine.ViewList(self.a[:])
-@@ -84,8 +81,6 @@ class ViewListTests(unittest.TestCase):
- s[2:2] = self.b
- s_list = self.a_list[2:-2]
- s_list[2:2] = self.b_list
-- # s.pprint()
-- # s[1:4].pprint()
- self.assertEqual(s, s_list)
- self.assertEqual(s, a[2:-2])
- self.assertEqual(s.items, a[2:-2].items)
-@@ -119,7 +114,6 @@ class ViewListTests(unittest.TestCase):
- a = statemachine.ViewList(self.a)
- a.append('Q', 'runtime')
- a.append(self.b)
-- # a.pprint()
- self.assertEqual(a, a_list)
- self.assertEqual(a.info(len(self.a)), ('runtime', 0))
- self.assertEqual(a.info(-2), ('b', len(self.b) - 2))
-@@ -131,7 +125,6 @@ class ViewListTests(unittest.TestCase):
- a.extend(self.b)
- self.assertEqual(a, a_list)
- self.assertEqual(a.info(len(self.a) + 1), ('b', 1))
-- # a.pprint()
-
- def test_view(self):
- a = statemachine.ViewList(self.a[:])
-@@ -176,16 +169,9 @@ class ViewListTests(unittest.TestCase):
- def test_sort(self):
- c = self.c[:]
- c.reverse()
-- # c.pprint()
- c.sort()
- self.assertEqual(self.c, c)
-
--# print
--# print a
--# print s
--# print a.items
--# print s.items
--
-
- class StringList(unittest.TestCase):
-
-diff --git a/tools/dev/create_unimap.py b/tools/dev/create_unimap.py
-index a1d92ac..85ac264 100755
---- a/tools/dev/create_unimap.py
-+++ b/tools/dev/create_unimap.py
-@@ -9,6 +9,7 @@
- # Get unicode.xml from
- # <http://www.w3.org/2003/entities/xml/unicode.xml>.
-
-+from __future__ import print_function
- from xml.dom import minidom
- import sys
- import pprint
-diff --git a/tools/dev/generate_punctuation_chars.py b/tools/dev/generate_punctuation_chars.py
-index e05515d..5947fe5 100644
---- a/tools/dev/generate_punctuation_chars.py
-+++ b/tools/dev/generate_punctuation_chars.py
-@@ -33,14 +33,13 @@
- # .. _inline markup recognition rules:
- # ../../docs/ref/rst/restructuredtext.html#inline-markup
-
-+from __future__ import print_function
-
--# Setup::
--
--import sys, re
-+import sys
- import unicodedata
-
- if sys.version_info >= (3,):
-- unichr = chr # unichr not available in Py3k
-+ unichr = chr # unichr not available in Py3k
- else:
- import codecs
- sys.stdout = codecs.getwriter('UTF-8')(sys.stdout)
-@@ -421,44 +420,3 @@ if __name__ == '__main__':
- }
-
- print(module_template % substitutions)
--
--
--# test prints
--# ~~~~~~~~~~~
--#
--# For interactive use in development you may uncomment the following
--# definitions::
--
-- # print "wide" Unicode characters:
-- # ucharlists = unicode_charlists(unicode_punctuation_categories)
-- # for key in ucharlists:
-- # if key.endswith('wide'):
-- # print key, ucharlists[key]
--
-- # print 'openers = ', repr(openers)
-- # print 'closers = ', repr(closers)
-- # print 'delimiters = ', repr(delimiters)
-- # print 'closing_delimiters = ', repr(closing_delimiters)
--
-- # ucharlists = unicode_charlists(unicode_punctuation_categories)
-- # for cat, chars in ucharlists.items():
-- # # print cat, chars
-- # # compact output (visible with a comprehensive font):
-- # print (u":%s: %s" % (cat, u''.join(chars))).encode('utf8')
--
--# verbose print
--#
--# ::
--
-- # print 'openers:'
-- # for ch in openers:
-- # print ch.encode('utf8'), unicodedata.name(ch)
-- # print 'closers:'
-- # for ch in closers:
-- # print ch.encode('utf8'), unicodedata.name(ch)
-- # print 'delimiters:'
-- # for ch in delimiters:
-- # print ch.encode('utf8'), unicodedata.name(ch)
-- # print 'closing_delimiters:'
-- # for ch in closing_delimiters:
-- # print ch.encode('utf8'), unicodedata.name(ch)
-diff --git a/tools/dev/profile_docutils.py b/tools/dev/profile_docutils.py
-index 1f43ecc..4b9125d 100755
---- a/tools/dev/profile_docutils.py
-+++ b/tools/dev/profile_docutils.py
-@@ -4,6 +4,7 @@
- # Author: Lea Wiemann <LeWiemann@gmail.com>
- # Copyright: This script has been placed in the public domain.
-
-+from __future__ import print_function
- import os.path
- import docutils.core
- import hotshot.stats
-diff --git a/tools/dev/unicode2rstsubs.py b/tools/dev/unicode2rstsubs.py
-index d719005..b51eec4 100755
---- a/tools/dev/unicode2rstsubs.py
-+++ b/tools/dev/unicode2rstsubs.py
-@@ -19,6 +19,7 @@ The input file, unicode.xml, is maintained as part of the MathML 2
- Recommentation XML source, and is available from
- <http://www.w3.org/2003/entities/xml/>.
- """
-+from __future__ import print_function
-
- import sys
- import os
-diff --git a/tools/quicktest.py b/tools/quicktest.py
-index 4ddbe59..3b6b6b4 100755
---- a/tools/quicktest.py
-+++ b/tools/quicktest.py
-@@ -5,6 +5,7 @@
- # David Goodger <goodger@python.org>
- # Copyright: This module has been placed in the public domain.
-
-+from __future__ import print_function
- try:
- import locale
- locale.setlocale(locale.LC_ALL, '')
-diff --git a/tools/rst2odt_prepstyles.py b/tools/rst2odt_prepstyles.py
-index b0b7dcc..67f8942 100755
---- a/tools/rst2odt_prepstyles.py
-+++ b/tools/rst2odt_prepstyles.py
-@@ -9,9 +9,10 @@ Fix a word-processor-generated styles.odt for odtwriter use: Drop page size
- specifications from styles.xml in STYLE_FILE.odt.
- """
-
--#
- # Author: Michael Schutte <michi@uiae.at>
-
-+from __future__ import print_function
-+
- from lxml import etree
- import sys
- import zipfile
-@@ -24,28 +25,29 @@ NAMESPACES = {
- "fo": "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0"
- }
-
-+
- def prepstyle(filename):
--
-+
- zin = zipfile.ZipFile(filename)
- styles = zin.read("styles.xml")
--
-+
- root = etree.fromstring(styles)
-- for el in root.xpath("//style:page-layout-properties",
-- namespaces=NAMESPACES):
-+ for el in root.xpath("//style:page-layout-properties",
-+ namespaces=NAMESPACES):
- for attr in el.attrib:
- if attr.startswith("{%s}" % NAMESPACES["fo"]):
- del el.attrib[attr]
--
-+
- tempname = mkstemp()
- zout = zipfile.ZipFile(os.fdopen(tempname[0], "w"), "w",
-- zipfile.ZIP_DEFLATED)
--
-+ zipfile.ZIP_DEFLATED)
-+
- for item in zin.infolist():
- if item.filename == "styles.xml":
- zout.writestr(item, etree.tostring(root))
- else:
- zout.writestr(item, zin.read(item.filename))
--
-+
- zout.close()
- zin.close()
- shutil.move(tempname[1], filename)
-@@ -54,14 +56,12 @@ def prepstyle(filename):
- def main():
- args = sys.argv[1:]
- if len(args) != 1:
-- print >> sys.stderr, __doc__
-- print >> sys.stderr, "Usage: %s STYLE_FILE.odt\n" % sys.argv[0]
-+ print(__doc__, file=sys.stderr)
-+ print("Usage: %s STYLE_FILE.odt\n" % sys.argv[0], file=sys.stderr)
- sys.exit(1)
- filename = args[0]
- prepstyle(filename)
-
-+
- if __name__ == '__main__':
- main()
--
--
--# vim:tw=78:sw=4:sts=4:et:
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0003-py3-Switch-to-except-foo-as-bar-syntax.patch b/srcpkgs/python-docutils/patches/0003-py3-Switch-to-except-foo-as-bar-syntax.patch
deleted file mode 100644
index 261eb62c14e..00000000000
--- a/srcpkgs/python-docutils/patches/0003-py3-Switch-to-except-foo-as-bar-syntax.patch
+++ /dev/null
@@ -1,719 +0,0 @@
-From c361270fb4ee9172a337f5e9c0b014b362fb0b71 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 19 Nov 2019 23:49:35 +0700
-Subject: [PATCH 03/26] py3: Switch to 'except foo as bar' syntax
-
-This is the only form supported in Python 3.x.
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8347 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/core.py | 4 ++--
- docutils/frontend.py | 8 ++++----
- docutils/io.py | 12 ++++++------
- docutils/parsers/rst/directives/__init__.py | 6 +++---
- docutils/parsers/rst/directives/body.py | 2 +-
- docutils/parsers/rst/directives/html.py | 2 +-
- docutils/parsers/rst/directives/misc.py | 20 ++++++++++----------
- docutils/parsers/rst/directives/tables.py | 10 +++++-----
- docutils/parsers/rst/roles.py | 4 ++--
- docutils/parsers/rst/states.py | 20 ++++++++++----------
- docutils/statemachine.py | 6 +++---
- docutils/utils/__init__.py | 2 +-
- docutils/utils/error_reporting.py | 4 ++--
- docutils/writers/_html_base.py | 4 ++--
- docutils/writers/docutils_xml.py | 2 +-
- docutils/writers/latex2e/__init__.py | 2 +-
- test/DocutilsTestSupport.py | 8 ++++----
- test/package_unittest.py | 2 +-
- test/test_error_reporting.py | 14 +++++++-------
- test/test_language.py | 4 ++--
- test/test_publisher.py | 4 ++--
- test/test_utils.py | 2 +-
- 22 files changed, 71 insertions(+), 71 deletions(-)
-
-diff --git a/docutils/core.py b/docutils/core.py
-index 6a99020..12a0c93 100644
---- a/docutils/core.py
-+++ b/docutils/core.py
-@@ -219,10 +219,10 @@ class Publisher(object):
- self.apply_transforms()
- output = self.writer.write(self.document, self.destination)
- self.writer.assemble_parts()
-- except SystemExit, error:
-+ except SystemExit as error:
- exit = 1
- exit_status = error.code
-- except Exception, error:
-+ except Exception as error:
- if not self.settings: # exception too early to report nicely
- raise
- if self.settings.traceback: # Propagate exceptions?
-diff --git a/docutils/frontend.py b/docutils/frontend.py
-index 1aeae5c..689d904 100644
---- a/docutils/frontend.py
-+++ b/docutils/frontend.py
-@@ -62,7 +62,7 @@ def read_config_file(option, opt, value, parser):
- """
- try:
- new_settings = parser.get_config_file_settings(value)
-- except ValueError, error:
-+ except ValueError as error:
- parser.error(error)
- parser.values.update(new_settings, parser)
-
-@@ -346,7 +346,7 @@ class Option(optparse.Option):
- value = getattr(values, setting)
- try:
- new_value = self.validator(setting, value, parser)
-- except Exception, error:
-+ except Exception as error:
- raise (optparse.OptionValueError(
- 'Error in option "%s":\n %s'
- % (opt, ErrorString(error))),
-@@ -605,7 +605,7 @@ class OptionParser(optparse.OptionParser, docutils.SettingsSpec):
- if read_config_files and not self.defaults['_disable_config']:
- try:
- config_settings = self.get_standard_config_settings()
-- except ValueError, error:
-+ except ValueError as error:
- self.error(SafeString(error))
- self.set_defaults_from_dict(config_settings.__dict__)
-
-@@ -826,7 +826,7 @@ Skipping "%s" configuration file.
- new_value = option.validator(
- setting, value, option_parser,
- config_parser=self, config_section=section)
-- except Exception, error:
-+ except Exception as error:
- raise (ValueError(
- 'Error in config file "%s", section "[%s]":\n'
- ' %s\n'
-diff --git a/docutils/io.py b/docutils/io.py
-index 3b0f93e..4466fdb 100644
---- a/docutils/io.py
-+++ b/docutils/io.py
-@@ -114,7 +114,7 @@ class Input(TransformSpec):
- self.successful_encoding = enc
- # Return decoded, removing BOMs.
- return decoded.replace(u'\ufeff', u'')
-- except (UnicodeError, LookupError), err:
-+ except (UnicodeError, LookupError) as err:
- error = err # in Python 3, the <exception instance> is
- # local to the except clause
- raise UnicodeError(
-@@ -244,7 +244,7 @@ class FileInput(Input):
-
- try:
- self.source = open(source_path, mode, **kwargs)
-- except IOError, error:
-+ except IOError as error:
- raise InputError(error.errno, error.strerror, source_path)
- else:
- self.source = sys.stdin
-@@ -272,7 +272,7 @@ class FileInput(Input):
- data = b'\n'.join(data.splitlines()) + b'\n'
- else:
- data = self.source.read()
-- except (UnicodeError, LookupError), err: # (in Py3k read() decodes)
-+ except (UnicodeError, LookupError) as err: # (in Py3k read() decodes)
- if not self.encoding and self.source_path:
- # re-read in binary mode and decode with heuristics
- b_source = open(self.source_path, 'rb')
-@@ -362,7 +362,7 @@ class FileOutput(Output):
- kwargs = {}
- try:
- self.destination = open(self.destination_path, self.mode, **kwargs)
-- except IOError, error:
-+ except IOError as error:
- raise OutputError(error.errno, error.strerror,
- self.destination_path)
- self.opened = True
-@@ -384,7 +384,7 @@ class FileOutput(Output):
-
- try:
- self.destination.write(data)
-- except TypeError, e:
-+ except TypeError as e:
- if sys.version_info >= (3,0) and isinstance(data, bytes):
- try:
- self.destination.buffer.write(data)
-@@ -397,7 +397,7 @@ class FileOutput(Output):
- self.destination.encoding, self.encoding))
- else:
- raise e
-- except (UnicodeError, LookupError), err:
-+ except (UnicodeError, LookupError) as err:
- raise UnicodeError(
- 'Unable to encode output data. output-encoding is: '
- '%s.\n(%s)' % (self.encoding, ErrorString(err)))
-diff --git a/docutils/parsers/rst/directives/__init__.py b/docutils/parsers/rst/directives/__init__.py
-index e0d09fc..8789346 100644
---- a/docutils/parsers/rst/directives/__init__.py
-+++ b/docutils/parsers/rst/directives/__init__.py
-@@ -86,7 +86,7 @@ def directive(directive_name, language_module, document):
- canonicalname = None
- try:
- canonicalname = language_module.directives[normname]
-- except AttributeError, error:
-+ except AttributeError as error:
- msg_text.append('Problem retrieving directive entry from language '
- 'module %r: %s.' % (language_module, error))
- except KeyError:
-@@ -113,7 +113,7 @@ def directive(directive_name, language_module, document):
- return None, messages
- try:
- module = __import__(modulename, globals(), locals(), level=1)
-- except ImportError, detail:
-+ except ImportError as detail:
- messages.append(document.reporter.error(
- 'Error importing directive module "%s" (directive "%s"):\n%s'
- % (modulename, directive_name, detail),
-@@ -309,7 +309,7 @@ def unicode_code(code):
- return unichr(int(value, 16))
- else: # other text
- return code
-- except OverflowError, detail:
-+ except OverflowError as detail:
- raise ValueError('code too large (%s)' % detail)
-
- def single_char_or_unicode(argument):
-diff --git a/docutils/parsers/rst/directives/body.py b/docutils/parsers/rst/directives/body.py
-index b60c3ad..eef1df5 100644
---- a/docutils/parsers/rst/directives/body.py
-+++ b/docutils/parsers/rst/directives/body.py
-@@ -147,7 +147,7 @@ class CodeBlock(Directive):
- try:
- tokens = Lexer(u'\n'.join(self.content), language,
- self.state.document.settings.syntax_highlight)
-- except LexerError, error:
-+ except LexerError as error:
- raise self.warning(error)
-
- if 'number-lines' in self.options:
-diff --git a/docutils/parsers/rst/directives/html.py b/docutils/parsers/rst/directives/html.py
-index 78671e8..ea36936 100644
---- a/docutils/parsers/rst/directives/html.py
-+++ b/docutils/parsers/rst/directives/html.py
-@@ -55,7 +55,7 @@ class MetaBody(states.SpecializedBody):
- try:
- attname, val = utils.extract_name_value(token)[0]
- node[attname.lower()] = val
-- except utils.NameValueError, detail:
-+ except utils.NameValueError as detail:
- line = self.state_machine.line
- msg = self.reporter.error(
- 'Error parsing meta tag attribute "%s": %s.'
-diff --git a/docutils/parsers/rst/directives/misc.py b/docutils/parsers/rst/directives/misc.py
-index 7672de6..0fc3610 100644
---- a/docutils/parsers/rst/directives/misc.py
-+++ b/docutils/parsers/rst/directives/misc.py
-@@ -73,12 +73,12 @@ class Include(Directive):
- include_file = io.FileInput(source_path=path,
- encoding=encoding,
- error_handler=e_handler)
-- except UnicodeEncodeError, error:
-+ except UnicodeEncodeError as error:
- raise self.severe(u'Problems with "%s" directive path:\n'
- 'Cannot encode input file path "%s" '
- '(wrong locale?).' %
- (self.name, SafeString(path)))
-- except IOError, error:
-+ except IOError as error:
- raise self.severe(u'Problems with "%s" directive path:\n%s.' %
- (self.name, ErrorString(error)))
- startline = self.options.get('start-line', None)
-@@ -89,7 +89,7 @@ class Include(Directive):
- rawtext = ''.join(lines[startline:endline])
- else:
- rawtext = include_file.read()
-- except UnicodeError, error:
-+ except UnicodeError as error:
- raise self.severe(u'Problem with "%s" directive:\n%s' %
- (self.name, ErrorString(error)))
- # start-after/end-before: no restrictions on newlines in match-text,
-@@ -213,12 +213,12 @@ class Raw(Directive):
- # TODO: currently, raw input files are recorded as
- # dependencies even if not used for the chosen output format.
- self.state.document.settings.record_dependencies.add(path)
-- except IOError, error:
-+ except IOError as error:
- raise self.severe(u'Problems with "%s" directive path:\n%s.'
- % (self.name, ErrorString(error)))
- try:
- text = raw_file.read()
-- except UnicodeError, error:
-+ except UnicodeError as error:
- raise self.severe(u'Problem with "%s" directive:\n%s'
- % (self.name, ErrorString(error)))
- attributes['source'] = path
-@@ -230,7 +230,7 @@ class Raw(Directive):
- import urllib2
- try:
- raw_text = urllib2.urlopen(source).read()
-- except (urllib2.URLError, IOError, OSError), error:
-+ except (urllib2.URLError, IOError, OSError) as error:
- raise self.severe(u'Problems with "%s" directive URL "%s":\n%s.'
- % (self.name, self.options['url'], ErrorString(error)))
- raw_file = io.StringInput(source=raw_text, source_path=source,
-@@ -238,7 +238,7 @@ class Raw(Directive):
- error_handler=e_handler)
- try:
- text = raw_file.read()
-- except UnicodeError, error:
-+ except UnicodeError as error:
- raise self.severe(u'Problem with "%s" directive:\n%s'
- % (self.name, ErrorString(error)))
- attributes['source'] = source
-@@ -320,7 +320,7 @@ class Unicode(Directive):
- for code in codes:
- try:
- decoded = directives.unicode_code(code)
-- except ValueError, error:
-+ except ValueError as error:
- raise self.error(u'Invalid character code: %s\n%s'
- % (code, ErrorString(error)))
- element += nodes.Text(utils.unescape(decoded), decoded)
-@@ -406,7 +406,7 @@ class Role(Directive):
- self.state.parse_directive_block(
- self.content[1:], self.content_offset, converted_role,
- option_presets={}))
-- except states.MarkupError, detail:
-+ except states.MarkupError as detail:
- error = self.state_machine.reporter.error(
- 'Error in "%s" directive:\n%s.' % (self.name, detail),
- nodes.literal_block(self.block_text, self.block_text),
-@@ -415,7 +415,7 @@ class Role(Directive):
- if 'class' not in options:
- try:
- options['class'] = directives.class_option(new_role_name)
-- except ValueError, detail:
-+ except ValueError as detail:
- error = self.state_machine.reporter.error(
- u'Invalid argument for "%s" directive:\n%s.'
- % (self.name, SafeString(detail)), nodes.literal_block(
-diff --git a/docutils/parsers/rst/directives/tables.py b/docutils/parsers/rst/directives/tables.py
-index 83b7b53..b0a4eac 100644
---- a/docutils/parsers/rst/directives/tables.py
-+++ b/docutils/parsers/rst/directives/tables.py
-@@ -259,9 +259,9 @@ class CSVTable(Table):
- col_widths = self.get_column_widths(max_cols)
- self.extend_short_rows_with_empty_cells(max_cols,
- (table_head, table_body))
-- except SystemMessagePropagation, detail:
-+ except SystemMessagePropagation as detail:
- return [detail.args[0]]
-- except csv.Error, detail:
-+ except csv.Error as detail:
- message = str(detail)
- if sys.version_info < (3,) and '1-character string' in message:
- message += '\nwith Python 2.x this must be an ASCII character.'
-@@ -320,7 +320,7 @@ class CSVTable(Table):
- encoding=encoding,
- error_handler=error_handler)
- csv_data = csv_file.read().splitlines()
-- except IOError, error:
-+ except IOError as error:
- severe = self.state_machine.reporter.severe(
- u'Problems with "%s" directive path:\n%s.'
- % (self.name, SafeString(error)),
-@@ -336,7 +336,7 @@ class CSVTable(Table):
- source = self.options['url']
- try:
- csv_text = urllib2.urlopen(source).read()
-- except (urllib2.URLError, IOError, OSError, ValueError), error:
-+ except (urllib2.URLError, IOError, OSError, ValueError) as error:
- severe = self.state_machine.reporter.severe(
- 'Problems with "%s" directive URL "%s":\n%s.'
- % (self.name, self.options['url'], SafeString(error)),
-@@ -424,7 +424,7 @@ class ListTable(Table):
- header_rows = self.options.get('header-rows', 0)
- stub_columns = self.options.get('stub-columns', 0)
- self.check_table_dimensions(table_data, header_rows, stub_columns)
-- except SystemMessagePropagation, detail:
-+ except SystemMessagePropagation as detail:
- return [detail.args[0]]
- table_node = self.build_table_from_list(table_data, col_widths,
- header_rows, stub_columns)
-diff --git a/docutils/parsers/rst/roles.py b/docutils/parsers/rst/roles.py
-index bf786b7..49b61dc 100644
---- a/docutils/parsers/rst/roles.py
-+++ b/docutils/parsers/rst/roles.py
-@@ -109,7 +109,7 @@ def role(role_name, language_module, lineno, reporter):
- canonicalname = None
- try:
- canonicalname = language_module.roles[normname]
-- except AttributeError, error:
-+ except AttributeError as error:
- msg_text.append('Problem retrieving role entry from language '
- 'module %r: %s.' % (language_module, error))
- except KeyError:
-@@ -333,7 +333,7 @@ def code_role(role, rawtext, text, lineno, inliner, options={}, content=[]):
- try:
- tokens = Lexer(utils.unescape(text, True), language,
- inliner.document.settings.syntax_highlight)
-- except LexerError, error:
-+ except LexerError as error:
- msg = inliner.reporter.warning(error)
- prb = inliner.problematic(rawtext, rawtext, msg)
- return [prb], [msg]
-diff --git a/docutils/parsers/rst/states.py b/docutils/parsers/rst/states.py
-index a2970c8..c9b4fa3 100644
---- a/docutils/parsers/rst/states.py
-+++ b/docutils/parsers/rst/states.py
-@@ -1497,7 +1497,7 @@ class Body(RSTState):
- (optionlist.source, optionlist.line) = self.state_machine.get_source_and_line()
- try:
- listitem, blank_finish = self.option_list_item(match)
-- except MarkupError, error:
-+ except MarkupError as error:
- # This shouldn't happen; pattern won't match.
- msg = self.reporter.error(u'Invalid option list marker: %s' %
- error)
-@@ -1686,7 +1686,7 @@ class Body(RSTState):
- + 1)
- table = self.build_table(tabledata, tableline)
- nodelist = [table] + messages
-- except tableparser.TableMarkupError, err:
-+ except tableparser.TableMarkupError as err:
- nodelist = self.malformed_table(block, ' '.join(err.args),
- offset=err.offset) + messages
- else:
-@@ -1698,7 +1698,7 @@ class Body(RSTState):
- blank_finish = 1
- try:
- block = self.state_machine.get_text_block(flush_left=True)
-- except statemachine.UnexpectedIndentationError, err:
-+ except statemachine.UnexpectedIndentationError as err:
- block, src, srcline = err.args
- messages.append(self.reporter.error('Unexpected indentation.',
- source=src, line=srcline))
-@@ -2135,7 +2135,7 @@ class Body(RSTState):
- arguments, options, content, content_offset = (
- self.parse_directive_block(indented, line_offset,
- directive, option_presets))
-- except MarkupError, detail:
-+ except MarkupError as detail:
- error = self.reporter.error(
- 'Error in "%s" directive:\n%s.' % (type_name,
- ' '.join(detail.args)),
-@@ -2146,7 +2146,7 @@ class Body(RSTState):
- content_offset, block_text, self, self.state_machine)
- try:
- result = directive_instance.run()
-- except docutils.parsers.rst.DirectiveError, error:
-+ except docutils.parsers.rst.DirectiveError as error:
- msg_node = self.reporter.system_message(error.level, error.msg,
- line=lineno)
- msg_node += nodes.literal_block(block_text, block_text)
-@@ -2263,11 +2263,11 @@ class Body(RSTState):
- return 0, 'invalid option block'
- try:
- options = utils.extract_extension_options(node, option_spec)
-- except KeyError, detail:
-+ except KeyError as detail:
- return 0, ('unknown option: "%s"' % detail.args[0])
-- except (ValueError, TypeError), detail:
-+ except (ValueError, TypeError) as detail:
- return 0, ('invalid option value: %s' % ' '.join(detail.args))
-- except utils.ExtensionOptionError, detail:
-+ except utils.ExtensionOptionError as detail:
- return 0, ('invalid option data: %s' % ' '.join(detail.args))
- if blank_finish:
- return 1, options
-@@ -2354,7 +2354,7 @@ class Body(RSTState):
- if expmatch:
- try:
- return method(self, expmatch)
-- except MarkupError, error:
-+ except MarkupError as error:
- lineno = self.state_machine.abs_line_number()
- message = ' '.join(error.args)
- errors.append(self.reporter.warning(message, line=lineno))
-@@ -2777,7 +2777,7 @@ class Text(RSTState):
- msg = None
- try:
- block = self.state_machine.get_text_block(flush_left=True)
-- except statemachine.UnexpectedIndentationError, err:
-+ except statemachine.UnexpectedIndentationError as err:
- block, src, srcline = err.args
- msg = self.reporter.error('Unexpected indentation.',
- source=src, line=srcline)
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index 6714a04..6a2322c 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -248,7 +248,7 @@ class StateMachine(object):
- break
- else:
- results.extend(result)
-- except TransitionCorrection, exception:
-+ except TransitionCorrection as exception:
- self.previous_line() # back up for another try
- transitions = (exception.args[0],)
- if self.debug:
-@@ -257,7 +257,7 @@ class StateMachine(object):
- 'state "%s", transition %s.'
- % (state.__class__.__name__, transitions[0])), file=self._stderr)
- continue
-- except StateCorrection, exception:
-+ except StateCorrection as exception:
- self.previous_line() # back up for another try
- next_state = exception.args[0]
- if len(exception.args) == 1:
-@@ -413,7 +413,7 @@ class StateMachine(object):
- flush_left)
- self.next_line(len(block) - 1)
- return block
-- except UnexpectedIndentationError, err:
-+ except UnexpectedIndentationError as err:
- block = err.args[0]
- self.next_line(len(block) - 1) # advance to last line of block
- raise
-diff --git a/docutils/utils/__init__.py b/docutils/utils/__init__.py
-index 692335a..c71d508 100644
---- a/docutils/utils/__init__.py
-+++ b/docutils/utils/__init__.py
-@@ -326,7 +326,7 @@ def assemble_option_dict(option_list, options_spec):
- raise DuplicateOptionError('duplicate option "%s"' % name)
- try:
- options[name] = convertor(value)
-- except (ValueError, TypeError), detail:
-+ except (ValueError, TypeError) as detail:
- raise detail.__class__('(option: "%s"; value: %r)\n%s'
- % (name, value, ' '.join(detail.args)))
- return options
-diff --git a/docutils/utils/error_reporting.py b/docutils/utils/error_reporting.py
-index 02e62eb..8ea7108 100644
---- a/docutils/utils/error_reporting.py
-+++ b/docutils/utils/error_reporting.py
-@@ -49,7 +49,7 @@ else:
- # locale.getpreferredencoding([do_setlocale=True|False])
- # has side-effects | might return a wrong guess.
- # (cf. Update 1 in http://stackoverflow.com/questions/4082645/using-python-2-xs-locale-module-to-format-numbers-and-currency)
-- except ValueError, error: # OS X may set UTF-8 without language code
-+ except ValueError as error: # OS X may set UTF-8 without language code
- # see http://bugs.python.org/issue18378
- # and https://sourceforge.net/p/docutils/bugs/298/
- if "unknown locale: UTF-8" in error.args:
-@@ -113,7 +113,7 @@ class SafeString(object):
- if isinstance(self.data, EnvironmentError):
- u = u.replace(": u'", ": '") # normalize filename quoting
- return u
-- except UnicodeError, error: # catch ..Encode.. and ..Decode.. errors
-+ except UnicodeError as error: # catch ..Encode.. and ..Decode.. errors
- if isinstance(self.data, EnvironmentError):
- return u"[Errno %s] %s: '%s'" % (self.data.errno,
- SafeString(self.data.strerror, self.encoding,
-diff --git a/docutils/writers/_html_base.py b/docutils/writers/_html_base.py
-index fa27911..23efeea 100644
---- a/docutils/writers/_html_base.py
-+++ b/docutils/writers/_html_base.py
-@@ -302,7 +302,7 @@ class HTMLTranslator(nodes.NodeVisitor):
- content = io.FileInput(source_path=path,
- encoding='utf-8').read()
- self.settings.record_dependencies.add(path)
-- except IOError, err:
-+ except IOError as err:
- msg = u"Cannot embed stylesheet '%s': %s." % (
- path, SafeString(err.strerror))
- self.document.reporter.error(msg)
-@@ -1159,7 +1159,7 @@ class HTMLTranslator(nodes.NodeVisitor):
- 'with math-output "MathML"')
- except OSError:
- raise OSError('is "latexmlmath" in your PATH?')
-- except SyntaxError, err:
-+ except SyntaxError as err:
- err_node = self.document.reporter.error(err, base_node=node)
- self.visit_system_message(err_node)
- self.body.append(self.starttag(node, 'p'))
-diff --git a/docutils/writers/docutils_xml.py b/docutils/writers/docutils_xml.py
-index 148041a..e870ee1 100644
---- a/docutils/writers/docutils_xml.py
-+++ b/docutils/writers/docutils_xml.py
-@@ -186,7 +186,7 @@ class XMLTranslator(nodes.GenericNodeVisitor):
- xml_string = xml_string.encode('utf8')
- try:
- self.xmlparser.parse(StringIO(xml_string))
-- except xml.sax._exceptions.SAXParseException, error:
-+ except xml.sax._exceptions.SAXParseException as error:
- col_num = self.the_handle.locator.getColumnNumber()
- line_num = self.the_handle.locator.getLineNumber()
- srcline = node.line
-diff --git a/docutils/writers/latex2e/__init__.py b/docutils/writers/latex2e/__init__.py
-index 5c33d0a..5eaa7f0 100644
---- a/docutils/writers/latex2e/__init__.py
-+++ b/docutils/writers/latex2e/__init__.py
-@@ -1416,7 +1416,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
- content = io.FileInput(source_path=path,
- encoding='utf-8').read()
- self.settings.record_dependencies.add(path)
-- except IOError, err:
-+ except IOError as err:
- msg = u"Cannot embed stylesheet '%s':\n %s." % (
- path, SafeString(err.strerror))
- self.document.reporter.error(msg)
-diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index 25196ec..e77447a 100644
---- a/test/DocutilsTestSupport.py
-+++ b/test/DocutilsTestSupport.py
-@@ -230,7 +230,7 @@ class CustomTestCase(StandardTestCase):
- output = '\n'.join(output.splitlines())
- try:
- self.assertEqual(output, expected)
-- except AssertionError, error:
-+ except AssertionError as error:
- print('\n%s\ninput:' % (self,), file=sys.stderr)
- print(input, file=sys.stderr)
- try:
-@@ -543,7 +543,7 @@ class GridTableParserTestCase(CustomTestCase):
- self.parser.find_head_body_sep()
- self.parser.parse_table()
- output = self.parser.cells
-- except Exception, details:
-+ except Exception as details:
- output = '%s: %s' % (details.__class__.__name__, details)
- self.compare_output(self.input, pformat(output) + '\n',
- pformat(self.expected) + '\n')
-@@ -552,7 +552,7 @@ class GridTableParserTestCase(CustomTestCase):
- try:
- output = self.parser.parse(StringList(string2lines(self.input),
- 'test data'))
-- except Exception, details:
-+ except Exception as details:
- output = '%s: %s' % (details.__class__.__name__, details)
- self.compare_output(self.input, pformat(output) + '\n',
- pformat(self.expected) + '\n')
-@@ -865,7 +865,7 @@ def exception_data(func, *args, **kwds):
- """
- try:
- func(*args, **kwds)
-- except Exception, detail:
-+ except Exception as detail:
- return (detail, detail.args,
- '%s: %s' % (detail.__class__.__name__, detail))
-
-diff --git a/test/package_unittest.py b/test/package_unittest.py
-index daf11f4..16b00dc 100644
---- a/test/package_unittest.py
-+++ b/test/package_unittest.py
-@@ -64,7 +64,7 @@ def parseArgs(argv=sys.argv):
- debug =1
- if len(args) != 0:
- usageExit("No command-line arguments supported yet.")
-- except getopt.error, msg:
-+ except getopt.error as msg:
- usageExit(msg)
-
- def loadTestModules(path, name='', packages=None):
-diff --git a/test/test_error_reporting.py b/test/test_error_reporting.py
-index c4eae40..bae9db5 100644
---- a/test/test_error_reporting.py
-+++ b/test/test_error_reporting.py
-@@ -19,7 +19,7 @@ instances like, e.g., ::
-
- try:
- something
-- except IOError, error:
-+ except IOError as error:
- print('Found %s' % error)
-
- unless the minimal required Python version has this problem fixed.
-@@ -223,29 +223,29 @@ class SafeStringTests_locale(unittest.TestCase):
- us = u'\xfc'
- try:
- open(b'\xfc')
-- except IOError, e: # in Python 3 the name for the exception instance
-+ except IOError as e: # in Python 3 the name for the exception instance
- bioe = e # is local to the except clause
- try:
- open(u'\xfc')
-- except IOError, e:
-+ except IOError as e:
- uioe = e
- except UnicodeEncodeError:
- try:
- open(u'\xfc'.encode(sys.getfilesystemencoding(), 'replace'))
-- except IOError, e:
-+ except IOError as e:
- uioe = e
- try:
- os.chdir(b'\xfc')
-- except OSError, e:
-+ except OSError as e:
- bose = e
- try:
- os.chdir(u'\xfc')
-- except OSError, e:
-+ except OSError as e:
- uose = e
- except UnicodeEncodeError:
- try:
- os.chdir(u'\xfc'.encode(sys.getfilesystemencoding(), 'replace'))
-- except OSError, e:
-+ except OSError as e:
- uose = e
- # wrapped test data:
- wbioe = SafeString(bioe)
-diff --git a/test/test_language.py b/test/test_language.py
-index 70a497e..0e05d44 100755
---- a/test/test_language.py
-+++ b/test/test_language.py
-@@ -144,7 +144,7 @@ class LanguageTestCase(DocutilsTestSupport.CustomTestCase):
- func, msg = directives.directive(d, module, None)
- if not func:
- failures.append('"%s": unknown directive' % d)
-- except Exception, error:
-+ except Exception as error:
- failures.append('"%s": %s' % (d, error))
- inverted = self._invert(module.directives)
- canonical = directives._directive_registry.keys()
-@@ -179,7 +179,7 @@ class LanguageTestCase(DocutilsTestSupport.CustomTestCase):
- method = roles._role_registry[d]
- #if not method:
- # failures.append('"%s": unknown role' % d)
-- except KeyError, error:
-+ except KeyError as error:
- failures.append('"%s": %s' % (d, error))
- inverted = self._invert(module.roles)
- canonical = roles._role_registry.keys()
-diff --git a/test/test_publisher.py b/test/test_publisher.py
-index f04ebf7..04d9c71 100755
---- a/test/test_publisher.py
-+++ b/test/test_publisher.py
-@@ -65,7 +65,7 @@ class PublisherTests(DocutilsTestSupport.StandardTestCase):
- try:
- core.publish_cmdline(argv=['nonexisting/path'],
- settings_overrides={'traceback': True})
-- except IOError, e:
-+ except IOError as e:
- self.assertTrue(isinstance(e, io.InputError))
-
-
-@@ -74,7 +74,7 @@ class PublisherTests(DocutilsTestSupport.StandardTestCase):
- try:
- core.publish_cmdline(argv=['data/include.txt', 'nonexisting/path'],
- settings_overrides={'traceback': True})
-- except IOError, e:
-+ except IOError as e:
- self.assertTrue(isinstance(e, io.OutputError))
-
-
-diff --git a/test/test_utils.py b/test/test_utils.py
-index e1fcc8f..59e29c8 100755
---- a/test/test_utils.py
-+++ b/test/test_utils.py
-@@ -88,7 +88,7 @@ class ReporterTests(unittest.TestCase):
- and hence fails with unicode message"""
- try:
- raise Exception(u'mesidʒ')
-- except Exception, err:
-+ except Exception as err:
- sw = self.reporter.system_message(0, err)
- self.assertEqual(sw.pformat(), u"""\
- <system_message level="0" source="test data" type="DEBUG">
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0004-py3-Add-aliases-for-removed-symbols.patch b/srcpkgs/python-docutils/patches/0004-py3-Add-aliases-for-removed-symbols.patch
deleted file mode 100644
index 4d6d9e84f0c..00000000000
--- a/srcpkgs/python-docutils/patches/0004-py3-Add-aliases-for-removed-symbols.patch
+++ /dev/null
@@ -1,599 +0,0 @@
-From 447e4896c9b2487fb28c25f7564ebcb6733d2363 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 19 Nov 2019 23:50:50 +0700
-Subject: [PATCH 04/26] py3: Add aliases for removed symbols
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Add aliases for symbols that have been removed in Python 3.x, namely
-basestring, unicode, unichr and StandardError.
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-small fixes by Günter Milde.
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8348 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/__init__.py | 3 +-
- docutils/frontend.py | 3 +
- docutils/io.py | 3 +
- docutils/nodes.py | 8 ++-
- docutils/parsers/rst/directives/__init__.py | 3 +
- docutils/statemachine.py | 10 +++-
- docutils/transforms/frontmatter.py | 6 ++
- docutils/transforms/universal.py | 5 ++
- docutils/utils/__init__.py | 3 +
- docutils/utils/error_reporting.py | 10 +++-
- docutils/utils/math/math2html.py | 59 ++++---------------
- docutils/writers/_html_base.py | 4 ++
- docutils/writers/docutils_xml.py | 3 +
- docutils/writers/latex2e/__init__.py | 4 ++
- docutils/writers/manpage.py | 6 +-
- test/DocutilsTestSupport.py | 4 ++
- test/test__init__.py | 4 ++
- test/test_error_reporting.py | 3 +
- test/test_language.py | 7 ++-
- 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 ++
- tools/dev/create_unimap.py | 10 ++--
- 24 files changed, 115 insertions(+), 62 deletions(-)
-
-diff --git a/docutils/__init__.py b/docutils/__init__.py
-index 7d6a679..8178816 100644
---- a/docutils/__init__.py
-+++ b/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/frontend.py b/docutils/frontend.py
-index 689d904..ebdbd6a 100644
---- a/docutils/frontend.py
-+++ b/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/io.py b/docutils/io.py
-index 4466fdb..3cdf00e 100644
---- a/docutils/io.py
-+++ b/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/nodes.py b/docutils/nodes.py
-index 8a5b7bb..fa02c6e 100644
---- a/docutils/nodes.py
-+++ b/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/parsers/rst/directives/__init__.py b/docutils/parsers/rst/directives/__init__.py
-index 8789346..7bccb5b 100644
---- a/docutils/parsers/rst/directives/__init__.py
-+++ b/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/statemachine.py b/docutils/statemachine.py
-index 6a2322c..b56f3c5 100644
---- a/docutils/statemachine.py
-+++ b/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):
-
-@@ -1124,7 +1127,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
-+ mine = self.data
-+ yours = self.__cast(other)
-+ return (mine > yours) - (yours < mine)
-
- def __cast(self, other):
- if isinstance(other, ViewList):
-diff --git a/docutils/transforms/frontmatter.py b/docutils/transforms/frontmatter.py
-index f94c9da..1279f50 100644
---- a/docutils/transforms/frontmatter.py
-+++ b/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/transforms/universal.py b/docutils/transforms/universal.py
-index 47e1276..49fb2c8 100644
---- a/docutils/transforms/universal.py
-+++ b/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/utils/__init__.py b/docutils/utils/__init__.py
-index c71d508..77c70f8 100644
---- a/docutils/utils/__init__.py
-+++ b/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/utils/error_reporting.py b/docutils/utils/error_reporting.py
-index 8ea7108..8fcc816 100644
---- a/docutils/utils/error_reporting.py
-+++ b/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/utils/math/math2html.py b/docutils/utils/math/math2html.py
-index 1f61e23..4967165 100644
---- a/docutils/utils/math/math2html.py
-+++ b/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/writers/_html_base.py b/docutils/writers/_html_base.py
-index 23efeea..a7f3b53 100644
---- a/docutils/writers/_html_base.py
-+++ b/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/writers/docutils_xml.py b/docutils/writers/docutils_xml.py
-index e870ee1..34e810d 100644
---- a/docutils/writers/docutils_xml.py
-+++ b/docutils/writers/docutils_xml.py
-@@ -30,6 +30,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/writers/latex2e/__init__.py b/docutils/writers/latex2e/__init__.py
-index 5eaa7f0..e21c74b 100644
---- a/docutils/writers/latex2e/__init__.py
-+++ b/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/writers/manpage.py b/docutils/writers/manpage.py
-index 287c6f2..9c887c7 100644
---- a/docutils/writers/manpage.py
-+++ b/docutils/writers/manpage.py
-@@ -45,6 +45,10 @@ by the command whatis or apropos.
- __docformat__ = 'reStructuredText'
-
- import re
-+import sys
-+
-+if sys.version_info < (3, 0):
-+ range = xrange
-
- import docutils
- from docutils import nodes, writers, languages
-@@ -255,7 +259,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/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index e77447a..c6f5b9f 100644
---- a/test/DocutilsTestSupport.py
-+++ b/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/test/test__init__.py b/test/test__init__.py
-index 01a1c59..8f1d749 100644
---- a/test/test__init__.py
-+++ b/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/test/test_error_reporting.py b/test/test_error_reporting.py
-index bae9db5..893082c 100644
---- a/test/test_error_reporting.py
-+++ b/test/test_error_reporting.py
-@@ -46,6 +46,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/test/test_language.py b/test/test_language.py
-index 0e05d44..30af81a 100755
---- a/test/test_language.py
-+++ b/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/test/test_nodes.py b/test/test_nodes.py
-index f6bc6b2..924569f 100755
---- a/test/test_nodes.py
-+++ b/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/test/test_parsers/test_rst/test_directives/test_include.py b/test/test_parsers/test_rst/test_directives/test_include.py
-index 2a6e5be..6e9dc84 100755
---- a/test/test_parsers/test_rst/test_directives/test_include.py
-+++ b/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/test/test_parsers/test_rst/test_directives/test_tables.py b/test/test_parsers/test_rst/test_directives/test_tables.py
-index f7496ad..2c5f832 100755
---- a/test/test_parsers/test_rst/test_directives/test_tables.py
-+++ b/test/test_parsers/test_rst/test_directives/test_tables.py
-@@ -16,6 +16,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/test/test_parsers/test_rst/test_directives/test_unicode.py b/test/test_parsers/test_rst/test_directives/test_unicode.py
-index b140050..5cdfd5a 100755
---- a/test/test_parsers/test_rst/test_directives/test_unicode.py
-+++ b/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/tools/dev/create_unimap.py b/tools/dev/create_unimap.py
-index 85ac264..74e8bc7 100755
---- a/tools/dev/create_unimap.py
-+++ b/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.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0005-py3-Resolve-some-additional-undefined-symbols.patch b/srcpkgs/python-docutils/patches/0005-py3-Resolve-some-additional-undefined-symbols.patch
deleted file mode 100644
index 2288a9bc6be..00000000000
--- a/srcpkgs/python-docutils/patches/0005-py3-Resolve-some-additional-undefined-symbols.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 6bd112802f857b32764afe87ce7828db50077086 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 19 Nov 2019 23:52:14 +0700
-Subject: [PATCH 05/26] py3: Resolve some additional undefined symbols
-
-Found with flake8
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8352 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/utils/math/math2html.py | 8 ++++----
- tools/dev/generate_punctuation_chars.py | 11 -----------
- 2 files changed, 4 insertions(+), 15 deletions(-)
-
-diff --git a/docutils/utils/math/math2html.py b/docutils/utils/math/math2html.py
-index 4967165..4a7209d 100644
---- a/docutils/utils/math/math2html.py
-+++ b/docutils/utils/math/math2html.py
-@@ -1624,7 +1624,7 @@ class TaggedOutput(ContentsOutput):
-
- def open(self, container):
- "Get opening line."
-- if not self.checktag():
-+ if not self.checktag(container):
- return ''
- open = '<' + self.tag + '>'
- if self.breaklines:
-@@ -1633,7 +1633,7 @@ class TaggedOutput(ContentsOutput):
-
- def close(self, container):
- "Get closing line."
-- if not self.checktag():
-+ if not self.checktag(container):
- return ''
- close = '</' + self.tag.split()[0] + '>'
- if self.breaklines:
-@@ -1642,14 +1642,14 @@ class TaggedOutput(ContentsOutput):
-
- def selfclosing(self, container):
- "Get self-closing line."
-- if not self.checktag():
-+ if not self.checktag(container):
- return ''
- selfclosing = '<' + self.tag + '/>'
- if self.breaklines:
- return selfclosing + '\n'
- return selfclosing
-
-- def checktag(self):
-+ def checktag(self, container):
- "Check that the tag is valid."
- if not self.tag:
- Trace.error('No tag in ' + unicode(container))
-diff --git a/tools/dev/generate_punctuation_chars.py b/tools/dev/generate_punctuation_chars.py
-index 5947fe5..a30c5ca 100644
---- a/tools/dev/generate_punctuation_chars.py
-+++ b/tools/dev/generate_punctuation_chars.py
-@@ -319,17 +319,6 @@ def print_differences(old, new, name):
- else:
- print('%s unchanged' % name)
-
--def print_quote_pairs():
-- pairs = [(o,c) for o,c in quote_pairs.items()]
-- for o,c in sorted(pairs):
-- print((u'%s %s' % (o,c)).encode('utf8'))
--
-- # # Test open/close matching:
-- # for i in range(min(len(openers),len(closers))):
-- # print('%4d %s %s' % (i, openers[i].encode('utf8'),
-- # closers[i].encode('utf8'))
--
--
- # Output
- # ------
- #
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0006-py3-Replace-deprecated-form-of-raising-exception.patch b/srcpkgs/python-docutils/patches/0006-py3-Replace-deprecated-form-of-raising-exception.patch
deleted file mode 100644
index 2c2defe0593..00000000000
--- a/srcpkgs/python-docutils/patches/0006-py3-Replace-deprecated-form-of-raising-exception.patch
+++ /dev/null
@@ -1,263 +0,0 @@
-From efe0c9a75c5b2a8d094840927e93e0e873e77ece Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 19 Nov 2019 23:52:58 +0700
-Subject: [PATCH 06/26] py3: Replace deprecated form of raising exception
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8353 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/frontend.py | 25 ++++++++++---------------
- docutils/nodes.py | 12 ++++++------
- docutils/transforms/frontmatter.py | 4 ++--
- docutils/utils/roman.py | 9 +++++----
- docutils/writers/manpage.py | 4 ++--
- test/DocutilsTestSupport.py | 21 ++++-----------------
- test/package_unittest.py | 2 +-
- 7 files changed, 30 insertions(+), 47 deletions(-)
-
-diff --git a/docutils/frontend.py b/docutils/frontend.py
-index ebdbd6a..4b389b0 100644
---- a/docutils/frontend.py
-+++ b/docutils/frontend.py
-@@ -74,9 +74,8 @@ def validate_encoding(setting, value, option_parser,
- try:
- codecs.lookup(value)
- except LookupError:
-- raise (LookupError('setting "%s": unknown encoding: "%s"'
-- % (setting, value)),
-- None, sys.exc_info()[2])
-+ raise LookupError('setting "%s": unknown encoding: "%s"'
-+ % (setting, value))
- return value
-
- def validate_encoding_error_handler(setting, value, option_parser,
-@@ -84,12 +83,11 @@ def validate_encoding_error_handler(setting, value, option_parser,
- try:
- codecs.lookup_error(value)
- except LookupError:
-- raise (LookupError(
-+ raise LookupError(
- 'unknown encoding error handler: "%s" (choices: '
- '"strict", "ignore", "replace", "backslashreplace", '
- '"xmlcharrefreplace", and possibly others; see documentation for '
-- 'the Python ``codecs`` module)' % value),
-- None, sys.exc_info()[2])
-+ 'the Python ``codecs`` module)' % value)
- return value
-
- def validate_encoding_and_error_handler(
-@@ -125,8 +123,7 @@ def validate_boolean(setting, value, option_parser,
- try:
- return option_parser.booleans[value.strip().lower()]
- except KeyError:
-- raise (LookupError('unknown boolean value: "%s"' % value),
-- None, sys.exc_info()[2])
-+ raise LookupError('unknown boolean value: "%s"' % value)
-
- def validate_ternary(setting, value, option_parser,
- config_parser=None, config_section=None):
-@@ -157,8 +154,7 @@ def validate_threshold(setting, value, option_parser,
- try:
- return option_parser.thresholds[value.lower()]
- except (KeyError, AttributeError):
-- raise (LookupError('unknown threshold: %r.' % value),
-- None, sys.exc_info[2])
-+ raise LookupError('unknown threshold: %r.' % value)
-
- def validate_colon_separated_string_list(
- setting, value, option_parser, config_parser=None, config_section=None):
-@@ -350,10 +346,9 @@ class Option(optparse.Option):
- try:
- new_value = self.validator(setting, value, parser)
- except Exception as error:
-- raise (optparse.OptionValueError(
-+ raise optparse.OptionValueError(
- 'Error in option "%s":\n %s'
-- % (opt, ErrorString(error))),
-- None, sys.exc_info()[2])
-+ % (opt, ErrorString(error)))
- setattr(values, setting, new_value)
- if self.overrides:
- setattr(values, self.overrides, None)
-@@ -830,12 +825,12 @@ Skipping "%s" configuration file.
- setting, value, option_parser,
- config_parser=self, config_section=section)
- except Exception as error:
-- raise (ValueError(
-+ raise ValueError(
- 'Error in config file "%s", section "[%s]":\n'
- ' %s\n'
- ' %s = %s'
- % (filename, section, ErrorString(error),
-- setting, value)), None, sys.exc_info()[2])
-+ setting, value))
- self.set(section, setting, new_value)
- if option.overrides:
- self.set(section, option.overrides, None)
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index fa02c6e..71189ab 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -594,8 +594,8 @@ class Element(Node):
- assert key.step in (None, 1), 'cannot handle slice with stride'
- return self.children[key.start:key.stop]
- else:
-- raise TypeError, ('element index must be an integer, a slice, or '
-- 'an attribute name string')
-+ raise TypeError('element index must be an integer, a slice, or '
-+ 'an attribute name string')
-
- def __setitem__(self, key, item):
- if isinstance(key, basestring):
-@@ -609,8 +609,8 @@ class Element(Node):
- self.setup_child(node)
- self.children[key.start:key.stop] = item
- else:
-- raise TypeError, ('element index must be an integer, a slice, or '
-- 'an attribute name string')
-+ raise TypeError('element index must be an integer, a slice, or '
-+ 'an attribute name string')
-
- def __delitem__(self, key):
- if isinstance(key, basestring):
-@@ -621,8 +621,8 @@ class Element(Node):
- assert key.step in (None, 1), 'cannot handle slice with stride'
- del self.children[key.start:key.stop]
- else:
-- raise TypeError, ('element index must be an integer, a simple '
-- 'slice, or an attribute name string')
-+ raise TypeError('element index must be an integer, a simple '
-+ 'slice, or an attribute name string')
-
- def __add__(self, other):
- return self.children + other
-diff --git a/docutils/transforms/frontmatter.py b/docutils/transforms/frontmatter.py
-index 1279f50..23b9c95 100644
---- a/docutils/transforms/frontmatter.py
-+++ b/docutils/transforms/frontmatter.py
-@@ -57,7 +57,7 @@ class TitlePromoter(Transform):
- """
- # Type check
- if not isinstance(node, nodes.Element):
-- raise TypeError, 'node must be of Element-derived type.'
-+ raise TypeError('node must be of Element-derived type.')
-
- # `node` must not have a title yet.
- assert not (len(node) and isinstance(node[0], nodes.title))
-@@ -100,7 +100,7 @@ class TitlePromoter(Transform):
- """
- # Type check
- if not isinstance(node, nodes.Element):
-- raise TypeError, 'node must be of Element-derived type.'
-+ raise TypeError('node must be of Element-derived type.')
-
- subsection, index = self.candidate_index(node)
- if index is None:
-diff --git a/docutils/utils/roman.py b/docutils/utils/roman.py
-index 0335f29..fc4680d 100644
---- a/docutils/utils/roman.py
-+++ b/docutils/utils/roman.py
-@@ -40,9 +40,9 @@ romanNumeralMap = (('M', 1000),
- def toRoman(n):
- """convert integer to Roman numeral"""
- if not (0 < n < 5000):
-- raise OutOfRangeError, "number out of range (must be 1..4999)"
-+ raise OutOfRangeError("number out of range (must be 1..4999)")
- if int(n) != n:
-- raise NotIntegerError, "decimals can not be converted"
-+ raise NotIntegerError("decimals can not be converted")
-
- result = ""
- for numeral, integer in romanNumeralMap:
-@@ -67,9 +67,10 @@ romanNumeralPattern = re.compile("""
- def fromRoman(s):
- """convert Roman numeral to integer"""
- if not s:
-- raise InvalidRomanNumeralError, 'Input can not be blank'
-+ raise InvalidRomanNumeralError('Input can not be blank')
-+
- if not romanNumeralPattern.search(s):
-- raise InvalidRomanNumeralError, 'Invalid Roman numeral: %s' % s
-+ raise InvalidRomanNumeralError('Invalid Roman numeral: %s' % s)
-
- result = 0
- index = 0
-diff --git a/docutils/writers/manpage.py b/docutils/writers/manpage.py
-index 9c887c7..cbb8648 100644
---- a/docutils/writers/manpage.py
-+++ b/docutils/writers/manpage.py
-@@ -715,7 +715,7 @@ class Translator(nodes.NodeVisitor):
- pass
-
- def visit_header(self, node):
-- raise NotImplementedError, node.astext()
-+ raise NotImplementedError(node.astext())
-
- def depart_header(self, node):
- pass
-@@ -855,7 +855,7 @@ class Translator(nodes.NodeVisitor):
- self.depart_literal_block(node)
-
- def visit_meta(self, node):
-- raise NotImplementedError, node.astext()
-+ raise NotImplementedError(node.astext())
-
- def depart_meta(self, node):
- pass
-diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index c6f5b9f..a1fec25 100644
---- a/test/DocutilsTestSupport.py
-+++ b/test/DocutilsTestSupport.py
-@@ -123,30 +123,17 @@ class StandardTestCase(unittest.TestCase):
- operator.
- """
- if not first == second:
-- raise self.failureException, (
-- msg or '%s != %s' % _format_str(first, second))
-+ raise self.failureException(
-+ msg or '%s != %s' % _format_str(first, second))
-
- def assertNotEqual(self, first, second, msg=None):
- """Fail if the two objects are equal as determined by the '=='
- operator.
- """
- if first == second:
-- raise self.failureException, (
-- msg or '%s == %s' % _format_str(first, second))
-+ raise self.failureException(
-+ msg or '%s == %s' % _format_str(first, second))
-
-- # assertIn and assertNotIn: new in Python 2.7:
-- if sys.version_info < (2,7):
--
-- def assertIn(self, a, b, msg=None):
-- if a not in b:
-- raise self.failureException, (
-- msg or '%s not in %s' % _format_str(a, b))
--
-- def assertNotIn(self, a, b, msg=None):
-- if a in b:
-- raise self.failureException, (
-- msg or '%s in %s' % _format_str(a, b))
--
- # aliases for assertion methods, deprecated since Python 2.7
-
- failUnlessEqual = assertEquals = assertEqual
-diff --git a/test/package_unittest.py b/test/package_unittest.py
-index 16b00dc..4db826b 100644
---- a/test/package_unittest.py
-+++ b/test/package_unittest.py
-@@ -120,7 +120,7 @@ def loadTestModules(path, name='', packages=None):
- elif isinstance(suite, unittest.TestSuite):
- testSuite.addTest(suite)
- else:
-- raise AssertionError, "don't understand suite (%s)" % mod
-+ raise AssertionError("don't understand suite (%s)" % mod)
- sys.path.pop(0)
- return testSuite
-
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0007-py3-Replace-sys.maxint-with-sys.maxsize.patch b/srcpkgs/python-docutils/patches/0007-py3-Replace-sys.maxint-with-sys.maxsize.patch
deleted file mode 100644
index eb0c40f7a1f..00000000000
--- a/srcpkgs/python-docutils/patches/0007-py3-Replace-sys.maxint-with-sys.maxsize.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-From d6f8634004aa679d2d71037bd63af82052f08fee Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 19 Nov 2019 23:53:54 +0700
-Subject: [PATCH 07/26] py3: Replace 'sys.maxint' with 'sys.maxsize'
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From the Python 3 release docs [1]:
-
- The sys.maxint constant was removed, since there is no longer a limit
- to the value of integers. However, sys.maxsize can be used as an
- integer larger than any practical list or string index. It conforms to
- the implementation’s “natural” integer size and is typically the
- same as sys.maxint in previous releases on the same platform (assuming
- the same build options).
-
-[1] https://docs.python.org/3.1/whatsnew/3.0.html#integers
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8354 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/nodes.py | 4 ++--
- docutils/parsers/rst/tableparser.py | 2 +-
- docutils/statemachine.py | 2 +-
- docutils/transforms/parts.py | 4 ++--
- 4 files changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index 71189ab..c524373 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -977,7 +977,7 @@ class Element(Node):
- 'Losing "%s" attribute: %s' % (att, self[att])
- self.parent.replace(self, new)
-
-- def first_child_matching_class(self, childclass, start=0, end=sys.maxint):
-+ def first_child_matching_class(self, childclass, start=0, end=sys.maxsize):
- """
- Return the index of the first child whose class exactly matches.
-
-@@ -997,7 +997,7 @@ class Element(Node):
- return None
-
- def first_child_not_matching_class(self, childclass, start=0,
-- end=sys.maxint):
-+ end=sys.maxsize):
- """
- Return the index of the first child whose class does *not* match.
-
-diff --git a/docutils/parsers/rst/tableparser.py b/docutils/parsers/rst/tableparser.py
-index 45af72f..2760ea0 100644
---- a/docutils/parsers/rst/tableparser.py
-+++ b/docutils/parsers/rst/tableparser.py
-@@ -498,7 +498,7 @@ class SimpleTableParser(TableParser):
- """
- # "Infinite" value for a dummy last column's beginning, used to
- # check for text overflow:
-- columns.append((sys.maxint, None))
-+ columns.append((sys.maxsize, None))
- lastcol = len(columns) - 2
- # combining characters do not contribute to the column width
- lines = [strip_combining_chars(line) for line in lines]
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index b56f3c5..5d7fe77 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -1341,7 +1341,7 @@ class StringList(ViewList):
-
- """A `ViewList` with string-specific methods."""
-
-- def trim_left(self, length, start=0, end=sys.maxint):
-+ def trim_left(self, length, start=0, end=sys.maxsize):
- """
- Trim `length` characters off the beginning of each item, in-place,
- from index `start` to `end`. No whitespace-checking is done on the
-diff --git a/docutils/transforms/parts.py b/docutils/transforms/parts.py
-index 11b1b23..7a2fa0f 100644
---- a/docutils/transforms/parts.py
-+++ b/docutils/transforms/parts.py
-@@ -37,7 +37,7 @@ class SectNum(Transform):
- self.startnode.parent.remove(self.startnode)
- if self.document.settings.sectnum_xform:
- if self.maxdepth is None:
-- self.maxdepth = sys.maxint
-+ self.maxdepth = sys.maxsize
- self.update_section_numbers(self.document)
- else: # store details for eventual section numbering by the writer
- self.document.settings.sectnum_depth = self.maxdepth
-@@ -120,7 +120,7 @@ class Contents(Transform):
- sections = [sect for sect in node if isinstance(sect, nodes.section)]
- entries = []
- autonum = 0
-- depth = self.startnode.details.get('depth', sys.maxint)
-+ depth = self.startnode.details.get('depth', sys.maxsize)
- for section in sections:
- title = section[0]
- auto = title.get('auto') # May be set by SectNum.
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0008-py3-Replace-types.SliceType-with-slice-remove-types..patch b/srcpkgs/python-docutils/patches/0008-py3-Replace-types.SliceType-with-slice-remove-types..patch
deleted file mode 100644
index 571c6fa7d6b..00000000000
--- a/srcpkgs/python-docutils/patches/0008-py3-Replace-types.SliceType-with-slice-remove-types..patch
+++ /dev/null
@@ -1,128 +0,0 @@
-From a46f2bdec20068cf79ff182ae024fc1989d45c74 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Mon, 26 Aug 2019 16:42:50 +0000
-Subject: [PATCH 08/26] py3: Replace 'types.SliceType' with slice, remove
- 'types.ClassType'.
-
-These types have been removed in Python 3,
-`SliceType` is an alias for `slice` already in Python 2.7,
-`ClassType` is for user-defined old-style classes (we now use only new style classes).
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8355 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/nodes.py | 11 +++++------
- docutils/statemachine.py | 5 ++---
- test/test_nodes.py | 4 ++--
- 3 files changed, 9 insertions(+), 11 deletions(-)
-
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index c524373..a8c0478 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -27,7 +27,6 @@ import sys
- import os
- import re
- import warnings
--import types
- import unicodedata
-
- if sys.version_info >= (3, 0):
-@@ -257,11 +256,11 @@ class Node(object):
- if include_self and descend and not siblings:
- if condition is None:
- return self._all_traverse()
-- elif isinstance(condition, (types.ClassType, type)):
-+ elif isinstance(condition, type):
- return self._fast_traverse(condition)
- # Check if `condition` is a class (check for TypeType for Python
- # implementations that use only new-style classes, like PyPy).
-- if isinstance(condition, (types.ClassType, type)):
-+ if isinstance(condition, type):
- node_class = condition
- def condition(node, node_class=node_class):
- return isinstance(node, node_class)
-@@ -590,7 +589,7 @@ class Element(Node):
- return self.attributes[key]
- elif isinstance(key, int):
- return self.children[key]
-- elif isinstance(key, types.SliceType):
-+ elif isinstance(key, slice):
- assert key.step in (None, 1), 'cannot handle slice with stride'
- return self.children[key.start:key.stop]
- else:
-@@ -603,7 +602,7 @@ class Element(Node):
- elif isinstance(key, int):
- self.setup_child(item)
- self.children[key] = item
-- elif isinstance(key, types.SliceType):
-+ elif isinstance(key, slice):
- assert key.step in (None, 1), 'cannot handle slice with stride'
- for node in item:
- self.setup_child(node)
-@@ -617,7 +616,7 @@ class Element(Node):
- del self.attributes[key]
- elif isinstance(key, int):
- del self.children[key]
-- elif isinstance(key, types.SliceType):
-+ elif isinstance(key, slice):
- assert key.step in (None, 1), 'cannot handle slice with stride'
- del self.children[key.start:key.stop]
- else:
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index 5d7fe77..068083a 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -109,7 +109,6 @@ __docformat__ = 'restructuredtext'
-
- import sys
- import re
--import types
- import unicodedata
- from docutils import utils
- from docutils.utils.error_reporting import ErrorOutput
-@@ -1148,7 +1147,7 @@ class ViewList(object):
- # just works.
-
- def __getitem__(self, i):
-- if isinstance(i, types.SliceType):
-+ if isinstance(i, slice):
- assert i.step in (None, 1), 'cannot handle slice with stride'
- return self.__class__(self.data[i.start:i.stop],
- items=self.items[i.start:i.stop],
-@@ -1157,7 +1156,7 @@ class ViewList(object):
- return self.data[i]
-
- def __setitem__(self, i, item):
-- if isinstance(i, types.SliceType):
-+ if isinstance(i, slice):
- assert i.step in (None, 1), 'cannot handle slice with stride'
- if not isinstance(item, ViewList):
- raise TypeError('assigning non-ViewList to ViewList slice')
-diff --git a/test/test_nodes.py b/test/test_nodes.py
-index 924569f..679c98e 100755
---- a/test/test_nodes.py
-+++ b/test/test_nodes.py
-@@ -11,7 +11,7 @@ Test module for nodes.py.
-
- import sys
- import unittest
--import types
-+
- import DocutilsTestSupport # must be imported before docutils
- from DocutilsTestSupport import nodes, utils
-
-@@ -359,7 +359,7 @@ class MiscTests(unittest.TestCase):
- node_class_names = []
- for x in dir(nodes):
- c = getattr(nodes, x)
-- if isinstance(c, (type, types.ClassType)) and \
-+ if isinstance(c, type) and \
- issubclass(c, nodes.Node) and len(c.__bases__) > 1:
- node_class_names.append(x)
- node_class_names.sort()
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0009-py3-Use-absolute_import-future.patch b/srcpkgs/python-docutils/patches/0009-py3-Use-absolute_import-future.patch
deleted file mode 100644
index 2e7d31c2f83..00000000000
--- a/srcpkgs/python-docutils/patches/0009-py3-Use-absolute_import-future.patch
+++ /dev/null
@@ -1,1699 +0,0 @@
-From 2384d685b2b38e30a0dbb60594c190f36ad7e3a7 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 19 Nov 2019 23:57:43 +0700
-Subject: [PATCH 09/26] py3: Use 'absolute_import' future
-
-This mostly applies to tests.
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8356 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/writers/odf_odt/__init__.py | 3 ++-
- test/test_parsers/test_get_parser_class.py | 3 ++-
- test/test_parsers/test_rst/test_SimpleTableParser.py | 3 ++-
- test/test_parsers/test_rst/test_TableParser.py | 3 ++-
- test/test_parsers/test_rst/test_block_quotes.py | 3 ++-
- test/test_parsers/test_rst/test_bullet_lists.py | 3 ++-
- .../test_rst/test_character_level_inline_markup.py | 3 ++-
- test/test_parsers/test_rst/test_citations.py | 3 ++-
- test/test_parsers/test_rst/test_comments.py | 3 ++-
- test/test_parsers/test_rst/test_definition_lists.py | 3 ++-
- .../test_rst/test_directives/test_admonitions.py | 3 ++-
- .../test_rst/test_directives/test_block_quotes.py | 3 ++-
- test/test_parsers/test_rst/test_directives/test_class.py | 3 ++-
- test/test_parsers/test_rst/test_directives/test_code.py | 3 ++-
- .../test_rst/test_directives/test_code_long.py | 3 ++-
- .../test_rst/test_directives/test_code_none.py | 3 ++-
- .../test_rst/test_directives/test_compound.py | 3 ++-
- .../test_rst/test_directives/test_container.py | 3 ++-
- .../test_rst/test_directives/test_contents.py | 3 ++-
- test/test_parsers/test_rst/test_directives/test_date.py | 3 ++-
- .../test_rst/test_directives/test_decorations.py | 4 +++-
- .../test_rst/test_directives/test_default_role.py | 3 ++-
- .../test_parsers/test_rst/test_directives/test_figures.py | 4 +++-
- test/test_parsers/test_rst/test_directives/test_images.py | 4 +++-
- .../test_parsers/test_rst/test_directives/test_include.py | 3 ++-
- .../test_rst/test_directives/test_line_blocks.py | 4 +++-
- test/test_parsers/test_rst/test_directives/test_math.py | 4 +++-
- test/test_parsers/test_rst/test_directives/test_meta.py | 4 +++-
- .../test_rst/test_directives/test_parsed_literals.py | 4 +++-
- test/test_parsers/test_rst/test_directives/test_raw.py | 5 ++++-
- .../test_parsers/test_rst/test_directives/test_replace.py | 3 ++-
- .../test_rst/test_directives/test_replace_fr.py | 3 ++-
- test/test_parsers/test_rst/test_directives/test_role.py | 3 ++-
- .../test_parsers/test_rst/test_directives/test_rubrics.py | 3 ++-
- .../test_parsers/test_rst/test_directives/test_sectnum.py | 4 +++-
- .../test_rst/test_directives/test_sidebars.py | 4 +++-
- test/test_parsers/test_rst/test_directives/test_tables.py | 4 +++-
- .../test_rst/test_directives/test_target_notes.py | 4 +++-
- .../test_rst/test_directives/test_test_directives.py | 4 +++-
- test/test_parsers/test_rst/test_directives/test_title.py | 4 +++-
- test/test_parsers/test_rst/test_directives/test_topics.py | 4 +++-
- .../test_parsers/test_rst/test_directives/test_unicode.py | 3 ++-
- .../test_parsers/test_rst/test_directives/test_unknown.py | 4 +++-
- test/test_parsers/test_rst/test_doctest_blocks.py | 4 +++-
- test/test_parsers/test_rst/test_east_asian_text.py | 5 ++++-
- test/test_parsers/test_rst/test_enumerated_lists.py | 4 +++-
- test/test_parsers/test_rst/test_field_lists.py | 4 +++-
- test/test_parsers/test_rst/test_footnotes.py | 4 +++-
- test/test_parsers/test_rst/test_inline_markup.py | 4 +++-
- test/test_parsers/test_rst/test_interpreted.py | 4 +++-
- test/test_parsers/test_rst/test_interpreted_fr.py | 4 +++-
- test/test_parsers/test_rst/test_line_blocks.py | 4 +++-
- test/test_parsers/test_rst/test_literal_blocks.py | 4 +++-
- test/test_parsers/test_rst/test_option_lists.py | 4 +++-
- test/test_parsers/test_rst/test_outdenting.py | 4 +++-
- test/test_parsers/test_rst/test_paragraphs.py | 4 +++-
- test/test_parsers/test_rst/test_section_headers.py | 8 ++++++--
- test/test_parsers/test_rst/test_substitutions.py | 4 +++-
- test/test_parsers/test_rst/test_tables.py | 5 ++++-
- test/test_parsers/test_rst/test_targets.py | 4 +++-
- test/test_parsers/test_rst/test_transitions.py | 4 +++-
- test/test_readers/test_get_reader_class.py | 5 +++--
- test/test_readers/test_pep/test_inline_markup.py | 3 ++-
- test/test_readers/test_pep/test_rfc2822.py | 4 +++-
- test/test_transforms/test___init__.py | 6 ++++--
- test/test_transforms/test_class.py | 3 ++-
- test/test_transforms/test_contents.py | 3 ++-
- test/test_transforms/test_docinfo.py | 3 ++-
- test/test_transforms/test_doctitle.py | 4 +++-
- test/test_transforms/test_expose_internals.py | 4 +++-
- test/test_transforms/test_filter.py | 3 ++-
- test/test_transforms/test_footnotes.py | 3 ++-
- test/test_transforms/test_hyperlinks.py | 4 ++--
- test/test_transforms/test_messages.py | 3 ++-
- test/test_transforms/test_peps.py | 3 ++-
- test/test_transforms/test_sectnum.py | 3 ++-
- test/test_transforms/test_smartquotes.py | 5 +++--
- test/test_transforms/test_strip_comments.py | 3 ++-
- test/test_transforms/test_strip_elements_with_class.py | 3 ++-
- test/test_transforms/test_substitutions.py | 3 ++-
- test/test_transforms/test_target_notes.py | 3 ++-
- test/test_transforms/test_transitions.py | 4 +++-
- test/test_transforms/test_writer_aux.py | 3 ++-
- test/test_writers/test_docutils_xml.py | 3 ++-
- test/test_writers/test_get_writer_class.py | 4 +++-
- test/test_writers/test_html4css1_misc.py | 7 +++++--
- test/test_writers/test_html4css1_parts.py | 4 +++-
- test/test_writers/test_html4css1_template.py | 3 ++-
- test/test_writers/test_html5_polyglot_misc.py | 7 +++++--
- test/test_writers/test_html5_polyglot_parts.py | 3 ++-
- test/test_writers/test_latex2e.py | 5 ++++-
- test/test_writers/test_manpage.py | 4 +++-
- test/test_writers/test_null.py | 4 +++-
- test/test_writers/test_odt.py | 3 ++-
- test/test_writers/test_pseudoxml.py | 4 +++-
- test/test_writers/test_s5.py | 3 ++-
- 96 files changed, 253 insertions(+), 103 deletions(-)
-
-diff --git a/docutils/writers/odf_odt/__init__.py b/docutils/writers/odf_odt/__init__.py
-index 5f62605..c0f43a5 100644
---- a/docutils/writers/odf_odt/__init__.py
-+++ b/docutils/writers/odf_odt/__init__.py
-@@ -6,6 +6,7 @@
- Open Document Format (ODF) Writer.
-
- """
-+from __future__ import absolute_import
-
- __docformat__ = 'reStructuredText'
-
-@@ -71,7 +72,7 @@ try:
- from .pygmentsformatter import OdtPygmentsProgFormatter, \
- OdtPygmentsLaTeXFormatter
- else:
-- from pygmentsformatter import OdtPygmentsProgFormatter, \
-+ from .pygmentsformatter import OdtPygmentsProgFormatter, \
- OdtPygmentsLaTeXFormatter
- except (ImportError, SyntaxError):
- pygments = None
-diff --git a/test/test_parsers/test_get_parser_class.py b/test/test_parsers/test_get_parser_class.py
-index 4de05cc..ca809d0 100644
---- a/test/test_parsers/test_get_parser_class.py
-+++ b/test/test_parsers/test_get_parser_class.py
-@@ -8,8 +8,9 @@
- """
- test get_parser_class
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.parsers import get_parser_class
-
- class GetParserClassTestCase(DocutilsTestSupport.StandardTestCase):
-diff --git a/test/test_parsers/test_rst/test_SimpleTableParser.py b/test/test_parsers/test_rst/test_SimpleTableParser.py
-index 864c545..2942e01 100755
---- a/test/test_parsers/test_rst/test_SimpleTableParser.py
-+++ b/test/test_parsers/test_rst/test_SimpleTableParser.py
-@@ -8,8 +8,9 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.SimpleTableParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_TableParser.py b/test/test_parsers/test_rst/test_TableParser.py
-index 189ef2a..ecafe8f 100755
---- a/test/test_parsers/test_rst/test_TableParser.py
-+++ b/test/test_parsers/test_rst/test_TableParser.py
-@@ -8,8 +8,9 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.GridTableParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_block_quotes.py b/test/test_parsers/test_rst/test_block_quotes.py
-index 171c784..2aee3c6 100755
---- a/test/test_parsers/test_rst/test_block_quotes.py
-+++ b/test/test_parsers/test_rst/test_block_quotes.py
-@@ -7,8 +7,9 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_bullet_lists.py b/test/test_parsers/test_rst/test_bullet_lists.py
-index 246cdbd..4fe963d 100755
---- a/test/test_parsers/test_rst/test_bullet_lists.py
-+++ b/test/test_parsers/test_rst/test_bullet_lists.py
-@@ -7,8 +7,9 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_character_level_inline_markup.py b/test/test_parsers/test_rst/test_character_level_inline_markup.py
-index b1d1885..6b42ed6 100644
---- a/test/test_parsers/test_rst/test_character_level_inline_markup.py
-+++ b/test/test_parsers/test_rst/test_character_level_inline_markup.py
-@@ -11,8 +11,9 @@ with the "character-level-inline-markup" setting.
-
- Experimental.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite(suite_settings={'character_level_inline_markup': True})
-diff --git a/test/test_parsers/test_rst/test_citations.py b/test/test_parsers/test_rst/test_citations.py
-index 03370a6..ead2b98 100755
---- a/test/test_parsers/test_rst/test_citations.py
-+++ b/test/test_parsers/test_rst/test_citations.py
-@@ -7,8 +7,9 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_comments.py b/test/test_parsers/test_rst/test_comments.py
-index 34f62e1..10cca78 100755
---- a/test/test_parsers/test_rst/test_comments.py
-+++ b/test/test_parsers/test_rst/test_comments.py
-@@ -7,8 +7,9 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_definition_lists.py b/test/test_parsers/test_rst/test_definition_lists.py
-index 1a80360..40c633c 100755
---- a/test/test_parsers/test_rst/test_definition_lists.py
-+++ b/test/test_parsers/test_rst/test_definition_lists.py
-@@ -7,8 +7,9 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_admonitions.py b/test/test_parsers/test_rst/test_directives/test_admonitions.py
-index faf5f66..3724131 100755
---- a/test/test_parsers/test_rst/test_directives/test_admonitions.py
-+++ b/test/test_parsers/test_rst/test_directives/test_admonitions.py
-@@ -7,8 +7,9 @@
- """
- Tests for admonitions.py directives.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_block_quotes.py b/test/test_parsers/test_rst/test_directives/test_block_quotes.py
-index 93bae9e..87a99d7 100755
---- a/test/test_parsers/test_rst/test_directives/test_block_quotes.py
-+++ b/test/test_parsers/test_rst/test_directives/test_block_quotes.py
-@@ -8,8 +8,9 @@
- Tests for the block quote directives "epigraph", "highlights", and
- "pull-quote".
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_class.py b/test/test_parsers/test_rst/test_directives/test_class.py
-index 544946d..d65c8b4 100755
---- a/test/test_parsers/test_rst/test_directives/test_class.py
-+++ b/test/test_parsers/test_rst/test_directives/test_class.py
-@@ -7,8 +7,9 @@
- """
- Tests for the 'class' directive.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_code.py b/test/test_parsers/test_rst/test_directives/test_code.py
-index 51c1558..bf7ebba 100644
---- a/test/test_parsers/test_rst/test_directives/test_code.py
-+++ b/test/test_parsers/test_rst/test_directives/test_code.py
-@@ -7,8 +7,9 @@
- """
- Test the 'code' directive in parsers/rst/directives/body.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.utils.code_analyzer import with_pygments
-
- def suite():
-diff --git a/test/test_parsers/test_rst/test_directives/test_code_long.py b/test/test_parsers/test_rst/test_directives/test_code_long.py
-index 74f16d5..1a55c97 100644
---- a/test/test_parsers/test_rst/test_directives/test_code_long.py
-+++ b/test/test_parsers/test_rst/test_directives/test_code_long.py
-@@ -7,8 +7,9 @@
- """
- Test the 'code' directive in body.py with syntax_highlight = 'long'.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.utils.code_analyzer import with_pygments
-
- def suite():
-diff --git a/test/test_parsers/test_rst/test_directives/test_code_none.py b/test/test_parsers/test_rst/test_directives/test_code_none.py
-index 515772c..23ae3d2 100644
---- a/test/test_parsers/test_rst/test_directives/test_code_none.py
-+++ b/test/test_parsers/test_rst/test_directives/test_code_none.py
-@@ -7,8 +7,9 @@
- """
- Test the 'code' directive in body.py with syntax_highlight = 'none'.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite(suite_settings={'syntax_highlight':'none'})
-diff --git a/test/test_parsers/test_rst/test_directives/test_compound.py b/test/test_parsers/test_rst/test_directives/test_compound.py
-index c0ef4b8..6bbab9c 100755
---- a/test/test_parsers/test_rst/test_directives/test_compound.py
-+++ b/test/test_parsers/test_rst/test_directives/test_compound.py
-@@ -7,8 +7,9 @@
- """
- Tests for the 'compound' directive from body.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_container.py b/test/test_parsers/test_rst/test_directives/test_container.py
-index 6b7b022..9ec5afc 100755
---- a/test/test_parsers/test_rst/test_directives/test_container.py
-+++ b/test/test_parsers/test_rst/test_directives/test_container.py
-@@ -7,8 +7,9 @@
- """
- Tests for the 'container' directive from body.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_contents.py b/test/test_parsers/test_rst/test_directives/test_contents.py
-index e1ef47f..a07ddd2 100755
---- a/test/test_parsers/test_rst/test_directives/test_contents.py
-+++ b/test/test_parsers/test_rst/test_directives/test_contents.py
-@@ -7,8 +7,9 @@
- """
- Tests for parts.py contents directive.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_date.py b/test/test_parsers/test_rst/test_directives/test_date.py
-index 87dc186..1f30128 100755
---- a/test/test_parsers/test_rst/test_directives/test_date.py
-+++ b/test/test_parsers/test_rst/test_directives/test_date.py
-@@ -7,8 +7,9 @@
- """
- Tests for the misc.py "date" directive.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- import time
-
- from docutils.utils.error_reporting import locale_encoding
-diff --git a/test/test_parsers/test_rst/test_directives/test_decorations.py b/test/test_parsers/test_rst/test_directives/test_decorations.py
-index b66f68d..63be131 100755
---- a/test/test_parsers/test_rst/test_directives/test_decorations.py
-+++ b/test/test_parsers/test_rst/test_directives/test_decorations.py
-@@ -7,8 +7,10 @@
- """
- Tests for the "header" & "footer" directives.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_default_role.py b/test/test_parsers/test_rst/test_directives/test_default_role.py
-index 15b0f56..f81c30b 100755
---- a/test/test_parsers/test_rst/test_directives/test_default_role.py
-+++ b/test/test_parsers/test_rst/test_directives/test_default_role.py
-@@ -7,8 +7,9 @@
- """
- Tests for misc.py "default-role" directive.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
-
- def suite():
-diff --git a/test/test_parsers/test_rst/test_directives/test_figures.py b/test/test_parsers/test_rst/test_directives/test_figures.py
-index de54190..09ced3f 100755
---- a/test/test_parsers/test_rst/test_directives/test_figures.py
-+++ b/test/test_parsers/test_rst/test_directives/test_figures.py
-@@ -7,8 +7,10 @@
- """
- Tests for images.py figure directives.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_images.py b/test/test_parsers/test_rst/test_directives/test_images.py
-index c52793c..e78caed 100755
---- a/test/test_parsers/test_rst/test_directives/test_images.py
-+++ b/test/test_parsers/test_rst/test_directives/test_images.py
-@@ -7,11 +7,13 @@
- """
- Tests for images.py image directives.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- from docutils.nodes import reprunicode
-
-+
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
-diff --git a/test/test_parsers/test_rst/test_directives/test_include.py b/test/test_parsers/test_rst/test_directives/test_include.py
-index 6e9dc84..d848262 100755
---- a/test/test_parsers/test_rst/test_directives/test_include.py
-+++ b/test/test_parsers/test_rst/test_directives/test_include.py
-@@ -7,10 +7,11 @@
- """
- Tests for misc.py "include" directive.
- """
-+from __future__ import absolute_import
-
- import os.path
- import sys
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.parsers.rst import states
- from docutils.utils.code_analyzer import with_pygments
-
-diff --git a/test/test_parsers/test_rst/test_directives/test_line_blocks.py b/test/test_parsers/test_rst/test_directives/test_line_blocks.py
-index 0fdfaba..d6bf31b 100755
---- a/test/test_parsers/test_rst/test_directives/test_line_blocks.py
-+++ b/test/test_parsers/test_rst/test_directives/test_line_blocks.py
-@@ -7,8 +7,10 @@
- """
- Tests for the body.py 'line-block' directive.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_math.py b/test/test_parsers/test_rst/test_directives/test_math.py
-index e8dfe27..2bac077 100644
---- a/test/test_parsers/test_rst/test_directives/test_math.py
-+++ b/test/test_parsers/test_rst/test_directives/test_math.py
-@@ -7,8 +7,10 @@
- """
- Tests for the 'math' directive.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_meta.py b/test/test_parsers/test_rst/test_directives/test_meta.py
-index bd7906d..8b15dde 100755
---- a/test/test_parsers/test_rst/test_directives/test_meta.py
-+++ b/test/test_parsers/test_rst/test_directives/test_meta.py
-@@ -7,8 +7,10 @@
- """
- Tests for html meta directives.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_parsed_literals.py b/test/test_parsers/test_rst/test_directives/test_parsed_literals.py
-index 6bf2cb1..4ea09e1 100755
---- a/test/test_parsers/test_rst/test_directives/test_parsed_literals.py
-+++ b/test/test_parsers/test_rst/test_directives/test_parsed_literals.py
-@@ -7,8 +7,10 @@
- """
- Tests for the body.py 'parsed-literal' directive.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_raw.py b/test/test_parsers/test_rst/test_directives/test_raw.py
-index f366f92..2da962a 100755
---- a/test/test_parsers/test_rst/test_directives/test_raw.py
-+++ b/test/test_parsers/test_rst/test_directives/test_raw.py
-@@ -7,10 +7,13 @@
- """
- Tests for misc.py "raw" directive.
- """
-+from __future__ import absolute_import
-
- import os.path
- import sys
--from __init__ import DocutilsTestSupport
-+
-+from . import DocutilsTestSupport
-+
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_replace.py b/test/test_parsers/test_rst/test_directives/test_replace.py
-index d2d3d8a..75e580b 100755
---- a/test/test_parsers/test_rst/test_directives/test_replace.py
-+++ b/test/test_parsers/test_rst/test_directives/test_replace.py
-@@ -7,8 +7,9 @@
- """
- Tests for misc.py "replace" directive.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
-
- def suite():
-diff --git a/test/test_parsers/test_rst/test_directives/test_replace_fr.py b/test/test_parsers/test_rst/test_directives/test_replace_fr.py
-index 6847c1c..78e4a45 100644
---- a/test/test_parsers/test_rst/test_directives/test_replace_fr.py
-+++ b/test/test_parsers/test_rst/test_directives/test_replace_fr.py
-@@ -8,8 +8,9 @@
- Tests for misc.py "replace" directive.
- Test in french (not default/fallback language).
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
-
- def suite():
-diff --git a/test/test_parsers/test_rst/test_directives/test_role.py b/test/test_parsers/test_rst/test_directives/test_role.py
-index 3f728f0..60d65e6 100755
---- a/test/test_parsers/test_rst/test_directives/test_role.py
-+++ b/test/test_parsers/test_rst/test_directives/test_role.py
-@@ -7,8 +7,9 @@
- """
- Tests for misc.py "role" directive.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
-
- def suite():
-diff --git a/test/test_parsers/test_rst/test_directives/test_rubrics.py b/test/test_parsers/test_rst/test_directives/test_rubrics.py
-index 70b6b00..52dcd5c 100755
---- a/test/test_parsers/test_rst/test_directives/test_rubrics.py
-+++ b/test/test_parsers/test_rst/test_directives/test_rubrics.py
-@@ -7,8 +7,9 @@
- """
- Tests for the "rubric" directive.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_sectnum.py b/test/test_parsers/test_rst/test_directives/test_sectnum.py
-index 7ab0486..4119607 100755
---- a/test/test_parsers/test_rst/test_directives/test_sectnum.py
-+++ b/test/test_parsers/test_rst/test_directives/test_sectnum.py
-@@ -7,8 +7,10 @@
- """
- Tests for the 'sectnum' directive.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_sidebars.py b/test/test_parsers/test_rst/test_directives/test_sidebars.py
-index 7c61dac..ef501ce 100755
---- a/test/test_parsers/test_rst/test_directives/test_sidebars.py
-+++ b/test/test_parsers/test_rst/test_directives/test_sidebars.py
-@@ -7,8 +7,10 @@
- """
- Tests for the "sidebar" directive.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_tables.py b/test/test_parsers/test_rst/test_directives/test_tables.py
-index 2c5f832..ee930c8 100755
---- a/test/test_parsers/test_rst/test_directives/test_tables.py
-+++ b/test/test_parsers/test_rst/test_directives/test_tables.py
-@@ -8,13 +8,15 @@
- Tests for tables.py directives.
- """
-
--from __init__ import DocutilsTestSupport
-+from __future__ import absolute_import
-
- import os, sys
- import csv
- import platform
- from docutils.parsers.rst.directives import tables
-
-+from . import DocutilsTestSupport
-+
-
- if sys.version_info >= (3, 0):
- unicode = str # noqa
-diff --git a/test/test_parsers/test_rst/test_directives/test_target_notes.py b/test/test_parsers/test_rst/test_directives/test_target_notes.py
-index 37a63f5..167cd8a 100755
---- a/test/test_parsers/test_rst/test_directives/test_target_notes.py
-+++ b/test/test_parsers/test_rst/test_directives/test_target_notes.py
-@@ -7,8 +7,10 @@
- """
- Tests for the target-notes directives.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_test_directives.py b/test/test_parsers/test_rst/test_directives/test_test_directives.py
-index 07e9bd2..65cffed 100755
---- a/test/test_parsers/test_rst/test_directives/test_test_directives.py
-+++ b/test/test_parsers/test_rst/test_directives/test_test_directives.py
-@@ -7,8 +7,10 @@
- """
- Tests for misc.py test directives.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_title.py b/test/test_parsers/test_rst/test_directives/test_title.py
-index 4a7cfd6..c24309c 100755
---- a/test/test_parsers/test_rst/test_directives/test_title.py
-+++ b/test/test_parsers/test_rst/test_directives/test_title.py
-@@ -7,8 +7,10 @@
- """
- Tests for the 'title' directive.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_topics.py b/test/test_parsers/test_rst/test_directives/test_topics.py
-index 9588599..fdd4bc3 100755
---- a/test/test_parsers/test_rst/test_directives/test_topics.py
-+++ b/test/test_parsers/test_rst/test_directives/test_topics.py
-@@ -7,8 +7,10 @@
- """
- Tests for the "topic" directive.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_directives/test_unicode.py b/test/test_parsers/test_rst/test_directives/test_unicode.py
-index 5cdfd5a..b99b5d0 100755
---- a/test/test_parsers/test_rst/test_directives/test_unicode.py
-+++ b/test/test_parsers/test_rst/test_directives/test_unicode.py
-@@ -7,10 +7,11 @@
- """
- Tests for misc.py "unicode" directive.
- """
-+from __future__ import absolute_import
-
- import sys
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
-
- if sys.version_info >= (3, 0):
-diff --git a/test/test_parsers/test_rst/test_directives/test_unknown.py b/test/test_parsers/test_rst/test_directives/test_unknown.py
-index 69e2c01..98cb6b9 100755
---- a/test/test_parsers/test_rst/test_directives/test_unknown.py
-+++ b/test/test_parsers/test_rst/test_directives/test_unknown.py
-@@ -7,8 +7,10 @@
- """
- Tests for unknown directives.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_doctest_blocks.py b/test/test_parsers/test_rst/test_doctest_blocks.py
-index 4f367db..d7787d7 100755
---- a/test/test_parsers/test_rst/test_doctest_blocks.py
-+++ b/test/test_parsers/test_rst/test_doctest_blocks.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_east_asian_text.py b/test/test_parsers/test_rst/test_east_asian_text.py
-index e29ea82..d819ef8 100755
---- a/test/test_parsers/test_rst/test_east_asian_text.py
-+++ b/test/test_parsers/test_rst/test_east_asian_text.py
-@@ -8,15 +8,18 @@
- """
- Tests for East Asian text with double-width characters.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- import unicodedata
-+
- try:
- east_asian_width = unicodedata.east_asian_width
- except AttributeError:
- east_asian_width = None
-
-+
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- s.generateTests(totest)
-diff --git a/test/test_parsers/test_rst/test_enumerated_lists.py b/test/test_parsers/test_rst/test_enumerated_lists.py
-index 09ea238..09bc005 100755
---- a/test/test_parsers/test_rst/test_enumerated_lists.py
-+++ b/test/test_parsers/test_rst/test_enumerated_lists.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_field_lists.py b/test/test_parsers/test_rst/test_field_lists.py
-index c51dd7c..34073aa 100755
---- a/test/test_parsers/test_rst/test_field_lists.py
-+++ b/test/test_parsers/test_rst/test_field_lists.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_footnotes.py b/test/test_parsers/test_rst/test_footnotes.py
-index fabfaf0..ba157d9 100755
---- a/test/test_parsers/test_rst/test_footnotes.py
-+++ b/test/test_parsers/test_rst/test_footnotes.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_inline_markup.py b/test/test_parsers/test_rst/test_inline_markup.py
-index d6fdac7..1762880 100755
---- a/test/test_parsers/test_rst/test_inline_markup.py
-+++ b/test/test_parsers/test_rst/test_inline_markup.py
-@@ -9,8 +9,10 @@
- Tests for inline markup in docutils/parsers/rst/states.py.
- Interpreted text tests are in a separate module, test_interpreted.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_interpreted.py b/test/test_parsers/test_rst/test_interpreted.py
-index 6dce09c..48b4ebe 100755
---- a/test/test_parsers/test_rst/test_interpreted.py
-+++ b/test/test_parsers/test_rst/test_interpreted.py
-@@ -7,10 +7,12 @@
- """
- Tests for interpreted text in docutils/parsers/rst/states.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.utils.code_analyzer import with_pygments
-
-+
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
- if not with_pygments:
-diff --git a/test/test_parsers/test_rst/test_interpreted_fr.py b/test/test_parsers/test_rst/test_interpreted_fr.py
-index a0e1d78..046ab15 100644
---- a/test/test_parsers/test_rst/test_interpreted_fr.py
-+++ b/test/test_parsers/test_rst/test_interpreted_fr.py
-@@ -8,8 +8,10 @@
- Tests for interpreted text in docutils/parsers/rst/states.py.
- Test not default/fallback language french.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite(suite_settings={'language_code':'fr'})
-diff --git a/test/test_parsers/test_rst/test_line_blocks.py b/test/test_parsers/test_rst/test_line_blocks.py
-index d0a2776..3ab1764 100755
---- a/test/test_parsers/test_rst/test_line_blocks.py
-+++ b/test/test_parsers/test_rst/test_line_blocks.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_literal_blocks.py b/test/test_parsers/test_rst/test_literal_blocks.py
-index 62c9f40..172c438 100755
---- a/test/test_parsers/test_rst/test_literal_blocks.py
-+++ b/test/test_parsers/test_rst/test_literal_blocks.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_option_lists.py b/test/test_parsers/test_rst/test_option_lists.py
-index aa23e3e..740248f 100755
---- a/test/test_parsers/test_rst/test_option_lists.py
-+++ b/test/test_parsers/test_rst/test_option_lists.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_outdenting.py b/test/test_parsers/test_rst/test_outdenting.py
-index 1403ab7..5685767 100755
---- a/test/test_parsers/test_rst/test_outdenting.py
-+++ b/test/test_parsers/test_rst/test_outdenting.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_paragraphs.py b/test/test_parsers/test_rst/test_paragraphs.py
-index e4860e3..933c07b 100755
---- a/test/test_parsers/test_rst/test_paragraphs.py
-+++ b/test/test_parsers/test_rst/test_paragraphs.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_section_headers.py b/test/test_parsers/test_rst/test_section_headers.py
-index 0c8cd64..af3749c 100755
---- a/test/test_parsers/test_rst/test_section_headers.py
-+++ b/test/test_parsers/test_rst/test_section_headers.py
-@@ -5,9 +5,13 @@
- # Author: David Goodger <goodger@python.org>
- # Copyright: This module has been placed in the public domain.
-
--"""Tests for states.py."""
-+"""
-+Tests for states.py.
-+"""
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_substitutions.py b/test/test_parsers/test_rst/test_substitutions.py
-index e992cb2..774d71b 100755
---- a/test/test_parsers/test_rst/test_substitutions.py
-+++ b/test/test_parsers/test_rst/test_substitutions.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_tables.py b/test/test_parsers/test_rst/test_tables.py
-index ca249bb..4a690ff 100755
---- a/test/test_parsers/test_rst/test_tables.py
-+++ b/test/test_parsers/test_rst/test_tables.py
-@@ -7,9 +7,12 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-
- import os
--from __init__ import DocutilsTestSupport
-+
-+from . import DocutilsTestSupport
-+
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_targets.py b/test/test_parsers/test_rst/test_targets.py
-index f7ab8c0..6785ac3 100755
---- a/test/test_parsers/test_rst/test_targets.py
-+++ b/test/test_parsers/test_rst/test_targets.py
-@@ -7,8 +7,10 @@
- """
- Tests for states.py.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_parsers/test_rst/test_transitions.py b/test/test_parsers/test_rst/test_transitions.py
-index b21411c..d3a622a 100755
---- a/test/test_parsers/test_rst/test_transitions.py
-+++ b/test/test_parsers/test_rst/test_transitions.py
-@@ -7,8 +7,10 @@
- """
- Tests for transition markers.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.ParserTestSuite()
-diff --git a/test/test_readers/test_get_reader_class.py b/test/test_readers/test_get_reader_class.py
-index b84dfb9..f177223 100644
---- a/test/test_readers/test_get_reader_class.py
-+++ b/test/test_readers/test_get_reader_class.py
-@@ -8,10 +8,12 @@
- """
- test get_reader_class
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.readers import get_reader_class
-
-+
- class GetReaderClassTestCase(DocutilsTestSupport.StandardTestCase):
-
- def test_registered_reader(self):
-@@ -29,4 +31,3 @@ class GetReaderClassTestCase(DocutilsTestSupport.StandardTestCase):
- if __name__ == '__main__':
- import unittest
- unittest.main()
--
-diff --git a/test/test_readers/test_pep/test_inline_markup.py b/test/test_readers/test_pep/test_inline_markup.py
-index 3bfd294..29074d8 100755
---- a/test/test_readers/test_pep/test_inline_markup.py
-+++ b/test/test_readers/test_pep/test_inline_markup.py
-@@ -7,8 +7,9 @@
- """
- Tests for inline markup in PEPs (readers/pep.py).
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
-
- def suite():
-diff --git a/test/test_readers/test_pep/test_rfc2822.py b/test/test_readers/test_pep/test_rfc2822.py
-index 7c1b26b..1123ee9 100755
---- a/test/test_readers/test_pep/test_rfc2822.py
-+++ b/test/test_readers/test_pep/test_rfc2822.py
-@@ -7,8 +7,10 @@
- """
- Tests for RFC-2822 headers in PEPs (readers/pep.py).
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.PEPParserTestSuite()
-diff --git a/test/test_transforms/test___init__.py b/test/test_transforms/test___init__.py
-index 366701b..fded179 100755
---- a/test/test_transforms/test___init__.py
-+++ b/test/test_transforms/test___init__.py
-@@ -7,11 +7,13 @@
- """
- Test module for transforms/__init__.py.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport # must be imported before docutils
--from docutils import transforms, utils
- import unittest
-
-+from . import DocutilsTestSupport # must be imported before docutils
-+from docutils import transforms, utils
-+
-
- class TestTransform(transforms.Transform):
-
-diff --git a/test/test_transforms/test_class.py b/test/test_transforms/test_class.py
-index 9ee0484..ebd6c5a 100755
---- a/test/test_transforms/test_class.py
-+++ b/test/test_transforms/test_class.py
-@@ -7,8 +7,9 @@
- """
- Tests for `docutils.transforms.misc.ClassAttribute`.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.parsers.rst import Parser
-
-
-diff --git a/test/test_transforms/test_contents.py b/test/test_transforms/test_contents.py
-index 1caa593..de05af7 100755
---- a/test/test_transforms/test_contents.py
-+++ b/test/test_transforms/test_contents.py
-@@ -8,8 +8,9 @@
- Tests for `docutils.transforms.parts.Contents` (via
- `docutils.transforms.universal.LastReaderPending`).
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.references import Substitutions
- from docutils.parsers.rst import Parser
-
-diff --git a/test/test_transforms/test_docinfo.py b/test/test_transforms/test_docinfo.py
-index 8b543df..1f0a4a8 100755
---- a/test/test_transforms/test_docinfo.py
-+++ b/test/test_transforms/test_docinfo.py
-@@ -8,8 +8,9 @@
- """
- Tests for docutils.transforms.frontmatter.DocInfo.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.frontmatter import DocInfo
- from docutils.parsers.rst import Parser
-
-diff --git a/test/test_transforms/test_doctitle.py b/test/test_transforms/test_doctitle.py
-index 6b354ab..7073e6a 100755
---- a/test/test_transforms/test_doctitle.py
-+++ b/test/test_transforms/test_doctitle.py
-@@ -7,12 +7,14 @@
- """
- Tests for docutils.transforms.frontmatter.DocTitle.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.frontmatter import DocTitle, SectionSubTitle
- from docutils.parsers.rst import Parser, Directive
- from docutils.parsers.rst.directives import register_directive
-
-+
- # dummy directive to test attribute merging:
- class AddNameToDocumentTitle(Directive):
- required_arguments = 0
-diff --git a/test/test_transforms/test_expose_internals.py b/test/test_transforms/test_expose_internals.py
-index 15d1d8a..9949d51 100755
---- a/test/test_transforms/test_expose_internals.py
-+++ b/test/test_transforms/test_expose_internals.py
-@@ -7,12 +7,14 @@
- """
- Test module for universal.ExposeInternals transform.
- """
-+from __future__ import absolute_import
-
-
--from __init__ import DocutilsTestSupport # must be imported before docutils
-+from . import DocutilsTestSupport # must be imported before docutils
- from docutils.transforms.universal import ExposeInternals
- from docutils.parsers.rst import Parser
-
-+
- def suite():
- parser = Parser()
- s = DocutilsTestSupport.TransformTestSuite(
-diff --git a/test/test_transforms/test_filter.py b/test/test_transforms/test_filter.py
-index ad82c2b..240e375 100755
---- a/test/test_transforms/test_filter.py
-+++ b/test/test_transforms/test_filter.py
-@@ -7,8 +7,9 @@
- """
- Tests for docutils.transforms.components.Filter.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.parsers.rst import Parser
-
-
-diff --git a/test/test_transforms/test_footnotes.py b/test/test_transforms/test_footnotes.py
-index ae01edf..0213e71 100755
---- a/test/test_transforms/test_footnotes.py
-+++ b/test/test_transforms/test_footnotes.py
-@@ -7,8 +7,9 @@
- """
- Tests for docutils.transforms.references.Footnotes.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.references import Footnotes
- from docutils.parsers.rst import Parser
-
-diff --git a/test/test_transforms/test_hyperlinks.py b/test/test_transforms/test_hyperlinks.py
-index df4d790..349c810 100755
---- a/test/test_transforms/test_hyperlinks.py
-+++ b/test/test_transforms/test_hyperlinks.py
-@@ -7,12 +7,12 @@
- """
- Tests for docutils.transforms.references.Hyperlinks.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.references import PropagateTargets, \
- AnonymousHyperlinks, IndirectHyperlinks, ExternalTargets, \
- InternalTargets, DanglingReferences
--
- from docutils.parsers.rst import Parser
-
-
-diff --git a/test/test_transforms/test_messages.py b/test/test_transforms/test_messages.py
-index 296fe98..8949c63 100755
---- a/test/test_transforms/test_messages.py
-+++ b/test/test_transforms/test_messages.py
-@@ -7,8 +7,9 @@
- """
- Tests for docutils.transforms.universal.Messages.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.universal import Messages
- from docutils.transforms.references import Substitutions
- from docutils.parsers.rst import Parser
-diff --git a/test/test_transforms/test_peps.py b/test/test_transforms/test_peps.py
-index 5505572..16c4bbb 100755
---- a/test/test_transforms/test_peps.py
-+++ b/test/test_transforms/test_peps.py
-@@ -7,8 +7,9 @@
- """
- Tests for docutils.transforms.peps.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.peps import TargetNotes
- from docutils.parsers.rst import Parser
-
-diff --git a/test/test_transforms/test_sectnum.py b/test/test_transforms/test_sectnum.py
-index 525a727..e389aee 100755
---- a/test/test_transforms/test_sectnum.py
-+++ b/test/test_transforms/test_sectnum.py
-@@ -8,8 +8,9 @@
- Tests for `docutils.transforms.parts.SectNum` (via
- `docutils.transforms.universal.LastReaderPending`).
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.references import Substitutions
- from docutils.parsers.rst import Parser
-
-diff --git a/test/test_transforms/test_smartquotes.py b/test/test_transforms/test_smartquotes.py
-index e2874c0..eb5c401 100644
---- a/test/test_transforms/test_smartquotes.py
-+++ b/test/test_transforms/test_smartquotes.py
-@@ -16,12 +16,13 @@
- """
- Test module for universal.SmartQuotes transform.
- """
-+from __future__ import absolute_import
-
--
--from __init__ import DocutilsTestSupport # must be imported before docutils
-+from . import DocutilsTestSupport # must be imported before docutils
- from docutils.transforms.universal import SmartQuotes
- from docutils.parsers.rst import Parser
-
-+
- def suite():
- parser = Parser()
- settings = {'smart_quotes': True}
-diff --git a/test/test_transforms/test_strip_comments.py b/test/test_transforms/test_strip_comments.py
-index f58404f..a03457b 100755
---- a/test/test_transforms/test_strip_comments.py
-+++ b/test/test_transforms/test_strip_comments.py
-@@ -7,8 +7,9 @@
- """
- Tests for docutils.transforms.universal.StripComments.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.universal import StripComments
- from docutils.parsers.rst import Parser
-
-diff --git a/test/test_transforms/test_strip_elements_with_class.py b/test/test_transforms/test_strip_elements_with_class.py
-index 6503586..11e6aa6 100644
---- a/test/test_transforms/test_strip_elements_with_class.py
-+++ b/test/test_transforms/test_strip_elements_with_class.py
-@@ -7,8 +7,9 @@
- """
- Tests for docutils.transforms.universal.StripComments.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.parsers.rst import Parser
- from docutils.transforms.universal import StripClassesAndElements
-
-diff --git a/test/test_transforms/test_substitutions.py b/test/test_transforms/test_substitutions.py
-index 7ea3e8a..1ec9bf1 100755
---- a/test/test_transforms/test_substitutions.py
-+++ b/test/test_transforms/test_substitutions.py
-@@ -7,8 +7,9 @@
- """
- Tests for docutils.transforms.references.Substitutions.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.references import Substitutions
- from docutils.parsers.rst import Parser
-
-diff --git a/test/test_transforms/test_target_notes.py b/test/test_transforms/test_target_notes.py
-index 3be4001..dcfb411 100755
---- a/test/test_transforms/test_target_notes.py
-+++ b/test/test_transforms/test_target_notes.py
-@@ -8,8 +8,9 @@
- Tests for `docutils.transforms.references.TargetNotes` (via
- `docutils.transforms.universal.LastReaderPending`).
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.transforms.references import PropagateTargets, \
- AnonymousHyperlinks, IndirectHyperlinks, ExternalTargets, \
- InternalTargets, DanglingReferences, Footnotes
-diff --git a/test/test_transforms/test_transitions.py b/test/test_transforms/test_transitions.py
-index c8ecaff..71347a2 100755
---- a/test/test_transforms/test_transitions.py
-+++ b/test/test_transforms/test_transitions.py
-@@ -7,11 +7,13 @@
- """
- Test module for misc.Transitions transform.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport # must be imported before docutils
-+from . import DocutilsTestSupport # must be imported before docutils
- from docutils.transforms.misc import Transitions
- from docutils.parsers.rst import Parser
-
-+
- def suite():
- parser = Parser()
- s = DocutilsTestSupport.TransformTestSuite(parser)
-diff --git a/test/test_transforms/test_writer_aux.py b/test/test_transforms/test_writer_aux.py
-index fc2e0d3..7272115 100755
---- a/test/test_transforms/test_writer_aux.py
-+++ b/test/test_transforms/test_writer_aux.py
-@@ -7,8 +7,9 @@
- """
- Test module for writer_aux transforms.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport # must be imported before docutils
-+from . import DocutilsTestSupport # must be imported before docutils
- from docutils.transforms import writer_aux
- from docutils.parsers.rst import Parser
-
-diff --git a/test/test_writers/test_docutils_xml.py b/test/test_writers/test_docutils_xml.py
-index 98541cf..5a6cda3 100755
---- a/test/test_writers/test_docutils_xml.py
-+++ b/test/test_writers/test_docutils_xml.py
-@@ -13,10 +13,11 @@ Test for docutils XML writer.
- ``<empty></empty>`` vs. ``<empty/>``. The sample strings in this test
- module mirrors the current behaviour of the docutils_xml writer.
- """
-+from __future__ import absolute_import
-
- from StringIO import StringIO
-
--from __init__ import DocutilsTestSupport # must be imported before docutils
-+from . import DocutilsTestSupport # must be imported before docutils
- import docutils
- import docutils.core
-
-diff --git a/test/test_writers/test_get_writer_class.py b/test/test_writers/test_get_writer_class.py
-index 78e6e8a..6af7097 100644
---- a/test/test_writers/test_get_writer_class.py
-+++ b/test/test_writers/test_get_writer_class.py
-@@ -8,10 +8,12 @@
- """
- test get_writer_class
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils.writers import get_writer_class
-
-+
- class GetWriterClassTestCase(DocutilsTestSupport.StandardTestCase):
- #tests = ( ('manpage', 1), ('nope', 0), ('dummy-writer', 1))
-
-diff --git a/test/test_writers/test_html4css1_misc.py b/test/test_writers/test_html4css1_misc.py
-index 7df0176..534ebce 100755
---- a/test/test_writers/test_html4css1_misc.py
-+++ b/test/test_writers/test_html4css1_misc.py
-@@ -9,11 +9,14 @@
- """
- Miscellaneous HTML writer tests.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
--from docutils import core
- import os
-
-+from .__init__ import DocutilsTestSupport
-+from docutils import core
-+
-+
- class EncodingTestCase(DocutilsTestSupport.StandardTestCase):
-
- def test_xmlcharrefreplace(self):
-diff --git a/test/test_writers/test_html4css1_parts.py b/test/test_writers/test_html4css1_parts.py
-index 64ac2ac..9140cba 100755
---- a/test/test_writers/test_html4css1_parts.py
-+++ b/test/test_writers/test_html4css1_parts.py
-@@ -11,10 +11,12 @@ Note: the 'body' and 'whole' entries have been removed from the parts
- dictionaries (redundant), along with 'meta' and 'stylesheet' entries with
- standard values, and any entries with empty values.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from docutils import core
-
-+
- def suite():
- s = DocutilsTestSupport.HtmlPublishPartsTestSuite()
- s.generateTests(totest)
-diff --git a/test/test_writers/test_html4css1_template.py b/test/test_writers/test_html4css1_template.py
-index 954f319..88eff36 100755
---- a/test/test_writers/test_html4css1_template.py
-+++ b/test/test_writers/test_html4css1_template.py
-@@ -7,11 +7,12 @@
- """
- Tests for the HTML writer.
- """
-+from __future__ import absolute_import
-
- import os
- import platform
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
-
- def suite():
-diff --git a/test/test_writers/test_html5_polyglot_misc.py b/test/test_writers/test_html5_polyglot_misc.py
-index 7f14133..9fec65f 100644
---- a/test/test_writers/test_html5_polyglot_misc.py
-+++ b/test/test_writers/test_html5_polyglot_misc.py
-@@ -9,11 +9,14 @@
- """
- Miscellaneous HTML writer tests.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
--from docutils import core
- import os
-
-+from . import DocutilsTestSupport
-+from docutils import core
-+
-+
- class EncodingTestCase(DocutilsTestSupport.StandardTestCase):
-
- def test_xmlcharrefreplace(self):
-diff --git a/test/test_writers/test_html5_polyglot_parts.py b/test/test_writers/test_html5_polyglot_parts.py
-index cb323b7..60ff689 100644
---- a/test/test_writers/test_html5_polyglot_parts.py
-+++ b/test/test_writers/test_html5_polyglot_parts.py
-@@ -11,8 +11,9 @@ Note: the 'body' and 'whole' entries have been removed from the parts
- dictionaries (redundant), along with 'meta' and 'stylesheet' entries with
- standard values, and any entries with empty values.
- """
-+from __future__ import absolute_import
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
- from DocutilsTestSupport import (HtmlWriterPublishPartsTestCase,
- HtmlPublishPartsTestSuite)
- from docutils import core, __version__
-diff --git a/test/test_writers/test_latex2e.py b/test/test_writers/test_latex2e.py
-index 88ba1a7..e9defeb 100755
---- a/test/test_writers/test_latex2e.py
-+++ b/test/test_writers/test_latex2e.py
-@@ -8,9 +8,12 @@
- """
- Tests for latex2e writer.
- """
-+from __future__ import absolute_import
-
- import string
--from __init__ import DocutilsTestSupport
-+
-+from . import DocutilsTestSupport
-+
-
- def suite():
- settings = {'use_latex_toc': False}
-diff --git a/test/test_writers/test_manpage.py b/test/test_writers/test_manpage.py
-index eec5400..a220444 100644
---- a/test/test_writers/test_manpage.py
-+++ b/test/test_writers/test_manpage.py
-@@ -7,8 +7,10 @@
- """
- Tests for manpage writer.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- settings = {}
-diff --git a/test/test_writers/test_null.py b/test/test_writers/test_null.py
-index c75f8a9..3cc8f37 100755
---- a/test/test_writers/test_null.py
-+++ b/test/test_writers/test_null.py
-@@ -7,8 +7,10 @@
- """
- Test for Null writer.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.PublishTestSuite('null')
-diff --git a/test/test_writers/test_odt.py b/test/test_writers/test_odt.py
-index 0efeae6..a47b7fb 100755
---- a/test/test_writers/test_odt.py
-+++ b/test/test_writers/test_odt.py
-@@ -29,6 +29,7 @@ Instructions for adding a new test:
- 5. If any other tests fail, that's a possible regression.
-
- """
-+from __future__ import absolute_import
-
- import sys
- import os
-@@ -36,7 +37,7 @@ import zipfile
- from xml.dom import minidom
- import tempfile
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
- import docutils
- import docutils.core
-diff --git a/test/test_writers/test_pseudoxml.py b/test/test_writers/test_pseudoxml.py
-index 9dfa714..187dde9 100755
---- a/test/test_writers/test_pseudoxml.py
-+++ b/test/test_writers/test_pseudoxml.py
-@@ -7,8 +7,10 @@
- """
- Test for pseudo-XML writer.
- """
-+from __future__ import absolute_import
-+
-+from . import DocutilsTestSupport
-
--from __init__ import DocutilsTestSupport
-
- def suite():
- s = DocutilsTestSupport.PublishTestSuite('pseudoxml')
-diff --git a/test/test_writers/test_s5.py b/test/test_writers/test_s5.py
-index 51972f3..1e955d3 100755
---- a/test/test_writers/test_s5.py
-+++ b/test/test_writers/test_s5.py
-@@ -7,11 +7,12 @@
- """
- Tests for the S5/HTML writer.
- """
-+from __future__ import absolute_import
-
- import os
- import platform
-
--from __init__ import DocutilsTestSupport
-+from . import DocutilsTestSupport
-
-
- def suite():
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0010-py3-Use-sorted-foo-instead-of-foo.sort.patch b/srcpkgs/python-docutils/patches/0010-py3-Use-sorted-foo-instead-of-foo.sort.patch
deleted file mode 100644
index deec162c377..00000000000
--- a/srcpkgs/python-docutils/patches/0010-py3-Use-sorted-foo-instead-of-foo.sort.patch
+++ /dev/null
@@ -1,236 +0,0 @@
-From 46d71ef146d5fe74b0186693f91a5f47585b1d79 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Mon, 26 Aug 2019 16:44:51 +0000
-Subject: [PATCH 10/26] py3: Use 'sorted(foo)' instead of 'foo.sort()'
-
-This works with iterators also (like 'dict.keys()' in Python 3)
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8357 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/nodes.py | 6 ++----
- docutils/parsers/rst/tableparser.py | 3 +--
- docutils/transforms/__init__.py | 3 +--
- docutils/utils/math/math2html.py | 3 +--
- docutils/writers/_html_base.py | 3 +--
- docutils/writers/latex2e/__init__.py | 3 +--
- test/DocutilsTestSupport.py | 3 +--
- test/test_dependencies.py | 9 +++------
- test/test_language.py | 6 ++----
- tools/dev/generate_punctuation_chars.py | 3 +--
- tools/dev/unicode2rstsubs.py | 6 ++----
- 11 files changed, 16 insertions(+), 32 deletions(-)
-
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index a8c0478..e29b887 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -649,8 +649,7 @@ class Element(Node):
- return atts
-
- def attlist(self):
-- attlist = self.non_default_attributes().items()
-- attlist.sort()
-+ attlist = sorted(self.non_default_attributes().items())
- return attlist
-
- def get(self, key, failobj=None):
-@@ -1782,8 +1781,7 @@ class pending(Special, Invisible, Element):
- ' .transform: %s.%s' % (self.transform.__module__,
- self.transform.__name__),
- ' .details:']
-- details = self.details.items()
-- details.sort()
-+ details = sorted(self.details.items())
- for key, value in details:
- if isinstance(value, Node):
- internals.append('%7s%s:' % ('', key))
-diff --git a/docutils/parsers/rst/tableparser.py b/docutils/parsers/rst/tableparser.py
-index 2760ea0..937aec8 100644
---- a/docutils/parsers/rst/tableparser.py
-+++ b/docutils/parsers/rst/tableparser.py
-@@ -286,8 +286,7 @@ class GridTableParser(TableParser):
- From the data collected by `scan_cell()`, convert to the final data
- structure.
- """
-- rowseps = self.rowseps.keys() # list of row boundaries
-- rowseps.sort()
-+ rowseps = sorted(self.rowseps.keys()) # list of row boundaries
- rowindex = {}
- for i in range(len(rowseps)):
- rowindex[rowseps[i]] = i # row boundary -> row number mapping
-diff --git a/docutils/transforms/__init__.py b/docutils/transforms/__init__.py
-index 9271133..d444fce 100644
---- a/docutils/transforms/__init__.py
-+++ b/docutils/transforms/__init__.py
-@@ -153,8 +153,7 @@ class Transformer(TransformSpec):
- unknown_reference_resolvers = []
- for i in components:
- unknown_reference_resolvers.extend(i.unknown_reference_resolvers)
-- decorated_list = [(f.priority, f) for f in unknown_reference_resolvers]
-- decorated_list.sort()
-+ decorated_list = sorted([(f.priority, f) for f in unknown_reference_resolvers])
- self.unknown_reference_resolvers.extend([f[1] for f in decorated_list])
-
- def apply_transforms(self):
-diff --git a/docutils/utils/math/math2html.py b/docutils/utils/math/math2html.py
-index 4a7209d..adcb1cc 100644
---- a/docutils/utils/math/math2html.py
-+++ b/docutils/utils/math/math2html.py
-@@ -2193,9 +2193,8 @@ class Container(object):
-
- def escape(self, line, replacements = EscapeConfig.entities):
- "Escape a line with replacements from elyxer.a map"
-- pieces = replacements.keys()
-+ pieces = sorted(replacements.keys())
- # do them in order
-- pieces.sort()
- for piece in pieces:
- if piece in line:
- line = line.replace(piece, replacements[piece])
-diff --git a/docutils/writers/_html_base.py b/docutils/writers/_html_base.py
-index a7f3b53..a957311 100644
---- a/docutils/writers/_html_base.py
-+++ b/docutils/writers/_html_base.py
-@@ -366,8 +366,7 @@ class HTMLTranslator(nodes.NodeVisitor):
- # Non-empty tag. Place the auxiliary <span> tag
- # *inside* the element, as the first child.
- suffix += '<span id="%s"></span>' % id
-- attlist = atts.items()
-- attlist.sort()
-+ attlist = sorted(atts.items())
- parts = [tagname]
- for name, value in attlist:
- # value=None was used for boolean attributes without
-diff --git a/docutils/writers/latex2e/__init__.py b/docutils/writers/latex2e/__init__.py
-index e21c74b..249ec4a 100644
---- a/docutils/writers/latex2e/__init__.py
-+++ b/docutils/writers/latex2e/__init__.py
-@@ -457,8 +457,7 @@ class SortableDict(dict):
- """
- def sortedkeys(self):
- """Return sorted list of keys"""
-- keys = self.keys()
-- keys.sort()
-+ keys = sorted(self.keys())
- return keys
-
- def sortedvalues(self):
-diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index a1fec25..21ea982 100644
---- a/test/DocutilsTestSupport.py
-+++ b/test/DocutilsTestSupport.py
-@@ -815,8 +815,7 @@ class HtmlWriterPublishPartsTestCase(WriterPublishTestCase):
- if not parts[key]:
- del parts[key]
- # standard output format:
-- keys = parts.keys()
-- keys.sort()
-+ keys = sorted(parts.keys())
- output = []
- for key in keys:
- output.append("%r: '''%s'''"
-diff --git a/test/test_dependencies.py b/test/test_dependencies.py
-index 298e8a4..0939b6d 100755
---- a/test/test_dependencies.py
-+++ b/test/test_dependencies.py
-@@ -54,9 +54,8 @@ class RecordDependenciesTests(unittest.TestCase):
- if PIL:
- keys += ['figure-image']
- expected = [paths[key] for key in keys]
-- record = self.get_record(writer_name='xml')
-+ record = sorted(self.get_record(writer_name='xml'))
- # the order of the files is arbitrary
-- record.sort()
- expected.sort()
- self.assertEqual(record, expected)
-
-@@ -67,9 +66,8 @@ class RecordDependenciesTests(unittest.TestCase):
- expected = [paths[key] for key in keys]
- # stylesheets are tested separately in test_stylesheet_dependencies():
- so = {'stylesheet_path': None, 'stylesheet': None}
-- record = self.get_record(writer_name='html', settings_overrides=so)
-+ record = sorted(self.get_record(writer_name='html', settings_overrides=so))
- # the order of the files is arbitrary
-- record.sort()
- expected.sort()
- self.assertEqual(record, expected)
-
-@@ -82,9 +80,8 @@ class RecordDependenciesTests(unittest.TestCase):
- if PIL:
- keys += ['figure-image']
- expected = [paths[key] for key in keys]
-- record = self.get_record(writer_name='latex')
-+ record = sorted(self.get_record(writer_name='latex'))
- # the order of the files is arbitrary
-- record.sort()
- expected.sort()
- self.assertEqual(record, expected)
-
-diff --git a/test/test_language.py b/test/test_language.py
-index 30af81a..31ac613 100755
---- a/test/test_language.py
-+++ b/test/test_language.py
-@@ -150,8 +150,7 @@ class LanguageTestCase(DocutilsTestSupport.CustomTestCase):
- except Exception as error:
- failures.append('"%s": %s' % (d, error))
- inverted = self._invert(module.directives)
-- canonical = directives._directive_registry.keys()
-- canonical.sort()
-+ canonical = sorted(directives._directive_registry.keys())
- canonical.remove('restructuredtext-test-directive')
- for name in canonical:
- if name not in inverted:
-@@ -185,8 +184,7 @@ class LanguageTestCase(DocutilsTestSupport.CustomTestCase):
- except KeyError as error:
- failures.append('"%s": %s' % (d, error))
- inverted = self._invert(module.roles)
-- canonical = roles._role_registry.keys()
-- canonical.sort()
-+ canonical = sorted(roles._role_registry.keys())
- canonical.remove('restructuredtext-unimplemented-role')
- for name in canonical:
- if name not in inverted:
-diff --git a/tools/dev/generate_punctuation_chars.py b/tools/dev/generate_punctuation_chars.py
-index a30c5ca..b718f78 100644
---- a/tools/dev/generate_punctuation_chars.py
-+++ b/tools/dev/generate_punctuation_chars.py
-@@ -269,8 +269,7 @@ def mark_intervals(s):
- Sort string and replace 'cdef' by 'c-f' and similar.
- """
- l =[]
-- s = [ord(ch) for ch in s]
-- s.sort()
-+ s = sorted([ord(ch) for ch in s])
- for n in s:
- try:
- if l[-1][-1]+1 == n:
-diff --git a/tools/dev/unicode2rstsubs.py b/tools/dev/unicode2rstsubs.py
-index b51eec4..ac38bf4 100755
---- a/tools/dev/unicode2rstsubs.py
-+++ b/tools/dev/unicode2rstsubs.py
-@@ -163,8 +163,7 @@ class CharacterEntitySetExtractor(object):
- return name
-
- def write_sets(self):
-- sets = list(self.sets.keys())
-- sets.sort()
-+ sets = sorted(self.sets.keys())
- for set_name in sets:
- self.write_set(set_name)
-
-@@ -177,8 +176,7 @@ class CharacterEntitySetExtractor(object):
- print('writing file "%s"' % outname)
- outfile.write(self.header + '\n')
- set = self.sets[set_name]
-- entities = [(e.lower(), e) for e in set.keys()]
-- entities.sort()
-+ entities = sorted([(e.lower(), e) for e in set.keys()])
- longest = 0
- for _, entity_name in entities:
- longest = max(longest, len(entity_name))
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0011-Cleanup-simplify-code-following-recent-changes.patch b/srcpkgs/python-docutils/patches/0011-Cleanup-simplify-code-following-recent-changes.patch
deleted file mode 100644
index 1db728871ae..00000000000
--- a/srcpkgs/python-docutils/patches/0011-Cleanup-simplify-code-following-recent-changes.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 792080ad1d8ac28483c9c147b0cb79f108b40571 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Mon, 26 Aug 2019 16:45:09 +0000
-Subject: [PATCH 11/26] Cleanup/simplify code following recent changes.
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8358 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/transforms/__init__.py | 4 ++--
- docutils/writers/odf_odt/__init__.py | 8 ++------
- 2 files changed, 4 insertions(+), 8 deletions(-)
-
-diff --git a/docutils/transforms/__init__.py b/docutils/transforms/__init__.py
-index d444fce..12bf6f9 100644
---- a/docutils/transforms/__init__.py
-+++ b/docutils/transforms/__init__.py
-@@ -153,8 +153,8 @@ class Transformer(TransformSpec):
- unknown_reference_resolvers = []
- for i in components:
- unknown_reference_resolvers.extend(i.unknown_reference_resolvers)
-- decorated_list = sorted([(f.priority, f) for f in unknown_reference_resolvers])
-- self.unknown_reference_resolvers.extend([f[1] for f in decorated_list])
-+ decorated_list = sorted((f.priority, f) for f in unknown_reference_resolvers)
-+ self.unknown_reference_resolvers.extend(f[1] for f in decorated_list)
-
- def apply_transforms(self):
- """Apply all of the stored transforms, in priority order."""
-diff --git a/docutils/writers/odf_odt/__init__.py b/docutils/writers/odf_odt/__init__.py
-index c0f43a5..417dc34 100644
---- a/docutils/writers/odf_odt/__init__.py
-+++ b/docutils/writers/odf_odt/__init__.py
-@@ -68,12 +68,8 @@ except ImportError:
- try:
- import pygments
- import pygments.lexers
-- if sys.version_info.major >= 3:
-- from .pygmentsformatter import OdtPygmentsProgFormatter, \
-- OdtPygmentsLaTeXFormatter
-- else:
-- from .pygmentsformatter import OdtPygmentsProgFormatter, \
-- OdtPygmentsLaTeXFormatter
-+ from .pygmentsformatter import (OdtPygmentsProgFormatter,
-+ OdtPygmentsLaTeXFormatter)
- except (ImportError, SyntaxError):
- pygments = None
-
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0012-Use-isinstance-foo-bar-instead-of-type-foo-is-bar.patch b/srcpkgs/python-docutils/patches/0012-Use-isinstance-foo-bar-instead-of-type-foo-is-bar.patch
deleted file mode 100644
index 0e1bb5ac093..00000000000
--- a/srcpkgs/python-docutils/patches/0012-Use-isinstance-foo-bar-instead-of-type-foo-is-bar.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From 88fdde83419b6c532948a64d2824f6a663ad33c3 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Mon, 26 Aug 2019 16:45:33 +0000
-Subject: [PATCH 12/26] Use 'isinstance(foo, bar)' instead of 'type(foo) is
- bar'
-
-This one is more stylistic than anything.
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8359 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/parsers/rst/directives/tables.py | 4 ++--
- docutils/parsers/rst/states.py | 2 +-
- docutils/statemachine.py | 2 +-
- docutils/utils/math/latex2mathml.py | 2 +-
- test/package_unittest.py | 4 ++--
- test/test_nodes.py | 2 +-
- 6 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/docutils/parsers/rst/directives/tables.py b/docutils/parsers/rst/directives/tables.py
-index b0a4eac..bf97e26 100644
---- a/docutils/parsers/rst/directives/tables.py
-+++ b/docutils/parsers/rst/directives/tables.py
-@@ -104,7 +104,7 @@ class Table(Directive):
- return self.options.get('widths', '')
-
- def get_column_widths(self, max_cols):
-- if type(self.widths) == list:
-+ if isinstance(self.widths, list):
- if len(self.widths) != max_cols:
- error = self.state_machine.reporter.error(
- '"%s" widths do not match the number of columns in table '
-@@ -152,7 +152,7 @@ class RSTTable(Table):
- if 'align' in self.options:
- table_node['align'] = self.options.get('align')
- tgroup = table_node[0]
-- if type(self.widths) == list:
-+ if isinstance(self.widths, list):
- colspecs = [child for child in tgroup.children
- if child.tagname == 'colspec']
- for colspec, col_width in zip(colspecs, self.widths):
-diff --git a/docutils/parsers/rst/states.py b/docutils/parsers/rst/states.py
-index c9b4fa3..2a2e33a 100644
---- a/docutils/parsers/rst/states.py
-+++ b/docutils/parsers/rst/states.py
-@@ -447,7 +447,7 @@ def build_regexp(definition, compile=True):
- name, prefix, suffix, parts = definition
- part_strings = []
- for part in parts:
-- if type(part) is tuple:
-+ if isinstance(part, tuple):
- part_strings.append(build_regexp(part, None))
- else:
- part_strings.append(part)
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index 068083a..6bc03f5 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -737,7 +737,7 @@ class State(object):
- names = []
- transitions = {}
- for namestate in name_list:
-- if type(namestate) is stringtype:
-+ if isinstance(namestate, stringtype):
- transitions[namestate] = self.make_transition(namestate)
- names.append(namestate)
- else:
-diff --git a/docutils/utils/math/latex2mathml.py b/docutils/utils/math/latex2mathml.py
-index 255e96f..b7ba048 100644
---- a/docutils/utils/math/latex2mathml.py
-+++ b/docutils/utils/math/latex2mathml.py
-@@ -168,7 +168,7 @@ class math(object):
-
- self.children = []
- if children is not None:
-- if type(children) is list:
-+ if isinstance(children, list):
- for child in children:
- self.append(child)
- else:
-diff --git a/test/package_unittest.py b/test/package_unittest.py
-index 4db826b..1c0f077 100644
---- a/test/package_unittest.py
-+++ b/test/package_unittest.py
-@@ -115,7 +115,7 @@ def loadTestModules(path, name='', packages=None):
- # to cheat:
- testSuite.addTest(moduleTests)
- continue
-- if type(suite) == types.FunctionType:
-+ if isinstance(suite, types.FunctionType):
- testSuite.addTest(suite())
- elif isinstance(suite, unittest.TestSuite):
- testSuite.addTest(suite)
-@@ -152,7 +152,7 @@ def main(suite=None):
- print("Debug: Suite=%s" % suite, file=sys.stderr)
- testRunner = unittest.TextTestRunner(verbosity=verbosity)
- # run suites (if we were called from test_all) or suite...
-- if type(suite) == type([]):
-+ if isinstance(suite, type([])):
- for s in suite:
- testRunner.run(s)
- else:
-diff --git a/test/test_nodes.py b/test/test_nodes.py
-index 679c98e..af04e86 100755
---- a/test/test_nodes.py
-+++ b/test/test_nodes.py
-@@ -121,7 +121,7 @@ class ElementTests(unittest.TestCase):
- self.assertEqual(repr(uelement), "<Element: <#text: 'gr\\xfcn'>>")
- else:
- self.assertEqual(repr(uelement), u"<Element: <#text: 'grün'>>")
-- self.assertTrue(isinstance(repr(uelement),str))
-+ self.assertTrue(isinstance(repr(uelement), str))
- self.assertEqual(str(element), '<Element>text\nmore</Element>')
- self.assertEqual(str(uelement), '<Element>gr\xfcn</Element>')
- dom = element.asdom()
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0013-Consistent-Python-3-checks.patch b/srcpkgs/python-docutils/patches/0013-Consistent-Python-3-checks.patch
deleted file mode 100644
index a0643ded4f1..00000000000
--- a/srcpkgs/python-docutils/patches/0013-Consistent-Python-3-checks.patch
+++ /dev/null
@@ -1,594 +0,0 @@
-From 7e79a539c426bbbb2932286b2efa2cf03a467e46 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Wed, 20 Nov 2019 00:02:34 +0700
-Subject: [PATCH 13/26] Consistent Python 3 checks.
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8360 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/frontend.py | 2 +-
- docutils/io.py | 4 ++--
- docutils/nodes.py | 12 ++++++------
- docutils/parsers/rst/directives/__init__.py | 2 +-
- docutils/parsers/rst/directives/misc.py | 4 ++--
- docutils/parsers/rst/directives/tables.py | 4 ++--
- docutils/statemachine.py | 2 +-
- docutils/transforms/frontmatter.py | 2 +-
- docutils/transforms/universal.py | 2 +-
- docutils/utils/__init__.py | 2 +-
- docutils/utils/error_reporting.py | 2 +-
- docutils/writers/_html_base.py | 2 +-
- docutils/writers/docutils_xml.py | 4 ++--
- docutils/writers/latex2e/__init__.py | 2 +-
- docutils/writers/manpage.py | 2 +-
- docutils/writers/odf_odt/__init__.py | 2 +-
- setup.py | 6 +++---
- test/DocutilsTestSupport.py | 4 ++--
- test/test__init__.py | 2 +-
- test/test_error_reporting.py | 2 +-
- test/test_language.py | 2 +-
- test/test_nodes.py | 16 ++++++++--------
- test/test_parsers/test_parser.py | 2 +-
- .../test_rst/test_directives/test_include.py | 2 +-
- .../test_rst/test_directives/test_tables.py | 2 +-
- .../test_rst/test_directives/test_unicode.py | 2 +-
- tools/dev/create_unimap.py | 4 ++--
- tools/dev/generate_punctuation_chars.py | 4 ++--
- 28 files changed, 49 insertions(+), 49 deletions(-)
-
-diff --git a/docutils/frontend.py b/docutils/frontend.py
-index 4b389b0..627f603 100644
---- a/docutils/frontend.py
-+++ b/docutils/frontend.py
-@@ -43,7 +43,7 @@ import docutils.nodes
- from docutils.utils.error_reporting import (locale_encoding, SafeString,
- ErrorOutput, ErrorString)
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/docutils/io.py b/docutils/io.py
-index 3cdf00e..fb354fd 100644
---- a/docutils/io.py
-+++ b/docutils/io.py
-@@ -17,7 +17,7 @@ import codecs
- from docutils import TransformSpec
- from docutils.utils.error_reporting import locale_encoding, ErrorString, ErrorOutput
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-@@ -208,7 +208,7 @@ class FileInput(Input):
- def __init__(self, source=None, source_path=None,
- encoding=None, error_handler='strict',
- autoclose=True,
-- mode='r' if sys.version_info >= (3, 4) else 'rU', **kwargs):
-+ mode='r' if sys.version_info >= (3,0) else 'rU', **kwargs):
- """
- :Parameters:
- - `source`: either a file-like object (which is read directly), or
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index e29b887..3d714a2 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -29,7 +29,7 @@ import re
- import warnings
- import unicodedata
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
- basestring = str # noqa
-
-@@ -64,7 +64,7 @@ class Node(object):
- """
- return True
-
-- if sys.version_info < (3, 0):
-+ 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):
-@@ -304,7 +304,7 @@ class Node(object):
- except IndexError:
- return None
-
--if sys.version_info < (3, 0):
-+if sys.version_info < (3,0):
- class reprunicode(unicode):
- """
- A unicode sub-class that removes the initial u from unicode's repr.
-@@ -320,7 +320,7 @@ def ensure_str(s):
- """
- Failsave conversion of `unicode` to `str`.
- """
-- if sys.version_info < (3,) and isinstance(s, unicode):
-+ if sys.version_info < (3,0) and isinstance(s, unicode):
- return s.encode('ascii', 'backslashreplace')
- return s
-
-@@ -352,7 +352,7 @@ class Text(Node, reprunicode):
- children = ()
- """Text nodes have no children, and cannot have children."""
-
-- if sys.version_info > (3,):
-+ if sys.version_info > (3,0):
- def __new__(cls, data, rawsource=None):
- """Prevent the rawsource argument from propagating to str."""
- if isinstance(data, bytes):
-@@ -544,7 +544,7 @@ class Element(Node):
- else:
- return self.emptytag()
-
-- if sys.version_info > (3,):
-+ if sys.version_info > (3,0):
- # 2to3 doesn't convert __unicode__ to __str__
- __str__ = __unicode__
-
-diff --git a/docutils/parsers/rst/directives/__init__.py b/docutils/parsers/rst/directives/__init__.py
-index 7bccb5b..14fe1ff 100644
---- a/docutils/parsers/rst/directives/__init__.py
-+++ b/docutils/parsers/rst/directives/__init__.py
-@@ -16,7 +16,7 @@ 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):
-+if sys.version_info >= (3,0):
- unichr = chr # noqa
-
-
-diff --git a/docutils/parsers/rst/directives/misc.py b/docutils/parsers/rst/directives/misc.py
-index 0fc3610..3b9b9de 100644
---- a/docutils/parsers/rst/directives/misc.py
-+++ b/docutils/parsers/rst/directives/misc.py
-@@ -473,7 +473,7 @@ class Date(Directive):
- 'Invalid context: the "%s" directive can only be used within '
- 'a substitution definition.' % self.name)
- format_str = '\n'.join(self.content) or '%Y-%m-%d'
-- if sys.version_info< (3, 0):
-+ if sys.version_info< (3,0):
- try:
- format_str = format_str.encode(locale_encoding or 'utf-8')
- except UnicodeEncodeError:
-@@ -498,7 +498,7 @@ class Date(Directive):
- # time.gmtime(int(source_date_epoch)))
- # else:
- text = time.strftime(format_str)
-- if sys.version_info< (3, 0):
-+ if sys.version_info< (3,0):
- # `text` is a byte string that may contain non-ASCII characters:
- try:
- text = text.decode(locale_encoding or 'utf-8')
-diff --git a/docutils/parsers/rst/directives/tables.py b/docutils/parsers/rst/directives/tables.py
-index bf97e26..36a52e7 100644
---- a/docutils/parsers/rst/directives/tables.py
-+++ b/docutils/parsers/rst/directives/tables.py
-@@ -263,7 +263,7 @@ class CSVTable(Table):
- return [detail.args[0]]
- except csv.Error as detail:
- message = str(detail)
-- if sys.version_info < (3,) and '1-character string' in message:
-+ if sys.version_info < (3,0) and '1-character string' in message:
- message += '\nwith Python 2.x this must be an ASCII character.'
- error = self.state_machine.reporter.error(
- 'Error with CSV data in "%s" directive:\n%s'
-@@ -356,7 +356,7 @@ class CSVTable(Table):
- raise SystemMessagePropagation(error)
- return csv_data, source
-
-- if sys.version_info < (3,):
-+ if sys.version_info < (3,0):
- # 2.x csv module doesn't do Unicode
- def decode_from_csv(s):
- return s.decode('utf-8')
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index 6bc03f5..16252bb 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -113,7 +113,7 @@ import unicodedata
- from docutils import utils
- from docutils.utils.error_reporting import ErrorOutput
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/docutils/transforms/frontmatter.py b/docutils/transforms/frontmatter.py
-index 23b9c95..345e290 100644
---- a/docutils/transforms/frontmatter.py
-+++ b/docutils/transforms/frontmatter.py
-@@ -28,7 +28,7 @@ from docutils import nodes, utils
- from docutils.transforms import TransformError, Transform
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/docutils/transforms/universal.py b/docutils/transforms/universal.py
-index 49fb2c8..770ec71 100644
---- a/docutils/transforms/universal.py
-+++ b/docutils/transforms/universal.py
-@@ -24,7 +24,7 @@ from docutils.transforms import TransformError, Transform
- from docutils.utils import smartquotes
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/docutils/utils/__init__.py b/docutils/utils/__init__.py
-index 77c70f8..de39247 100644
---- a/docutils/utils/__init__.py
-+++ b/docutils/utils/__init__.py
-@@ -22,7 +22,7 @@ from docutils.nodes import unescape
- import docutils.io
- from docutils.utils.error_reporting import ErrorOutput, SafeString
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str
-
-
-diff --git a/docutils/utils/error_reporting.py b/docutils/utils/error_reporting.py
-index 8fcc816..21bc55b 100644
---- a/docutils/utils/error_reporting.py
-+++ b/docutils/utils/error_reporting.py
-@@ -65,7 +65,7 @@ else:
- locale_encoding = None
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/docutils/writers/_html_base.py b/docutils/writers/_html_base.py
-index a957311..63d5a5b 100644
---- a/docutils/writers/_html_base.py
-+++ b/docutils/writers/_html_base.py
-@@ -40,7 +40,7 @@ from docutils.utils.math import (unichar2tex, pick_math_environment,
- math2html, latex2mathml, tex2mathml_extern)
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/docutils/writers/docutils_xml.py b/docutils/writers/docutils_xml.py
-index 34e810d..12306b6 100644
---- a/docutils/writers/docutils_xml.py
-+++ b/docutils/writers/docutils_xml.py
-@@ -30,7 +30,7 @@ from StringIO import StringIO
- import docutils
- from docutils import frontend, writers, nodes
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-@@ -185,7 +185,7 @@ class XMLTranslator(nodes.GenericNodeVisitor):
- self.output.append(xml_string)
- self.default_departure(node) # or not?
- # Check validity of raw XML:
-- if isinstance(xml_string, unicode) and sys.version_info < (3,):
-+ if isinstance(xml_string, unicode) and sys.version_info < (3,0):
- xml_string = xml_string.encode('utf8')
- try:
- self.xmlparser.parse(StringIO(xml_string))
-diff --git a/docutils/writers/latex2e/__init__.py b/docutils/writers/latex2e/__init__.py
-index 249ec4a..2c76b0f 100644
---- a/docutils/writers/latex2e/__init__.py
-+++ b/docutils/writers/latex2e/__init__.py
-@@ -28,7 +28,7 @@ from docutils.transforms import writer_aux
- from docutils.utils.math import pick_math_environment, unichar2tex
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/docutils/writers/manpage.py b/docutils/writers/manpage.py
-index cbb8648..52cd49c 100644
---- a/docutils/writers/manpage.py
-+++ b/docutils/writers/manpage.py
-@@ -47,7 +47,7 @@ __docformat__ = 'reStructuredText'
- import re
- import sys
-
--if sys.version_info < (3, 0):
-+if sys.version_info < (3,0):
- range = xrange
-
- import docutils
-diff --git a/docutils/writers/odf_odt/__init__.py b/docutils/writers/odf_odt/__init__.py
-index 417dc34..75f846c 100644
---- a/docutils/writers/odf_odt/__init__.py
-+++ b/docutils/writers/odf_odt/__init__.py
-@@ -947,7 +947,7 @@ class ODFTranslator(nodes.GenericNodeVisitor):
- self.document.reporter.warning(
- 'Style "%s" is not a style used by odtwriter.' % (
- rststyle, ))
-- if sys.version_info.major >= 3:
-+ if sys.version_info >= (3,0):
- self.format_map[rststyle] = format
- else:
- self.format_map[rststyle] = format.decode('utf-8')
-diff --git a/setup.py b/setup.py
-index 4280b98..12c398b 100755
---- a/setup.py
-+++ b/setup.py
-@@ -13,7 +13,7 @@ try:
- from distutils.core import setup, Command
- from distutils.command.build import build
- from distutils.command.build_py import build_py
-- if sys.version_info >= (3,):
-+ if sys.version_info >= (3,0):
- from distutils.command.build_py import build_py_2to3
- from distutils.util import copydir_run_2to3
- from distutils.command.install_data import install_data
-@@ -27,7 +27,7 @@ except ImportError:
- sys.exit(1)
-
-
--if sys.version_info >= (3,):
-+if sys.version_info >= (3,0):
- # copy-convert auxiliary python sources
- class copy_build_py_2to3(build_py_2to3):
- """Copy/convert Python source files in given directories recursively.
-@@ -97,7 +97,7 @@ def do_setup():
- kwargs['cmdclass'] = {'build_data': build_data,
- 'install_data': smart_install_data}
- # Auto-convert source code for Python 3
-- if sys.version_info >= (3,):
-+ if sys.version_info >= (3,0):
- kwargs['cmdclass']['build_py'] = copy_build_py_2to3
- else:
- kwargs['cmdclass']['build_py'] = build_py
-diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index 21ea982..390df5b 100644
---- a/test/DocutilsTestSupport.py
-+++ b/test/DocutilsTestSupport.py
-@@ -89,7 +89,7 @@ except:
- import pdb
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-@@ -202,7 +202,7 @@ class CustomTestCase(StandardTestCase):
- """`input`, `output`, and `expected` should all be strings."""
- if isinstance(input, unicode):
- input = input.encode('raw_unicode_escape')
-- if sys.version_info > (3,):
-+ if sys.version_info > (3,0):
- # API difference: Python 3's node.__str__ doesn't escape
- #assert expected is None or isinstance(expected, unicode)
- if isinstance(expected, bytes):
-diff --git a/test/test__init__.py b/test/test__init__.py
-index 8f1d749..87ec14f 100644
---- a/test/test__init__.py
-+++ b/test/test__init__.py
-@@ -16,7 +16,7 @@ import docutils
- import docutils.utils
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/test/test_error_reporting.py b/test/test_error_reporting.py
-index 893082c..4b337e3 100644
---- a/test/test_error_reporting.py
-+++ b/test/test_error_reporting.py
-@@ -46,7 +46,7 @@ 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):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/test/test_language.py b/test/test_language.py
-index 31ac613..455357a 100755
---- a/test/test_language.py
-+++ b/test/test_language.py
-@@ -26,7 +26,7 @@ _reporter = docutils.utils.new_reporter('', _settings)
-
- reference_language = 'en'
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-diff --git a/test/test_nodes.py b/test/test_nodes.py
-index af04e86..6805799 100755
---- a/test/test_nodes.py
-+++ b/test/test_nodes.py
-@@ -17,7 +17,7 @@ from DocutilsTestSupport import nodes, utils
-
- debug = False
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
-
-
-@@ -36,7 +36,7 @@ class TextTests(unittest.TestCase):
- self.assertEqual(self.text.shortrepr(),
- r"<#text: 'Line 1.\nLine 2.'>")
- self.assertEqual(nodes.reprunicode('foo'), u'foo')
-- if sys.version_info < (3,):
-+ if sys.version_info < (3,0):
- self.assertEqual(repr(self.unicode_text), r"<#text: 'M\xf6hren'>")
- else:
- self.assertEqual(repr(self.unicode_text), u"<#text: 'Möhren'>")
-@@ -65,7 +65,7 @@ class TextTests(unittest.TestCase):
- self.assertEqual(stripped2, u's noc')
-
- def test_asciirestriction(self):
-- if sys.version_info < (3,):
-+ if sys.version_info < (3,0):
- self.assertRaises(UnicodeDecodeError, nodes.Text,
- b'hol%s' % chr(224))
- else:
-@@ -98,7 +98,7 @@ class ElementTests(unittest.TestCase):
- del element['attr']
- element['mark'] = u'\u2022'
- self.assertEqual(repr(element), '<Element: >')
-- if sys.version_info < (3,):
-+ if sys.version_info < (3,0):
- self.assertEqual(str(element), '<Element mark="\\u2022"/>')
- else:
- self.assertEqual(str(element), u'<Element mark="\u2022"/>')
-@@ -106,7 +106,7 @@ class ElementTests(unittest.TestCase):
- self.assertEqual(dom.toxml(), u'<Element mark="\u2022"/>')
- dom.unlink()
- element['names'] = ['nobody', u'имя', u'näs']
-- if sys.version_info < (3,):
-+ if sys.version_info < (3,0):
- self.assertEqual(repr(element),
- '<Element "nobody; \\u0438\\u043c\\u044f; n\\xe4s": >')
- else:
-@@ -117,7 +117,7 @@ class ElementTests(unittest.TestCase):
- element = nodes.Element('text\nmore', nodes.Text('text\nmore'))
- uelement = nodes.Element(u'grün', nodes.Text(u'grün'))
- self.assertEqual(repr(element), r"<Element: <#text: 'text\nmore'>>")
-- if sys.version_info < (3,):
-+ if sys.version_info < (3,0):
- self.assertEqual(repr(uelement), "<Element: <#text: 'gr\\xfcn'>>")
- else:
- self.assertEqual(repr(uelement), u"<Element: <#text: 'grün'>>")
-@@ -341,7 +341,7 @@ class MiscTests(unittest.TestCase):
- self.assertTrue(isinstance(nodes.reprunicode('foo'), unicode))
- self.assertEqual(nodes.reprunicode('foo'), u'foo')
- self.assertEqual(nodes.reprunicode(u'Möhre'), u'Möhre')
-- if sys.version_info < (3,): # strip leading "u" from representation
-+ if sys.version_info < (3,0): # strip leading "u" from representation
- self.assertEqual(repr(nodes.reprunicode(u'Möhre')),
- repr(u'Möhre')[1:])
- else: # no change to `unicode` under Python 3k
-@@ -350,7 +350,7 @@ class MiscTests(unittest.TestCase):
- def test_ensure_str(self):
- self.assertTrue(isinstance(nodes.ensure_str(u'über'), str))
- self.assertEqual(nodes.ensure_str('over'), 'over')
-- if sys.version_info < (3,): # strip leading "u" from representation
-+ if sys.version_info < (3,0): # strip leading "u" from representation
- self.assertEqual(nodes.ensure_str(u'über'), r'\xfcber')
- else:
- self.assertEqual(nodes.ensure_str(u'über'), r'über')
-diff --git a/test/test_parsers/test_parser.py b/test/test_parsers/test_parser.py
-index 6faecc7..6c57963 100644
---- a/test/test_parsers/test_parser.py
-+++ b/test/test_parsers/test_parser.py
-@@ -23,7 +23,7 @@ class RstParserTests(unittest.TestCase):
- document = utils.new_document('test data', frontend.OptionParser(
- components=(parser, )).get_default_values())
-
-- if sys.version_info < (3,):
-+ if sys.version_info < (3,0):
- # supplying string input is supported, but only if ascii-decodable
- self.assertRaises(UnicodeDecodeError,
- parser.parse, b'hol%s' % chr(224), document)
-diff --git a/test/test_parsers/test_rst/test_directives/test_include.py b/test/test_parsers/test_rst/test_directives/test_include.py
-index d848262..92d0193 100755
---- a/test/test_parsers/test_rst/test_directives/test_include.py
-+++ b/test/test_parsers/test_rst/test_directives/test_include.py
-@@ -16,7 +16,7 @@ from docutils.parsers.rst import states
- from docutils.utils.code_analyzer import with_pygments
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unichr = chr # noqa
-
-
-diff --git a/test/test_parsers/test_rst/test_directives/test_tables.py b/test/test_parsers/test_rst/test_directives/test_tables.py
-index ee930c8..9d417e8 100755
---- a/test/test_parsers/test_rst/test_directives/test_tables.py
-+++ b/test/test_parsers/test_rst/test_directives/test_tables.py
-@@ -18,7 +18,7 @@ from docutils.parsers.rst.directives import tables
- from . import DocutilsTestSupport
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str # noqa
- unichr = chr # noqa
-
-diff --git a/test/test_parsers/test_rst/test_directives/test_unicode.py b/test/test_parsers/test_rst/test_directives/test_unicode.py
-index b99b5d0..576bc1d 100755
---- a/test/test_parsers/test_rst/test_directives/test_unicode.py
-+++ b/test/test_parsers/test_rst/test_directives/test_unicode.py
-@@ -14,7 +14,7 @@ import sys
- from . import DocutilsTestSupport
-
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unichr = chr # noqa
-
-
-diff --git a/tools/dev/create_unimap.py b/tools/dev/create_unimap.py
-index 74e8bc7..808861d 100755
---- a/tools/dev/create_unimap.py
-+++ b/tools/dev/create_unimap.py
-@@ -14,7 +14,7 @@ from xml.dom import minidom
- import sys
- import pprint
-
--if sys.version_info >= (3, 0):
-+if sys.version_info >= (3,0):
- unicode = str #noqa
- else:
- bytes = str # noqa
-@@ -22,7 +22,7 @@ else:
-
-
- 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)
-
-diff --git a/tools/dev/generate_punctuation_chars.py b/tools/dev/generate_punctuation_chars.py
-index b718f78..fbb72c0 100644
---- a/tools/dev/generate_punctuation_chars.py
-+++ b/tools/dev/generate_punctuation_chars.py
-@@ -38,7 +38,7 @@ from __future__ import print_function
- import sys
- import unicodedata
-
--if sys.version_info >= (3,):
-+if sys.version_info >= (3,0):
- unichr = chr # unichr not available in Py3k
- else:
- import codecs
-@@ -361,7 +361,7 @@ if __name__ == '__main__':
- # Import the punctuation_chars module from the source
- # or Py3k build path for local Python modules::
-
-- if sys.version_info < (3,):
-+ if sys.version_info < (3,0):
- sys.path.insert(0, '../../docutils')
- else:
- sys.path.insert(0, '../../build/lib')
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0014-py3-Replace-foo.next-with-next-foo.patch b/srcpkgs/python-docutils/patches/0014-py3-Replace-foo.next-with-next-foo.patch
deleted file mode 100644
index 54dff2a159a..00000000000
--- a/srcpkgs/python-docutils/patches/0014-py3-Replace-foo.next-with-next-foo.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From cfef74f567498f1e097761bc3cae7c0bde2451cc Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Mon, 26 Aug 2019 16:46:50 +0000
-Subject: [PATCH 14/26] py3: Replace 'foo.next()' with 'next(foo)'
-
-The former only works in Python 2, while the latter works in Python 2.7
-and 3.x.
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8361 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/utils/code_analyzer.py | 2 +-
- docutils/utils/math/math2html.py | 2 +-
- docutils/writers/manpage.py | 2 +-
- test/test_parsers/test_rst/test_directives/test_tables.py | 2 +-
- 4 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/docutils/utils/code_analyzer.py b/docutils/utils/code_analyzer.py
-index 6dc2e15..87a4584 100644
---- a/docutils/utils/code_analyzer.py
-+++ b/docutils/utils/code_analyzer.py
-@@ -83,7 +83,7 @@ class Lexer(object):
- Also strip the final newline (added by pygments).
- """
- tokens = iter(tokens)
-- (lasttype, lastval) = tokens.next()
-+ (lasttype, lastval) = next(tokens)
- for ttype, value in tokens:
- if ttype is lasttype:
- lastval += value
-diff --git a/docutils/utils/math/math2html.py b/docutils/utils/math/math2html.py
-index adcb1cc..ddaca48 100644
---- a/docutils/utils/math/math2html.py
-+++ b/docutils/utils/math/math2html.py
-@@ -2208,7 +2208,7 @@ class Container(object):
- if ord(pos.current()) > 128:
- codepoint = hex(ord(pos.current()))
- if codepoint == '0xd835':
-- codepoint = hex(ord(pos.next()) + 0xf800)
-+ codepoint = hex(ord(next(pos)) + 0xf800)
- result += '&#' + codepoint[1:] + ';'
- else:
- result += pos.current()
-diff --git a/docutils/writers/manpage.py b/docutils/writers/manpage.py
-index 52cd49c..b39cf25 100644
---- a/docutils/writers/manpage.py
-+++ b/docutils/writers/manpage.py
-@@ -812,7 +812,7 @@ class Translator(nodes.NodeVisitor):
- def visit_list_item(self, node):
- # man 7 man argues to use ".IP" instead of ".TP"
- self.body.append('.IP %s %d\n' % (
-- self._list_char[-1].next(),
-+ next(self._list_char[-1]),
- self._list_char[-1].get_width(),))
-
- def depart_list_item(self, node):
-diff --git a/test/test_parsers/test_rst/test_directives/test_tables.py b/test/test_parsers/test_rst/test_directives/test_tables.py
-index 9d417e8..cc450f3 100755
---- a/test/test_parsers/test_rst/test_directives/test_tables.py
-+++ b/test/test_parsers/test_rst/test_directives/test_tables.py
-@@ -59,7 +59,7 @@ def null_bytes():
- csv_data = unicode(csv_data, 'latin1').splitlines()
- reader = csv.reader([tables.CSVTable.encode_for_csv(line + '\n')
- for line in csv_data])
-- reader.next()
-+ next(reader)
-
- null_bytes_exception = DocutilsTestSupport.exception_data(null_bytes)[0]
-
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0015-py3-Replace-foo.has_key-bar-with-bar-in-foo.patch b/srcpkgs/python-docutils/patches/0015-py3-Replace-foo.has_key-bar-with-bar-in-foo.patch
deleted file mode 100644
index e53b109ee77..00000000000
--- a/srcpkgs/python-docutils/patches/0015-py3-Replace-foo.has_key-bar-with-bar-in-foo.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 006366f7baaf84baf0158ccd9036c9a53d27c965 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Mon, 26 Aug 2019 23:12:56 +0000
-Subject: [PATCH 15/26] py3: Replace 'foo.has_key(bar)' with 'bar in foo'
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8362 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/writers/manpage.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/docutils/writers/manpage.py b/docutils/writers/manpage.py
-index b39cf25..8bb025c 100644
---- a/docutils/writers/manpage.py
-+++ b/docutils/writers/manpage.py
-@@ -312,7 +312,7 @@ class Translator(nodes.NodeVisitor):
-
- def __init__(self, style):
- self._style = style
-- if node.has_key('start'):
-+ if 'start' in node:
- self._cnt = node['start'] - 1
- else:
- self._cnt = 0
-@@ -354,7 +354,7 @@ class Translator(nodes.NodeVisitor):
- def __repr__(self):
- return 'enum_style-%s' % list(self._style)
-
-- if node.has_key('enumtype'):
-+ if 'enumtype' in node:
- self._list_char.append(enum_char(node['enumtype']))
- else:
- self._list_char.append(enum_char('bullet'))
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0016-Remove-duplicate-definition-of-nodes.Element.__conta.patch b/srcpkgs/python-docutils/patches/0016-Remove-duplicate-definition-of-nodes.Element.__conta.patch
deleted file mode 100644
index bc71ea6e4e8..00000000000
--- a/srcpkgs/python-docutils/patches/0016-Remove-duplicate-definition-of-nodes.Element.__conta.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From bf370651321ed721777fe0bb1c4bd4652eea354c Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Mon, 26 Aug 2019 23:13:04 +0000
-Subject: [PATCH 16/26] Remove duplicate definition of
- `nodes.Element.__contains__`.
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8363 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/nodes.py | 14 ++++++--------
- 1 file changed, 6 insertions(+), 8 deletions(-)
-
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index 3d714a2..f8da02b 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -577,13 +577,6 @@ class Element(Node):
- def __len__(self):
- return len(self.children)
-
-- def __contains__(self, key):
-- # support both membership test for children and attributes
-- # (has_key is translated to "in" by 2to3)
-- if isinstance(key, basestring):
-- return key in self.attributes
-- return key in self.children
--
- def __getitem__(self, key):
- if isinstance(key, basestring):
- return self.attributes[key]
-@@ -668,7 +661,12 @@ class Element(Node):
- has_key = hasattr
-
- # support operator ``in``
-- __contains__ = hasattr
-+ def __contains__(self, key):
-+ # support both membership test for children and attributes
-+ # (has_key is translated to "in" by 2to3)
-+ if isinstance(key, basestring):
-+ return key in self.attributes
-+ return key in self.children
-
- def get_language_code(self, fallback=''):
- """Return node's language tag.
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0017-Handle-ConfigParser-to-configparser-rename.patch b/srcpkgs/python-docutils/patches/0017-Handle-ConfigParser-to-configparser-rename.patch
deleted file mode 100644
index 809c7341906..00000000000
--- a/srcpkgs/python-docutils/patches/0017-Handle-ConfigParser-to-configparser-rename.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From bcc08592dd85f2e7805ab3528659a4396f109b30 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Wed, 20 Nov 2019 00:05:43 +0700
-Subject: [PATCH 17/26] Handle 'ConfigParser' to 'configparser' rename.
-
-Based on a patch by Stephen Finucane.
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8364 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/frontend.py | 14 +++++++++-----
- docutils/writers/odf_odt/__init__.py | 4 ++--
- 2 files changed, 11 insertions(+), 7 deletions(-)
-
-diff --git a/docutils/frontend.py b/docutils/frontend.py
-index 627f603..815343d 100644
---- a/docutils/frontend.py
-+++ b/docutils/frontend.py
-@@ -33,10 +33,14 @@ import os
- import os.path
- import sys
- import warnings
--import ConfigParser as CP
- import codecs
- import optparse
- from optparse import SUPPRESS_HELP
-+if sys.version_info >= (3,0):
-+ from configparser import RawConfigParser
-+else:
-+ from ConfigParser import RawConfigParser
-+
- import docutils
- import docutils.utils
- import docutils.nodes
-@@ -735,7 +739,7 @@ class OptionParser(optparse.OptionParser, docutils.SettingsSpec):
- raise KeyError('No option with dest == %r.' % dest)
-
-
--class ConfigParser(CP.RawConfigParser):
-+class ConfigParser(RawConfigParser):
-
- old_settings = {
- 'pep_stylesheet': ('pep_html writer', 'stylesheet'),
-@@ -757,7 +761,7 @@ Skipping "%s" configuration file.
- """
-
- def __init__(self, *args, **kwargs):
-- CP.RawConfigParser.__init__(self, *args, **kwargs)
-+ RawConfigParser.__init__(self, *args, **kwargs)
-
- self._files = []
- """List of paths of configuration files read."""
-@@ -776,9 +780,9 @@ Skipping "%s" configuration file.
- continue
- try:
- if sys.version_info < (3,2):
-- CP.RawConfigParser.readfp(self, fp, filename)
-+ RawConfigParser.readfp(self, fp, filename)
- else:
-- CP.RawConfigParser.read_file(self, fp, filename)
-+ RawConfigParser.read_file(self, fp, filename)
- except UnicodeDecodeError:
- self._stderr.write(self.not_utf8_error % (filename, filename))
- fp.close()
-diff --git a/docutils/writers/odf_odt/__init__.py b/docutils/writers/odf_odt/__init__.py
-index 75f846c..f36980f 100644
---- a/docutils/writers/odf_odt/__init__.py
-+++ b/docutils/writers/odf_odt/__init__.py
-@@ -30,10 +30,12 @@ from docutils import frontend, nodes, utils, writers, languages
- from docutils.readers import standalone
- from docutils.transforms import references
- if type(sys.version_info)!=type((0,)) and sys.version_info.major >= 3:
-+ from configparser import ConfigParser
- from io import StringIO
- from urllib.request import urlopen
- from urllib.error import HTTPError
- else:
-+ from ConfigParser import ConfigParser
- from StringIO import StringIO
- from urllib2 import urlopen, HTTPError
-
-@@ -938,8 +940,6 @@ class ODFTranslator(nodes.GenericNodeVisitor):
- document.reporter)
- self.format_map = {}
- if self.settings.odf_config_file:
-- from configparser import ConfigParser
--
- parser = ConfigParser()
- parser.read(self.settings.odf_config_file)
- for rststyle, format in parser.items("Formats"):
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0018-py3-Replace-ur-prefix.patch b/srcpkgs/python-docutils/patches/0018-py3-Replace-ur-prefix.patch
deleted file mode 100644
index c401c4aebbc..00000000000
--- a/srcpkgs/python-docutils/patches/0018-py3-Replace-ur-prefix.patch
+++ /dev/null
@@ -1,599 +0,0 @@
-From ac408c7ed04500c83a47861c5ac88aee246d178c Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 27 Aug 2019 12:09:19 +0000
-Subject: [PATCH 18/26] py3: Replace 'ur' prefix
-
-While the 'u' prefix was backported to Python 3.3 or thereabouts, 'ur'
-remains invalid in Python 3. Just escape all backslashes and use plain
-old 'u'.
-
-Based on patch by Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8366 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/utils/math/latex2mathml.py | 28 +-
- docutils/utils/math/tex2mathml_extern.py | 3 +-
- docutils/utils/smartquotes.py | 24 +-
- docutils/writers/latex2e/__init__.py | 280 +++++++++---------
- docutils/writers/manpage.py | 8 +-
- .../test_rst/test_east_asian_text.py | 4 +-
- tools/dev/generate_punctuation_chars.py | 10 +-
- 7 files changed, 182 insertions(+), 175 deletions(-)
-
-diff --git a/docutils/utils/math/latex2mathml.py b/docutils/utils/math/latex2mathml.py
-index b7ba048..1f3bc18 100644
---- a/docutils/utils/math/latex2mathml.py
-+++ b/docutils/utils/math/latex2mathml.py
-@@ -6,12 +6,12 @@
- # Based on rst2mathml.py from the latex_math sandbox project
- # © 2005 Jens Jørgen Mortensen
- # :License: Released under the terms of the `2-Clause BSD license`_, in short:
--#
-+#
- # Copying and distribution of this file, with or without modification,
- # are permitted in any medium without royalty provided the copyright
- # notice and this notice are preserved.
- # This file is offered as-is, without any warranty.
--#
-+#
- # .. _2-Clause BSD license: http://www.spdx.org/licenses/BSD-2-Clause
-
-
-@@ -412,7 +412,7 @@ def parse_latex_math(string, inline=True):
- node = entry
- skip = 2
- else:
-- raise SyntaxError(ur'Syntax error: "%s%s"' % (c, c2))
-+ raise SyntaxError(u'Syntax error: "%s%s"' % (c, c2))
- elif c.isalpha():
- node = node.append(mi(c))
- elif c.isdigit():
-@@ -453,7 +453,7 @@ def parse_latex_math(string, inline=True):
- node.close().append(entry)
- node = entry
- else:
-- raise SyntaxError(ur'Illegal character: "%s"' % c)
-+ raise SyntaxError(u'Illegal character: "%s"' % c)
- string = string[skip:]
- return tree
-
-@@ -474,15 +474,15 @@ def handle_keyword(name, node, string):
- node = entry
- elif name == 'end':
- if not string.startswith('{matrix}'):
-- raise SyntaxError(ur'Expected "\end{matrix}"!')
-+ raise SyntaxError(u'Expected "\\end{matrix}"!')
- skip += 8
- node = node.close().close().close()
- elif name in ('text', 'mathrm'):
- if string[0] != '{':
-- raise SyntaxError(ur'Expected "\text{...}"!')
-+ raise SyntaxError(u'Expected "\\text{...}"!')
- i = string.find('}')
- if i == -1:
-- raise SyntaxError(ur'Expected "\text{...}"!')
-+ raise SyntaxError(u'Expected "\\text{...}"!')
- node = node.append(mtext(string[1:i]))
- skip += i + 1
- elif name == 'sqrt':
-@@ -520,7 +520,7 @@ def handle_keyword(name, node, string):
- if string.startswith(operator):
- break
- else:
-- raise SyntaxError(ur'Expected something to negate: "\not ..."!')
-+ raise SyntaxError(u'Expected something to negate: "\\not ..."!')
- node = node.append(mo(negatables[operator]))
- skip += len(operator)
- elif name == 'mathbf':
-@@ -529,12 +529,12 @@ def handle_keyword(name, node, string):
- node = style
- elif name == 'mathbb':
- if string[0] != '{' or not string[1].isupper() or string[2] != '}':
-- raise SyntaxError(ur'Expected something like "\mathbb{A}"!')
-+ raise SyntaxError(u'Expected something like "\\mathbb{A}"!')
- node = node.append(mi(mathbb[string[1]]))
- skip += 3
- elif name in ('mathscr', 'mathcal'):
- if string[0] != '{' or string[2] != '}':
-- raise SyntaxError(ur'Expected something like "\mathscr{A}"!')
-+ raise SyntaxError(u'Expected something like "\\mathscr{A}"!')
- node = node.append(mi(mathscr[string[1]]))
- skip += 3
- elif name == 'colon': # "normal" colon, not binary operator
-@@ -559,12 +559,10 @@ def handle_keyword(name, node, string):
- return node, skip
-
- def tex2mathml(tex_math, inline=True):
-- """Return string with MathML code corresponding to `tex_math`.
--
-+ """Return string with MathML code corresponding to `tex_math`.
-+
- `inline`=True is for inline math and `inline`=False for displayed math.
- """
--
-+
- mathml_tree = parse_latex_math(tex_math, inline=inline)
- return ''.join(mathml_tree.xml())
--
--
-diff --git a/docutils/utils/math/tex2mathml_extern.py b/docutils/utils/math/tex2mathml_extern.py
-index 3e7f158..ab82a78 100644
---- a/docutils/utils/math/tex2mathml_extern.py
-+++ b/docutils/utils/math/tex2mathml_extern.py
-@@ -141,7 +141,8 @@ def blahtexml(math_code, inline=True, reporter=None):
- # self-test
-
- if __name__ == "__main__":
-- example = ur'\frac{\partial \sin^2(\alpha)}{\partial \vec r} \varpi \, \text{Grüße}'
-+ example = (u'\\frac{\\partial \\sin^2(\\alpha)}{\\partial \\vec r}'
-+ u'\\varpi \\, \\text{Grüße}')
- # print(latexml(example).encode('utf8'))
- # print(ttm(example))
- print(blahtexml(example).encode('utf8'))
-diff --git a/docutils/utils/smartquotes.py b/docutils/utils/smartquotes.py
-index 148a4c9..b38fa47 100644
---- a/docutils/utils/smartquotes.py
-+++ b/docutils/utils/smartquotes.py
-@@ -658,20 +658,21 @@ def educateQuotes(text, language='en'):
- text = re.sub(r"'(?=\d{2}s)", smart.apostrophe, text)
-
- # Get most opening single quotes:
-- opening_single_quotes_regex = re.compile(ur"""
-+ opening_single_quotes_regex = re.compile(u"""
- (# ?<= # look behind fails: requires fixed-width pattern
-- \s | # a whitespace char, or
-+ \\s | # a whitespace char, or
- %s | # another separating char, or
- | # a non-breaking space entity, or
-- [–—] | # literal dashes, or
-+ [\u2013 \u2014 ] | # literal dashes, or
- -- | # dumb dashes, or
- &[mn]dash; | # dash entities (named or
- %s | # decimal or
-- &\#x201[34]; # hex)
-+ &\\#x201[34]; # hex)
- )
- ' # the quote
-- (?=\w) # followed by a word character
-- """ % (open_class,dec_dashes), re.VERBOSE | re.UNICODE)
-+ (?=\\w) # followed by a word character
-+ """ % (open_class, dec_dashes), re.VERBOSE | re.UNICODE)
-+
- text = opening_single_quotes_regex.sub(r'\1'+smart.osquote, text)
-
- # In many locales, single closing quotes are different from apostrophe:
-@@ -691,20 +692,21 @@ def educateQuotes(text, language='en'):
- text = re.sub(r"""'""", smart.osquote, text)
-
- # Get most opening double quotes:
-- opening_double_quotes_regex = re.compile(ur"""
-+ opening_double_quotes_regex = re.compile(u"""
- (
-- \s | # a whitespace char, or
-+ \\s | # a whitespace char, or
- %s | # another separating char, or
- | # a non-breaking space entity, or
-- [–—] | # literal dashes, or
-+ [\u2013 \u2014 ] | # literal dashes, or
- -- | # dumb dashes, or
- &[mn]dash; | # dash entities (named or
- %s | # decimal or
-- &\#x201[34]; # hex)
-+ &\\#x201[34]; # hex)
- )
- " # the quote
-- (?=\w) # followed by a word character
-+ (?=\\w) # followed by a word character
- """ % (open_class,dec_dashes), re.VERBOSE | re.UNICODE)
-+
- text = opening_double_quotes_regex.sub(r'\1'+smart.opquote, text)
-
- # Double closing quotes:
-diff --git a/docutils/writers/latex2e/__init__.py b/docutils/writers/latex2e/__init__.py
-index 2c76b0f..636d477 100644
---- a/docutils/writers/latex2e/__init__.py
-+++ b/docutils/writers/latex2e/__init__.py
-@@ -704,165 +704,165 @@ class CharMaps(object):
-
- # characters that need escaping even in `alltt` environments:
- alltt = {
-- ord('\\'): ur'\textbackslash{}',
-- ord('{'): ur'\{',
-- ord('}'): ur'\}',
-+ ord('\\'): u'\\textbackslash{}',
-+ ord('{'): u'\\{',
-+ ord('}'): u'\\}',
- }
- # characters that normally need escaping:
- special = {
-- ord('#'): ur'\#',
-- ord('$'): ur'\$',
-- ord('%'): ur'\%',
-- ord('&'): ur'\&',
-- ord('~'): ur'\textasciitilde{}',
-- ord('_'): ur'\_',
-- ord('^'): ur'\textasciicircum{}',
-+ ord('#'): u'\\#',
-+ ord('$'): u'\\$',
-+ ord('%'): u'\\%',
-+ ord('&'): u'\\&',
-+ ord('~'): u'\\textasciitilde{}',
-+ ord('_'): u'\\_',
-+ ord('^'): u'\\textasciicircum{}',
- # straight double quotes are 'active' in many languages
-- ord('"'): ur'\textquotedbl{}',
-+ ord('"'): u'\\textquotedbl{}',
- # Square brackets are ordinary chars and cannot be escaped with '\',
- # so we put them in a group '{[}'. (Alternative: ensure that all
- # macros with optional arguments are terminated with {} and text
- # inside any optional argument is put in a group ``[{text}]``).
- # Commands with optional args inside an optional arg must be put in a
- # group, e.g. ``\item[{\hyperref[label]{text}}]``.
-- ord('['): ur'{[}',
-- ord(']'): ur'{]}',
-+ ord('['): u'{[}',
-+ ord(']'): u'{]}',
- # the soft hyphen is unknown in 8-bit text
- # and not properly handled by XeTeX
-- 0x00AD: ur'\-', # SOFT HYPHEN
-+ 0x00AD: u'\\-', # SOFT HYPHEN
- }
- # Unicode chars that are not recognized by LaTeX's utf8 encoding
- unsupported_unicode = {
- # TODO: ensure white space also at the beginning of a line?
-- # 0x00A0: ur'\leavevmode\nobreak\vadjust{}~'
-- 0x2000: ur'\enskip', # EN QUAD
-- 0x2001: ur'\quad', # EM QUAD
-- 0x2002: ur'\enskip', # EN SPACE
-- 0x2003: ur'\quad', # EM SPACE
-- 0x2008: ur'\,', # PUNCTUATION SPACE
-- 0x200b: ur'\hspace{0pt}', # ZERO WIDTH SPACE
-- 0x202F: ur'\,', # NARROW NO-BREAK SPACE
-- # 0x02d8: ur'\\u{ }', # BREVE
-- 0x2011: ur'\hbox{-}', # NON-BREAKING HYPHEN
-- 0x212b: ur'\AA', # ANGSTROM SIGN
-- 0x21d4: ur'\ensuremath{\Leftrightarrow}',
-+ # 0x00A0: u'\\leavevmode\\nobreak\\vadjust{}~'
-+ 0x2000: u'\\enskip', # EN QUAD
-+ 0x2001: u'\\quad', # EM QUAD
-+ 0x2002: u'\\enskip', # EN SPACE
-+ 0x2003: u'\\quad', # EM SPACE
-+ 0x2008: u'\\,', # PUNCTUATION SPACE
-+ 0x200b: u'\\hspace{0pt}', # ZERO WIDTH SPACE
-+ 0x202F: u'\\,', # NARROW NO-BREAK SPACE
-+ # 0x02d8: u'\\\u{ }', # BREVE
-+ 0x2011: u'\\hbox{-}', # NON-BREAKING HYPHEN
-+ 0x212b: u'\\AA', # ANGSTROM SIGN
-+ 0x21d4: u'\\ensuremath{\\Leftrightarrow}',
- # Docutils footnote symbols:
-- 0x2660: ur'\ensuremath{\spadesuit}',
-- 0x2663: ur'\ensuremath{\clubsuit}',
-- 0xfb00: ur'ff', # LATIN SMALL LIGATURE FF
-- 0xfb01: ur'fi', # LATIN SMALL LIGATURE FI
-- 0xfb02: ur'fl', # LATIN SMALL LIGATURE FL
-- 0xfb03: ur'ffi', # LATIN SMALL LIGATURE FFI
-- 0xfb04: ur'ffl', # LATIN SMALL LIGATURE FFL
-+ 0x2660: u'\\ensuremath{\\spadesuit}',
-+ 0x2663: u'\\ensuremath{\\clubsuit}',
-+ 0xfb00: u'ff', # LATIN SMALL LIGATURE FF
-+ 0xfb01: u'fi', # LATIN SMALL LIGATURE FI
-+ 0xfb02: u'fl', # LATIN SMALL LIGATURE FL
-+ 0xfb03: u'ffi', # LATIN SMALL LIGATURE FFI
-+ 0xfb04: u'ffl', # LATIN SMALL LIGATURE FFL
- }
- # Unicode chars that are recognized by LaTeX's utf8 encoding
- utf8_supported_unicode = {
-- 0x00A0: ur'~', # NO-BREAK SPACE
-- 0x00AB: ur'\guillemotleft{}', # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-- 0x00bb: ur'\guillemotright{}', # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-- 0x200C: ur'\textcompwordmark{}', # ZERO WIDTH NON-JOINER
-- 0x2013: ur'\textendash{}',
-- 0x2014: ur'\textemdash{}',
-- 0x2018: ur'\textquoteleft{}',
-- 0x2019: ur'\textquoteright{}',
-- 0x201A: ur'\quotesinglbase{}', # SINGLE LOW-9 QUOTATION MARK
-- 0x201C: ur'\textquotedblleft{}',
-- 0x201D: ur'\textquotedblright{}',
-- 0x201E: ur'\quotedblbase{}', # DOUBLE LOW-9 QUOTATION MARK
-- 0x2030: ur'\textperthousand{}', # PER MILLE SIGN
-- 0x2031: ur'\textpertenthousand{}', # PER TEN THOUSAND SIGN
-- 0x2039: ur'\guilsinglleft{}',
-- 0x203A: ur'\guilsinglright{}',
-- 0x2423: ur'\textvisiblespace{}', # OPEN BOX
-- 0x2020: ur'\dag{}',
-- 0x2021: ur'\ddag{}',
-- 0x2026: ur'\dots{}',
-- 0x2122: ur'\texttrademark{}',
-+ 0x00A0: u'~', # NO-BREAK SPACE
-+ 0x00AB: u'\\guillemotleft{}', # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
-+ 0x00bb: u'\\guillemotright{}', # RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
-+ 0x200C: u'\\textcompwordmark{}', # ZERO WIDTH NON-JOINER
-+ 0x2013: u'\\textendash{}',
-+ 0x2014: u'\\textemdash{}',
-+ 0x2018: u'\\textquoteleft{}',
-+ 0x2019: u'\\textquoteright{}',
-+ 0x201A: u'\\quotesinglbase{}', # SINGLE LOW-9 QUOTATION MARK
-+ 0x201C: u'\\textquotedblleft{}',
-+ 0x201D: u'\\textquotedblright{}',
-+ 0x201E: u'\\quotedblbase{}', # DOUBLE LOW-9 QUOTATION MARK
-+ 0x2030: u'\\textperthousand{}', # PER MILLE SIGN
-+ 0x2031: u'\\textpertenthousand{}', # PER TEN THOUSAND SIGN
-+ 0x2039: u'\\guilsinglleft{}',
-+ 0x203A: u'\\guilsinglright{}',
-+ 0x2423: u'\\textvisiblespace{}', # OPEN BOX
-+ 0x2020: u'\\dag{}',
-+ 0x2021: u'\\ddag{}',
-+ 0x2026: u'\\dots{}',
-+ 0x2122: u'\\texttrademark{}',
- }
- # recognized with 'utf8', if textcomp is loaded
- textcomp = {
- # Latin-1 Supplement
-- 0x00a2: ur'\textcent{}', # ¢ CENT SIGN
-- 0x00a4: ur'\textcurrency{}', # ¤ CURRENCY SYMBOL
-- 0x00a5: ur'\textyen{}', # ¥ YEN SIGN
-- 0x00a6: ur'\textbrokenbar{}', # ¦ BROKEN BAR
-- 0x00a7: ur'\textsection{}', # § SECTION SIGN
-- 0x00a8: ur'\textasciidieresis{}', # ¨ DIAERESIS
-- 0x00a9: ur'\textcopyright{}', # © COPYRIGHT SIGN
-- 0x00aa: ur'\textordfeminine{}', # ª FEMININE ORDINAL INDICATOR
-- 0x00ac: ur'\textlnot{}', # ¬ NOT SIGN
-- 0x00ae: ur'\textregistered{}', # ® REGISTERED SIGN
-- 0x00af: ur'\textasciimacron{}', # ¯ MACRON
-- 0x00b0: ur'\textdegree{}', # ° DEGREE SIGN
-- 0x00b1: ur'\textpm{}', # ± PLUS-MINUS SIGN
-- 0x00b2: ur'\texttwosuperior{}', # ² SUPERSCRIPT TWO
-- 0x00b3: ur'\textthreesuperior{}', # ³ SUPERSCRIPT THREE
-- 0x00b4: ur'\textasciiacute{}', # ´ ACUTE ACCENT
-- 0x00b5: ur'\textmu{}', # µ MICRO SIGN
-- 0x00b6: ur'\textparagraph{}', # ¶ PILCROW SIGN # != \textpilcrow
-- 0x00b9: ur'\textonesuperior{}', # ¹ SUPERSCRIPT ONE
-- 0x00ba: ur'\textordmasculine{}', # º MASCULINE ORDINAL INDICATOR
-- 0x00bc: ur'\textonequarter{}', # 1/4 FRACTION
-- 0x00bd: ur'\textonehalf{}', # 1/2 FRACTION
-- 0x00be: ur'\textthreequarters{}', # 3/4 FRACTION
-- 0x00d7: ur'\texttimes{}', # × MULTIPLICATION SIGN
-- 0x00f7: ur'\textdiv{}', # ÷ DIVISION SIGN
-+ 0x00a2: u'\\textcent{}', # ¢ CENT SIGN
-+ 0x00a4: u'\\textcurrency{}', # ¤ CURRENCY SYMBOL
-+ 0x00a5: u'\\textyen{}', # ¥ YEN SIGN
-+ 0x00a6: u'\\textbrokenbar{}', # ¦ BROKEN BAR
-+ 0x00a7: u'\\textsection{}', # § SECTION SIGN
-+ 0x00a8: u'\\textasciidieresis{}', # ¨ DIAERESIS
-+ 0x00a9: u'\\textcopyright{}', # © COPYRIGHT SIGN
-+ 0x00aa: u'\\textordfeminine{}', # ª FEMININE ORDINAL INDICATOR
-+ 0x00ac: u'\\textlnot{}', # ¬ NOT SIGN
-+ 0x00ae: u'\\textregistered{}', # ® REGISTERED SIGN
-+ 0x00af: u'\\textasciimacron{}', # ¯ MACRON
-+ 0x00b0: u'\\textdegree{}', # ° DEGREE SIGN
-+ 0x00b1: u'\\textpm{}', # ± PLUS-MINUS SIGN
-+ 0x00b2: u'\\texttwosuperior{}', # ² SUPERSCRIPT TWO
-+ 0x00b3: u'\\textthreesuperior{}', # ³ SUPERSCRIPT THREE
-+ 0x00b4: u'\\textasciiacute{}', # ´ ACUTE ACCENT
-+ 0x00b5: u'\\textmu{}', # µ MICRO SIGN
-+ 0x00b6: u'\\textparagraph{}', # ¶ PILCROW SIGN # != \textpilcrow
-+ 0x00b9: u'\\textonesuperior{}', # ¹ SUPERSCRIPT ONE
-+ 0x00ba: u'\\textordmasculine{}', # º MASCULINE ORDINAL INDICATOR
-+ 0x00bc: u'\\textonequarter{}', # 1/4 FRACTION
-+ 0x00bd: u'\\textonehalf{}', # 1/2 FRACTION
-+ 0x00be: u'\\textthreequarters{}', # 3/4 FRACTION
-+ 0x00d7: u'\\texttimes{}', # × MULTIPLICATION SIGN
-+ 0x00f7: u'\\textdiv{}', # ÷ DIVISION SIGN
- # others
-- 0x0192: ur'\textflorin{}', # LATIN SMALL LETTER F WITH HOOK
-- 0x02b9: ur'\textasciiacute{}', # MODIFIER LETTER PRIME
-- 0x02ba: ur'\textacutedbl{}', # MODIFIER LETTER DOUBLE PRIME
-- 0x2016: ur'\textbardbl{}', # DOUBLE VERTICAL LINE
-- 0x2022: ur'\textbullet{}', # BULLET
-- 0x2032: ur'\textasciiacute{}', # PRIME
-- 0x2033: ur'\textacutedbl{}', # DOUBLE PRIME
-- 0x2035: ur'\textasciigrave{}', # REVERSED PRIME
-- 0x2036: ur'\textgravedbl{}', # REVERSED DOUBLE PRIME
-- 0x203b: ur'\textreferencemark{}', # REFERENCE MARK
-- 0x203d: ur'\textinterrobang{}', # INTERROBANG
-- 0x2044: ur'\textfractionsolidus{}', # FRACTION SLASH
-- 0x2045: ur'\textlquill{}', # LEFT SQUARE BRACKET WITH QUILL
-- 0x2046: ur'\textrquill{}', # RIGHT SQUARE BRACKET WITH QUILL
-- 0x2052: ur'\textdiscount{}', # COMMERCIAL MINUS SIGN
-- 0x20a1: ur'\textcolonmonetary{}', # COLON SIGN
-- 0x20a3: ur'\textfrenchfranc{}', # FRENCH FRANC SIGN
-- 0x20a4: ur'\textlira{}', # LIRA SIGN
-- 0x20a6: ur'\textnaira{}', # NAIRA SIGN
-- 0x20a9: ur'\textwon{}', # WON SIGN
-- 0x20ab: ur'\textdong{}', # DONG SIGN
-- 0x20ac: ur'\texteuro{}', # EURO SIGN
-- 0x20b1: ur'\textpeso{}', # PESO SIGN
-- 0x20b2: ur'\textguarani{}', # GUARANI SIGN
-- 0x2103: ur'\textcelsius{}', # DEGREE CELSIUS
-- 0x2116: ur'\textnumero{}', # NUMERO SIGN
-- 0x2117: ur'\textcircledP{}', # SOUND RECORDING COYRIGHT
-- 0x211e: ur'\textrecipe{}', # PRESCRIPTION TAKE
-- 0x2120: ur'\textservicemark{}', # SERVICE MARK
-- 0x2122: ur'\texttrademark{}', # TRADE MARK SIGN
-- 0x2126: ur'\textohm{}', # OHM SIGN
-- 0x2127: ur'\textmho{}', # INVERTED OHM SIGN
-- 0x212e: ur'\textestimated{}', # ESTIMATED SYMBOL
-- 0x2190: ur'\textleftarrow{}', # LEFTWARDS ARROW
-- 0x2191: ur'\textuparrow{}', # UPWARDS ARROW
-- 0x2192: ur'\textrightarrow{}', # RIGHTWARDS ARROW
-- 0x2193: ur'\textdownarrow{}', # DOWNWARDS ARROW
-- 0x2212: ur'\textminus{}', # MINUS SIGN
-- 0x2217: ur'\textasteriskcentered{}', # ASTERISK OPERATOR
-- 0x221a: ur'\textsurd{}', # SQUARE ROOT
-- 0x2422: ur'\textblank{}', # BLANK SYMBOL
-- 0x25e6: ur'\textopenbullet{}', # WHITE BULLET
-- 0x25ef: ur'\textbigcircle{}', # LARGE CIRCLE
-- 0x266a: ur'\textmusicalnote{}', # EIGHTH NOTE
-- 0x26ad: ur'\textmarried{}', # MARRIAGE SYMBOL
-- 0x26ae: ur'\textdivorced{}', # DIVORCE SYMBOL
-- 0x27e8: ur'\textlangle{}', # MATHEMATICAL LEFT ANGLE BRACKET
-- 0x27e9: ur'\textrangle{}', # MATHEMATICAL RIGHT ANGLE BRACKET
-+ 0x0192: u'\\textflorin{}', # LATIN SMALL LETTER F WITH HOOK
-+ 0x02b9: u'\\textasciiacute{}', # MODIFIER LETTER PRIME
-+ 0x02ba: u'\\textacutedbl{}', # MODIFIER LETTER DOUBLE PRIME
-+ 0x2016: u'\\textbardbl{}', # DOUBLE VERTICAL LINE
-+ 0x2022: u'\\textbullet{}', # BULLET
-+ 0x2032: u'\\textasciiacute{}', # PRIME
-+ 0x2033: u'\\textacutedbl{}', # DOUBLE PRIME
-+ 0x2035: u'\\textasciigrave{}', # REVERSED PRIME
-+ 0x2036: u'\\textgravedbl{}', # REVERSED DOUBLE PRIME
-+ 0x203b: u'\\textreferencemark{}', # REFERENCE MARK
-+ 0x203d: u'\\textinterrobang{}', # INTERROBANG
-+ 0x2044: u'\\textfractionsolidus{}', # FRACTION SLASH
-+ 0x2045: u'\\textlquill{}', # LEFT SQUARE BRACKET WITH QUILL
-+ 0x2046: u'\\textrquill{}', # RIGHT SQUARE BRACKET WITH QUILL
-+ 0x2052: u'\\textdiscount{}', # COMMERCIAL MINUS SIGN
-+ 0x20a1: u'\\textcolonmonetary{}', # COLON SIGN
-+ 0x20a3: u'\\textfrenchfranc{}', # FRENCH FRANC SIGN
-+ 0x20a4: u'\\textlira{}', # LIRA SIGN
-+ 0x20a6: u'\\textnaira{}', # NAIRA SIGN
-+ 0x20a9: u'\\textwon{}', # WON SIGN
-+ 0x20ab: u'\\textdong{}', # DONG SIGN
-+ 0x20ac: u'\\texteuro{}', # EURO SIGN
-+ 0x20b1: u'\\textpeso{}', # PESO SIGN
-+ 0x20b2: u'\\textguarani{}', # GUARANI SIGN
-+ 0x2103: u'\\textcelsius{}', # DEGREE CELSIUS
-+ 0x2116: u'\\textnumero{}', # NUMERO SIGN
-+ 0x2117: u'\\textcircledP{}', # SOUND RECORDING COYRIGHT
-+ 0x211e: u'\\textrecipe{}', # PRESCRIPTION TAKE
-+ 0x2120: u'\\textservicemark{}', # SERVICE MARK
-+ 0x2122: u'\\texttrademark{}', # TRADE MARK SIGN
-+ 0x2126: u'\\textohm{}', # OHM SIGN
-+ 0x2127: u'\\textmho{}', # INVERTED OHM SIGN
-+ 0x212e: u'\\textestimated{}', # ESTIMATED SYMBOL
-+ 0x2190: u'\\textleftarrow{}', # LEFTWARDS ARROW
-+ 0x2191: u'\\textuparrow{}', # UPWARDS ARROW
-+ 0x2192: u'\\textrightarrow{}', # RIGHTWARDS ARROW
-+ 0x2193: u'\\textdownarrow{}', # DOWNWARDS ARROW
-+ 0x2212: u'\\textminus{}', # MINUS SIGN
-+ 0x2217: u'\\textasteriskcentered{}', # ASTERISK OPERATOR
-+ 0x221a: u'\\textsurd{}', # SQUARE ROOT
-+ 0x2422: u'\\textblank{}', # BLANK SYMBOL
-+ 0x25e6: u'\\textopenbullet{}', # WHITE BULLET
-+ 0x25ef: u'\\textbigcircle{}', # LARGE CIRCLE
-+ 0x266a: u'\\textmusicalnote{}', # EIGHTH NOTE
-+ 0x26ad: u'\\textmarried{}', # MARRIAGE SYMBOL
-+ 0x26ae: u'\\textdivorced{}', # DIVORCE SYMBOL
-+ 0x27e8: u'\\textlangle{}', # MATHEMATICAL LEFT ANGLE BRACKET
-+ 0x27e9: u'\\textrangle{}', # MATHEMATICAL RIGHT ANGLE BRACKET
- }
- # Unicode chars that require a feature/package to render
- pifont = {
-- 0x2665: ur'\ding{170}', # black heartsuit
-- 0x2666: ur'\ding{169}', # black diamondsuit
-- 0x2713: ur'\ding{51}', # check mark
-- 0x2717: ur'\ding{55}', # check mark
-+ 0x2665: u'\\ding{170}', # black heartsuit
-+ 0x2666: u'\\ding{169}', # black diamondsuit
-+ 0x2713: u'\\ding{51}', # check mark
-+ 0x2717: u'\\ding{55}', # check mark
- }
- # TODO: greek alphabet ... ?
- # see also LaTeX codec
-@@ -1511,14 +1511,14 @@ class LaTeXTranslator(nodes.NodeVisitor):
- # the backslash doesn't work, so we use a mirrored slash.
- # \reflectbox is provided by graphicx:
- self.requirements['graphicx'] = self.graphicx_package
-- table[ord('\\')] = ur'\reflectbox{/}'
-+ table[ord('\\')] = u'\\reflectbox{/}'
- # * ``< | >`` come out as different chars (except for cmtt):
- else:
-- table[ord('|')] = ur'\textbar{}'
-- table[ord('<')] = ur'\textless{}'
-- table[ord('>')] = ur'\textgreater{}'
-+ table[ord('|')] = u'\\textbar{}'
-+ table[ord('<')] = u'\\textless{}'
-+ table[ord('>')] = u'\\textgreater{}'
- if self.insert_non_breaking_blanks:
-- table[ord(' ')] = ur'~'
-+ table[ord(' ')] = u'~'
- # tab chars may occur in included files (literal or code)
- # quick-and-dirty replacement with spaces
- # (for better results use `--literal-block-env=lstlisting`)
-@@ -2618,7 +2618,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
- math_code = '\n'.join([math_code] + self.ids_to_labels(node))
- if math_env == '$':
- if self.alltt:
-- wrapper = ur'\(%s\)'
-+ wrapper = u'\\(%s\\)'
- else:
- wrapper = u'$%s$'
- else:
-@@ -2769,9 +2769,9 @@ class LaTeXTranslator(nodes.NodeVisitor):
-
- def visit_reference(self, node):
- # We need to escape #, \, and % if we use the URL in a command.
-- special_chars = {ord('#'): ur'\#',
-- ord('%'): ur'\%',
-- ord('\\'): ur'\\',
-+ special_chars = {ord('#'): u'\\#',
-+ ord('%'): u'\\%',
-+ ord('\\'): u'\\\\',
- }
- # external reference (URL)
- if 'refuri' in node:
-diff --git a/docutils/writers/manpage.py b/docutils/writers/manpage.py
-index 8bb025c..ed163de 100644
---- a/docutils/writers/manpage.py
-+++ b/docutils/writers/manpage.py
-@@ -284,10 +284,10 @@ class Translator(nodes.NodeVisitor):
- text = node.astext()
- text = text.replace('\\','\\e')
- replace_pairs = [
-- (u'-', ur'\-'),
-- (u'\'', ur'\(aq'),
-- (u'´', ur'\''),
-- (u'`', ur'\(ga'),
-+ (u'-', u'\\-'),
-+ (u'\'', u'\\(aq'),
-+ (u'´', u"\\'"),
-+ (u'`', u'\\(ga'),
- ]
- for (in_char, out_markup) in replace_pairs:
- text = text.replace(in_char, out_markup)
-diff --git a/test/test_parsers/test_rst/test_east_asian_text.py b/test/test_parsers/test_rst/test_east_asian_text.py
-index d819ef8..a13c969 100755
---- a/test/test_parsers/test_rst/test_east_asian_text.py
-+++ b/test/test_parsers/test_rst/test_east_asian_text.py
-@@ -50,12 +50,12 @@ u"""\
- タイトル2
- ========
- """],
--[ur"""
-+[u"""
- +-----------------------+
- | * ヒョウ:ダイ1ギョウ |
- | * ダイ2ギョウ |
- +-----------------------+
--| \* ダイ1ギョウ |
-+| \\* ダイ1ギョウ |
- | * ダイ2ギョウ |
- +-----------------------+
- """,
-diff --git a/tools/dev/generate_punctuation_chars.py b/tools/dev/generate_punctuation_chars.py
-index fbb72c0..cfe97df 100644
---- a/tools/dev/generate_punctuation_chars.py
-+++ b/tools/dev/generate_punctuation_chars.py
-@@ -375,10 +375,16 @@ if __name__ == '__main__':
-
- print_differences(openers, o, 'openers')
- if o_wide:
-- print('+ openers-wide = ur"""%s"""' % o_wide.encode('utf8'))
-+ if sys.version_info < (3, 0):
-+ print('+ openers-wide = ur"""%s"""' % o_wide.encode('utf8'))
-+ else:
-+ print('+ openers-wide = r"""%s"""' % o_wide.encode('utf8'))
- print_differences(closers, c, 'closers')
- if c_wide:
-- print('+ closers-wide = ur"""%s"""' % c_wide.encode('utf8'))
-+ if sys.version_info < (3, 0):
-+ print('+ closers-wide = ur"""%s"""' % c_wide.encode('utf8'))
-+ else:
-+ print('+ closers-wide = r"""%s"""' % c_wide.encode('utf8'))
-
- print_differences(delimiters, d + d_wide, 'delimiters')
- print_differences(closing_delimiters, cd, 'closing_delimiters')
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0019-Formatting-changes-to-facilitate-integration-of-py3-.patch b/srcpkgs/python-docutils/patches/0019-Formatting-changes-to-facilitate-integration-of-py3-.patch
deleted file mode 100644
index 5acf6e90dbc..00000000000
--- a/srcpkgs/python-docutils/patches/0019-Formatting-changes-to-facilitate-integration-of-py3-.patch
+++ /dev/null
@@ -1,920 +0,0 @@
-From 2e6a65d93d4616f702bbc1f0f5b18c562e403956 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Wed, 20 Nov 2019 00:08:33 +0700
-Subject: [PATCH 19/26] Formatting changes to facilitate integration of "py3"
- patchset.
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8367 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/_compat.py | 2 +-
- docutils/core.py | 2 +-
- docutils/frontend.py | 4 ++--
- docutils/io.py | 18 +++++++++---------
- docutils/nodes.py | 12 ++++++------
- docutils/parsers/rst/directives/__init__.py | 2 +-
- docutils/parsers/rst/directives/misc.py | 4 ++--
- docutils/parsers/rst/directives/tables.py | 4 ++--
- docutils/statemachine.py | 2 +-
- docutils/transforms/frontmatter.py | 2 +-
- docutils/transforms/universal.py | 2 +-
- docutils/utils/__init__.py | 8 ++++----
- docutils/utils/error_reporting.py | 4 ++--
- docutils/utils/math/math2html.py | 6 +++---
- docutils/writers/_html_base.py | 2 +-
- docutils/writers/docutils_xml.py | 4 ++--
- docutils/writers/latex2e/__init__.py | 2 +-
- docutils/writers/manpage.py | 2 +-
- docutils/writers/odf_odt/__init__.py | 5 +++--
- setup.py | 6 +++---
- test/DocutilsTestSupport.py | 6 +++---
- test/test__init__.py | 2 +-
- test/test_command_line.py | 2 +-
- test/test_error_reporting.py | 4 ++--
- test/test_functional.py | 8 ++++----
- test/test_io.py | 8 ++++----
- test/test_language.py | 2 +-
- test/test_nodes.py | 16 ++++++++--------
- test/test_parsers/test_parser.py | 2 +-
- .../test_rst/test_directives/test_include.py | 4 ++--
- .../test_rst/test_directives/test_raw.py | 2 +-
- .../test_rst/test_directives/test_tables.py | 2 +-
- .../test_rst/test_directives/test_unicode.py | 2 +-
- tools/dev/create_unimap.py | 4 ++--
- tools/dev/generate_punctuation_chars.py | 4 ++--
- tools/dev/unicode2rstsubs.py | 2 +-
- 36 files changed, 82 insertions(+), 81 deletions(-)
-
-diff --git a/docutils/_compat.py b/docutils/_compat.py
-index c9de633..1ff959c 100644
---- a/docutils/_compat.py
-+++ b/docutils/_compat.py
-@@ -14,7 +14,7 @@ This module currently provides the following helper symbols:
-
- import sys
-
--if sys.version_info < (3,0):
-+if sys.version_info < (3, 0):
- u_prefix = 'u'
- from StringIO import StringIO as BytesIO
- else:
-diff --git a/docutils/core.py b/docutils/core.py
-index 12a0c93..d0db093 100644
---- a/docutils/core.py
-+++ b/docutils/core.py
-@@ -155,7 +155,7 @@ class Publisher(object):
- if argv is None:
- argv = sys.argv[1:]
- # converting to Unicode (Python 3 does this automatically):
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- # TODO: make this failsafe and reversible?
- argv_encoding = (frontend.locale_encoding or 'ascii')
- argv = [a.decode(argv_encoding) for a in argv]
-diff --git a/docutils/frontend.py b/docutils/frontend.py
-index 815343d..7bfff6a 100644
---- a/docutils/frontend.py
-+++ b/docutils/frontend.py
-@@ -36,7 +36,7 @@ import warnings
- import codecs
- import optparse
- from optparse import SUPPRESS_HELP
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- from configparser import RawConfigParser
- else:
- from ConfigParser import RawConfigParser
-@@ -47,7 +47,7 @@ import docutils.nodes
- from docutils.utils.error_reporting import (locale_encoding, SafeString,
- ErrorOutput, ErrorString)
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-diff --git a/docutils/io.py b/docutils/io.py
-index fb354fd..9c70f10 100644
---- a/docutils/io.py
-+++ b/docutils/io.py
-@@ -17,7 +17,7 @@ import codecs
- from docutils import TransformSpec
- from docutils.utils.error_reporting import locale_encoding, ErrorString, ErrorOutput
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-@@ -208,7 +208,7 @@ class FileInput(Input):
- def __init__(self, source=None, source_path=None,
- encoding=None, error_handler='strict',
- autoclose=True,
-- mode='r' if sys.version_info >= (3,0) else 'rU', **kwargs):
-+ mode='r' if sys.version_info >= (3, 0) else 'rU', **kwargs):
- """
- :Parameters:
- - `source`: either a file-like object (which is read directly), or
-@@ -239,7 +239,7 @@ class FileInput(Input):
- if source is None:
- if source_path:
- # Specify encoding in Python 3
-- if sys.version_info >= (3,0):
-+ if sys.version_info >= (3, 0):
- kwargs = {'encoding': self.encoding,
- 'errors': self.error_handler}
- else:
-@@ -251,7 +251,7 @@ class FileInput(Input):
- raise InputError(error.errno, error.strerror, source_path)
- else:
- self.source = sys.stdin
-- elif (sys.version_info >= (3,0) and
-+ elif (sys.version_info >= (3, 0) and
- check_encoding(self.source, self.encoding) is False):
- # TODO: re-open, warn or raise error?
- raise UnicodeError('Encoding clash: encoding given is "%s" '
-@@ -268,7 +268,7 @@ class FileInput(Input):
- Read and decode a single file and return the data (Unicode string).
- """
- try:
-- if self.source is sys.stdin and sys.version_info >= (3,0):
-+ if self.source is sys.stdin and sys.version_info >= (3, 0):
- # read as binary data to circumvent auto-decoding
- data = self.source.buffer.read()
- # normalize newlines
-@@ -358,7 +358,7 @@ class FileOutput(Output):
-
- def open(self):
- # Specify encoding in Python 3.
-- if sys.version_info >= (3,0) and 'b' not in self.mode:
-+ if sys.version_info >= (3, 0) and 'b' not in self.mode:
- kwargs = {'encoding': self.encoding,
- 'errors': self.error_handler}
- else:
-@@ -378,17 +378,17 @@ class FileOutput(Output):
- """
- if not self.opened:
- self.open()
-- if ('b' not in self.mode and sys.version_info < (3,0)
-+ if ('b' not in self.mode and sys.version_info < (3, 0)
- or check_encoding(self.destination, self.encoding) is False
- ):
- data = self.encode(data)
-- if sys.version_info >= (3,0) and os.linesep != '\n':
-+ if sys.version_info >= (3, 0) and os.linesep != '\n':
- data = data.replace(b'\n', bytes(os.linesep, 'ascii')) # fix endings
-
- try:
- self.destination.write(data)
- except TypeError as e:
-- if sys.version_info >= (3,0) and isinstance(data, bytes):
-+ if sys.version_info >= (3, 0) and isinstance(data, bytes):
- try:
- self.destination.buffer.write(data)
- except AttributeError:
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index f8da02b..dd9c4b6 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -29,7 +29,7 @@ import re
- import warnings
- import unicodedata
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
- basestring = str # noqa
-
-@@ -64,7 +64,7 @@ class Node(object):
- """
- return True
-
-- if sys.version_info < (3,0):
-+ 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):
-@@ -304,7 +304,7 @@ class Node(object):
- except IndexError:
- return None
-
--if sys.version_info < (3,0):
-+if sys.version_info < (3, 0):
- class reprunicode(unicode):
- """
- A unicode sub-class that removes the initial u from unicode's repr.
-@@ -320,7 +320,7 @@ def ensure_str(s):
- """
- Failsave conversion of `unicode` to `str`.
- """
-- if sys.version_info < (3,0) and isinstance(s, unicode):
-+ if sys.version_info < (3, 0) and isinstance(s, unicode):
- return s.encode('ascii', 'backslashreplace')
- return s
-
-@@ -352,7 +352,7 @@ class Text(Node, reprunicode):
- children = ()
- """Text nodes have no children, and cannot have children."""
-
-- if sys.version_info > (3,0):
-+ if sys.version_info > (3, 0):
- def __new__(cls, data, rawsource=None):
- """Prevent the rawsource argument from propagating to str."""
- if isinstance(data, bytes):
-@@ -544,7 +544,7 @@ class Element(Node):
- else:
- return self.emptytag()
-
-- if sys.version_info > (3,0):
-+ if sys.version_info > (3, 0):
- # 2to3 doesn't convert __unicode__ to __str__
- __str__ = __unicode__
-
-diff --git a/docutils/parsers/rst/directives/__init__.py b/docutils/parsers/rst/directives/__init__.py
-index 14fe1ff..7bccb5b 100644
---- a/docutils/parsers/rst/directives/__init__.py
-+++ b/docutils/parsers/rst/directives/__init__.py
-@@ -16,7 +16,7 @@ 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):
-+if sys.version_info >= (3, 0):
- unichr = chr # noqa
-
-
-diff --git a/docutils/parsers/rst/directives/misc.py b/docutils/parsers/rst/directives/misc.py
-index 3b9b9de..0fc3610 100644
---- a/docutils/parsers/rst/directives/misc.py
-+++ b/docutils/parsers/rst/directives/misc.py
-@@ -473,7 +473,7 @@ class Date(Directive):
- 'Invalid context: the "%s" directive can only be used within '
- 'a substitution definition.' % self.name)
- format_str = '\n'.join(self.content) or '%Y-%m-%d'
-- if sys.version_info< (3,0):
-+ if sys.version_info< (3, 0):
- try:
- format_str = format_str.encode(locale_encoding or 'utf-8')
- except UnicodeEncodeError:
-@@ -498,7 +498,7 @@ class Date(Directive):
- # time.gmtime(int(source_date_epoch)))
- # else:
- text = time.strftime(format_str)
-- if sys.version_info< (3,0):
-+ if sys.version_info< (3, 0):
- # `text` is a byte string that may contain non-ASCII characters:
- try:
- text = text.decode(locale_encoding or 'utf-8')
-diff --git a/docutils/parsers/rst/directives/tables.py b/docutils/parsers/rst/directives/tables.py
-index 36a52e7..b698e08 100644
---- a/docutils/parsers/rst/directives/tables.py
-+++ b/docutils/parsers/rst/directives/tables.py
-@@ -263,7 +263,7 @@ class CSVTable(Table):
- return [detail.args[0]]
- except csv.Error as detail:
- message = str(detail)
-- if sys.version_info < (3,0) and '1-character string' in message:
-+ if sys.version_info < (3, 0) and '1-character string' in message:
- message += '\nwith Python 2.x this must be an ASCII character.'
- error = self.state_machine.reporter.error(
- 'Error with CSV data in "%s" directive:\n%s'
-@@ -356,7 +356,7 @@ class CSVTable(Table):
- raise SystemMessagePropagation(error)
- return csv_data, source
-
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- # 2.x csv module doesn't do Unicode
- def decode_from_csv(s):
- return s.decode('utf-8')
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index 16252bb..6bc03f5 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -113,7 +113,7 @@ import unicodedata
- from docutils import utils
- from docutils.utils.error_reporting import ErrorOutput
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-diff --git a/docutils/transforms/frontmatter.py b/docutils/transforms/frontmatter.py
-index 345e290..23b9c95 100644
---- a/docutils/transforms/frontmatter.py
-+++ b/docutils/transforms/frontmatter.py
-@@ -28,7 +28,7 @@ from docutils import nodes, utils
- from docutils.transforms import TransformError, Transform
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-diff --git a/docutils/transforms/universal.py b/docutils/transforms/universal.py
-index 770ec71..49fb2c8 100644
---- a/docutils/transforms/universal.py
-+++ b/docutils/transforms/universal.py
-@@ -24,7 +24,7 @@ from docutils.transforms import TransformError, Transform
- from docutils.utils import smartquotes
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-diff --git a/docutils/utils/__init__.py b/docutils/utils/__init__.py
-index de39247..cc1fd1a 100644
---- a/docutils/utils/__init__.py
-+++ b/docutils/utils/__init__.py
-@@ -22,7 +22,7 @@ from docutils.nodes import unescape
- import docutils.io
- from docutils.utils.error_reporting import ErrorOutput, SafeString
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str
-
-
-@@ -592,7 +592,7 @@ def split_escaped_whitespace(text):
- return list(itertools.chain(*strings))
-
- def strip_combining_chars(text):
-- if isinstance(text, str) and sys.version_info < (3,0):
-+ if isinstance(text, str) and sys.version_info < (3, 0):
- return text
- return u''.join([c for c in text if not unicodedata.combining(c)])
-
-@@ -604,7 +604,7 @@ def find_combining_chars(text):
- [3, 6, 9]
-
- """
-- if isinstance(text, str) and sys.version_info < (3,0):
-+ if isinstance(text, str) and sys.version_info < (3, 0):
- return []
- return [i for i,c in enumerate(text) if unicodedata.combining(c)]
-
-@@ -638,7 +638,7 @@ def column_width(text):
-
- Correct ``len(text)`` for wide East Asian and combining Unicode chars.
- """
-- if isinstance(text, str) and sys.version_info < (3,0):
-+ if isinstance(text, str) and sys.version_info < (3, 0):
- return len(text)
- width = sum([east_asian_widths[unicodedata.east_asian_width(c)]
- for c in text])
-diff --git a/docutils/utils/error_reporting.py b/docutils/utils/error_reporting.py
-index 21bc55b..02a1dab 100644
---- a/docutils/utils/error_reporting.py
-+++ b/docutils/utils/error_reporting.py
-@@ -65,7 +65,7 @@ else:
- locale_encoding = None
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-@@ -93,7 +93,7 @@ class SafeString(object):
- for arg in self.data.args]
- return ', '.join(args)
- if isinstance(self.data, unicode):
-- if sys.version_info > (3,0):
-+ if sys.version_info > (3, 0):
- return self.data
- else:
- return self.data.encode(self.encoding,
-diff --git a/docutils/utils/math/math2html.py b/docutils/utils/math/math2html.py
-index ddaca48..475519f 100644
---- a/docutils/utils/math/math2html.py
-+++ b/docutils/utils/math/math2html.py
-@@ -30,7 +30,7 @@ import unicodedata
- import urllib
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str #noqa
- basestring = str # noqa
- file = io.IOBase # noqa
-@@ -73,7 +73,7 @@ class Trace(object):
-
- def show(cls, message, channel):
- "Show a message out of a channel"
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- message = message.encode('utf-8')
- channel.write(message + '\n')
-
-@@ -1785,7 +1785,7 @@ class LineWriter(object):
- "Write a string"
- if not self.file:
- self.file = codecs.open(self.filename, 'w', "utf-8")
-- if self.file == sys.stdout and sys.version_info < (3,0):
-+ if self.file == sys.stdout and sys.version_info < (3, 0):
- string = string.encode('utf-8')
- self.file.write(string)
-
-diff --git a/docutils/writers/_html_base.py b/docutils/writers/_html_base.py
-index 63d5a5b..a957311 100644
---- a/docutils/writers/_html_base.py
-+++ b/docutils/writers/_html_base.py
-@@ -40,7 +40,7 @@ from docutils.utils.math import (unichar2tex, pick_math_environment,
- math2html, latex2mathml, tex2mathml_extern)
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-diff --git a/docutils/writers/docutils_xml.py b/docutils/writers/docutils_xml.py
-index 12306b6..60ee07b 100644
---- a/docutils/writers/docutils_xml.py
-+++ b/docutils/writers/docutils_xml.py
-@@ -30,7 +30,7 @@ from StringIO import StringIO
- import docutils
- from docutils import frontend, writers, nodes
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-@@ -185,7 +185,7 @@ class XMLTranslator(nodes.GenericNodeVisitor):
- self.output.append(xml_string)
- self.default_departure(node) # or not?
- # Check validity of raw XML:
-- if isinstance(xml_string, unicode) and sys.version_info < (3,0):
-+ if isinstance(xml_string, unicode) and sys.version_info < (3, 0):
- xml_string = xml_string.encode('utf8')
- try:
- self.xmlparser.parse(StringIO(xml_string))
-diff --git a/docutils/writers/latex2e/__init__.py b/docutils/writers/latex2e/__init__.py
-index 636d477..05b55eb 100644
---- a/docutils/writers/latex2e/__init__.py
-+++ b/docutils/writers/latex2e/__init__.py
-@@ -28,7 +28,7 @@ from docutils.transforms import writer_aux
- from docutils.utils.math import pick_math_environment, unichar2tex
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-diff --git a/docutils/writers/manpage.py b/docutils/writers/manpage.py
-index ed163de..df4f1a3 100644
---- a/docutils/writers/manpage.py
-+++ b/docutils/writers/manpage.py
-@@ -47,7 +47,7 @@ __docformat__ = 'reStructuredText'
- import re
- import sys
-
--if sys.version_info < (3,0):
-+if sys.version_info < (3, 0):
- range = xrange
-
- import docutils
-diff --git a/docutils/writers/odf_odt/__init__.py b/docutils/writers/odf_odt/__init__.py
-index f36980f..c79d4c1 100644
---- a/docutils/writers/odf_odt/__init__.py
-+++ b/docutils/writers/odf_odt/__init__.py
-@@ -37,7 +37,8 @@ if type(sys.version_info)!=type((0,)) and sys.version_info.major >= 3:
- else:
- from ConfigParser import ConfigParser
- from StringIO import StringIO
-- from urllib2 import urlopen, HTTPError
-+ from urllib2 import HTTPError
-+ from urllib2 import urlopen
-
-
- VERSION = '1.0a'
-@@ -947,7 +948,7 @@ class ODFTranslator(nodes.GenericNodeVisitor):
- self.document.reporter.warning(
- 'Style "%s" is not a style used by odtwriter.' % (
- rststyle, ))
-- if sys.version_info >= (3,0):
-+ if sys.version_info >= (3, 0):
- self.format_map[rststyle] = format
- else:
- self.format_map[rststyle] = format.decode('utf-8')
-diff --git a/setup.py b/setup.py
-index 12c398b..d636f46 100755
---- a/setup.py
-+++ b/setup.py
-@@ -13,7 +13,7 @@ try:
- from distutils.core import setup, Command
- from distutils.command.build import build
- from distutils.command.build_py import build_py
-- if sys.version_info >= (3,0):
-+ if sys.version_info >= (3, 0):
- from distutils.command.build_py import build_py_2to3
- from distutils.util import copydir_run_2to3
- from distutils.command.install_data import install_data
-@@ -27,7 +27,7 @@ except ImportError:
- sys.exit(1)
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- # copy-convert auxiliary python sources
- class copy_build_py_2to3(build_py_2to3):
- """Copy/convert Python source files in given directories recursively.
-@@ -97,7 +97,7 @@ def do_setup():
- kwargs['cmdclass'] = {'build_data': build_data,
- 'install_data': smart_install_data}
- # Auto-convert source code for Python 3
-- if sys.version_info >= (3,0):
-+ if sys.version_info >= (3, 0):
- kwargs['cmdclass']['build_py'] = copy_build_py_2to3
- else:
- kwargs['cmdclass']['build_py'] = build_py
-diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index 390df5b..47ba83c 100644
---- a/test/DocutilsTestSupport.py
-+++ b/test/DocutilsTestSupport.py
-@@ -51,7 +51,7 @@ from pprint import pformat
-
- testroot = os.path.abspath(os.path.dirname(__file__) or os.curdir)
- os.chdir(testroot)
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- sys.path.insert(0, os.path.normpath(os.path.join(testroot,
- '..', 'build', 'lib')))
- sys.path.append(os.path.normpath(os.path.join(testroot, '..',
-@@ -89,7 +89,7 @@ except:
- import pdb
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-@@ -202,7 +202,7 @@ class CustomTestCase(StandardTestCase):
- """`input`, `output`, and `expected` should all be strings."""
- if isinstance(input, unicode):
- input = input.encode('raw_unicode_escape')
-- if sys.version_info > (3,0):
-+ if sys.version_info > (3, 0):
- # API difference: Python 3's node.__str__ doesn't escape
- #assert expected is None or isinstance(expected, unicode)
- if isinstance(expected, bytes):
-diff --git a/test/test__init__.py b/test/test__init__.py
-index 87ec14f..8f1d749 100644
---- a/test/test__init__.py
-+++ b/test/test__init__.py
-@@ -16,7 +16,7 @@ import docutils
- import docutils.utils
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-diff --git a/test/test_command_line.py b/test/test_command_line.py
-index eb6ca8a..d9e0850 100644
---- a/test/test_command_line.py
-+++ b/test/test_command_line.py
-@@ -33,7 +33,7 @@ class CommandLineEncodingTests(unittest.TestCase):
- if argv_encoding == 'ascii': # cannot test
- return
- sys.argv.append('--source-url=test.txt') # pure ASCII argument
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- sys.argv.append(u'--title=Dornröschen'.encode(argv_encoding))
- else:
- sys.argv.append(u'--title=Dornröschen')
-diff --git a/test/test_error_reporting.py b/test/test_error_reporting.py
-index 4b337e3..d1509c6 100644
---- a/test/test_error_reporting.py
-+++ b/test/test_error_reporting.py
-@@ -25,10 +25,10 @@ instances like, e.g., ::
- unless the minimal required Python version has this problem fixed.
- """
-
--import unittest
- import sys
- import os
- import codecs
-+import unittest
- from io import StringIO, BytesIO
-
- import DocutilsTestSupport # must be imported before docutils
-@@ -46,7 +46,7 @@ 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):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-diff --git a/test/test_functional.py b/test/test_functional.py
-index 5d3beb9..cdc75a0 100755
---- a/test/test_functional.py
-+++ b/test/test_functional.py
-@@ -160,7 +160,7 @@ expected output and check it in:
- output = docutils.core.publish_file(**params)
- # ensure output is unicode
- output_encoding = params.get('output_encoding', 'utf-8')
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- try:
- output = output.decode(output_encoding)
- except UnicodeDecodeError:
-@@ -172,14 +172,14 @@ expected output and check it in:
- no_expected = self.no_expected_template % {
- 'exp': expected_path, 'out': params['destination_path']}
- self.assertTrue(os.access(expected_path, os.R_OK), no_expected)
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- f = open(expected_path, 'r')
- else: # samples are UTF8 encoded. 'rb' leads to errors with Python 3!
- f = open(expected_path, 'r', encoding='utf-8')
- # Normalize line endings:
- expected = '\n'.join(f.read().splitlines())
- f.close()
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- try:
- expected = expected.decode(output_encoding)
- except UnicodeDecodeError:
-@@ -193,7 +193,7 @@ expected output and check it in:
- diff = ''.join(difflib.unified_diff(
- expected.splitlines(True), output.splitlines(True),
- expected_path, params['destination_path']))
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- diff = diff.encode(sys.stderr.encoding or 'ascii', 'replace')
- print('\n%s:' % (self,), file=sys.stderr)
- print(diff, file=sys.stderr)
-diff --git a/test/test_io.py b/test/test_io.py
-index 737a19d..6294613 100755
---- a/test/test_io.py
-+++ b/test/test_io.py
-@@ -103,7 +103,7 @@ print("hello world")
- # if no encoding is given, try decoding with utf8:
- input = io.FileInput(source_path='functional/input/cyrillic.txt')
- data = input.read()
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- # in Py3k, the locale encoding is used without --input-encoding
- # skipping the heuristic
- self.assertEqual(input.successful_encoding, 'utf-8')
-@@ -111,7 +111,7 @@ print("hello world")
- def test_heuristics_no_utf8(self):
- # if no encoding is given and decoding with utf8 fails,
- # use either the locale encoding (if specified) or latin-1:
-- if sys.version_info >= (3,0) and locale_encoding != "utf8":
-+ if sys.version_info >= (3, 0) and locale_encoding != "utf8":
- # in Py3k, the locale encoding is used without --input-encoding
- # skipping the heuristic unless decoding fails.
- return
-@@ -169,7 +169,7 @@ class OutputTests(unittest.TestCase):
- self.assertEqual(self.udrain.getvalue(), self.udata)
-
- def test_write_utf8(self):
-- if sys.version_info >= (3,0):
-+ if sys.version_info >= (3, 0):
- fo = io.FileOutput(destination=self.udrain, encoding='utf8',
- autoclose=False)
- fo.write(self.udata)
-@@ -189,7 +189,7 @@ class OutputTests(unittest.TestCase):
- self.assertEqual(self.bdrain.getvalue(), self.bdata)
-
- # Test for Python 3 features:
-- if sys.version_info >= (3,0):
-+ if sys.version_info >= (3, 0):
- def test_write_bytes_to_stdout(self):
- # try writing data to `destination.buffer`, if data is
- # instance of `bytes` and writing to `destination` fails:
-diff --git a/test/test_language.py b/test/test_language.py
-index 455357a..31ac613 100755
---- a/test/test_language.py
-+++ b/test/test_language.py
-@@ -26,7 +26,7 @@ _reporter = docutils.utils.new_reporter('', _settings)
-
- reference_language = 'en'
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-diff --git a/test/test_nodes.py b/test/test_nodes.py
-index 6805799..ec8824e 100755
---- a/test/test_nodes.py
-+++ b/test/test_nodes.py
-@@ -17,7 +17,7 @@ from DocutilsTestSupport import nodes, utils
-
- debug = False
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-
-@@ -36,7 +36,7 @@ class TextTests(unittest.TestCase):
- self.assertEqual(self.text.shortrepr(),
- r"<#text: 'Line 1.\nLine 2.'>")
- self.assertEqual(nodes.reprunicode('foo'), u'foo')
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- self.assertEqual(repr(self.unicode_text), r"<#text: 'M\xf6hren'>")
- else:
- self.assertEqual(repr(self.unicode_text), u"<#text: 'Möhren'>")
-@@ -65,7 +65,7 @@ class TextTests(unittest.TestCase):
- self.assertEqual(stripped2, u's noc')
-
- def test_asciirestriction(self):
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- self.assertRaises(UnicodeDecodeError, nodes.Text,
- b'hol%s' % chr(224))
- else:
-@@ -98,7 +98,7 @@ class ElementTests(unittest.TestCase):
- del element['attr']
- element['mark'] = u'\u2022'
- self.assertEqual(repr(element), '<Element: >')
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- self.assertEqual(str(element), '<Element mark="\\u2022"/>')
- else:
- self.assertEqual(str(element), u'<Element mark="\u2022"/>')
-@@ -106,7 +106,7 @@ class ElementTests(unittest.TestCase):
- self.assertEqual(dom.toxml(), u'<Element mark="\u2022"/>')
- dom.unlink()
- element['names'] = ['nobody', u'имя', u'näs']
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- self.assertEqual(repr(element),
- '<Element "nobody; \\u0438\\u043c\\u044f; n\\xe4s": >')
- else:
-@@ -117,7 +117,7 @@ class ElementTests(unittest.TestCase):
- element = nodes.Element('text\nmore', nodes.Text('text\nmore'))
- uelement = nodes.Element(u'grün', nodes.Text(u'grün'))
- self.assertEqual(repr(element), r"<Element: <#text: 'text\nmore'>>")
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- self.assertEqual(repr(uelement), "<Element: <#text: 'gr\\xfcn'>>")
- else:
- self.assertEqual(repr(uelement), u"<Element: <#text: 'grün'>>")
-@@ -341,7 +341,7 @@ class MiscTests(unittest.TestCase):
- self.assertTrue(isinstance(nodes.reprunicode('foo'), unicode))
- self.assertEqual(nodes.reprunicode('foo'), u'foo')
- self.assertEqual(nodes.reprunicode(u'Möhre'), u'Möhre')
-- if sys.version_info < (3,0): # strip leading "u" from representation
-+ if sys.version_info < (3, 0): # strip leading "u" from representation
- self.assertEqual(repr(nodes.reprunicode(u'Möhre')),
- repr(u'Möhre')[1:])
- else: # no change to `unicode` under Python 3k
-@@ -350,7 +350,7 @@ class MiscTests(unittest.TestCase):
- def test_ensure_str(self):
- self.assertTrue(isinstance(nodes.ensure_str(u'über'), str))
- self.assertEqual(nodes.ensure_str('over'), 'over')
-- if sys.version_info < (3,0): # strip leading "u" from representation
-+ if sys.version_info < (3, 0): # strip leading "u" from representation
- self.assertEqual(nodes.ensure_str(u'über'), r'\xfcber')
- else:
- self.assertEqual(nodes.ensure_str(u'über'), r'über')
-diff --git a/test/test_parsers/test_parser.py b/test/test_parsers/test_parser.py
-index 6c57963..d2142b4 100644
---- a/test/test_parsers/test_parser.py
-+++ b/test/test_parsers/test_parser.py
-@@ -23,7 +23,7 @@ class RstParserTests(unittest.TestCase):
- document = utils.new_document('test data', frontend.OptionParser(
- components=(parser, )).get_default_values())
-
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- # supplying string input is supported, but only if ascii-decodable
- self.assertRaises(UnicodeDecodeError,
- parser.parse, b'hol%s' % chr(224), document)
-diff --git a/test/test_parsers/test_rst/test_directives/test_include.py b/test/test_parsers/test_rst/test_directives/test_include.py
-index 92d0193..31a5c02 100755
---- a/test/test_parsers/test_rst/test_directives/test_include.py
-+++ b/test/test_parsers/test_rst/test_directives/test_include.py
-@@ -16,7 +16,7 @@ from docutils.parsers.rst import states
- from docutils.utils.code_analyzer import with_pygments
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unichr = chr # noqa
-
-
-@@ -48,7 +48,7 @@ include_literal = mydir('include_literal.txt')
- utf_16_file = mydir('utf-16.csv')
- utf_16_error_str = ("UnicodeDecodeError: 'ascii' codec can't decode byte 0xfe "
- "in position 0: ordinal not in range(128)")
--if sys.version_info < (3,0):
-+if sys.version_info < (3, 0):
- utf_16_error_str = ("UnicodeError: Unable to decode input data. "
- "Tried the following encodings: 'ascii'.\n"
- " (%s)" % utf_16_error_str)
-diff --git a/test/test_parsers/test_rst/test_directives/test_raw.py b/test/test_parsers/test_rst/test_directives/test_raw.py
-index 2da962a..b86b23f 100755
---- a/test/test_parsers/test_rst/test_directives/test_raw.py
-+++ b/test/test_parsers/test_rst/test_directives/test_raw.py
-@@ -26,7 +26,7 @@ utf_16_file = os.path.join(mydir, 'utf-16.csv')
- utf_16_file_rel = DocutilsTestSupport.utils.relative_path(None, utf_16_file)
- utf_16_error_str = ("UnicodeDecodeError: 'ascii' codec can't decode byte 0xfe "
- "in position 0: ordinal not in range(128)")
--if sys.version_info < (3,0):
-+if sys.version_info < (3, 0):
- utf_16_error_str = ("UnicodeError: Unable to decode input data. "
- "Tried the following encodings: 'ascii'.\n"
- " (%s)" % utf_16_error_str)
-diff --git a/test/test_parsers/test_rst/test_directives/test_tables.py b/test/test_parsers/test_rst/test_directives/test_tables.py
-index cc450f3..ca27f9a 100755
---- a/test/test_parsers/test_rst/test_directives/test_tables.py
-+++ b/test/test_parsers/test_rst/test_directives/test_tables.py
-@@ -18,7 +18,7 @@ from docutils.parsers.rst.directives import tables
- from . import DocutilsTestSupport
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str # noqa
- unichr = chr # noqa
-
-diff --git a/test/test_parsers/test_rst/test_directives/test_unicode.py b/test/test_parsers/test_rst/test_directives/test_unicode.py
-index 576bc1d..b99b5d0 100755
---- a/test/test_parsers/test_rst/test_directives/test_unicode.py
-+++ b/test/test_parsers/test_rst/test_directives/test_unicode.py
-@@ -14,7 +14,7 @@ import sys
- from . import DocutilsTestSupport
-
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unichr = chr # noqa
-
-
-diff --git a/tools/dev/create_unimap.py b/tools/dev/create_unimap.py
-index 808861d..74e8bc7 100755
---- a/tools/dev/create_unimap.py
-+++ b/tools/dev/create_unimap.py
-@@ -14,7 +14,7 @@ from xml.dom import minidom
- import sys
- import pprint
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unicode = str #noqa
- else:
- bytes = str # noqa
-@@ -22,7 +22,7 @@ else:
-
-
- 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)
-
-diff --git a/tools/dev/generate_punctuation_chars.py b/tools/dev/generate_punctuation_chars.py
-index cfe97df..9f211b9 100644
---- a/tools/dev/generate_punctuation_chars.py
-+++ b/tools/dev/generate_punctuation_chars.py
-@@ -38,7 +38,7 @@ from __future__ import print_function
- import sys
- import unicodedata
-
--if sys.version_info >= (3,0):
-+if sys.version_info >= (3, 0):
- unichr = chr # unichr not available in Py3k
- else:
- import codecs
-@@ -361,7 +361,7 @@ if __name__ == '__main__':
- # Import the punctuation_chars module from the source
- # or Py3k build path for local Python modules::
-
-- if sys.version_info < (3,0):
-+ if sys.version_info < (3, 0):
- sys.path.insert(0, '../../docutils')
- else:
- sys.path.insert(0, '../../build/lib')
-diff --git a/tools/dev/unicode2rstsubs.py b/tools/dev/unicode2rstsubs.py
-index ac38bf4..028af78 100755
---- a/tools/dev/unicode2rstsubs.py
-+++ b/tools/dev/unicode2rstsubs.py
-@@ -48,7 +48,7 @@ def main(argv=None):
- inpath = 'unicode.xml'
- if not os.path.isfile(inpath):
- usage(argv[0], 1, 'No such file: "%s".' % inpath)
-- if sys.version_info >= (3,0):
-+ if sys.version_info >= (3, 0):
- infile = open(inpath, mode='rb')
- else:
- infile = open(inpath)
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0020-py3-Handle-StringIO-to-io-transition.patch b/srcpkgs/python-docutils/patches/0020-py3-Handle-StringIO-to-io-transition.patch
deleted file mode 100644
index 164063dd5c3..00000000000
--- a/srcpkgs/python-docutils/patches/0020-py3-Handle-StringIO-to-io-transition.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 035c67105f3cbd12ccf6a708f38f1f7f5a17c699 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Wed, 20 Nov 2019 00:11:04 +0700
-Subject: [PATCH 20/26] py3: Handle 'StringIO' to 'io' transition.
-
-This isn't so much a rename as a migration, since things don't do the
-same thing.
-
-Based on patch by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8368 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/writers/docutils_xml.py | 7 ++++++-
- test/test_utils.py | 1 +
- test/test_writers/test_docutils_xml.py | 7 ++++++-
- 3 files changed, 13 insertions(+), 2 deletions(-)
-
-diff --git a/docutils/writers/docutils_xml.py b/docutils/writers/docutils_xml.py
-index 60ee07b..51ad6bd 100644
---- a/docutils/writers/docutils_xml.py
-+++ b/docutils/writers/docutils_xml.py
-@@ -25,11 +25,16 @@ if "_xmlplus" in xml.__path__[0]: # PyXML sub-module
- xml.__path__.reverse() # If both are available, prefer stdlib over PyXML
-
- import xml.sax.saxutils
--from StringIO import StringIO
-
- import docutils
- from docutils import frontend, writers, nodes
-
-+if sys.version_info >= (3, 0):
-+ from io import StringIO # noqa
-+else:
-+ from StringIO import StringIO # noqa
-+
-+
- if sys.version_info >= (3, 0):
- unicode = str # noqa
-
-diff --git a/test/test_utils.py b/test/test_utils.py
-index 59e29c8..cb1ec9e 100755
---- a/test/test_utils.py
-+++ b/test/test_utils.py
-@@ -13,6 +13,7 @@ import unittest
- import sys
- import os
- from DocutilsTestSupport import docutils, utils, nodes
-+
- try:
- from io import StringIO
- except ImportError: # io is new in Python 2.6
-diff --git a/test/test_writers/test_docutils_xml.py b/test/test_writers/test_docutils_xml.py
-index 5a6cda3..ced3473 100755
---- a/test/test_writers/test_docutils_xml.py
-+++ b/test/test_writers/test_docutils_xml.py
-@@ -15,12 +15,17 @@ Test for docutils XML writer.
- """
- from __future__ import absolute_import
-
--from StringIO import StringIO
-+import sys
-
- from . import DocutilsTestSupport # must be imported before docutils
- import docutils
- import docutils.core
-
-+if sys.version_info >= (3, 0):
-+ from io import StringIO
-+else:
-+ from StringIO import StringIO
-+
- # sample strings
- # --------------
-
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0021-Remove-auxiliary-Python-2-3-compatibility-definition.patch b/srcpkgs/python-docutils/patches/0021-Remove-auxiliary-Python-2-3-compatibility-definition.patch
deleted file mode 100644
index cea269b1b69..00000000000
--- a/srcpkgs/python-docutils/patches/0021-Remove-auxiliary-Python-2-3-compatibility-definition.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From 3a610d205259bcf7f22fd8c33c78ffb70829989d Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Wed, 20 Nov 2019 00:14:11 +0700
-Subject: [PATCH 21/26] Remove auxiliary Python 2/3 compatibility definition
- module.
-
-No longer required since setting minimal supported version to 2.7.
-The remaining issues are now handled directly in the affected modules.
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8369 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/_compat.py | 24 ------------------------
- test/test_publisher.py | 8 +++++++-
- test/test_writers/test_odt.py | 3 +--
- 3 files changed, 8 insertions(+), 27 deletions(-)
- delete mode 100644 docutils/_compat.py
-
-diff --git a/docutils/_compat.py b/docutils/_compat.py
-deleted file mode 100644
-index 1ff959c..0000000
---- a/docutils/_compat.py
-+++ /dev/null
-@@ -1,24 +0,0 @@
--# $Id: _compat.py 8164 2017-08-14 11:28:48Z milde $
--# Author: Georg Brandl <georg@python.org>
--# Copyright: This module has been placed in the public domain.
--
--"""
--Python 2/3 compatibility definitions.
--
--This module currently provides the following helper symbols:
--
--* u_prefix (unicode repr prefix: 'u' in 2.x, '' in 3.x)
-- (Required in docutils/test/test_publisher.py)
--* BytesIO (a StringIO class that works with bytestrings)
--"""
--
--import sys
--
--if sys.version_info < (3, 0):
-- u_prefix = 'u'
-- from StringIO import StringIO as BytesIO
--else:
-- u_prefix = b''
-- # using this hack since 2to3 "fixes" the relative import
-- # when using ``from io import BytesIO``
-- BytesIO = __import__('io').BytesIO
-diff --git a/test/test_publisher.py b/test/test_publisher.py
-index 04d9c71..2c3845c 100755
---- a/test/test_publisher.py
-+++ b/test/test_publisher.py
-@@ -9,10 +9,16 @@ Test the `Publisher` facade and the ``publish_*`` convenience functions.
- """
-
- import pickle
-+import sys
-+
- import DocutilsTestSupport # must be imported before docutils
- import docutils
- from docutils import core, nodes, io
--from docutils._compat import u_prefix
-+
-+if sys.version_info < (3, 0):
-+ u_prefix = 'u'
-+else:
-+ u_prefix = b''
-
-
- test_document = """\
-diff --git a/test/test_writers/test_odt.py b/test/test_writers/test_odt.py
-index a47b7fb..6ec3ef2 100755
---- a/test/test_writers/test_odt.py
-+++ b/test/test_writers/test_odt.py
-@@ -36,12 +36,11 @@ import os
- import zipfile
- from xml.dom import minidom
- import tempfile
-+from io import BytesIO
-
- from . import DocutilsTestSupport
--
- import docutils
- import docutils.core
--from docutils._compat import BytesIO
-
- #
- # Globals
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0022-py3-Handle-urllib-urllib2-to-urlib.-rename.patch b/srcpkgs/python-docutils/patches/0022-py3-Handle-urllib-urllib2-to-urlib.-rename.patch
deleted file mode 100644
index 0fa629ec2e9..00000000000
--- a/srcpkgs/python-docutils/patches/0022-py3-Handle-urllib-urllib2-to-urlib.-rename.patch
+++ /dev/null
@@ -1,202 +0,0 @@
-From 5ee24817411d9057c738dc1cd7cda8fc5fe03dd6 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 27 Aug 2019 12:10:39 +0000
-Subject: [PATCH 22/26] py3: Handle 'urllib', 'urllib2' to 'urlib.*' rename
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8370 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/parsers/rst/directives/images.py | 11 +++++++++--
- docutils/parsers/rst/directives/misc.py | 10 +++++++---
- docutils/parsers/rst/directives/tables.py | 11 ++++++++---
- docutils/utils/math/math2html.py | 8 ++++++--
- docutils/writers/_html_base.py | 7 +++++--
- docutils/writers/latex2e/__init__.py | 9 +++++++--
- 6 files changed, 42 insertions(+), 14 deletions(-)
-
-diff --git a/docutils/parsers/rst/directives/images.py b/docutils/parsers/rst/directives/images.py
-index c813fa3..383075b 100644
---- a/docutils/parsers/rst/directives/images.py
-+++ b/docutils/parsers/rst/directives/images.py
-@@ -10,12 +10,13 @@ __docformat__ = 'reStructuredText'
-
-
- import sys
--import urllib
-+
- from docutils import nodes, utils
- from docutils.parsers.rst import Directive
- from docutils.parsers.rst import directives, states
- from docutils.nodes import fully_normalize_name, whitespace_normalize_name
- from docutils.parsers.rst.roles import set_classes
-+
- try: # check for the Python Imaging Library
- import PIL.Image
- except ImportError:
-@@ -26,6 +27,12 @@ except ImportError:
- except ImportError:
- PIL = None
-
-+if sys.version_info >= (3, 0):
-+ from urllib.request import url2pathname
-+else:
-+ from urllib import url2pathname
-+
-+
- class Image(Directive):
-
- align_h_values = ('left', 'center', 'right')
-@@ -125,7 +132,7 @@ class Figure(Image):
- figure_node = nodes.figure('', image_node)
- if figwidth == 'image':
- if PIL and self.state.document.settings.file_insertion_enabled:
-- imagepath = urllib.url2pathname(image_node['uri'])
-+ imagepath = url2pathname(image_node['uri'])
- try:
- img = PIL.Image.open(
- imagepath.encode(sys.getfilesystemencoding()))
-diff --git a/docutils/parsers/rst/directives/misc.py b/docutils/parsers/rst/directives/misc.py
-index 0fc3610..f22dae2 100644
---- a/docutils/parsers/rst/directives/misc.py
-+++ b/docutils/parsers/rst/directives/misc.py
-@@ -227,10 +227,14 @@ class Raw(Directive):
- # Do not import urllib2 at the top of the module because
- # it may fail due to broken SSL dependencies, and it takes
- # about 0.15 seconds to load.
-- import urllib2
-+ if sys.version_info >= (3, 0):
-+ from urllib.request import urlopen
-+ from urllib.error import URLError
-+ else:
-+ from urllib2 import urlopen, URLError
- try:
-- raw_text = urllib2.urlopen(source).read()
-- except (urllib2.URLError, IOError, OSError) as error:
-+ raw_text = urlopen(source).read()
-+ except (URLError, IOError, OSError) as error:
- raise self.severe(u'Problems with "%s" directive URL "%s":\n%s.'
- % (self.name, self.options['url'], ErrorString(error)))
- raw_file = io.StringInput(source=raw_text, source_path=source,
-diff --git a/docutils/parsers/rst/directives/tables.py b/docutils/parsers/rst/directives/tables.py
-index b698e08..6284ab7 100644
---- a/docutils/parsers/rst/directives/tables.py
-+++ b/docutils/parsers/rst/directives/tables.py
-@@ -332,11 +332,16 @@ class CSVTable(Table):
- # Do not import urllib2 at the top of the module because
- # it may fail due to broken SSL dependencies, and it takes
- # about 0.15 seconds to load.
-- import urllib2
-+ if sys.version_info >= (3, 0):
-+ from urllib.request import urlopen
-+ from urllib.error import URLError
-+ else:
-+ from urllib2 import urlopen, URLError
-+
- source = self.options['url']
- try:
-- csv_text = urllib2.urlopen(source).read()
-- except (urllib2.URLError, IOError, OSError, ValueError) as error:
-+ csv_text = urlopen(source).read()
-+ except (URLError, IOError, OSError, ValueError) as error:
- severe = self.state_machine.reporter.severe(
- 'Problems with "%s" directive URL "%s":\n%s.'
- % (self.name, self.options['url'], SafeString(error)),
-diff --git a/docutils/utils/math/math2html.py b/docutils/utils/math/math2html.py
-index 475519f..757dec0 100644
---- a/docutils/utils/math/math2html.py
-+++ b/docutils/utils/math/math2html.py
-@@ -27,7 +27,11 @@ import io
- import os.path
- import sys
- import unicodedata
--import urllib
-+
-+if sys.version_info >= (3, 0):
-+ from urllib.parse import quote_plus
-+else:
-+ from urllib import quote_plus
-
-
- if sys.version_info >= (3, 0):
-@@ -2927,7 +2931,7 @@ class Formula(Container):
-
- def googlecharts(self):
- "Make the contents using Google Charts http://code.google.com/apis/chart/."
-- url = FormulaConfig.urls['googlecharts'] + urllib.quote_plus(self.parsed)
-+ url = FormulaConfig.urls['googlecharts'] + quote_plus(self.parsed)
- img = '<img class="chart" src="' + url + '" alt="' + self.parsed + '"/>'
- self.contents = [Constant(img)]
-
-diff --git a/docutils/writers/_html_base.py b/docutils/writers/_html_base.py
-index a957311..f91b06c 100644
---- a/docutils/writers/_html_base.py
-+++ b/docutils/writers/_html_base.py
-@@ -20,7 +20,6 @@
- import sys
- import os.path
- import re
--import urllib
-
- try: # check for the Python Imaging Library
- import PIL.Image
-@@ -39,6 +38,10 @@ from docutils.transforms import writer_aux
- from docutils.utils.math import (unichar2tex, pick_math_environment,
- math2html, latex2mathml, tex2mathml_extern)
-
-+if sys.version_info >= (3, 0):
-+ from urllib.request import url2pathname
-+else:
-+ from urllib import url2pathname
-
- if sys.version_info >= (3, 0):
- unicode = str # noqa
-@@ -923,7 +926,7 @@ class HTMLTranslator(nodes.NodeVisitor):
- if 'scale' in node:
- if (PIL and not ('width' in node and 'height' in node)
- and self.settings.file_insertion_enabled):
-- imagepath = urllib.url2pathname(uri)
-+ imagepath = url2pathname(uri)
- try:
- img = PIL.Image.open(
- imagepath.encode(sys.getfilesystemencoding()))
-diff --git a/docutils/writers/latex2e/__init__.py b/docutils/writers/latex2e/__init__.py
-index 05b55eb..a60de48 100644
---- a/docutils/writers/latex2e/__init__.py
-+++ b/docutils/writers/latex2e/__init__.py
-@@ -17,16 +17,21 @@ import sys
- import os
- import re
- import string
--import urllib
-+
- try:
- import roman
- except ImportError:
- import docutils.utils.roman as roman
-+
- from docutils import frontend, nodes, languages, writers, utils, io
- from docutils.utils.error_reporting import SafeString
- from docutils.transforms import writer_aux
- from docutils.utils.math import pick_math_environment, unichar2tex
-
-+if sys.version_info >= (3, 0):
-+ from urllib.request import url2pathname
-+else:
-+ from urllib import url2pathname
-
- if sys.version_info >= (3, 0):
- unicode = str # noqa
-@@ -2369,7 +2374,7 @@ class LaTeXTranslator(nodes.NodeVisitor):
- self.requirements['graphicx'] = self.graphicx_package
- attrs = node.attributes
- # Convert image URI to a local file path
-- imagepath = urllib.url2pathname(attrs['uri']).replace('\\', '/')
-+ imagepath = url2pathname(attrs['uri']).replace('\\', '/')
- # alignment defaults:
- if not 'align' in attrs:
- # Set default align of image in a figure to 'center'
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0023-py3-Fix-magic-methods.patch b/srcpkgs/python-docutils/patches/0023-py3-Fix-magic-methods.patch
deleted file mode 100644
index c8aae35ae7a..00000000000
--- a/srcpkgs/python-docutils/patches/0023-py3-Fix-magic-methods.patch
+++ /dev/null
@@ -1,352 +0,0 @@
-From 0a68965b7f5880aeb8642a081ff5ebd86a0d1c4e Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 27 Aug 2019 12:10:52 +0000
-Subject: [PATCH 23/26] py3: Fix magic methods
-
-Python 3 uses '__bool__' and '__next__', where Python 2 used
-'__nonzero__' and 'next'. Use the new names but add aliases.
-
-Based on patch by Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8371 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/nodes.py | 8 +--
- docutils/utils/math/math2html.py | 93 +++++++++++++++++++++++++++-----
- docutils/writers/manpage.py | 6 ++-
- 3 files changed, 89 insertions(+), 18 deletions(-)
-
-diff --git a/docutils/nodes.py b/docutils/nodes.py
-index dd9c4b6..6fffa56 100644
---- a/docutils/nodes.py
-+++ b/docutils/nodes.py
-@@ -53,7 +53,7 @@ class Node(object):
- line = None
- """The line number (1-based) of the beginning of this Node in `source`."""
-
-- def __nonzero__(self):
-+ def __bool__(self):
- """
- Node instances are always true, even if they're empty. A node is more
- than a simple container. Its boolean "truth" does not depend on
-@@ -64,6 +64,9 @@ class Node(object):
- """
- return True
-
-+ if sys.version_info < (3, 0):
-+ __nonzero__ = __bool__
-+
- 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
-@@ -544,8 +547,7 @@ class Element(Node):
- else:
- return self.emptytag()
-
-- if sys.version_info > (3, 0):
-- # 2to3 doesn't convert __unicode__ to __str__
-+ if sys.version_info >= (3, 0):
- __str__ = __unicode__
-
- def starttag(self, quoteattr=None):
-diff --git a/docutils/utils/math/math2html.py b/docutils/utils/math/math2html.py
-index 757dec0..a7e2aed 100644
---- a/docutils/utils/math/math2html.py
-+++ b/docutils/utils/math/math2html.py
-@@ -1313,6 +1313,9 @@ class BranchOptions(object):
- "String representation"
- return 'options for ' + self.name + ': ' + unicode(self.options)
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-
- class Cloner(object):
- "An object used to clone other objects."
-@@ -1453,6 +1456,10 @@ class Parser(object):
- "Return a description"
- return self.__class__.__name__ + ' (' + unicode(self.begin) + ')'
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class LoneCommand(Parser):
- "A parser for just one command line"
-
-@@ -1986,6 +1993,10 @@ class EndingList(object):
- string = string[:-1]
- return string + ']'
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class PositionEnding(object):
- "An ending for a parsing position"
-
-@@ -2004,6 +2015,8 @@ class PositionEnding(object):
- string += ' (optional)'
- return string
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-
-
- class Position(Globable):
-@@ -2046,11 +2059,14 @@ class Position(Globable):
- self.skip(current)
- return current
-
-- def next(self):
-+ def __next__(self):
- "Advance the position and return the next character."
- self.skipcurrent()
- return self.current()
-
-+ if sys.version_info < (3, 0):
-+ next = __next__
-+
- def checkskip(self, string):
- "Check for a string at the given position; if there, skip it"
- if not self.checkfor(string):
-@@ -2312,6 +2328,10 @@ class Container(object):
- return self.__class__.__name__
- return self.__class__.__name__ + '@' + unicode(self.begin)
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class BlackBox(Container):
- "A container that does not output anything"
-
-@@ -2370,7 +2390,7 @@ class StringContainer(Container):
- def extracttext(self):
- "Return all text."
- return self.string
--
-+
- def __unicode__(self):
- "Return a printable representation."
- result = 'StringContainer'
-@@ -2381,6 +2401,10 @@ class StringContainer(Container):
- ellipsis = ''
- return result + ' (' + self.string.strip()[:15] + ellipsis + ')'
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class Constant(StringContainer):
- "A constant string"
-
-@@ -2392,6 +2416,10 @@ class Constant(StringContainer):
- def __unicode__(self):
- return 'Constant: ' + self.string
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class TaggedText(Container):
- "Text inside a tag"
-
-@@ -2421,9 +2449,8 @@ class TaggedText(Container):
- return 'Tagged <unknown tag>'
- return 'Tagged <' + self.output.tag + '>'
-
--
--
--
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-
-
- class DocumentParameters(object):
-@@ -2555,19 +2582,12 @@ class MacroParser(FormulaParser):
- "See if the formula is inlined"
- self.begin = reader.linenumber + 1
- return ['inline']
--
-+
- def parse(self, reader):
- "Parse the formula until the end"
- formula = self.parsemultiliner(reader, self.parent.start, self.ending)
- reader.nextline()
- return formula
--
--
--
--
--
--
--
-
-
- class FormulaBit(Container):
-@@ -2614,6 +2634,10 @@ class FormulaBit(Container):
- "Get a string representation"
- return self.__class__.__name__ + ' read in ' + self.original
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class TaggedBit(FormulaBit):
- "A tagged string in a formula"
-
-@@ -2656,6 +2680,10 @@ class FormulaConstant(Constant):
- "Return a printable representation."
- return 'Formula constant: ' + self.string
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class RawText(FormulaBit):
- "A bit of text inside a formula"
-
-@@ -2739,6 +2767,10 @@ class WhiteSpace(FormulaBit):
- "Return a printable representation."
- return 'Whitespace: *' + self.original + '*'
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class Bracket(FormulaBit):
- "A {} bracket inside a formula"
-
-@@ -2822,7 +2854,6 @@ class SquareBracket(Bracket):
- return bracket
-
-
--
- class MathsProcessor(object):
- "A processor for a maths construction inside the FormulaProcessor."
-
-@@ -2834,6 +2865,10 @@ class MathsProcessor(object):
- "Return a printable description."
- return 'Maths processor ' + self.__class__.__name__
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class FormulaProcessor(object):
- "A processor specifically for formulas."
-
-@@ -2997,6 +3032,10 @@ class Formula(Container):
- return 'Formula (' + self.partkey.number + ')'
- return 'Unnumbered formula'
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class WholeFormula(FormulaBit):
- "Parse a whole formula"
-
-@@ -3229,6 +3268,10 @@ class NumberCounter(object):
- result += ' in mode ' + self.mode
- return result
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class DependentCounter(NumberCounter):
- "A counter which depends on another one (the master)."
-
-@@ -3780,6 +3823,10 @@ class Link(Container):
- result += ' to ' + self.url
- return result
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class URL(Link):
- "A clickable URL"
-
-@@ -3948,6 +3995,10 @@ class Label(Link):
- return 'Unnamed label'
- return 'Label ' + self.key
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class Reference(Link):
- "A reference to a label."
-
-@@ -4008,6 +4059,8 @@ class Reference(Link):
- "Return a printable representation."
- return 'Reference ' + self.key
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-
-
- class FormulaCommand(FormulaBit):
-@@ -4630,6 +4683,10 @@ class LimitPreviousCommand(LimitCommand):
- "Return a printable representation."
- return 'Limit previous command'
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class LimitsProcessor(MathsProcessor):
- "A processor for limits inside an element."
-
-@@ -4854,6 +4911,10 @@ class ParameterDefinition(object):
- result += ' (empty)'
- return result
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- class ParameterFunction(CommandBit):
- "A function with a variable number of parameters defined in a template."
- "The parameters are defined as a parameter definition."
-@@ -5306,6 +5367,10 @@ class FormulaMacro(Formula):
- "Return a printable representation."
- return 'Math macro'
-
-+ if sys.version_info >= (3, 0):
-+ __str__ = __unicode__
-+
-+
- FormulaFactory.types += [ MacroParameter ]
-
- FormulaCommand.types += [
-diff --git a/docutils/writers/manpage.py b/docutils/writers/manpage.py
-index df4f1a3..9809dd4 100644
---- a/docutils/writers/manpage.py
-+++ b/docutils/writers/manpage.py
-@@ -331,7 +331,7 @@ class Translator(nodes.NodeVisitor):
- elif style.endswith('roman'):
- self._indent = 5
-
-- def next(self):
-+ def __next__(self):
- if self._style == 'bullet':
- return self.enum_style[self._style]
- elif self._style == 'emdash':
-@@ -349,6 +349,10 @@ class Translator(nodes.NodeVisitor):
- return res.lower()
- else:
- return "%d." % self._cnt
-+
-+ if sys.version_info < (3, 0):
-+ next = __next__
-+
- def get_width(self):
- return self._indent
- def __repr__(self):
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0024-py3-Wrap-foo.keys-zip-foo-bar-in-list.patch b/srcpkgs/python-docutils/patches/0024-py3-Wrap-foo.keys-zip-foo-bar-in-list.patch
deleted file mode 100644
index b84a9dc6e5b..00000000000
--- a/srcpkgs/python-docutils/patches/0024-py3-Wrap-foo.keys-zip-foo-bar-in-list.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-From 7e601f5444051a78c0dc3fd6e3676193e7a30076 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 27 Aug 2019 12:11:15 +0000
-Subject: [PATCH 24/26] py3: Wrap 'foo.keys()', 'zip(foo, bar') in 'list'
-
-In Python 3, 'dict.keys()', 'zip' and 'map' no longer return a list but
-rather types 'dict_keys', 'zip' and 'map', respectively. You can't
-append to these types nor can you delete from them while in a loop. The
-simple solution to both issues is to wrap things in 'list'.
-
-Signed-off-by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8372 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/parsers/rst/tableparser.py | 2 +-
- docutils/statemachine.py | 2 +-
- docutils/utils/__init__.py | 2 +-
- docutils/utils/math/math2html.py | 2 +-
- docutils/writers/odf_odt/__init__.py | 3 +--
- test/DocutilsTestSupport.py | 2 +-
- test/test_functional.py | 2 +-
- test/test_language.py | 2 +-
- test/test_statemachine.py | 2 +-
- 9 files changed, 9 insertions(+), 10 deletions(-)
-
-diff --git a/docutils/parsers/rst/tableparser.py b/docutils/parsers/rst/tableparser.py
-index 937aec8..408d6d8 100644
---- a/docutils/parsers/rst/tableparser.py
-+++ b/docutils/parsers/rst/tableparser.py
-@@ -290,7 +290,7 @@ class GridTableParser(TableParser):
- rowindex = {}
- for i in range(len(rowseps)):
- rowindex[rowseps[i]] = i # row boundary -> row number mapping
-- colseps = self.colseps.keys() # list of column boundaries
-+ colseps = list(self.colseps.keys()) # list of column boundaries
- colseps.sort()
- colindex = {}
- for i in range(len(colseps)):
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index 6bc03f5..0cbf9d3 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -1297,7 +1297,7 @@ class ViewList(object):
- self.parent = None
-
- def sort(self, *args):
-- tmp = zip(self.data, self.items)
-+ tmp = list(zip(self.data, self.items))
- tmp.sort(*args)
- self.data = [entry[0] for entry in tmp]
- self.items = [entry[1] for entry in tmp]
-diff --git a/docutils/utils/__init__.py b/docutils/utils/__init__.py
-index cc1fd1a..437456b 100644
---- a/docutils/utils/__init__.py
-+++ b/docutils/utils/__init__.py
-@@ -618,7 +618,7 @@ def column_indices(text):
- """
- # TODO: account for asian wide chars here instead of using dummy
- # replacements in the tableparser?
-- string_indices = range(len(text))
-+ string_indices = list(range(len(text)))
- for index in find_combining_chars(text):
- string_indices[index] = None
- return [i for i in string_indices if i is not None]
-diff --git a/docutils/utils/math/math2html.py b/docutils/utils/math/math2html.py
-index a7e2aed..53dd836 100644
---- a/docutils/utils/math/math2html.py
-+++ b/docutils/utils/math/math2html.py
-@@ -2819,7 +2819,7 @@ class Bracket(FormulaBit):
-
- def innertext(self, pos):
- "Parse some text inside the bracket, following textual rules."
-- specialchars = FormulaConfig.symbolfunctions.keys()
-+ specialchars = list(FormulaConfig.symbolfunctions.keys())
- specialchars.append(FormulaConfig.starts['command'])
- specialchars.append(FormulaConfig.starts['bracket'])
- specialchars.append(Comment.start)
-diff --git a/docutils/writers/odf_odt/__init__.py b/docutils/writers/odf_odt/__init__.py
-index c79d4c1..ad32613 100644
---- a/docutils/writers/odf_odt/__init__.py
-+++ b/docutils/writers/odf_odt/__init__.py
-@@ -1169,8 +1169,7 @@ class ODFTranslator(nodes.GenericNodeVisitor):
- fin = os.popen("paperconf -s 2> /dev/null")
- content = fin.read()
- content = content.split()
-- content = map(float, content)
-- content = list(content)
-+ content = list(map(float, content))
- w, h = content
- except (IOError, ValueError):
- w, h = 612, 792 # default to Letter
-diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index 47ba83c..222c202 100644
---- a/test/DocutilsTestSupport.py
-+++ b/test/DocutilsTestSupport.py
-@@ -811,7 +811,7 @@ class HtmlWriterPublishPartsTestCase(WriterPublishTestCase):
- parts['html_prolog'] = parts['html_prolog'].replace(
- self.standard_html_prolog, '')
- # remove empty values:
-- for key in parts.keys():
-+ for key in list(parts.keys()):
- if not parts[key]:
- del parts[key]
- # standard output format:
-diff --git a/test/test_functional.py b/test/test_functional.py
-index cdc75a0..b02c250 100755
---- a/test/test_functional.py
-+++ b/test/test_functional.py
-@@ -152,7 +152,7 @@ expected output and check it in:
- del params['test_source']
- del params['test_destination']
- # Delete private stuff like params['__builtins__']:
-- for key in params.keys():
-+ for key in list(params.keys()):
- if key.startswith('_'):
- del params[key]
- # Get output (automatically written to the output/ directory
-diff --git a/test/test_language.py b/test/test_language.py
-index 31ac613..48cd06b 100755
---- a/test/test_language.py
-+++ b/test/test_language.py
-@@ -52,7 +52,7 @@ class LanguageTestSuite(DocutilsTestSupport.CustomTestSuite):
- match = self.language_module_pattern.match(mod)
- if match:
- languages[match.group(1)] = 1
-- self.languages = languages.keys()
-+ self.languages = list(languages.keys())
- # test language tag normalization:
- self.languages += ['en_gb', 'en_US', 'en-CA', 'de-DE', 'de-AT-1901',
- 'pt-BR', 'pt-foo-BR']
-diff --git a/test/test_statemachine.py b/test/test_statemachine.py
-index 6352ca4..87f5710 100755
---- a/test/test_statemachine.py
-+++ b/test/test_statemachine.py
-@@ -152,7 +152,7 @@ class SMWSTests(unittest.TestCase):
- self.sm.unlink()
-
- def test___init__(self):
-- self.assertEqual(self.sm.states.keys(), ['MockState'])
-+ self.assertEqual(list(self.sm.states.keys()), ['MockState'])
- self.assertEqual(len(self.sm.states['MockState'].transitions), 4)
-
- def test_get_indented(self):
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0025-Simplify-code.patch b/srcpkgs/python-docutils/patches/0025-Simplify-code.patch
deleted file mode 100644
index 05092a8f4e1..00000000000
--- a/srcpkgs/python-docutils/patches/0025-Simplify-code.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 1d4c3d48fd9a5606925562c1c97e67332578cc65 Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 27 Aug 2019 12:11:30 +0000
-Subject: [PATCH 25/26] Simplify code.
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8373 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/parsers/rst/tableparser.py | 3 +--
- docutils/statemachine.py | 3 +--
- docutils/writers/odf_odt/__init__.py | 6 ++----
- test/DocutilsTestSupport.py | 10 +++-------
- 4 files changed, 7 insertions(+), 15 deletions(-)
-
-diff --git a/docutils/parsers/rst/tableparser.py b/docutils/parsers/rst/tableparser.py
-index 408d6d8..64a192f 100644
---- a/docutils/parsers/rst/tableparser.py
-+++ b/docutils/parsers/rst/tableparser.py
-@@ -290,8 +290,7 @@ class GridTableParser(TableParser):
- rowindex = {}
- for i in range(len(rowseps)):
- rowindex[rowseps[i]] = i # row boundary -> row number mapping
-- colseps = list(self.colseps.keys()) # list of column boundaries
-- colseps.sort()
-+ colseps = sorted(self.colseps.keys()) # list of column boundaries
- colindex = {}
- for i in range(len(colseps)):
- colindex[colseps[i]] = i # column boundary -> col number map
-diff --git a/docutils/statemachine.py b/docutils/statemachine.py
-index 0cbf9d3..ebb52ad 100644
---- a/docutils/statemachine.py
-+++ b/docutils/statemachine.py
-@@ -1297,8 +1297,7 @@ class ViewList(object):
- self.parent = None
-
- def sort(self, *args):
-- tmp = list(zip(self.data, self.items))
-- tmp.sort(*args)
-+ tmp = sorted(zip(self.data, self.items), *args)
- self.data = [entry[0] for entry in tmp]
- self.items = [entry[1] for entry in tmp]
- self.parent = None
-diff --git a/docutils/writers/odf_odt/__init__.py b/docutils/writers/odf_odt/__init__.py
-index ad32613..d03f8e0 100644
---- a/docutils/writers/odf_odt/__init__.py
-+++ b/docutils/writers/odf_odt/__init__.py
-@@ -1167,10 +1167,8 @@ class ODFTranslator(nodes.GenericNodeVisitor):
- def setup_paper(self, root_el):
- try:
- fin = os.popen("paperconf -s 2> /dev/null")
-- content = fin.read()
-- content = content.split()
-- content = list(map(float, content))
-- w, h = content
-+ dimensions = fin.read().split()
-+ w, h = (float(s) for s in dimensions)
- except (IOError, ValueError):
- w, h = 612, 792 # default to Letter
- finally:
-diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
-index 222c202..5e9fed9 100644
---- a/test/DocutilsTestSupport.py
-+++ b/test/DocutilsTestSupport.py
-@@ -810,14 +810,10 @@ class HtmlWriterPublishPartsTestCase(WriterPublishTestCase):
- self.standard_html_meta_value, '...')
- parts['html_prolog'] = parts['html_prolog'].replace(
- self.standard_html_prolog, '')
-- # remove empty values:
-- for key in list(parts.keys()):
-- if not parts[key]:
-- del parts[key]
-- # standard output format:
-- keys = sorted(parts.keys())
- output = []
-- for key in keys:
-+ for key in sorted(parts.keys()):
-+ if not parts[key]:
-+ continue
- output.append("%r: '''%s'''"
- % (key, parts[key]))
- if output[-1].endswith("\n'''"):
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/0026-py3-Handle-os.getcwdu-to-os.getcwd-rename.patch b/srcpkgs/python-docutils/patches/0026-py3-Handle-os.getcwdu-to-os.getcwd-rename.patch
deleted file mode 100644
index fd46368beb2..00000000000
--- a/srcpkgs/python-docutils/patches/0026-py3-Handle-os.getcwdu-to-os.getcwd-rename.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From e90cfe945193ac99cc9ac7a439d1ccc2ad857a6c Mon Sep 17 00:00:00 2001
-From: Stephen Finucane <stephen@that.guru>
-Date: Tue, 27 Aug 2019 12:11:40 +0000
-Subject: [PATCH 26/26] py3: Handle 'os.getcwdu' to 'os.getcwd' rename
-
-We don't need to do the reverse since none of the callers seems to care.
-
-Based on patch by: Stephen Finucane <stephen@that.guru>
-
-git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8374 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
-Signed-off-by: Doan Tran Cong Danh <congdanhqx@gmail.com>
----
- docutils/frontend.py | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/docutils/frontend.py b/docutils/frontend.py
-index 7bfff6a..372ca44 100644
---- a/docutils/frontend.py
-+++ b/docutils/frontend.py
-@@ -38,8 +38,10 @@ import optparse
- from optparse import SUPPRESS_HELP
- if sys.version_info >= (3, 0):
- from configparser import RawConfigParser
-+ from os import getcwd
- else:
- from ConfigParser import RawConfigParser
-+ from os import getcwdu as getcwd
-
- import docutils
- import docutils.utils
-@@ -256,7 +258,7 @@ def make_paths_absolute(pathdict, keys, base_path=None):
- `OptionParser.relative_path_settings`.
- """
- if base_path is None:
-- base_path = os.getcwdu() # type(base_path) == unicode
-+ base_path = os.getcwd() # type(base_path) == unicode
- # to allow combining non-ASCII cwd with unicode values in `pathdict`
- for key in keys:
- if key in pathdict:
---
-2.24.0.375.geb5ae68d41
-
diff --git a/srcpkgs/python-docutils/patches/test-import.patch b/srcpkgs/python-docutils/patches/test-import.patch
new file mode 100644
index 00000000000..12c22971680
--- /dev/null
+++ b/srcpkgs/python-docutils/patches/test-import.patch
@@ -0,0 +1,20 @@
+--- test/DocutilsTestSupport.py
++++ test/DocutilsTestSupport.py
+@@ -51,14 +51,9 @@
+
+ testroot = os.path.abspath(os.path.dirname(__file__) or os.curdir)
+ os.chdir(testroot)
+-if sys.version_info >= (3, 0):
+- sys.path.insert(0, os.path.normpath(os.path.join(testroot,
+- '..', 'build', 'lib')))
+- sys.path.append(os.path.normpath(os.path.join(testroot, '..',
+- 'build', 'lib', 'extras')))
+-else:
+- sys.path.insert(0, os.path.normpath(os.path.join(testroot, '..')))
+- sys.path.append(os.path.normpath(os.path.join(testroot, '..', 'extras')))
++builddir = 'build-%d.%d' % (sys.version_info.major, sys.version_info.minor)
++sys.path.insert(0, os.path.normpath(os.path.join(testroot, '..', builddir, 'lib')))
++sys.path.append(os.path.normpath(os.path.join(testroot, '..', builddir, 'lib', 'extras')))
+ sys.path.insert(0, testroot)
+
+ try:
diff --git a/srcpkgs/python-docutils/template b/srcpkgs/python-docutils/template
index a4c0bb915e0..99e74968ddd 100644
--- a/srcpkgs/python-docutils/template
+++ b/srcpkgs/python-docutils/template
@@ -1,11 +1,10 @@
# Template file for 'python-docutils'
pkgname=python-docutils
-version=0.15.2
-revision=3
+version=0.16
+revision=1
archs=noarch
wrksrc="docutils-${version}"
build_style=python-module
-pycompile_module="docutils"
hostmakedepends="python-setuptools python3-setuptools"
# docutils/writers/odf_odt/pygmentsformatter.py
depends="python python-Pygments"
@@ -14,9 +13,8 @@ maintainer="Alessio Sergi <al3hex@gmail.com>"
license="custom:Public Domain, BSD-2-Clause, GPL-3.0-or-later, Python-2.0"
homepage="http://docutils.sourceforge.net"
distfiles="${PYPI_SITE}/d/docutils/docutils-${version}.tar.gz"
-checksum=a2aeea129088da402665e92e0b25b04b073c04b2dce4ab65caaa38b7ce2e1a99
+checksum=c2de3a60e9e7d07be26b7f2b00ca0309c207e06c100f9cc2a94931fc75a478fc
checkdepends+="$depends python3-Pygments"
-patch_args="-Np1"
alternatives="
docutils:rst2html:/usr/bin/rst2html.py2
@@ -32,6 +30,11 @@ alternatives="
docutils:rst2xml:/usr/bin/rst2xml.py2
docutils:rstpep2html:/usr/bin/rstpep2html.py2"
+do_check() {
+ cd test
+ python3 alltests.py
+}
+
post_install() {
vlicense COPYING.txt COPYING
}
@@ -52,7 +55,6 @@ python3-docutils_package() {
docutils:rstpep2html:/usr/bin/rstpep2html.py3"
archs=noarch
depends="python3 python3-Pygments"
- pycompile_module="docutils"
short_desc="${short_desc/Python2/Python3}"
pkg_install() {
vmove "usr/bin/*3"
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PR PATCH] [Merged]: python-docutils: update to 0.16
2020-01-18 9:18 [PR PATCH] python-docutils: update to 0.16 voidlinux-github
2020-01-18 9:21 ` [PR PATCH] [Updated] " voidlinux-github
@ 2020-01-18 15:29 ` voidlinux-github
1 sibling, 0 replies; 3+ messages in thread
From: voidlinux-github @ 2020-01-18 15:29 UTC (permalink / raw)
To: ml
[-- Attachment #1: Type: text/plain, Size: 165 bytes --]
There's a merged pull request on the void-packages repository
python-docutils: update to 0.16
https://github.com/void-linux/void-packages/pull/18366
Description:
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-01-18 15:29 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-18 9:18 [PR PATCH] python-docutils: update to 0.16 voidlinux-github
2020-01-18 9:21 ` [PR PATCH] [Updated] " voidlinux-github
2020-01-18 15:29 ` [PR PATCH] [Merged]: " voidlinux-github
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).