Hello community, here is the log from the commit of package python3-openpyxl for openSUSE:Factory checked in at 2015-06-23 11:57:42 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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 2015-05-27 12:51:36.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.python3-openpyxl.new/python3-openpyxl.changes 2015-06-23 11:57:43.000000000 +0200 @@ -1,0 +2,13 @@ +Thu Jun 18 15:26:09 UTC 2015 - arun@gmx.de + +- update to version 2.2.4: + * #464 Cannot use images when preserving macros + * #465 ws.cell() returns an empty cell on read-only workbooks + * #467 Cannot edit a file with ActiveX components + * #471 Sheet properties elements must be in order + * #475 Do not redefine class __slots__ in subclasses + * #477 Write-only support for SheetProtection + * #478 Write-only support for DataValidation + * Improved regex when checking for datetime formats + +------------------------------------------------------------------- Old: ---- openpyxl-2.2.3.tar.gz New: ---- openpyxl-2.2.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python3-openpyxl.spec ++++++ --- /var/tmp/diff_new_pack.vhdDzi/_old 2015-06-23 11:57:43.000000000 +0200 +++ /var/tmp/diff_new_pack.vhdDzi/_new 2015-06-23 11:57:43.000000000 +0200 @@ -17,7 +17,7 @@ Name: python3-openpyxl -Version: 2.2.3 +Version: 2.2.4 Release: 0 Summary: A Python library to read/write Excel 2007 xlsx/xlsm files License: MIT and Python-2.0 ++++++ openpyxl-2.2.3.tar.gz -> openpyxl-2.2.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openpyxl-2.2.3/PKG-INFO new/openpyxl-2.2.4/PKG-INFO --- old/openpyxl-2.2.3/PKG-INFO 2015-05-26 14:29:15.000000000 +0200 +++ new/openpyxl-2.2.4/PKG-INFO 2015-06-17 22:52:20.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: openpyxl -Version: 2.2.3 +Version: 2.2.4 Summary: A Python library to read/write Excel 2007 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.2.3/openpyxl/__init__.py new/openpyxl-2.2.4/openpyxl/__init__.py --- old/openpyxl-2.2.3/openpyxl/__init__.py 2015-05-26 14:27:40.000000000 +0200 +++ new/openpyxl-2.2.4/openpyxl/__init__.py 2015-06-17 22:50:50.000000000 +0200 @@ -11,7 +11,7 @@ # constants -__version__ = '2.2.3' +__version__ = '2.2.4' __author__ = 'Eric Gazoni' __license__ = 'MIT/Expat' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openpyxl-2.2.3/openpyxl/cell/cell.py new/openpyxl-2.2.4/openpyxl/cell/cell.py --- old/openpyxl-2.2.3/openpyxl/cell/cell.py 2015-05-09 17:26:19.000000000 +0200 +++ new/openpyxl-2.2.4/openpyxl/cell/cell.py 2015-06-17 22:50:50.000000000 +0200 @@ -81,7 +81,7 @@ Properties of interest include style, type, value, and address. """ - __slots__ = StyleableObject.__slots__ + ( + __slots__ = ( 'column', 'row', 'coordinate', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openpyxl-2.2.3/openpyxl/styles/numbers.py new/openpyxl-2.2.4/openpyxl/styles/numbers.py --- old/openpyxl-2.2.3/openpyxl/styles/numbers.py 2015-05-09 17:26:19.000000000 +0200 +++ new/openpyxl-2.2.4/openpyxl/styles/numbers.py 2015-06-17 22:50:50.000000000 +0200 @@ -161,12 +161,13 @@ DATE_INDICATORS = 'dmyhs' -BAD_DATE_RE = re.compile(r'(\[|").*[dmhys].*(\]|")') +BAD_DATE_RE = re.compile(r'((?<=\[)|").*[dmhys]+.*(\]|")', re.UNICODE) def is_date_format(fmt): if fmt is None: return False - if any([x in fmt.lower() for x in DATE_INDICATORS]): + fmt = fmt.lower() + if any([x in fmt for x in DATE_INDICATORS]): return not BAD_DATE_RE.search(fmt) return False diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openpyxl-2.2.3/openpyxl/worksheet/properties.py new/openpyxl-2.2.4/openpyxl/worksheet/properties.py --- old/openpyxl-2.2.3/openpyxl/worksheet/properties.py 2015-05-26 14:27:40.000000000 +0200 +++ new/openpyxl-2.2.4/openpyxl/worksheet/properties.py 2015-06-17 22:50:50.000000000 +0200 @@ -146,6 +146,10 @@ el = Element(props.tag, attributes) + tab_color = props.tabColor + if tab_color: + el.append(Element('{%s}tabColor' % SHEET_MAIN_NS, rgb=tab_color.value)) + outline = props.outlinePr if outline: el.append(Element(outline.tag, dict(outline))) @@ -154,7 +158,5 @@ if page_setup: el.append(Element(page_setup.tag, dict(page_setup))) - if props.tabColor: - el.append(Element('{%s}tabColor' % SHEET_MAIN_NS, rgb=props.tabColor.value)) return el diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openpyxl-2.2.3/openpyxl/worksheet/worksheet.py new/openpyxl-2.2.4/openpyxl/worksheet/worksheet.py --- old/openpyxl-2.2.3/openpyxl/worksheet/worksheet.py 2015-05-26 14:27:40.000000000 +0200 +++ new/openpyxl-2.2.4/openpyxl/worksheet/worksheet.py 2015-06-17 22:50:50.000000000 +0200 @@ -352,12 +352,10 @@ else: coordinate = coordinate.upper().replace('$', '') - if coordinate not in self._cells: - if row is None or column is None: - column, row = coordinate_from_string(coordinate) - self._new_cell(column, row, value) - - return self._cells[coordinate] + cell = self._get_cell(coordinate) + if value is not None: + cell.value = value + return cell def _get_cell(self, coordinate): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openpyxl-2.2.3/openpyxl/writer/dump_worksheet.py new/openpyxl-2.2.4/openpyxl/writer/dump_worksheet.py --- old/openpyxl-2.2.3/openpyxl/writer/dump_worksheet.py 2015-05-09 17:26:19.000000000 +0200 +++ new/openpyxl-2.2.4/openpyxl/writer/dump_worksheet.py 2015-06-17 22:50:50.000000000 +0200 @@ -21,6 +21,7 @@ from .relations import write_rels from .worksheet import ( write_autofilter, + write_datavalidation, write_cell, write_cols, write_format, @@ -125,9 +126,15 @@ xf.write(r) except GeneratorExit: pass + if self.protection.sheet: + prot = Element('sheetProtection', dict(self.protection)) + xf.write(prot) af = write_autofilter(self) if af is not None: xf.write(af) + dv = write_datavalidation(self) + if dv is not None: + xf.write(dv) if self._comments: comments = Element('legacyDrawing', {'{%s}id' % REL_NS: 'commentsvml'}) xf.write(comments) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openpyxl-2.2.3/openpyxl/writer/excel.py new/openpyxl-2.2.4/openpyxl/writer/excel.py --- old/openpyxl-2.2.3/openpyxl/writer/excel.py 2015-05-26 14:27:40.000000000 +0200 +++ new/openpyxl-2.2.4/openpyxl/writer/excel.py 2015-06-17 22:50:50.000000000 +0200 @@ -5,6 +5,7 @@ # Python stdlib imports from io import BytesIO +from re import match from zipfile import ZipFile, ZIP_DEFLATED # package imports @@ -17,7 +18,6 @@ ARC_THEME, ARC_STYLE, ARC_WORKBOOK, - ARC_VBA, PACKAGE_WORKSHEETS, PACKAGE_DRAWINGS, PACKAGE_CHARTS, @@ -47,6 +47,8 @@ from openpyxl.writer.comments import CommentWriter +ARC_VBA = ('xl/vba', r'xl/drawings/.*\.vml', 'xl/ctrlProps', 'customUI', + 'xl/activeX', r'xl/media/.*\.emf') class ExcelWriter(object): """Write a workbook object to an Excel file.""" @@ -75,7 +77,7 @@ vba_archive = self.workbook.vba_archive for name in vba_archive.namelist(): for s in ARC_VBA: - if name.startswith(s): + if match(s, name): archive.writestr(name, vba_archive.read(name)) break diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openpyxl-2.2.3/openpyxl/writer/relations.py new/openpyxl-2.2.4/openpyxl/writer/relations.py --- old/openpyxl-2.2.3/openpyxl/writer/relations.py 2015-05-09 17:26:19.000000000 +0200 +++ new/openpyxl-2.2.4/openpyxl/writer/relations.py 2015-06-17 22:50:50.000000000 +0200 @@ -24,6 +24,12 @@ 'Type': '%s/drawing' % REL_NS, 'Target': '../drawings/drawing%s.xml' % drawing_id} SubElement(root, '{%s}Relationship' % PKG_REL_NS, attrs) + + if worksheet.vba_controls is not None: + attrs = {'Id': worksheet.vba_controls, + 'Type': VML_NS, + 'Target': '../drawings/vmlDrawing%s.vml' % vba_controls_id} + SubElement(root, '{%s}Relationship' % PKG_REL_NS, attrs) if worksheet._comment_count > 0: # there's only one comments sheet per worksheet, # so there's no reason to call the Id rIdx @@ -31,13 +37,9 @@ 'Type': COMMENTS_NS, 'Target': '../comments%s.xml' % comments_id} SubElement(root, '{%s}Relationship' % PKG_REL_NS, attrs) - attrs = {'Id': 'commentsvml', - 'Type': VML_NS, - 'Target': '../drawings/commentsDrawing%s.vml' % comments_id} - SubElement(root, '{%s}Relationship' % PKG_REL_NS, attrs) - if worksheet.vba_controls is not None: - attrs = {'Id': worksheet.vba_controls, - 'Type': VML_NS, - 'Target': '../drawings/vmlDrawing%s.vml' % vba_controls_id} - SubElement(root, '{%s}Relationship' % PKG_REL_NS, attrs) + if worksheet.vba_controls is None: + attrs = {'Id': 'commentsvml', + 'Type': VML_NS, + 'Target': '../drawings/commentsDrawing%s.vml' % comments_id} + SubElement(root, '{%s}Relationship' % PKG_REL_NS, attrs) return root diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openpyxl-2.2.3/openpyxl/writer/workbook.py new/openpyxl-2.2.4/openpyxl/writer/workbook.py --- old/openpyxl-2.2.3/openpyxl/writer/workbook.py 2015-05-09 17:26:19.000000000 +0200 +++ new/openpyxl-2.2.4/openpyxl/writer/workbook.py 2015-06-17 22:50:50.000000000 +0200 @@ -156,10 +156,12 @@ drawing_id += 1 if sheet._comment_count > 0: - SubElement(root, '{%s}Override' % CONTYPES_NS, { - 'PartName': '/xl/comments%d.xml' % comments_id, - 'ContentType': COMMENTS_TYPE - }) + name = '/xl/comments%d.xml' % comments_id + if name not in seen: + SubElement(root, '{%s}Override' % CONTYPES_NS, { + 'PartName': name, + 'ContentType': COMMENTS_TYPE + }) comments_id += 1 for idx, _ in enumerate(workbook._external_links, 1): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openpyxl-2.2.3/openpyxl/writer/worksheet.py new/openpyxl-2.2.4/openpyxl/writer/worksheet.py --- old/openpyxl-2.2.3/openpyxl/writer/worksheet.py 2015-05-09 17:26:19.000000000 +0200 +++ new/openpyxl-2.2.4/openpyxl/writer/worksheet.py 2015-06-17 22:50:50.000000000 +0200 @@ -282,19 +282,21 @@ xf.write(drawing) del drawing + pb = write_pagebreaks(worksheet) + if pb is not None: + xf.write(pb) + # If vba is being preserved then add a legacyDrawing element so # that any controls can be drawn. if worksheet.vba_controls is not None: xml = Element("{%s}legacyDrawing" % SHEET_MAIN_NS, {"{%s}id" % REL_NS : worksheet.vba_controls}) xf.write(xml) - - pb = write_pagebreaks(worksheet) - if pb is not None: - xf.write(pb) - - # add a legacyDrawing so that excel can draw comments - if worksheet._comment_count > 0: + elif worksheet._comment_count > 0: + # add a legacyDrawing so that excel can draw comments + # If a legacyDrawing element has already been added then + # we have to hope it already contains the vml for + # comments because we cannot add another. comments = Element('{%s}legacyDrawing' % SHEET_MAIN_NS, {'{%s}id' % REL_NS: 'commentsvml'}) xf.write(comments) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openpyxl-2.2.3/openpyxl/xml/constants.py new/openpyxl-2.2.4/openpyxl/xml/constants.py --- old/openpyxl-2.2.3/openpyxl/xml/constants.py 2015-05-09 17:26:19.000000000 +0200 +++ new/openpyxl-2.2.4/openpyxl/xml/constants.py 2015-06-17 22:50:50.000000000 +0200 @@ -30,8 +30,6 @@ ARC_THEME = PACKAGE_THEME + '/theme1.xml' ARC_SHARED_STRINGS = PACKAGE_XL + '/sharedStrings.xml' ARC_CUSTOM_UI = 'customUI/customUI.xml' -ARC_VBA = ('xl/vba', 'xl/activeX', 'xl/drawings', 'xl/media', 'xl/ctrlProps', - 'customUI', 'xl/printerSettings') ## namespaces # Dublin Core diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/openpyxl-2.2.3/openpyxl.egg-info/PKG-INFO new/openpyxl-2.2.4/openpyxl.egg-info/PKG-INFO --- old/openpyxl-2.2.3/openpyxl.egg-info/PKG-INFO 2015-05-26 14:29:15.000000000 +0200 +++ new/openpyxl-2.2.4/openpyxl.egg-info/PKG-INFO 2015-06-17 22:52:20.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: openpyxl -Version: 2.2.3 +Version: 2.2.4 Summary: A Python library to read/write Excel 2007 xlsx/xlsm files Home-page: http://openpyxl.readthedocs.org Author: See AUTHORS