Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-openpyxl for openSUSE:Factory 
checked in at 2022-02-15 23:57:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-openpyxl (Old)
 and      /work/SRC/openSUSE:Factory/.python-openpyxl.new.1956 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-openpyxl"

Tue Feb 15 23:57:09 2022 rev:17 rq:954098 version:3.0.9

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-openpyxl/python-openpyxl.changes  
2021-07-27 14:32:30.227457850 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-openpyxl.new.1956/python-openpyxl.changes    
    2022-02-15 23:57:24.432233544 +0100
@@ -1,0 +2,20 @@
+Sat Feb 12 23:30:53 UTC 2022 - Arun Persaud <[email protected]>
+
+- specfile:
+  * update copyright year
+  * be a bit more specific in the %files section
+
+- update to version 3.0.9:
+  * Bugfixes
+    + #1284 Ignore blank ignored in existing Data Validations
+    + #1539 Add support for cell protection for merged cell ranges
+    + #1645 Timezone-aware datetimes raise an Exception
+    + #1666 Improved normalisation of chart series
+    + #1670 Catch OverflowError for out of range datetimes
+    + #1708 Alignment.relativeIndent can be negative
+    + #1736 Incorrect default value groupBy attribute
+
+- changes from version 3.0.8:
+  * Deleted because it contained breaking changes from 3.1
+
+-------------------------------------------------------------------

Old:
----
  openpyxl-3.0.7.tar.gz

New:
----
  openpyxl-3.0.9.tar.gz

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

Other differences:
------------------
++++++ python-openpyxl.spec ++++++
--- /var/tmp/diff_new_pack.yeVJGA/_old  2022-02-15 23:57:24.880234782 +0100
+++ /var/tmp/diff_new_pack.yeVJGA/_new  2022-02-15 23:57:24.884234793 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-openpyxl
 #
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define         skip_python2 1
 Name:           python-openpyxl
-Version:        3.0.7
+Version:        3.0.9
 Release:        0
 Summary:        A Python library to read/write Excel 2010 xlsx/xlsm files
 License:        MIT AND Python-2.0
@@ -53,6 +53,9 @@
 %files %{python_files}
 %doc AUTHORS.rst README.rst
 %license LICENSE.rst
