diff options
| author | milde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2019-08-26 12:09:23 +0000 |
|---|---|---|
| committer | milde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04> | 2019-08-26 12:09:23 +0000 |
| commit | 08af9b25a2e33f4c70bda60caa8a8ac53a36ee86 (patch) | |
| tree | 715007fbcb76fc7154704f4cda2ebb5c9d35b447 | |
| parent | ea4822af45d597b91ecee09ee2e03167a54a3998 (diff) | |
| download | docutils-08af9b25a2e33f4c70bda60caa8a8ac53a36ee86.tar.gz | |
Remove unused lxml import blocks
These have been commented out for over 10 years [1] and aren't coming
back. Remove them along with checks for the 'xml' library, which is
present in all versions of Python we support.
[1] https://sourceforge.net/p/docutils/code/5846/
Signed-off-by: Stephen Finucane <stephen@that.guru>
git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8337 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
| -rw-r--r-- | docutils/docutils/writers/odf_odt/__init__.py | 158 | ||||
| -rwxr-xr-x | docutils/test/test_writers/test_odt.py | 40 |
2 files changed, 51 insertions, 147 deletions
diff --git a/docutils/docutils/writers/odf_odt/__init__.py b/docutils/docutils/writers/odf_odt/__init__.py index 5a585e2d3..6ecd610c7 100644 --- a/docutils/docutils/writers/odf_odt/__init__.py +++ b/docutils/docutils/writers/odf_odt/__init__.py @@ -15,16 +15,18 @@ import os import os.path import tempfile import zipfile +from xml.etree import ElementTree as etree from xml.dom import minidom import time import re import copy import itertools -import docutils +import weakref try: import locale # module missing in Jython except ImportError: pass +import docutils from docutils import frontend, nodes, utils, writers, languages from docutils.readers import standalone from docutils.transforms import references @@ -40,27 +42,6 @@ else: VERSION = '1.0a' IMAGE_NAME_COUNTER = itertools.count() -WhichElementTree = '' -try: - # 1. Try to use lxml. - #from lxml import etree - #WhichElementTree = 'lxml' - raise ImportError('Ignoring lxml') -except ImportError: - try: - # 2. Try to use ElementTree from the Python standard library. - from xml.etree import ElementTree as etree - WhichElementTree = 'elementtree' - except ImportError: - try: - # 3. Try to use a version of ElementTree installed as a separate - # product. - from elementtree import ElementTree as etree - WhichElementTree = 'elementtree' - except ImportError: - s1 = 'Must install either a version of Python containing ' \ - 'ElementTree (Python version >=2.5) or install ElementTree.' - raise ImportError(s1) # # Import pygments and odtwriter pygments formatters if possible. @@ -104,24 +85,22 @@ except ImportError: # This wrapper class and the following support functions provide # that support for the ability to get the parent of an element. # -if WhichElementTree == 'elementtree': - import weakref - _parents = weakref.WeakKeyDictionary() - if isinstance(etree.Element, type): - _ElementInterface = etree.Element - else: - _ElementInterface = etree._ElementInterface +_parents = weakref.WeakKeyDictionary() +if isinstance(etree.Element, type): + _ElementInterface = etree.Element +else: + _ElementInterface = etree._ElementInterface - class _ElementInterfaceWrapper(_ElementInterface): - def __init__(self, tag, attrib=None): - _ElementInterface.__init__(self, tag, attrib) - _parents[self] = None +class _ElementInterfaceWrapper(_ElementInterface): + def __init__(self, tag, attrib=None): + _ElementInterface.__init__(self, tag, attrib) + _parents[self] = None - def setparent(self, parent): - _parents[self] = parent + def setparent(self, parent): + _parents[self] = parent - def getparent(self): - return _parents[self] + def getparent(self): + return _parents[self] # @@ -209,9 +188,8 @@ META_NAMESPACE_DICT = METNSD = { 'xlink': 'http://www.w3.org/1999/xlink', } -# -# Attribute dictionaries for use with ElementTree (not lxml), which -# does not support use of nsmap parameter on Element() and SubElement(). +# Attribute dictionaries for use with ElementTree, which +# does not support use of nsmap parameter on Element() and SubElement(). CONTENT_NAMESPACE_ATTRIB = { #'office:version': '1.0', @@ -295,10 +273,7 @@ def Element(tag, attrib=None, nsmap=None, nsdict=CNSD): if attrib is None: attrib = {} tag, attrib = fix_ns(tag, attrib, nsdict) - if WhichElementTree == 'lxml': - el = etree.Element(tag, attrib, nsmap=nsmap) - else: - el = _ElementInterfaceWrapper(tag, attrib) + el = _ElementInterfaceWrapper(tag, attrib) return el @@ -306,12 +281,9 @@ def SubElement(parent, tag, attrib=None, nsmap=None, nsdict=CNSD): if attrib is None: attrib = {} tag, attrib = fix_ns(tag, attrib, nsdict) - if WhichElementTree == 'lxml': - el = etree.SubElement(parent, tag, attrib, nsmap=nsmap) - else: - el = _ElementInterfaceWrapper(tag, attrib) - parent.append(el) - el.setparent(parent) + el = _ElementInterfaceWrapper(tag, attrib) + parent.append(el) + el.setparent(parent) return el @@ -325,12 +297,6 @@ def fix_ns(tag, attrib, nsdict): def add_ns(tag, nsdict=CNSD): - if WhichElementTree == 'lxml': - nstag, name = tag.split(':') - ns = nsdict.get(nstag) - if ns is None: - raise RuntimeError('Invalid namespace prefix: %s' % nstag) - tag = '{%s}%s' % (ns, name,) return tag @@ -777,18 +743,11 @@ class Writer(writers.Writer): pass def create_manifest(self): - if WhichElementTree == 'lxml': - root = Element( - 'manifest:manifest', - nsmap=MANIFEST_NAMESPACE_DICT, - nsdict=MANIFEST_NAMESPACE_DICT, - ) - else: - root = Element( - 'manifest:manifest', - attrib=MANIFEST_NAMESPACE_ATTRIB, - nsdict=MANIFEST_NAMESPACE_DICT, - ) + root = Element( + 'manifest:manifest', + attrib=MANIFEST_NAMESPACE_ATTRIB, + nsdict=MANIFEST_NAMESPACE_DICT, + ) doc = etree.ElementTree(root) SubElement(root, 'manifest:file-entry', attrib={ 'manifest:media-type': self.MIME_TYPE, @@ -816,18 +775,11 @@ class Writer(writers.Writer): return s1 def create_meta(self): - if WhichElementTree == 'lxml': - root = Element( - 'office:document-meta', - nsmap=META_NAMESPACE_DICT, - nsdict=META_NAMESPACE_DICT, - ) - else: - root = Element( - 'office:document-meta', - attrib=META_NAMESPACE_ATTRIB, - nsdict=META_NAMESPACE_DICT, - ) + root = Element( + 'office:document-meta', + attrib=META_NAMESPACE_ATTRIB, + nsdict=META_NAMESPACE_DICT, + ) doc = etree.ElementTree(root) root = SubElement(root, 'office:meta', nsdict=METNSD) el1 = SubElement(root, 'meta:generator', nsdict=METNSD) @@ -957,16 +909,10 @@ class ODFTranslator(nodes.GenericNodeVisitor): self.section_level = 0 self.section_count = 0 # Create ElementTree content and styles documents. - if WhichElementTree == 'lxml': - root = Element( - 'office:document-content', - nsmap=CONTENT_NAMESPACE_DICT, - ) - else: - root = Element( - 'office:document-content', - attrib=CONTENT_NAMESPACE_ATTRIB, - ) + root = Element( + 'office:document-content', + attrib=CONTENT_NAMESPACE_ATTRIB, + ) self.content_tree = etree.ElementTree(element=root) self.current_element = root SubElement(root, 'office:scripts') @@ -1213,14 +1159,11 @@ class ODFTranslator(nodes.GenericNodeVisitor): return el1 = master_el if self.header_content or self.settings.custom_header: - if WhichElementTree == 'lxml': - el2 = SubElement(el1, 'style:header', nsdict=SNSD) - else: - el2 = SubElement( - el1, 'style:header', - attrib=STYLES_NAMESPACE_ATTRIB, - nsdict=STYLES_NAMESPACE_DICT, - ) + el2 = SubElement( + el1, 'style:header', + attrib=STYLES_NAMESPACE_ATTRIB, + nsdict=STYLES_NAMESPACE_DICT, + ) for el in self.header_content: attrkey = add_ns('text:style-name', nsdict=SNSD) el.attrib[attrkey] = self.rststyle('header') @@ -1230,14 +1173,11 @@ class ODFTranslator(nodes.GenericNodeVisitor): el2, self.settings.custom_header, 'header', automatic_styles) if self.footer_content or self.settings.custom_footer: - if WhichElementTree == 'lxml': - el2 = SubElement(el1, 'style:footer', nsdict=SNSD) - else: - el2 = SubElement( - el1, 'style:footer', - attrib=STYLES_NAMESPACE_ATTRIB, - nsdict=STYLES_NAMESPACE_DICT, - ) + el2 = SubElement( + el1, 'style:footer', + attrib=STYLES_NAMESPACE_ATTRIB, + nsdict=STYLES_NAMESPACE_DICT, + ) for el in self.footer_content: attrkey = add_ns('text:style-name', nsdict=SNSD) el.attrib[attrkey] = self.rststyle('footer') @@ -2758,8 +2698,7 @@ class ODFTranslator(nodes.GenericNodeVisitor): lines1.append(my_lines_str2) lines1.append('</wrappertag1>') s1 = ''.join(lines1) - if WhichElementTree != "lxml": - s1 = s1.encode("utf-8") + s1 = s1.encode("utf-8") el1 = etree.fromstring(s1) for child in el1: self.current_element.append(child) @@ -2981,8 +2920,7 @@ class ODFTranslator(nodes.GenericNodeVisitor): '%s="%s"' % (k, v, ) for k, v in list(CONTENT_NAMESPACE_ATTRIB.items())]) contentstr = '<stuff %s>%s</stuff>' % (attrstr, rawstr, ) - if WhichElementTree != "lxml": - contentstr = contentstr.encode("utf-8") + contentstr = contentstr.encode("utf-8") content = etree.fromstring(contentstr) if len(content) > 0: el1 = content[0] diff --git a/docutils/test/test_writers/test_odt.py b/docutils/test/test_writers/test_odt.py index 195b8d214..4dcb784ec 100755 --- a/docutils/test/test_writers/test_odt.py +++ b/docutils/test/test_writers/test_odt.py @@ -30,11 +30,9 @@ Instructions for adding a new test: """ -import sys import os import zipfile -import xml.etree.ElementTree as ET -import tempfile +import xml.etree.ElementTree as etree from __init__ import DocutilsTestSupport @@ -49,41 +47,9 @@ INPUT_PATH = 'functional/input/' EXPECTED_PATH = 'functional/expected/' class DocutilsOdtTestCase(DocutilsTestSupport.StandardTestCase): - # - # Check to see if we can import the needed XML library. - # Report failure if we cannot. - def check_import(self): - WhichElementTree = '' - try: - # 1. Try to use lxml. - #from lxml import etree - #WhichElementTree = 'lxml' - raise ImportError('Ignoring lxml') - except ImportError as e: - try: - # 2. Try to use ElementTree from the Python standard library. - from xml.etree import ElementTree as etree - WhichElementTree = 'elementtree' - except ImportError as e: - try: - # 3. Try to use a version of ElementTree installed as a separate - # product. - from elementtree import ElementTree as etree - WhichElementTree = 'elementtree' - except ImportError as e: - s1 = '\nSkipped test of odf_odt writer. ' \ - 'In order to test odf_odt writer ' \ - 'must install either a version of Python containing ' \ - 'ElementTree (Python version >=2.5) or ' \ - 'install ElementTree.\n\n' - #self.fail(s1) - sys.stderr.write(s1) - return WhichElementTree def process_test(self, input_filename, expected_filename, save_output_name=None, settings_overrides=None): - if not self.check_import(): - return # Test that xmlcharrefreplace is the default output encoding # error handler. input_file = open(INPUT_PATH + input_filename, 'rb') @@ -135,10 +101,10 @@ class DocutilsOdtTestCase(DocutilsTestSupport.StandardTestCase): payloadfile.seek(0) zfile = zipfile.ZipFile(payloadfile, 'r') content1 = zfile.read(filename) - doc = ET.fromstring(content1) + doc = etree.fromstring(content1) self.reorder_attributes(doc) #content2 = doc.toprettyxml(indent=' ') - content2 = ET.tostring(doc) + content2 = etree.tostring(doc) return content2 def assertEqual(self, first, second, msg=None): |
