Hello community,

here is the log from the commit of package python-openpyxl for openSUSE:Factory 
checked in at 2020-02-03 11:11:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-openpyxl (Old)
 and      /work/SRC/openSUSE:Factory/.python-openpyxl.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-openpyxl"

Mon Feb  3 11:11:57 2020 rev:15 rq:768796 version:3.0.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-openpyxl/python-openpyxl.changes  
2019-11-24 23:46:20.560026385 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-openpyxl.new.26092/python-openpyxl.changes   
    2020-02-03 11:12:10.197810107 +0100
@@ -1,0 +2,18 @@
+Thu Jan 30 15:02:50 UTC 2020 - Todd R <toddrme2...@gmail.com>
+
+- Update to 3.0.3:
+  + Bugfixes
+    * Exception when handling merged cells with hyperlinks
+    * Problems when both lxml and defusedxml are installed
+    * CFVO with incorrect values cannot be processed
+- Update to 3.0.2:
+  + Bugfixes
+    * DeprecationError if both defusedxml and lxml are installed
+    * ws._current_row is higher than ws.max_row
+    * Border bottom style is not optional when it should be
+    * Empty cells in read-only, values-only mode are sometimes returned as 
ReadOnlyCells
+    * Cannot add page breaks to existing worksheets if none exist already
+  + Pull Requests
+    * Improvements to the documentation
+
+-------------------------------------------------------------------

Old:
----
  openpyxl-3.0.1.tar.gz

New:
----
  openpyxl-3.0.3.tar.gz

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

Other differences:
------------------
++++++ python-openpyxl.spec ++++++
--- /var/tmp/diff_new_pack.ZdcA9r/_old  2020-02-03 11:12:11.169810599 +0100
+++ /var/tmp/diff_new_pack.ZdcA9r/_new  2020-02-03 11:12:11.173810600 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-openpyxl
 #
-# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,11 +19,11 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define         skip_python2 1
 Name:           python-openpyxl
-Version:        3.0.1
+Version:        3.0.3
 Release:        0
 Summary:        A Python library to read/write Excel 2010 xlsx/xlsm files
 License:        MIT AND Python-2.0
-URL:            https://openpyxl.readthedocs.org
+URL:            https://bitbucket.org/openpyxl/openpyxl/
 Source:         
https://files.pythonhosted.org/packages/source/o/openpyxl/openpyxl-%{version}.tar.gz
 BuildRequires:  %{python_module et_xmlfile}
 BuildRequires:  %{python_module jdcal}

++++++ openpyxl-3.0.1.tar.gz -> openpyxl-3.0.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.1/AUTHORS.rst 
new/openpyxl-3.0.3/AUTHORS.rst
--- old/openpyxl-3.0.1/AUTHORS.rst      2019-09-25 16:19:46.000000000 +0200
+++ new/openpyxl-3.0.3/AUTHORS.rst      2020-01-10 17:42:44.000000000 +0100
@@ -26,6 +26,7 @@
 * Dmitriy Chernyshov
 * Dominik Geldmacher
 * Don Freeman
+* Eirikur Fannar Torfason
 * Elias Rabel
 * Eric Chlebek
 * Eric Gazoni
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.1/PKG-INFO new/openpyxl-3.0.3/PKG-INFO
--- old/openpyxl-3.0.1/PKG-INFO 2019-11-14 14:10:34.000000000 +0100
+++ new/openpyxl-3.0.3/PKG-INFO 2020-01-10 17:44:02.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: openpyxl
-Version: 3.0.1
+Version: 3.0.3
 Summary: A Python library to read/write Excel 2010 xlsx/xlsm files
 Home-page: https://openpyxl.readthedocs.io
 Author: See AUTHORS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.1/openpyxl/_constants.py 
new/openpyxl-3.0.3/openpyxl/_constants.py
--- old/openpyxl-3.0.1/openpyxl/_constants.py   2019-11-14 14:10:24.000000000 
+0100
+++ new/openpyxl-3.0.3/openpyxl/_constants.py   2020-01-10 17:42:44.000000000 
+0100
@@ -1,7 +1,7 @@
 # Copyright (c) 2010-2019 openpyxl
 
 """
-Package medata
+Package metadata
 """
 
 __author__ = "See AUTHORS"