-%{python_sitelib}/*
+%dir %{python_sitelib}/openpyxl
+%{python_sitelib}/openpyxl/*
+%dir %{python_sitelib}/openpyxl-%{version}-py*.egg-info
+%{python_sitelib}/openpyxl-%{version}-py*.egg-info/*
 
 %changelog

++++++ openpyxl-3.0.7.tar.gz -> openpyxl-3.0.9.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/AUTHORS.rst 
new/openpyxl-3.0.9/AUTHORS.rst
--- old/openpyxl-3.0.7/AUTHORS.rst      2021-03-09 20:07:14.000000000 +0100
+++ new/openpyxl-3.0.9/AUTHORS.rst      2021-09-22 14:51:26.000000000 +0200
@@ -86,6 +86,7 @@
 * Wojciech Rola
 * Wolfgane Scherer
 * Yaroslav Halchenko
+* Yash Jhunjhunwala
 * Yingjie Lan
 * Leetao
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/PKG-INFO new/openpyxl-3.0.9/PKG-INFO
--- old/openpyxl-3.0.7/PKG-INFO 2021-03-09 20:08:45.333473200 +0100
+++ new/openpyxl-3.0.9/PKG-INFO 2021-09-22 14:54:55.150464500 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: openpyxl
-Version: 3.0.7
+Version: 3.0.9
 Summary: A Python library to read/write Excel 2010 xlsx/xlsm files
 Home-page: https://openpyxl.readthedocs.io
 Author: See AUTHORS
@@ -80,4 +80,4 @@
 Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
-Requires-Python: >=3.6, 
+Requires-Python: >=3.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/openpyxl/_constants.py 
new/openpyxl-3.0.9/openpyxl/_constants.py
--- old/openpyxl-3.0.7/openpyxl/_constants.py   2021-03-09 20:07:14.000000000 
+0100
+++ new/openpyxl-3.0.9/openpyxl/_constants.py   2021-09-22 14:51:26.000000000 
+0200
@@ -9,4 +9,5 @@
 __license__ = "MIT"
 __maintainer_email__ = "[email protected]"
 __url__ = "https://openpyxl.readthedocs.io";
-__version__ = "3.0.7"
+__version__ = "3.0.9"
+__python__ = "3.6"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/openpyxl/cell/_writer.py 
new/openpyxl-3.0.9/openpyxl/cell/_writer.py
--- old/openpyxl-3.0.7/openpyxl/cell/_writer.py 2021-03-09 20:07:14.000000000 
+0100
+++ new/openpyxl-3.0.9/openpyxl/cell/_writer.py 2021-09-22 14:51:26.000000000 
+0200
@@ -3,7 +3,7 @@
 from openpyxl.compat import safe_string
 from openpyxl.xml.functions import Element, SubElement, whitespace, XML_NS, 
REL_NS
 from openpyxl import LXML
-from openpyxl.utils.datetime import to_excel, days_to_time, to_ISO8601
+from openpyxl.utils.datetime import to_excel, to_ISO8601
 from datetime import timedelta
 
 
@@ -24,6 +24,10 @@
     value = cell._value
 
     if cell.data_type == "d":
+        if hasattr(value, "tzinfo") and value.tzinfo is not None:
+            raise TypeError("Excel does not support timezones in datetimes. "
+                    "The tzinfo in the datetime/time object must be set to 
None.")
+
         if cell.parent.parent.iso_dates and not isinstance(value, timedelta):
             value = to_ISO8601(value)
         else:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/openpyxl/chart/_chart.py 
new/openpyxl-3.0.9/openpyxl/chart/_chart.py
--- old/openpyxl-3.0.7/openpyxl/chart/_chart.py 2021-01-14 19:58:19.000000000 
+0100
+++ new/openpyxl-3.0.9/openpyxl/chart/_chart.py 2021-09-22 14:51:26.000000000 
+0200
@@ -1,6 +1,7 @@
 # Copyright (c) 2010-2021 openpyxl
 
 from collections import OrderedDict
+from operator import attrgetter
 
 from openpyxl.descriptors import (
     Typed,
@@ -107,6 +108,18 @@
         return super(ChartBase, self).to_tree(tagname, idx)
 
 
+    def _reindex(self):
+        """
+        Normalise and rebase series: sort by order and then rebase order
+
+        """
+        # sort data series in order and rebase
+        ds = sorted(self.series, key=attrgetter("order"))
+        for idx, s in enumerate(ds):
+            s.order = idx
+        self.series = ds
+
+
     def _write(self):
         from .chartspace import ChartSpace, ChartContainer
         self.plot_area.layout = self.layout
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/openpyxl/chart/reader.py 
new/openpyxl-3.0.9/openpyxl/chart/reader.py
--- old/openpyxl-3.0.7/openpyxl/chart/reader.py 2021-01-14 19:58:19.000000000 
+0100
+++ new/openpyxl-3.0.9/openpyxl/chart/reader.py 2021-09-22 14:51:26.000000000 
+0200
@@ -24,5 +24,6 @@
     chart.pivotSource = cs.pivotSource
     chart.pivotFormats = cs.chart.pivotFmts
     chart.idx_base = min((s.idx for s in chart.series), default=0)
+    chart._reindex()
 
     return chart
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/openpyxl/chart/series.py 
new/openpyxl-3.0.9/openpyxl/chart/series.py
--- old/openpyxl-3.0.7/openpyxl/chart/series.py 2021-01-14 19:58:19.000000000 
+0100
+++ new/openpyxl-3.0.9/openpyxl/chart/series.py 2021-09-10 17:27:11.000000000 
+0200
@@ -162,10 +162,12 @@
         self.smooth = smooth
         self.explosion = explosion
 
+
     def to_tree(self, tagname=None, idx=None):
+        """The index can need rebasing"""
         if idx is not None:
             if self.order == self.idx:
-                self.order = idx
+                self.order = idx # rebase the order if the index has been 
rebased
             self.idx = idx
         return super(Series, self).to_tree(tagname)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/openpyxl/pivot/cache.py 
new/openpyxl-3.0.9/openpyxl/pivot/cache.py
--- old/openpyxl-3.0.7/openpyxl/pivot/cache.py  2021-01-14 19:58:19.000000000 
+0100
+++ new/openpyxl-3.0.9/openpyxl/pivot/cache.py  2021-09-22 14:31:12.000000000 
+0200
@@ -671,7 +671,7 @@
     def __init__(self,
                  autoStart=True,
                  autoEnd=True,
-                 groupBy=range,
+                 groupBy="range",
                  startNum=None,
                  endNum=None,
                  startDate=None,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/openpyxl/styles/alignment.py 
new/openpyxl-3.0.9/openpyxl/styles/alignment.py
--- old/openpyxl-3.0.7/openpyxl/styles/alignment.py     2021-01-14 
19:58:19.000000000 +0100
+++ new/openpyxl-3.0.9/openpyxl/styles/alignment.py     2021-09-10 
17:27:11.000000000 +0200
@@ -37,8 +37,8 @@
     wrap_text = Alias('wrapText')
     shrinkToFit = Bool(allow_none=True)
     shrink_to_fit = Alias('shrinkToFit')
-    indent = Min(min=0)
-    relativeIndent = Min(min=0)
+    indent = MinMax(min=0, max=255)
+    relativeIndent = MinMax(min=-255, max=255)
     justifyLastLine = Bool(allow_none=True)
     readingOrder = Min(min=0)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/openpyxl/styles/differential.py 
new/openpyxl-3.0.9/openpyxl/styles/differential.py
--- old/openpyxl-3.0.7/openpyxl/styles/differential.py  2021-01-14 
19:58:19.000000000 +0100
+++ new/openpyxl-3.0.9/openpyxl/styles/differential.py  2021-09-10 
17:27:11.000000000 +0200
@@ -1,8 +1,6 @@
 # Copyright (c) 2010-2021 openpyxl
 
 from openpyxl.descriptors import (
-    Integer,
-    String,
     Typed,
     Sequence,
     Alias,
@@ -11,8 +9,6 @@
 from openpyxl.styles import (
     Font,
     Fill,
-    GradientFill,
-    PatternFill,
     Border,
     Alignment,
     Protection,
@@ -53,16 +49,17 @@
 
 class DifferentialStyleList(Serialisable):
     """
-    Deduping container for differential styles.
+    Dedupable container for differential styles.
     """
 
     tagname = "dxfs"
 
     dxf = Sequence(expected_type=DifferentialStyle)
     styles = Alias("dxf")
+    __attrs__ = ("count",)
 
 
-    def __init__(self, dxf=()):
+    def __init__(self, dxf=(), count=None):
         self.dxf = dxf
 
 
@@ -89,6 +86,10 @@
         return bool(self.styles)
 
 
-
     def __getitem__(self, idx):
         return self.styles[idx]
+
+
+    @property
+    def count(self):
+        return len(self.dxf)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/openpyxl/styles/stylesheet.py 
new/openpyxl-3.0.9/openpyxl/styles/stylesheet.py
--- old/openpyxl-3.0.7/openpyxl/styles/stylesheet.py    2021-03-09 
20:07:14.000000000 +0100
+++ new/openpyxl-3.0.9/openpyxl/styles/stylesheet.py    2021-09-10 
17:27:11.000000000 +0200
@@ -197,23 +197,28 @@
     node = fromstring(src)
     stylesheet = Stylesheet.from_tree(node)
 
-    wb._borders = IndexedList(stylesheet.borders)
-    wb._fonts = IndexedList(stylesheet.fonts)
-    wb._fills = IndexedList(stylesheet.fills)
-    wb._differential_styles.styles = stylesheet.dxfs
-    wb._number_formats = stylesheet.number_formats
-    wb._protections = stylesheet.protections
-    wb._alignments = stylesheet.alignments
-    wb._table_styles = stylesheet.tableStyles
-
-    # need to overwrite openpyxl defaults in case workbook has different ones
-    wb._cell_styles = stylesheet.cell_styles
-    wb._named_styles = stylesheet.named_styles
-    wb._date_formats = stylesheet.date_formats
-    wb._timedelta_formats = stylesheet.timedelta_formats
+    if stylesheet.cell_styles:
 
-    for ns in wb._named_styles:
-        ns.bind(wb)
+        wb._borders = IndexedList(stylesheet.borders)
+        wb._fonts = IndexedList(stylesheet.fonts)
+        wb._fills = IndexedList(stylesheet.fills)
+        wb._differential_styles.styles = stylesheet.dxfs
+        wb._number_formats = stylesheet.number_formats
+        wb._protections = stylesheet.protections
+        wb._alignments = stylesheet.alignments
+        wb._table_styles = stylesheet.tableStyles
+
+        # need to overwrite openpyxl defaults in case workbook has different 
ones
+        wb._cell_styles = stylesheet.cell_styles
+        wb._named_styles = stylesheet.named_styles
+        wb._date_formats = stylesheet.date_formats
+        wb._timedelta_formats = stylesheet.timedelta_formats
+
+        for ns in wb._named_styles:
+            ns.bind(wb)
+
+    else:
+        warn("Workbook contains no stylesheet, using openpyxl's defaults")
 
     if not wb._named_styles:
         normal = styles['Normal']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/openpyxl/utils/_accel.py 
new/openpyxl-3.0.9/openpyxl/utils/_accel.py
--- old/openpyxl-3.0.7/openpyxl/utils/_accel.py 2020-08-19 17:55:14.000000000 
+0200
+++ new/openpyxl-3.0.9/openpyxl/utils/_accel.py 1970-01-01 01:00:00.000000000 
+0100
@@ -1,144 +0,0 @@
-# cython: language_level=3
-# cython: infer_types=True
-
-import cython
-
-MAX_COL_INDEX = cython.declare(cython.int, 18278)
-
-
-def cache_column_letters(col_string_cache: list, string_col_cache: list):
-    letters: str
-    from string import ascii_uppercase as letters
-
-    letter0 = letter1 = letter2 = letter3 = 0
-    ch1 = ch2 = ch3 = prefix = letters[0]
-    for i in range(1, MAX_COL_INDEX + 1):
-        ch0 = letters[letter0]
-        if i > 26*26*26:
-            col = ch3 + prefix + ch0
-        elif i > 26 * 26:
-            col = prefix + ch0
-        elif i > 26:
-            col = ch1 + ch0
-        else:
-            col = ch0
-        string_col_cache[i] = col
-        col_string_cache[i] = i
-
-        # next digit in base-26
-        letter0 += 1
-        if letter0 >= 26:
-            letter0 = 0
-            letter1 += 1
-            if letter1 >= 26:
-                letter1 = 0
-                letter2 += 1
-                if letter2 >= 26:
-                    letter2 = 0
-                    letter3 += 1
-                    ch3 = letters[letter3]
-                ch2 = letters[letter2]
-            ch1 = letters[letter1]
-            prefix = ch2 + ch1
-
-
-_COL_STRING_CACHE = cython.declare(list, [0] * MAX_COL_INDEX)
-_STRING_COL_CACHE = cython.declare(list, [0] * MAX_COL_INDEX)
-#cache_column_letters(_STRING_COL_CACHE, _STRING_COL_CACHE)
-
-
-def get_column_letter(idx):
-    """Convert a column index into a column letter
-    (3 -> 'C')
-    """
-    int_idx = cython.cast(cython.int, idx)  # may also raise ValueError
-    if 1 <= int_idx <= MAX_COL_INDEX:
-        return _STRING_COL_CACHE[int_idx]
-    raise ValueError(f"Invalid column index {idx}")
-
-
-def column_index_from_string(str_col: str):
-    """Convert a column name into a numerical index
-    ('A' -> 1)
-    """
-    # we use a function argument to get indexed name lookup
-    col: cython.int = 0
-    invalid = MAX_COL_INDEX + 1
-    for ch in str_col:
-        if 'A' <= ch <= 'Z':
-            digit = ord(ch) - ord('A')
-        elif 'a' <= ch <= 'z':
-            digit = ord(ch) - ord('a')
-        else:
-            col = invalid
-            break
-        col = col * 26 + digit
-        if col >= invalid:
-            break
-    if col >= invalid:
-        raise ValueError(f"{str_col} is not a valid column name")
-    return _COL_STRING_CACHE[col]
-
-
-def coordinate_to_tuple(coordinate: str):
-    """
-    Convert an Excel style coordinate to (row, colum) tuple
-    """
-    length = len(coordinate)
-    if not (2 <= length <= 1 + 3 + 1 + 7):  # A1 - $ZZZ$12345
-        raise ValueError(f"invalid coordinate: {coordinate}")
-    start: cython.int = 1 if coordinate[0] == '$' else 0
-
-    i: cython.int = start
-    col: cython.int = 0
-    digit: cython.int
-    while i < length:
-        ch = coordinate[i]
-        if 'A' <= ch <= 'Z':
-            digit = ord(ch) - ord('A')
-        elif 'a' <= ch <= 'z':
-            digit = ord(ch) - ord('a')
-        else:
-            break
-        col = col * 26 + digit
-        i += 1
-
-    if i >= length or i > start + 3:
-        raise ValueError(f"invalid coordinate: {coordinate}")
-
-    if coordinate[i] == '$':
-        i += 1
-
-    row: cython.int = 0
-    while i < length and '0' <= coordinate[i] <= '9':
-        row = row * 10 + (ord(coordinate[i]) - ord('0'))
-        i += 1
-
-    if i < length:
-        raise ValueError(f"invalid coordinate: {coordinate}")
-
-    return row, col
-
-
-def cast_number(value: str):
-    """
-    Convert numbers as string to an int or float
-    """
-    # optimises for the common case of integers that fit into a C long
-    intval: cython.long = 0
-    safe_max_long: cython.long = 2 ** (cython.sizeof(cython.long) * 8 - 2)
-    too_large = safe_max_long + 10
-    for ch in value:
-        if ch in '.eE':
-            return float(value)
-        elif ch in '0123456789':
-            if intval >= safe_max_long // 10:
-                intval = too_large
-            else:
-                intval = intval * 10 + (ord(ch) - ord('0'))
-        else:
-            intval = too_large
-
-    if intval < too_large:
-        return intval
-    return int(value)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/openpyxl/utils/datetime.py 
new/openpyxl-3.0.9/openpyxl/utils/datetime.py
--- old/openpyxl-3.0.7/openpyxl/utils/datetime.py       2021-03-09 
20:07:14.000000000 +0100
+++ new/openpyxl-3.0.9/openpyxl/utils/datetime.py       2021-09-10 
17:27:11.000000000 +0200
@@ -1,11 +1,9 @@
-from __future__ import division
 # Copyright (c) 2010-2021 openpyxl
 
 """Manage Excel date weirdness."""
 
 # Python stdlib imports
 import datetime
-from datetime import timedelta, timezone
 from math import isnan
 import re
 
@@ -19,7 +17,6 @@
 CALENDAR_MAC_1904 = MAC_EPOCH
 SECS_PER_DAY = 86400
 
-EPOCH = datetime.datetime.utcfromtimestamp(0)
 ISO_FORMAT = '%Y-%m-%dT%H:%M:%SZ'
 ISO_REGEX = re.compile(r'''
 (?P<date>(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2}))?T?
@@ -122,13 +119,8 @@
     return epoch + datetime.timedelta(days=day) + diff
 
 
-UTC = timezone(timedelta(0))
-
-
 def time_to_days(value):
     """Convert a time value to fractions of day"""
-    if value.tzinfo is not None:
-        value = value.astimezone(UTC)
     return (
         (value.hour * 3600)
         + (value.minute * 60)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/openpyxl/worksheet/_reader.py 
new/openpyxl-3.0.9/openpyxl/worksheet/_reader.py
--- old/openpyxl-3.0.7/openpyxl/worksheet/_reader.py    2021-03-09 
20:07:14.000000000 +0100
+++ new/openpyxl-3.0.9/openpyxl/worksheet/_reader.py    2021-09-22 
14:51:26.000000000 +0200
@@ -206,8 +206,8 @@
                         value = from_excel(
                             value, self.epoch, timedelta=style_id in 
self.timedelta_formats
                         )
-                    except ValueError:
-                        msg = """Cell {0} is marked as a date but the serial 
value {1} is outside the limits for dates. The cell will be treated as an 
error.""".format(coordinate, value)
+                    except (OverflowError, ValueError):
+                        msg = f"""Cell {coordinate} is marked as a date but 
the serial value {value} is outside the limits for dates. The cell will be 
treated as an error."""
                         warn(msg)
                         data_type = "e"
                         value = "#VALUE!"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/openpyxl/worksheet/datavalidation.py 
new/openpyxl-3.0.9/openpyxl/worksheet/datavalidation.py
--- old/openpyxl-3.0.7/openpyxl/worksheet/datavalidation.py     2021-01-14 
19:58:19.000000000 +0100
+++ new/openpyxl-3.0.9/openpyxl/worksheet/datavalidation.py     2021-09-10 
17:27:11.000000000 +0200
@@ -108,7 +108,6 @@
                  type=None,
                  formula1=None,
                  formula2=None,
-                 allow_blank=False,
                  showErrorMessage=True,
                  showInputMessage=True,
                  showDropDown=None,
@@ -121,6 +120,7 @@
                  errorTitle=None,
                  imeMode=None,
                  operator=None,
+                 allow_blank=None,
                  ):
         self.sqref = sqref
         self.showDropDown = showDropDown
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/openpyxl/worksheet/merge.py 
new/openpyxl-3.0.9/openpyxl/worksheet/merge.py
--- old/openpyxl-3.0.7/openpyxl/worksheet/merge.py      2021-03-09 
20:07:14.000000000 +0100
+++ new/openpyxl-3.0.9/openpyxl/worksheet/merge.py      2021-09-22 
14:31:12.000000000 +0200
@@ -1,5 +1,7 @@
 # Copyright (c) 2010-2021 openpyxl
 
+import copy
+
 from openpyxl.descriptors.serialisable import Serialisable
 from openpyxl.descriptors import (
     Integer,
@@ -117,6 +119,19 @@
                     self.ws._cells[(cell.row, cell.column)] = cell
                 cell.border += border
 
+        protected = self.start_cell.protection is not None
+        if protected:
+            protection = copy.copy(self.start_cell.protection)
+        for coord in self.cells:
+            cell = self.ws._cells.get(coord)
+            if cell is None:
+                row, col = coord
+                cell = MergedCell(self.ws, row=row, column=col)
+                self.ws._cells[(cell.row, cell.column)] = cell
+
+            if protected:
+                cell.protection = protection
+
 
     def __contains__(self, coord):
         return coord in CellRange(self.coord)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/openpyxl.egg-info/PKG-INFO 
new/openpyxl-3.0.9/openpyxl.egg-info/PKG-INFO
--- old/openpyxl-3.0.7/openpyxl.egg-info/PKG-INFO       2021-03-09 
20:08:44.000000000 +0100
+++ new/openpyxl-3.0.9/openpyxl.egg-info/PKG-INFO       2021-09-22 
14:54:54.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: openpyxl
-Version: 3.0.7
+Version: 3.0.9
 Summary: A Python library to read/write Excel 2010 xlsx/xlsm files
 Home-page: https://openpyxl.readthedocs.io
 Author: See AUTHORS
@@ -80,4 +80,4 @@
 Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
-Requires-Python: >=3.6, 
+Requires-Python: >=3.6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/openpyxl.egg-info/SOURCES.txt 
new/openpyxl-3.0.9/openpyxl.egg-info/SOURCES.txt
--- old/openpyxl-3.0.7/openpyxl.egg-info/SOURCES.txt    2021-03-09 
20:08:44.000000000 +0100
+++ new/openpyxl-3.0.9/openpyxl.egg-info/SOURCES.txt    2021-09-22 
14:54:54.000000000 +0200
@@ -133,7 +133,6 @@
 openpyxl/styles/stylesheet.py
 openpyxl/styles/table.py
 openpyxl/utils/__init__.py
-openpyxl/utils/_accel.py
 openpyxl/utils/bound_dictionary.py
 openpyxl/utils/cell.py
 openpyxl/utils/dataframe.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/openpyxl-3.0.7/setup.py new/openpyxl-3.0.9/setup.py
--- old/openpyxl-3.0.7/setup.py 2021-03-09 20:07:14.000000000 +0100
+++ new/openpyxl-3.0.9/setup.py 2021-09-10 17:27:11.000000000 +0200
@@ -37,7 +37,7 @@
 __maintainer_email__ = constants.__maintainer_email__
 __url__ = constants.__url__
 __version__ = constants.__version__
-
+__python__ = constants.__python__
 
 def cythonize_modules():
     from Cython.Build import cythonize
@@ -74,7 +74,7 @@
     author_email=__author_email__,
     url=__url__,
     license=__license__,
-    python_requires=">=3.6, ",
+    python_requires=f">={__python__}",
     install_requires=[
         'et_xmlfile',
         ],

Reply via email to