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',
],