@@ -9,4 +9,4 @@
 __license__ = "MIT"
 __maintainer_email__ = "openpyxl-us...@googlegroups.com"
 __url__ = "https://openpyxl.readthedocs.io";
-__version__ = "3.0.1"
+__version__ = "3.0.3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.1/openpyxl/cell/cell.py 
new/openpyxl-3.0.3/openpyxl/cell/cell.py
--- old/openpyxl-3.0.1/openpyxl/cell/cell.py    2019-11-14 14:10:24.000000000 
+0100
+++ new/openpyxl-3.0.3/openpyxl/cell/cell.py    2020-01-10 17:42:44.000000000 
+0100
@@ -15,35 +15,15 @@
 import datetime
 import re
 
-from itertools import islice, product
 
 from openpyxl.compat import (
     NUMERIC_TYPES,
     deprecated,
 )
-from openpyxl.utils.units import (
-    DEFAULT_ROW_HEIGHT,
-    DEFAULT_COLUMN_WIDTH
-)
-from openpyxl.utils.datetime  import (
-    to_excel,
-    time_to_days,
-    timedelta_to_days,
-    from_excel
-    )
-from openpyxl.utils.exceptions import (
-    IllegalCharacterError
-)
-from openpyxl.utils.units import points_to_pixels
-from openpyxl.utils import (
-    get_column_letter,
-    column_index_from_string,
-)
-from openpyxl.utils.inference import (
-    cast_numeric,
-    cast_percentage,
-    cast_percentage,
-)
+
+from openpyxl.utils.exceptions import IllegalCharacterError
+
+from openpyxl.utils import get_column_letter
 from openpyxl.styles import numbers, is_date_format
 from openpyxl.styles.styleable import StyleableObject
 from openpyxl.worksheet.hyperlink import Hyperlink
@@ -160,9 +140,6 @@
     def base_date(self):
         return self.parent.parent.epoch
 
-    @property
-    def guess_types(self):
-        return getattr(self.parent.parent, 'guess_types', False)
 
     def __repr__(self):
         return "<Cell {0!r}.{1}>".format(self.parent.title, self.coordinate)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.1/openpyxl/conftest.py 
new/openpyxl-3.0.3/openpyxl/conftest.py
--- old/openpyxl-3.0.1/openpyxl/conftest.py     2019-09-25 16:19:47.000000000 
+0200
+++ new/openpyxl-3.0.3/openpyxl/conftest.py     2020-01-10 17:42:44.000000000 
+0100
@@ -5,7 +5,9 @@
 
 ### Markers ###
 
+
 def pytest_runtest_setup(item):
+    from openpyxl import DEFUSEDXML, LXML
     if isinstance(item, pytest.Function):
         try:
             from PIL import Image
@@ -18,11 +20,9 @@
         elif item.get_closest_marker("not_py33"):
             pytest.skip("Ordering is not a given in Python 3")
         elif item.get_closest_marker("defusedxml_required"):
