Hello community,

here is the log from the commit of package python3-openpyxl for 
openSUSE:Factory checked in at 2016-03-21 12:45:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python3-openpyxl (Old)
 and      /work/SRC/openSUSE:Factory/.python3-openpyxl.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python3-openpyxl"

Changes:
--------
--- /work/SRC/openSUSE:Factory/python3-openpyxl/python3-openpyxl.changes        
2016-01-30 11:31:18.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.python3-openpyxl.new/python3-openpyxl.changes   
2016-03-21 12:45:35.000000000 +0100
@@ -1,0 +2,8 @@
+Sat Mar 19 21:44:36 UTC 2016 - a...@gmx.de
+
+- update to version 2.3.4:
+  * #594 Content types might be missing when keeping VBA
+  * #599 Cells with only one cell look empty
+  * #607 Serialise NaN as ‘’
+
+-------------------------------------------------------------------

Old:
----
  openpyxl-2.3.3.tar.gz

New:
----
  openpyxl-2.3.4.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python3-openpyxl.spec ++++++
--- /var/tmp/diff_new_pack.DAR9BJ/_old  2016-03-21 12:45:36.000000000 +0100
+++ /var/tmp/diff_new_pack.DAR9BJ/_new  2016-03-21 12:45:36.000000000 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           python3-openpyxl
-Version:        2.3.3
+Version:        2.3.4
 Release:        0
 Summary:        A Python library to read/write Excel 2007 xlsx/xlsm files
 License:        MIT and Python-2.0

++++++ openpyxl-2.3.3.tar.gz -> openpyxl-2.3.4.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-2.3.3/PKG-INFO new/openpyxl-2.3.4/PKG-INFO
--- old/openpyxl-2.3.3/PKG-INFO 2016-01-18 18:51:45.000000000 +0100
+++ new/openpyxl-2.3.4/PKG-INFO 2016-03-16 10:40:03.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: openpyxl
-Version: 2.3.3
+Version: 2.3.4
 Summary: A Python library to read/write Excel 2010 xlsx/xlsm files
 Home-page: http://openpyxl.readthedocs.org
 Author: See AUTHORS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-2.3.3/openpyxl/.constants.json 
new/openpyxl-2.3.4/openpyxl/.constants.json
--- old/openpyxl-2.3.3/openpyxl/.constants.json 2016-01-18 18:50:57.000000000 
+0100
+++ new/openpyxl-2.3.4/openpyxl/.constants.json 2016-03-16 10:38:26.000000000 
+0100
@@ -4,5 +4,5 @@
     "__license__": "MIT/Expat",
     "__maintainer_email__": "openpyxl-us...@googlegroups.com",
     "__url__": "http://openpyxl.readthedocs.org";,
