/usr/lib/python2.6/site-packages/tablib/packages/openpyxl/shared
NameSizeModeActions
date_time.py59560644editdlrm
date_time.pyc46100644editdlrm
exc.py22590644editdlrm
exc.pyc29710644editdlrm
ooxml.py24540644editdlrm
ooxml.pyc15520644editdlrm
password_hasher.py18500644editdlrm
password_hasher.pyc9390644editdlrm
units.py20290644editdlrm
units.pyc20100644editdlrm
xmltools.py36160644editdlrm
xmltools.pyc28440644editdlrm
__init__.py13950644editdlrm
__init__.pyc4390644editdlrm
Edit: /usr/lib/python2.6/site-packages/tablib/packages/openpyxl/shared/xmltools.py (3616B)
# file openpyxl/shared/xmltools.py # Copyright (c) 2010 openpyxl # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN # THE SOFTWARE. # # @license: http://www.opensource.org/licenses/mit-license.php # @author: Eric Gazoni """Shared xml tools. Shortcut functions taken from: http://lethain.com/entry/2009/jan/22/handling-very-large-csv-and-xml-files-in-python/ """ # Python stdlib imports from xml.sax.xmlreader import AttributesNSImpl from xml.sax.saxutils import XMLGenerator try: from xml.etree.ElementTree import ElementTree, Element, SubElement, \ QName, fromstring, tostring except ImportError: from cElementTree import ElementTree, Element, SubElement, \ QName, fromstring, tostring # package imports from .. import __name__ as prefix def get_document_content(xml_node): """Print nicely formatted xml to a string.""" pretty_indent(xml_node) return tostring(xml_node, 'utf-8') def pretty_indent(elem, level=0): """Format xml with nice indents and line breaks.""" i = "\n" + level * " " if len(elem): if not elem.text or not elem.text.strip(): elem.text = i + " " if not elem.tail or not elem.tail.strip(): elem.tail = i for elem in elem: pretty_indent(elem, level + 1) if not elem.tail or not elem.tail.strip(): elem.tail = i else: if level and (not elem.tail or not elem.tail.strip()): elem.tail = i def start_tag(doc, name, attr=None, body=None, namespace=None): """Wrapper to start an xml tag.""" if attr is None: attr = {} # name = bytes(name, 'utf-8') # if namespace is not None: # namespace = bytes(namespace, 'utf-8') attr_vals = {} attr_keys = {} for key, val in attr.items(): # if key is not None: # key = bytes(key, 'utf-8') # if val is not None: # val = bytes(val, 'utf-8') key_tuple = (namespace, key) attr_vals[key_tuple] = val attr_keys[key_tuple] = key attr2 = AttributesNSImpl(attr_vals, attr_keys) doc.startElementNS((namespace, name), name, attr2) if body: doc.characters(body) def end_tag(doc, name, namespace=None): """Wrapper to close an xml tag.""" doc.endElementNS((namespace, name), name) def tag(doc, name, attr=None, body=None, namespace=None): """Wrapper to print xml tags and comments.""" if attr is None: attr = {} start_tag(doc, name, attr, body, namespace) end_tag(doc, name, namespace)