-            from openpyxl import DEFUSEDXML
-            if not DEFUSEDXML:
+            if LXML or not DEFUSEDXML:
                 pytest.skip("defusedxml is required to guard against these 
vulnerabilities")
         elif item.get_closest_marker("lxml_required"):
-            from openpyxl import LXML
             if not LXML:
                 pytest.skip("LXML is required for some features such as schema 
validation")
         elif item.get_closest_marker("lxml_buffering"):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.1/openpyxl/formatting/rule.py 
new/openpyxl-3.0.3/openpyxl/formatting/rule.py
--- old/openpyxl-3.0.1/openpyxl/formatting/rule.py      2019-11-13 
10:08:15.000000000 +0100
+++ new/openpyxl-3.0.3/openpyxl/formatting/rule.py      2020-01-10 
17:42:44.000000000 +0100
@@ -11,7 +11,7 @@
     Integer,
     Float,
 )
-from openpyxl.descriptors.excel import HexBinary, ExtensionList
+from openpyxl.descriptors.excel import ExtensionList
 from openpyxl.styles.colors import Color, ColorDescriptor
 from openpyxl.styles.differential import DifferentialStyle
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.1/openpyxl/reader/excel.py 
new/openpyxl-3.0.3/openpyxl/reader/excel.py
--- old/openpyxl-3.0.1/openpyxl/reader/excel.py 2019-11-13 10:08:15.000000000 
+0100
+++ new/openpyxl-3.0.3/openpyxl/reader/excel.py 2019-11-25 18:57:01.000000000 
+0100
@@ -295,9 +295,6 @@
     :param keep_vba: preseve vba content (this does NOT mean you can use it)
     :type keep_vba: bool
 
-    :param guess_types: guess cell content type and do not read it from the 
file
-    :type guess_types: bool
-
     :param data_only: controls whether cells with formulae have either the 
formula (default) or the value stored the last time Excel read the sheet
     :type data_only: bool
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.1/openpyxl/styles/borders.py 
new/openpyxl-3.0.3/openpyxl/styles/borders.py
--- old/openpyxl-3.0.1/openpyxl/styles/borders.py       2019-11-13 
10:08:15.000000000 +0100
+++ new/openpyxl-3.0.3/openpyxl/styles/borders.py       2019-11-25 
18:57:01.000000000 +0100
@@ -75,7 +75,7 @@
     left = Typed(expected_type=Side, allow_none=True)
     right = Typed(expected_type=Side, allow_none=True)
     top = Typed(expected_type=Side, allow_none=True)
-    bottom = Typed(expected_type=Side)
+    bottom = Typed(expected_type=Side, allow_none=True)
     diagonal = Typed(expected_type=Side, allow_none=True)
     vertical = Typed(expected_type=Side, allow_none=True)
     horizontal = Typed(expected_type=Side, allow_none=True)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.1/openpyxl/utils/units.py 
new/openpyxl-3.0.3/openpyxl/utils/units.py
--- old/openpyxl-3.0.1/openpyxl/utils/units.py  2019-11-13 10:08:15.000000000 
+0100
+++ new/openpyxl-3.0.3/openpyxl/utils/units.py  2019-11-25 18:57:01.000000000 
+0100
@@ -7,8 +7,9 @@
 #constants
 
 DEFAULT_ROW_HEIGHT = 15.  # Default row height measured in point size.
-BASE_COL_WIDTH = 13 # in characters
-DEFAULT_COLUMN_WIDTH = 51.85 # in points, should be characters
+BASE_COL_WIDTH = 8 # in characters
+DEFAULT_COLUMN_WIDTH = BASE_COL_WIDTH + 5
+#  = baseColumnWidth + {margin padding (2 pixels on each side, totalling 4 
pixels)} + {gridline (1pixel)}
 
 
 DEFAULT_LEFT_MARGIN = 0.7 # in inches, = right margin
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.1/openpyxl/workbook/workbook.py 
new/openpyxl-3.0.3/openpyxl/workbook/workbook.py
--- old/openpyxl-3.0.1/openpyxl/workbook/workbook.py    2019-11-14 
14:10:24.000000000 +0100
+++ new/openpyxl-3.0.3/openpyxl/workbook/workbook.py    2020-01-10 
17:42:44.000000000 +0100
@@ -129,22 +129,6 @@
 
 
     @property
-    def guess_types(self):
-        return getattr(self, '__guess_types', False)
-
-
-    @guess_types.setter
-    def guess_types(self, value):
-        self.__guess_types = value
-
-
-    @deprecated("Use the .active property")
-    def get_active_sheet(self):
-        """Returns the current active sheet."""
-        return self.active
-
-
-    @property
     def excel_base_date(self):
         return self.epoch
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.1/openpyxl/worksheet/_read_only.py 
new/openpyxl-3.0.3/openpyxl/worksheet/_read_only.py
--- old/openpyxl-3.0.1/openpyxl/worksheet/_read_only.py 2019-11-14 
14:10:24.000000000 +0100
+++ new/openpyxl-3.0.3/openpyxl/worksheet/_read_only.py 2019-11-25 
18:57:01.000000000 +0100
@@ -115,7 +115,9 @@
             counter = cell['column']
             if min_col <= counter <= max_col:
                 idx = counter - min_col # position in list of cells returned
-                new_row[idx] = values_only and cell['value'] or 
ReadOnlyCell(self, **cell)
+                new_row[idx] = cell['value']
+                if not values_only:
+                    new_row[idx] = ReadOnlyCell(self, **cell)
 
         return tuple(new_row)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.1/openpyxl/worksheet/_reader.py 