-    "__version__": "2.3.3"
+    "__version__": "2.3.4"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-2.3.3/openpyxl/cell/cell.py 
new/openpyxl-2.3.4/openpyxl/cell/cell.py
--- old/openpyxl-2.3.3/openpyxl/cell/cell.py    2016-01-18 18:50:57.000000000 
+0100
+++ new/openpyxl-2.3.4/openpyxl/cell/cell.py    2016-03-16 10:38:26.000000000 
+0100
@@ -321,7 +321,6 @@
         but you can modify it afterwards by setting the `value`
         property, and the hyperlink will remain."""
         self._hyperlink = Hyperlink(ref=self.coordinate, target=val)
-        self.parent.hyperlinks.add(self)
         if self._value is None:
             self.value = val
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-2.3.3/openpyxl/compat/strings.py 
new/openpyxl-2.3.4/openpyxl/compat/strings.py
--- old/openpyxl-2.3.3/openpyxl/compat/strings.py       2016-01-18 
18:50:57.000000000 +0100
+++ new/openpyxl-2.3.4/openpyxl/compat/strings.py       2016-03-16 
10:38:26.000000000 +0100
@@ -5,6 +5,7 @@
 
 VER = sys.version_info
 
+from math import isnan
 from .numbers import NUMERIC_TYPES
 
 if VER[0] == 3:
@@ -26,7 +27,10 @@
 def safe_string(value):
     """Safely and consistently format numeric values"""
     if isinstance(value, NUMERIC_TYPES):
-        value = "%.16g" % value
+        if isnan(value):
+            value = ""
+        else:
+            value = "%.16g" % value
     elif value is None:
         value = "none"
     elif not isinstance(value, basestring):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-2.3.3/openpyxl/packaging/manifest.py 
new/openpyxl-2.3.4/openpyxl/packaging/manifest.py
--- old/openpyxl-2.3.3/openpyxl/packaging/manifest.py   2016-01-18 
18:50:57.000000000 +0100
+++ new/openpyxl-2.3.4/openpyxl/packaging/manifest.py   2016-03-16 
10:38:26.000000000 +0100
@@ -153,6 +153,10 @@
         node = fromstring(workbook.vba_archive.read(ARC_CONTENT_TYPES))
         manifest = Manifest.from_tree(node)
         del node
+        partnames = [t.PartName for t in manifest.Override]
+        for override in DEFAULT_OVERRIDE:
+            if override.PartName not in partnames:
+                manifest.Override.append(override)
 
     # templates
     for part in manifest.Override:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-2.3.3/openpyxl/reader/excel.py 
new/openpyxl-2.3.4/openpyxl/reader/excel.py
--- old/openpyxl-2.3.3/openpyxl/reader/excel.py 2016-01-18 18:50:57.000000000 
+0100
+++ new/openpyxl-2.3.4/openpyxl/reader/excel.py 2016-03-16 10:38:26.000000000 
+0100
@@ -86,7 +86,7 @@
     is_file_like = hasattr(filename, 'read')
 
     if not is_file_like and os.path.isfile(filename):
-        file_format = os.path.splitext(filename)[-1]
+        file_format = os.path.splitext(filename)[-1].lower()
         if file_format not in SUPPORTED_FORMATS:
             if file_format == '.xls':
                 msg = ('openpyxl does not support the old .xls file format, '
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-2.3.3/openpyxl/reader/workbook.py 
new/openpyxl-2.3.4/openpyxl/reader/workbook.py
--- old/openpyxl-2.3.3/openpyxl/reader/workbook.py      2016-01-18 
18:50:57.000000000 +0100
+++ new/openpyxl-2.3.4/openpyxl/reader/workbook.py      2016-03-16 
10:38:26.000000000 +0100
@@ -104,11 +104,13 @@
             yield rel
 
 
-def detect_external_links(archive):
-    rels = read_rels(archive)
-    for rId, d in rels:
-        if d['type'] == EXTERNAL_LINK:
-            pth = d['path']
+def find_external_refs(archive):
+    xml = archive.read(ARC_WORKBOOK)
+    tree = fromstring(xml)
+    ext = tree.findall(".//{%s}externalReference" % SHEET_MAIN_NS)
+    for ref in ext:
+        id = ref.attrib["{%s}id" % REL_NS]
+        yield id
 
 
 def read_workbook_code_name(xml_source):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-2.3.3/openpyxl/workbook/names/external.py 
new/openpyxl-2.3.4/openpyxl/workbook/names/external.py
--- old/openpyxl-2.3.3/openpyxl/workbook/names/external.py      2016-01-18 
18:50:57.000000000 +0100
+++ new/openpyxl-2.3.4/openpyxl/workbook/names/external.py      2016-03-16 
10:38:26.000000000 +0100
@@ -10,6 +10,7 @@
     REL_NS,
     PKG_REL_NS,
     EXTERNAL_LINK_NS,
+    ARC_WORKBOOK,
 )
 from openpyxl.xml.functions import (
     fromstring,
@@ -87,18 +88,21 @@
 
 
 def detect_external_links(rels, archive):
-    for rId, d in rels:
-        if d['type'] == EXTERNAL_LINK_NS:
-            pth = os.path.split(d['path'])
-            f_name = pth[-1]
-            dir_name = "/".join(pth[:-1])
-            book_path = "{0}/_rels/{1}.rels".format (dir_name, f_name)
-            book_xml = archive.read(book_path)
-            Book = parse_books(book_xml)
-
-            range_xml = archive.read(d['path'])
-            Book.links = list(parse_ranges(range_xml))
-            yield Book
+    from openpyxl.reader.workbook import find_external_refs
+    rels = dict(rels)
+
+    for rId in find_external_refs(archive):
+        rel = rels[rId]
+        pth = os.path.split(rel['path'])
+        f_name = pth[-1]
+        dir_name = "/".join(pth[:-1])
+        book_path = "{0}/_rels/{1}.rels".format (dir_name, f_name)
+        book_xml = archive.read(book_path)
+        Book = parse_books(book_xml)
+
+        range_xml = archive.read(rel['path'])
+        Book.links = list(parse_ranges(range_xml))
+        yield Book
 
 
 def write_external_link(links):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-2.3.3/openpyxl/worksheet/read_only.py 
new/openpyxl-2.3.4/openpyxl/worksheet/read_only.py
--- old/openpyxl-2.3.3/openpyxl/worksheet/read_only.py  2016-01-18 
18:50:57.000000000 +0100
+++ new/openpyxl-2.3.4/openpyxl/worksheet/read_only.py  2016-03-16 
10:38:26.000000000 +0100
@@ -74,6 +74,8 @@
     def __init__(self, parent_workbook, title, worksheet_path,
                  xml_source, shared_strings):
         Worksheet.__init__(self, parent_workbook, title)
+        self._cells = None
+        self._current_row = None
         self.worksheet_path = worksheet_path
         self.shared_strings = shared_strings
         self.base_date = parent_workbook.excel_base_date
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-2.3.3/openpyxl/worksheet/worksheet.py 
new/openpyxl-2.3.4/openpyxl/worksheet/worksheet.py
--- old/openpyxl-2.3.3/openpyxl/worksheet/worksheet.py  2016-01-18 
18:50:57.000000000 +0100
+++ new/openpyxl-2.3.4/openpyxl/worksheet/worksheet.py  2016-03-16 
10:38:26.000000000 +0100
@@ -110,7 +110,7 @@
         self._drawing = None
         self._comment_count = 0
         self._merged_cells = []
-        self.hyperlinks = set()
+        self._hyperlinks = []
         self._data_validations = []
         self.sheet_state = self.SHEETSTATE_VISIBLE
         self.page_setup = PrintPageSetup(worksheet=self)
@@ -611,8 +611,6 @@
         for c in islice(chain.from_iterable(cells), 1, None):
             if c in self._cells:
                 del self._cells[c]
-            if c in self.hyperlinks:
-                del self._hyperlinks[c]
 
 
     @property
@@ -679,8 +677,8 @@
                 if isinstance(content, Cell):
                     # compatible with write-only mode
                     cell = content
-                    if cell.parent and cell.parent.parent != self.parent:
-                        raise ValueError("Cells cannot be copied from other 
workbooks")
+                    if cell.parent and cell.parent != self:
+                        raise ValueError("Cells cannot be copied from other 
worksheets")
                     cell.parent = self
                     cell.col_idx = col_idx
                     cell.row = row_idx
@@ -709,19 +707,19 @@
     @property
     def rows(self):
         """Iterate over all rows in the worksheet"""
-        if self.min_row == self.max_row == self.min_column == self.max_column:
-            return ((),)
+        if self._current_row == 0:
+            return ()
         return tuple(self.iter_rows())
 
 
     @property
     def columns(self):
         """Iterate over all columns in the worksheet"""
-        if self.min_row == self.max_row == self.min_column == self.max_column:
-            return ((),)
+        if self._current_row == 0:
+            return ()
         cols = []
-        for col_idx in range(self.max_column):
-            cells = self.get_squared_range(col_idx + 1, self.min_row, col_idx 
+ 1, self.max_row)
+        for col_idx in range(1, self.max_column+1):
+            cells = self.get_squared_range(col_idx, self.min_row, col_idx, 
self.max_row)
             col = chain.from_iterable(cells)
             cols.append(tuple(col))
         return tuple(cols)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-2.3.3/openpyxl/writer/etree_worksheet.py 
new/openpyxl-2.3.4/openpyxl/writer/etree_worksheet.py
--- old/openpyxl-2.3.3/openpyxl/writer/etree_worksheet.py       2016-01-18 
18:50:57.000000000 +0100
+++ new/openpyxl-2.3.4/openpyxl/writer/etree_worksheet.py       2016-03-16 
10:38:26.000000000 +0100
@@ -73,4 +73,8 @@
     cell_content = SubElement(el, 'v')
     if value is not None:
         cell_content.text = safe_string(value)
+
+    if cell.hyperlink:
+        worksheet._hyperlinks.append(cell.hyperlink)
+
     return el
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-2.3.3/openpyxl/writer/lxml_worksheet.py 
new/openpyxl-2.3.4/openpyxl/writer/lxml_worksheet.py
--- old/openpyxl-2.3.3/openpyxl/writer/lxml_worksheet.py        2016-01-18 
18:50:57.000000000 +0100
+++ new/openpyxl-2.3.4/openpyxl/writer/lxml_worksheet.py        2016-03-16 
10:38:26.000000000 +0100
@@ -61,3 +61,6 @@
         with xf.element("v"):
             if value is not None:
                 xf.write(safe_string(value))
+
+        if cell.hyperlink:
+            worksheet._hyperlinks.append(cell.hyperlink)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-2.3.3/openpyxl/writer/workbook.py 
new/openpyxl-2.3.4/openpyxl/writer/workbook.py
--- old/openpyxl-2.3.3/openpyxl/writer/workbook.py      2016-01-18 
18:50:57.000000000 +0100
+++ new/openpyxl-2.3.4/openpyxl/writer/workbook.py      2016-03-16 
10:38:26.000000000 +0100
@@ -121,13 +121,13 @@
 
     # worksheets
     sheets = SubElement(root, '{%s}sheets' % SHEET_MAIN_NS)
-    for i, sheet in enumerate(workbook._sheets, 1):
+    for idx, sheet in enumerate(workbook.worksheets + workbook.chartsheets, 1):
         sheet_node = SubElement(
             sheets, '{%s}sheet' % SHEET_MAIN_NS,
-            {'name': sheet.title, 'sheetId': '%d' % i,
-             '{%s}id' % REL_NS: 'rId%d' % i })
+            {'name': sheet.title, 'sheetId': '%d' % idx,
+             '{%s}id' % REL_NS: 'rId%d' % idx})
         if not sheet.sheet_state == 'visible':
-            if len(workbook.worksheets) == 1:
+            if len(workbook._sheets) == 1:
                 raise ValueError("The only worksheet of a workbook cannot be 
hidden")
             sheet_node.set('state', sheet.sheet_state)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-2.3.3/openpyxl/writer/worksheet.py 
new/openpyxl-2.3.4/openpyxl/writer/worksheet.py
--- old/openpyxl-2.3.3/openpyxl/writer/worksheet.py     2016-01-18 
18:50:57.000000000 +0100
+++ new/openpyxl-2.3.4/openpyxl/writer/worksheet.py     2016-03-16 
10:38:26.000000000 +0100
@@ -153,12 +153,10 @@
 
 def write_hyperlinks(worksheet):
     """Write worksheet hyperlinks to xml."""
-    if not worksheet.hyperlinks:
+    if not worksheet._hyperlinks:
         return
     tag = Element('hyperlinks')
-    for cell in worksheet.hyperlinks:
-        link = cell.hyperlink
-        link.ref = cell.coordinate
+    for link in worksheet._hyperlinks:
         rel = Relationship(type="hyperlink", targetMode="External", 
target=link.target)
         worksheet._rels.append(rel)
         link.id = "rId{0}".format(len(worksheet._rels))
@@ -181,7 +179,9 @@
 
 def write_worksheet(worksheet, shared_strings):
     """Write a worksheet to an xml file."""
-    worksheet._rels = []
+    ws = worksheet
+    ws._rels = []
+    ws._hyperlinks = []
     if LXML is True:
         from .lxml_worksheet import write_cell, write_rows
     else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-2.3.3/openpyxl.egg-info/PKG-INFO 
new/openpyxl-2.3.4/openpyxl.egg-info/PKG-INFO
--- old/openpyxl-2.3.3/openpyxl.egg-info/PKG-INFO       2016-01-18 
18:51:45.000000000 +0100
+++ new/openpyxl-2.3.4/openpyxl.egg-info/PKG-INFO       2016-03-16 
10:40:02.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: openpyxl
-Version: 2.3.3
+Version: 2.3.4
 Summary: A Python library to read/write Excel 2010 xlsx/xlsm files
 Home-page: http://openpyxl.readthedocs.org
 Author: See AUTHORS


Reply via email to