new/openpyxl-3.0.3/openpyxl/worksheet/_reader.py
--- old/openpyxl-3.0.1/openpyxl/worksheet/_reader.py    2019-11-14 
14:10:24.000000000 +0100
+++ new/openpyxl-3.0.3/openpyxl/worksheet/_reader.py    2020-01-10 
17:42:44.000000000 +0100
@@ -1,13 +1,14 @@
 # Copyright (c) 2010-2019 openpyxl
 
 """Reader for a single worksheet."""
+import traceback
 from warnings import warn
 
 # compatibility imports
 from openpyxl.xml.functions import iterparse
 
 # package imports
-from openpyxl.cell import Cell
+from openpyxl.cell import Cell, MergedCell
 from openpyxl.cell.text import Text
 from openpyxl.worksheet.dimensions import (
     ColumnDimension,
@@ -85,14 +86,14 @@
 
     def __init__(self, src, shared_strings, data_only=False,
                  epoch=WINDOWS_EPOCH, date_formats=set()):
-        self.min_row = self.min_col = self.max_row = self.max_column = None
+        self.min_row = self.min_col = None
         self.epoch = epoch
         self.source = src
         self.shared_strings = shared_strings
         self.data_only = data_only
         self.shared_formulae = {}
         self.array_formulae = {}
-        self.max_row = self.max_column = 0
+        self.row_counter = self.col_counter = 0
         self.tables = TablePartList()
         self.date_formats = date_formats
         self.row_dimensions = {}
@@ -103,7 +104,8 @@
         self.formatting = []
         self.legacy_drawing = None
         self.merged_cells = None
-        self.page_breaks = []
+        self.row_breaks = RowBreak()
+        self.col_breaks = ColBreak()
 
 
     def parse(self):
@@ -132,6 +134,7 @@
             TABLE_TAG: ('tables', TablePartList),
             HYPERLINK_TAG: ('hyperlinks', HyperlinkList),
             MERGE_TAG: ('merged_cells', MergeCells),
+
         }
 
         it = iterparse(self.source)
@@ -172,7 +175,7 @@
     def parse_cell(self, element):
         data_type = element.get('t', 'n')
         coordinate = element.get('r')
-        self.max_column += 1
+        self.col_counter += 1
         style_id = element.get('s', 0)
         if style_id:
             style_id = int(style_id)
@@ -185,7 +188,7 @@
         if coordinate:
             row, column = coordinate_to_tuple(coordinate)
         else:
-            row, column = self.max_row, self.max_column
+            row, column = self.row_counter, self.col_counter
 
         if not self.data_only and element.find(FORMULA_TAG) is not None:
             data_type = 'f'
@@ -258,22 +261,27 @@
         attrs = dict(row.attrib)
 
         if "r" in attrs:
-            self.max_row = int(attrs['r'])
+            self.row_counter = int(attrs['r'])
         else:
-            self.max_row += 1
+            self.row_counter += 1
+        self.col_counter = 0
 
         keys = {k for k in attrs if not k.startswith('{')}
-        if keys != {'r', 'spans'} and keys != {'r'}:
+        if keys - {'r', 'spans'}:
             # don't create dimension objects unless they have relevant 
information
-            self.row_dimensions[attrs['r']] = attrs
+            self.row_dimensions[str(self.row_counter)] = attrs
 
         cells = [self.parse_cell(el) for el in row]
-        return self.max_row, cells
+        return self.row_counter, cells
 
 
     def parse_formatting(self, element):
-        cf = ConditionalFormatting.from_tree(element)
-        self.formatting.append(cf)
+        try:
+            cf = ConditionalFormatting.from_tree(element)
+            self.formatting.append(cf)
+        except TypeError:
+            msg = f"Failed to load a conditional formatting rule. It will be 
discarded. Cause: {traceback.format_exc()}"
+            warn(msg)
 
 
     def parse_sheet_protection(self, element):
@@ -299,17 +307,19 @@
 
     def parse_row_breaks(self, element):
         brk = RowBreak.from_tree(element)
-        self.page_breaks.append(brk)
+        self.row_breaks = brk
 
 
     def parse_col_breaks(self, element):
         brk = ColBreak.from_tree(element)
-        self.page_breaks.append(brk)
+        self.col_breaks = brk
 
 
     def parse_custom_views(self, element):
-        # clear page_breaks to avoid duplication
-        self.page_breaks = []
+        # clear page_breaks to avoid duplication which Excel doesn't like
+        # basically they're ignored in custom views
+        self.row_breaks = RowBreak()
+        self.col_breaks = ColBreak()
 
 
 class WorksheetReader(object):
@@ -332,7 +342,8 @@
                 c.data_type = cell['data_type']
                 self.ws._cells[(cell['row'], cell['column'])] = c
         self.ws.formula_attributes = self.parser.array_formulae
-        self.ws._current_row = self.parser.max_row
+        if self.ws._cells:
+            self.ws._current_row = self.ws.max_row # use cells not row 
dimensions
 
 
     def bind_formatting(self):
@@ -371,8 +382,19 @@
                         except AttributeError:
                             pass
             else:
-                self.ws[link.ref].hyperlink = link
+                cell = self.ws[link.ref]
+                if isinstance(cell, MergedCell):
+                    cell = self.normalize_merged_cell_link(cell.coordinate)
+                cell.hyperlink = link
 
+    def normalize_merged_cell_link(self, coord):
+        """
+        Returns the appropriate cell to which a hyperlink, which references a 
merged cell at the specified coordinates,
+        should be bound.
+        """
+        for rng in self.ws.merged_cells:
+            if coord in rng:
+                return self.ws.cell(*rng.top[0])
 
     def bind_col_dimensions(self):
         for col, cd in self.parser.column_dimensions.items():
@@ -394,7 +416,7 @@
         for k in ('print_options', 'page_margins', 'page_setup',
                   'HeaderFooter', 'auto_filter', 'data_validations',
                   'sheet_properties', 'views', 'sheet_format',
-                  'page_breaks', 'scenarios', 'legacy_drawing'):
+                  'row_breaks', 'col_breaks', 'scenarios', 'legacy_drawing'):
             v = getattr(self.parser, k, None)
             if v is not None:
                 setattr(self.ws, k, v)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.1/openpyxl/worksheet/_writer.py 
new/openpyxl-3.0.3/openpyxl/worksheet/_writer.py
--- old/openpyxl-3.0.1/openpyxl/worksheet/_writer.py    2019-11-14 
14:10:24.000000000 +0100
+++ new/openpyxl-3.0.3/openpyxl/worksheet/_writer.py    2019-11-25 
18:57:01.000000000 +0100
@@ -234,7 +234,7 @@
 
 
     def write_breaks(self):
-        brks = self.ws.page_breaks
+        brks = (self.ws.row_breaks, self.ws.col_breaks)
         for brk in brks:
             if brk:
                 self.xf.send(brk.to_tree())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.1/openpyxl/worksheet/dimensions.py 
new/openpyxl-3.0.3/openpyxl/worksheet/dimensions.py
--- old/openpyxl-3.0.1/openpyxl/worksheet/dimensions.py 2019-11-14 
14:10:24.000000000 +0100
+++ new/openpyxl-3.0.3/openpyxl/worksheet/dimensions.py 2019-11-25 
18:57:01.000000000 +0100
@@ -8,6 +8,7 @@
     column_index_from_string,
     range_boundaries,
 )
+from openpyxl.utils.units import DEFAULT_COLUMN_WIDTH
 from openpyxl.descriptors import (
     Integer,
     Float,
@@ -134,7 +135,7 @@
     def __init__(self,
                  worksheet,
                  index='A',
-                 width=0,
+                 width=DEFAULT_COLUMN_WIDTH,
                  bestFit=False,
                  hidden=False,
                  outlineLevel=0,
@@ -227,20 +228,19 @@
             return value.min
 
         el = Element('cols')
-        obj = None
         outlines = set()
 
         for col in sorted(self.values(), key=sorter):
             obj = col.to_tree()
-            outlines.add(col.outlineLevel)
             if obj is not None:
+                outlines.add(col.outlineLevel)
                 el.append(obj)
 
         if outlines:
             self.max_outline = max(outlines)
 
-        if obj is not None:
-            return el
+        if len(el):
+            return el # must have at least one child
 
 
 class SheetFormatProperties(Serialisable):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.1/openpyxl/worksheet/worksheet.py 
new/openpyxl-3.0.3/openpyxl/worksheet/worksheet.py
--- old/openpyxl-3.0.1/openpyxl/worksheet/worksheet.py  2019-11-14 
14:10:24.000000000 +0100
+++ new/openpyxl-3.0.3/openpyxl/worksheet/worksheet.py  2019-11-25 
18:57:01.000000000 +0100
@@ -102,7 +102,6 @@
                                                  
default_factory=self._add_column)
         self.row_breaks = RowBreak()
         self.col_breaks = ColBreak()
-        self.page_breaks = (self.row_breaks, self.col_breaks)
         self._cells = {}
         self._charts = []
         self._images = []
@@ -150,6 +149,12 @@
     def active_cell(self):
         return self.sheet_view.selection[0].activeCell
 
+
+    @property
+    def page_breaks(self):
+        return (self.row_breaks, self.col_breaks) # legacy, remove at some 
point
+
+
     @property
     def show_gridlines(self):
         return self.sheet_view.showGridLines
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.1/openpyxl/xml/functions.py 
new/openpyxl-3.0.3/openpyxl/xml/functions.py
--- old/openpyxl-3.0.1/openpyxl/xml/functions.py        2019-11-13 
10:08:15.000000000 +0100
+++ new/openpyxl-3.0.3/openpyxl/xml/functions.py        2020-01-10 
17:42:44.000000000 +0100
@@ -7,59 +7,39 @@
 # Python stdlib imports
 import re
 from functools import partial
-# compatibility
 
-# package imports
 from openpyxl import DEFUSEDXML, LXML
 
 if LXML is True:
     from lxml.etree import (
     Element,
-    ElementTree,
     SubElement,
     register_namespace,
     QName,
     xmlfile,
     XMLParser,
     )
-    from lxml.etree import XMLSyntaxError
-
-    if DEFUSEDXML is True:
-        from defusedxml.common import DefusedXmlException
-        from defusedxml.cElementTree import iterparse
-        from defusedxml.lxml import fromstring as _fromstring, tostring
-
-        def fromstring(*args, **kwargs):
-            try:
-                return _fromstring(*args, **kwargs)
-            except XMLSyntaxError as e:
-                raise DefusedXmlException(str(e))
-    else:
-        from lxml.etree import fromstring, tostring
-        from xml.etree.cElementTree import iterparse
-        # do not resolve entities
-        safe_parser = XMLParser(resolve_entities=False)
-        fromstring = partial(fromstring, parser=safe_parser)
+    from lxml.etree import fromstring, tostring
+    # do not resolve entities
+    safe_parser = XMLParser(resolve_entities=False)
+    fromstring = partial(fromstring, parser=safe_parser)
 
 else:
     from xml.etree.ElementTree import (
-    ElementTree,
     Element,
     SubElement,
     fromstring,
     tostring,
-    iterparse,
     QName,
     register_namespace
     )
-    if DEFUSEDXML is True:
-        from defusedxml.cElementTree import (
-        fromstring,
-        tostring,
-        iterparse,
-        )
     from et_xmlfile import xmlfile
+    if DEFUSEDXML is True:
+        from defusedxml.ElementTree import fromstring
 
+from xml.etree.ElementTree import iterparse
+if DEFUSEDXML is True:
+    from defusedxml.ElementTree import iterparse
 
 from openpyxl.xml.constants import (
     CHART_NS,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.1/openpyxl.egg-info/PKG-INFO 
new/openpyxl-3.0.3/openpyxl.egg-info/PKG-INFO
--- old/openpyxl-3.0.1/openpyxl.egg-info/PKG-INFO       2019-11-14 
14:10:34.000000000 +0100
+++ new/openpyxl-3.0.3/openpyxl.egg-info/PKG-INFO       2020-01-10 
17:44:02.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: openpyxl
-Version: 3.0.1
+Version: 3.0.3
 Summary: A Python library to read/write Excel 2010 xlsx/xlsm files
 Home-page: https://openpyxl.readthedocs.io
 Author: See AUTHORS


Reply via email to