Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-agate-excel for 
openSUSE:Factory checked in at 2023-12-03 20:49:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-agate-excel (Old)
 and      /work/SRC/openSUSE:Factory/.python-agate-excel.new.25432 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-agate-excel"

Sun Dec  3 20:49:11 2023 rev:8 rq:1130507 version:0.4.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-agate-excel/python-agate-excel.changes    
2023-03-10 22:07:16.941105848 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-agate-excel.new.25432/python-agate-excel.changes
 2023-12-03 20:49:30.403304330 +0100
@@ -1,0 +2,22 @@
+Sat Dec  2 19:39:42 UTC 2023 - Dirk Müller <dmuel...@suse.com>
+
+- update to 0.4.1:
+  * fix: :meth:`.Table.from_xlsx` no longer errors on unsized
+    sheets.
+  * The ``reset_dimensions`` argument to :meth:`.Table.from_xlsx`
+    defaults to ``None`` instead of ``False``. If
+    ``reset_dimensions`` is ``None``, and if the worksheet's
+    dimensions are ``A1:A1``, recalculate the worksheet's
+    dimensions. To disable this behavior, set
+    ``reset_dimensions`` to ``False``.
+  * If the ``reset_dimensions`` argument to
+    :meth:`.Table.from_xlsx` is set, recalculate the worksheet's
+    dimensions, instead of assuming that the table's width
+    matches the first row's.
+  * The ``reset_dimensions`` argument to :meth:`.Table.from_xlsx`
+    is ignored if the ``read_only`` argument is false.
+  * Add Python 3.8, 3.9, 3.10, 3.11, 3.12 support.
+  * Drop support for 3.5 (2020-09-13), 3.6 (2021-12-23), 3.7
+- drop python-agate-excel-no-python2.patch (upstream)
+
+-------------------------------------------------------------------

Old:
----
  0.2.5.tar.gz
  python-agate-excel-no-python2.patch

New:
----
  0.4.1.tar.gz

BETA DEBUG BEGIN:
  Old:  * Drop support for 3.5 (2020-09-13), 3.6 (2021-12-23), 3.7
- drop python-agate-excel-no-python2.patch (upstream)
BETA DEBUG END:

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

Other differences:
------------------
++++++ python-agate-excel.spec ++++++
--- /var/tmp/diff_new_pack.giEW6Z/_old  2023-12-03 20:49:33.195406891 +0100
+++ /var/tmp/diff_new_pack.giEW6Z/_new  2023-12-03 20:49:33.203407186 +0100
@@ -16,29 +16,26 @@
 #
 
 
-%define         skip_python2 1
 Name:           python-agate-excel
-Version:        0.2.5
+Version:        0.4.1
 Release:        0
 Summary:        Read support for Excel files (xls and xlsx) for agate
 License:        MIT
 URL:            https://github.com/wireservice/agate-excel
 Source:         
https://github.com/wireservice/agate-excel/archive/%{version}.tar.gz
-# 
https://github.com/wireservice/agate-excel/commit/833dc6d39dda3e4b025e3e4dc61533622d65cc5f
-Patch0:         python-agate-excel-no-python2.patch
 BuildRequires:  %{python_module agate >= 1.5.0}
+BuildRequires:  %{python_module numpy}
 BuildRequires:  %{python_module olefile}
 BuildRequires:  %{python_module openpyxl >= 2.3.0}
 BuildRequires:  %{python_module pytest}
 BuildRequires:  %{python_module setuptools}
-BuildRequires:  %{python_module six}
 BuildRequires:  %{python_module xlrd >= 0.9.4}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 Requires:       python-agate >= 1.5.0
+Requires:       python-numpy
 Requires:       python-olefile
 Requires:       python-openpyxl >= 2.3.0
-Requires:       python-six
 Requires:       python-xlrd >= 0.9.4
 BuildArch:      noarch
 %python_subpackages

++++++ 0.2.5.tar.gz -> 0.4.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-excel-0.2.5/.github/workflows/ci.yml 
new/agate-excel-0.4.1/.github/workflows/ci.yml
--- old/agate-excel-0.2.5/.github/workflows/ci.yml      2021-08-09 
00:07:03.000000000 +0200
+++ new/agate-excel-0.4.1/.github/workflows/ci.yml      2023-11-20 
21:13:29.000000000 +0100
@@ -2,28 +2,21 @@
 on: [push, pull_request]
 jobs:
   build:
+    if: github.event_name == 'push' || 
github.event.pull_request.head.repo.full_name != github.repository
     runs-on: ${{ matrix.os }}
     strategy:
       matrix:
         os: [macos-latest, windows-latest, ubuntu-latest]
-        python-version: [2.7, 3.6, 3.7, 3.8, 3.9, pypy-2.7, pypy-3.6, pypy-3.7]
+        python-version: [3.8, 3.9, '3.10', '3.11', '3.12', pypy-3.9]
     steps:
-      - uses: actions/checkout@v2
-      - uses: actions/setup-python@v2
+      - uses: actions/checkout@v3
+      - uses: actions/setup-python@v4
         with:
           python-version: ${{ matrix.python-version }}
-      # 
https://github.com/actions/cache/blob/main/examples.md#using-a-script-to-get-cache-location
-      - id: pip-cache
-        run: python -c "from pip._internal.locations import USER_CACHE_DIR; 
print('::set-output name=dir::' + USER_CACHE_DIR)"
-      - uses: actions/cache@v1
-        with:
-          path: ${{ steps.pip-cache.outputs.dir }}
-          key: ${{ runner.os }}-pip-${{ hashFiles('**/setup.py') }}
-          restore-keys: |
-            ${{ runner.os }}-pip-
-      - run: pip install --upgrade check-manifest flake8 isort setuptools
-      - run: check-manifest
-      - run: flake8 .
-      - run: isort . --check-only
-      - run: pip install .[test]
-      - run: nosetests
+          cache: pip
+          cache-dependency-path: setup.py
+      - run: pip install .[test] coveralls
+      - run: pytest --cov agateexcel
+      - env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        run: coveralls --service=github
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-excel-0.2.5/.github/workflows/lint.yml 
new/agate-excel-0.4.1/.github/workflows/lint.yml
--- old/agate-excel-0.2.5/.github/workflows/lint.yml    1970-01-01 
01:00:00.000000000 +0100
+++ new/agate-excel-0.4.1/.github/workflows/lint.yml    2023-11-20 
21:13:29.000000000 +0100
@@ -0,0 +1,19 @@
+name: Lint
+on: [push, pull_request]
+env:
+  BASEDIR: 
https://raw.githubusercontent.com/open-contracting/standard-maintenance-scripts/main
+jobs:
+  build:
+    if: github.event_name == 'push' || 
github.event.pull_request.head.repo.full_name != github.repository
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v3
+      - uses: actions/setup-python@v4
+        with:
+          python-version: '3.10'
+          cache: pip
+          cache-dependency-path: setup.py
+      - run: pip install --upgrade check-manifest flake8 isort setuptools
+      - run: check-manifest
+      - run: flake8 .
+      - run: isort . --check-only
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-excel-0.2.5/.github/workflows/pypi.yml 
new/agate-excel-0.4.1/.github/workflows/pypi.yml
--- old/agate-excel-0.2.5/.github/workflows/pypi.yml    1970-01-01 
01:00:00.000000000 +0100
+++ new/agate-excel-0.4.1/.github/workflows/pypi.yml    2023-11-20 
21:13:29.000000000 +0100
@@ -0,0 +1,23 @@
+name: Publish to PyPI
+on: push
+jobs:
+  build:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v3
+      - uses: actions/setup-python@v4
+        with:
+          python-version: '3.10'
+      - run: pip install --upgrade build
+      - run: python -m build --sdist --wheel
+      - name: Publish to TestPyPI
+        uses: pypa/gh-action-pypi-publish@release/v1
+        with:
+          password: ${{ secrets.TEST_PYPI_API_TOKEN }}
+          repository-url: https://test.pypi.org/legacy/
+          skip-existing: true
+      - name: Publish to PyPI
+        if: startsWith(github.ref, 'refs/tags')
+        uses: pypa/gh-action-pypi-publish@release/v1
+        with:
+          password: ${{ secrets.PYPI_API_TOKEN }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-excel-0.2.5/.readthedocs.yaml 
new/agate-excel-0.4.1/.readthedocs.yaml
--- old/agate-excel-0.2.5/.readthedocs.yaml     1970-01-01 01:00:00.000000000 
+0100
+++ new/agate-excel-0.4.1/.readthedocs.yaml     2023-11-20 21:13:29.000000000 
+0100
@@ -0,0 +1,11 @@
+version: 2
+build:
+  os: ubuntu-20.04
+  tools:
+    python: "3.9"
+python:
+  install:
+    - path: .
+    - requirements: docs/requirements.txt
+sphinx:
+  fail_on_warning: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-excel-0.2.5/CHANGELOG.rst 
new/agate-excel-0.4.1/CHANGELOG.rst
--- old/agate-excel-0.2.5/CHANGELOG.rst 2021-08-09 00:07:03.000000000 +0200
+++ new/agate-excel-0.4.1/CHANGELOG.rst 2023-11-20 21:13:29.000000000 +0100
@@ -1,3 +1,21 @@
+0.4.1 - November 20, 2023
+-------------------------
+
+* fix: :meth:`.Table.from_xlsx` no longer errors on unsized sheets.
+
+0.4.0 - November 7, 2023
+------------------------
+
+* The ``reset_dimensions`` argument to :meth:`.Table.from_xlsx` defaults to 
``None`` instead of ``False``. If ``reset_dimensions`` is ``None``, and if the 
worksheet's dimensions are ``A1:A1``, recalculate the worksheet's dimensions. 
To disable this behavior, set ``reset_dimensions`` to ``False``.
+
+0.3.0 - October 30, 2023
+------------------------
+
+* If the ``reset_dimensions`` argument to :meth:`.Table.from_xlsx` is set, 
recalculate the worksheet's dimensions, instead of assuming that the table's 
width matches the first row's.
+* The ``reset_dimensions`` argument to :meth:`.Table.from_xlsx` is ignored if 
the ``read_only`` argument is false.
+* Add Python 3.8, 3.9, 3.10, 3.11, 3.12 support.
+* Drop support for 3.5 (2020-09-13), 3.6 (2021-12-23), 3.7 (2023-06-27).
+
 0.2.5 - August 8, 2021
 ----------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-excel-0.2.5/MANIFEST.in 
new/agate-excel-0.4.1/MANIFEST.in
--- old/agate-excel-0.2.5/MANIFEST.in   2021-08-09 00:07:03.000000000 +0200
+++ new/agate-excel-0.4.1/MANIFEST.in   2023-11-20 21:13:29.000000000 +0100
@@ -3,7 +3,9 @@
 include COPYING
 recursive-include docs *.py
 recursive-include docs *.rst
+recursive-include docs *.txt
 recursive-include docs Makefile
 recursive-include examples *.xls
 recursive-include examples *.xlsx
 recursive-include tests *.py
+exclude .readthedocs.yaml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-excel-0.2.5/README.rst 
new/agate-excel-0.4.1/README.rst
--- old/agate-excel-0.2.5/README.rst    2021-08-09 00:07:03.000000000 +0200
+++ new/agate-excel-0.4.1/README.rst    2023-11-20 21:13:29.000000000 +0100
@@ -2,6 +2,10 @@
     :target: https://github.com/wireservice/agate-excel/actions
     :alt: Build status
 
+.. image:: 
https://coveralls.io/repos/wireservice/agate-excel/badge.svg?branch=master
+    :target: https://coveralls.io/r/wireservice/agate-excel
+    :alt: Coverage status
+
 .. image:: https://img.shields.io/pypi/dm/agate-excel.svg
     :target: https://pypi.python.org/pypi/agate-excel
     :alt: PyPI downloads
@@ -22,7 +26,7 @@
 
 Important links:
 
-* agate             http://agate.rtfd.org
-* Documentation:    http://agate-excel.rtfd.org
+* agate             https://agate.rtfd.org
+* Documentation:    https://agate-excel.rtfd.org
 * Repository:       https://github.com/wireservice/agate-excel
 * Issues:           https://github.com/wireservice/agate-excel/issues
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-excel-0.2.5/agateexcel/__init__.py 
new/agate-excel-0.4.1/agateexcel/__init__.py
--- old/agate-excel-0.2.5/agateexcel/__init__.py        2021-08-09 
00:07:03.000000000 +0200
+++ new/agate-excel-0.4.1/agateexcel/__init__.py        2023-11-20 
21:13:29.000000000 +0100
@@ -1,4 +1,2 @@
-#!/usr/bin/env python
-
 import agateexcel.table_xls
 import agateexcel.table_xlsx
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-excel-0.2.5/agateexcel/table_xls.py 
new/agate-excel-0.4.1/agateexcel/table_xls.py
--- old/agate-excel-0.2.5/agateexcel/table_xls.py       2021-08-09 
00:07:03.000000000 +0200
+++ new/agate-excel-0.4.1/agateexcel/table_xls.py       2023-11-20 
21:13:29.000000000 +0100
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-
 """
 This module contains the XLS extension to :class:`Table <agate.table.Table>`.
 """
@@ -9,7 +7,6 @@
 
 import agate
 import olefile
-import six
 import xlrd
 
 EXCEL_TO_AGATE_TYPE = {
@@ -53,7 +50,7 @@
                 d = ole.openstream('Workbook')
                 book = xlrd.open_workbook(file_contents=d.read(), 
on_demand=True)
             else:
-                raise IOError('No Workbook stream found in OLE file')
+                raise OSError('No Workbook stream found in OLE file')
         return book
 
     if hasattr(path, 'read'):
@@ -72,7 +69,7 @@
         tables = OrderedDict()
 
         for i, sheet in enumerate(sheets):
-            if isinstance(sheet, six.string_types):
+            if isinstance(sheet, str):
                 sheet = book.sheet_by_name(sheet)
             elif isinstance(sheet, int):
                 sheet = book.sheet_by_index(sheet)
@@ -109,7 +106,7 @@
                         agate_type = agate.Date()
 
                 if header:
-                    name = six.text_type(sheet.cell_value(skip_lines, i)) or 
None
+                    name = str(sheet.cell_value(skip_lines, i)) or None
                     column_names.append(name)
 
                 columns.append(values)
@@ -137,8 +134,7 @@
 
     if multiple:
         return agate.MappedSequence(tables.values(), tables.keys())
-    else:
-        return tables.popitem()[1]
+    return tables.popitem()[1]
 
 
 def determine_agate_type(excel_type):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-excel-0.2.5/agateexcel/table_xlsx.py 
new/agate-excel-0.4.1/agateexcel/table_xlsx.py
--- old/agate-excel-0.2.5/agateexcel/table_xlsx.py      2021-08-09 
00:07:03.000000000 +0200
+++ new/agate-excel-0.4.1/agateexcel/table_xlsx.py      2023-11-20 
21:13:29.000000000 +0100
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-
 """
 This module contains the XLSX extension to :class:`Table <agate.table.Table>`.
 """
@@ -9,13 +7,12 @@
 
 import agate
 import openpyxl
-import six
 
 NULL_TIME = datetime.time(0, 0, 0)
 
 
 def from_xlsx(cls, path, sheet=None, skip_lines=0, header=True, read_only=True,
-              reset_dimensions=False, row_limit=None, **kwargs):
+              reset_dimensions=None, row_limit=None, **kwargs):
     """
     Parse an XLSX file.
 
@@ -28,6 +25,9 @@
         The number of rows to skip from the top of the sheet.
     :param header:
         If :code:`True`, the first row is assumed to contain column names.
+    :param read_only:
+        If :code:`True`, the XLSX file is opened in read-only mode, to reduce
+        memory consumption.
     :param reset_dimensions:
         If :code:`True`, do not trust the dimensions in the file's properties,
         and recalculate them based on the data in the file.
@@ -53,7 +53,7 @@
     tables = OrderedDict()
 
     for i, sheet in enumerate(sheets):
-        if isinstance(sheet, six.string_types):
+        if isinstance(sheet, str):
             try:
                 sheet = book[sheet]
             except KeyError:
@@ -72,12 +72,20 @@
         offset = 0
         rows = []
 
-        if reset_dimensions:
-            sheet.reset_dimensions()
+        if (
+            read_only
+            and (reset_dimensions or (reset_dimensions is None and 
sheet.max_column == 1 and sheet.max_row == 1))
+        ):
+            try:
+                sheet.reset_dimensions()
+                sheet.calculate_dimension(force=True)
+            # https://foss.heptapod.net/openpyxl/openpyxl/-/issues/2111
+            except UnboundLocalError:
+                pass
 
         if header:
             sheet_header = sheet.iter_rows(min_row=1 + skip_lines, max_row=1 + 
skip_lines)
-            column_names = [None if c.value is None else 
six.text_type(c.value) for row in sheet_header for c in row]
+            column_names = [None if c.value is None else str(c.value) for row 
in sheet_header for c in row]
             offset = 1
 
         if row_limit is None:
@@ -117,8 +125,7 @@
 
     if multiple:
         return agate.MappedSequence(tables.values(), tables.keys())
-    else:
-        return tables.popitem()[1]
+    return tables.popitem()[1]
 
 
 def normalize_datetime(dt):
@@ -129,7 +136,7 @@
 
     if ms < 1000:
         return dt.replace(microsecond=0)
-    elif ms > 999000:
+    if ms > 999000:
         return dt.replace(microsecond=0) + datetime.timedelta(seconds=1)
 
     return dt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-excel-0.2.5/docs/conf.py 
new/agate-excel-0.4.1/docs/conf.py
--- old/agate-excel-0.2.5/docs/conf.py  2021-08-09 00:07:03.000000000 +0200
+++ new/agate-excel-0.4.1/docs/conf.py  2023-11-20 21:13:29.000000000 +0100
@@ -1,225 +1,45 @@
-# -*- coding: utf-8 -*-
+# Configuration file for the Sphinx documentation builder.
 #
-# This file is execfile()d with the current directory set to its containing 
dir.
-#
-# Note that not all possible configuration values are present in this
-# autogenerated file.
-#
-# All configuration values have a default; values that are commented out
-# serve to show the default.
-
+# For the full list of built-in configuration values, see the documentation:
+# https://www.sphinx-doc.org/en/master/usage/configuration.html
 import os
 import sys
 
-# If extensions (or modules to document with autodoc) are in another directory,
-# add these directories to sys.path here. If the directory is relative to the
-# documentation root, use os.path.abspath to make it absolute, like shown here.
 sys.path.insert(0, os.path.abspath('..'))
 
-# -- General configuration 
-----------------------------------------------------
-
-# If your documentation needs a minimal Sphinx version, state it here.
-#needs_sphinx = '1.0'
-
-# Add any Sphinx extension module names here, as strings. They can be 
extensions
-# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx']
-autodoc_member_order = 'bysource'
-
-intersphinx_mapping = {
-    'python': ('http://docs.python.org/3.5/', None),
-    'agate': ('http://agate.readthedocs.org/en/latest/', None)
-}
-
-# Add any paths that contain templates here, relative to this directory.
-templates_path = ['_templates']
-
-# The suffix of source filenames.
-source_suffix = '.rst'
-
-# The encoding of source files.
-#source_encoding = 'utf-8-sig'
+# -- Project information -----------------------------------------------------
+# 
https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
 
-# The master toctree document.
-master_doc = 'index'
-
-# General information about the project.
-project = u'agate-excel'
-copyright = u'2017, Christopher Groskopf'
-
-# The version info for the project you're documenting, acts as replacement for
-# |version| and |release|, also used in various other places throughout the
-# built documents.
-#
-# The short X.Y version.
-version = '0.2.5'
-# The full version, including alpha/beta/rc tags.
+project = 'agate-excel'
+copyright = '2017, Christopher Groskopf'
+version = '0.4.1'
 release = version
 
-# The language for content autogenerated by Sphinx. Refer to documentation
-# for a list of supported languages.
-#language = None
-
-# There are two options for replacing |today|: either, you set today to some
-# non-false value, then it is used:
-#today = ''
-# Else, today_fmt is used as the format for a strftime call.
-#today_fmt = '%B %d, %Y'
-
-# List of patterns, relative to source directory, that match files and
-# directories to ignore when looking for source files.
-exclude_patterns = ['_build']
-
-# The reST default role (used for this markup: `text`) to use for all 
documents.
-#default_role = None
-
-# If true, '()' will be appended to :func: etc. cross-reference text.
-#add_function_parentheses = True
-
-# If true, the current module name will be prepended to all description
-# unit titles (such as .. function::).
-#add_module_names = True
-
-# If true, sectionauthor and moduleauthor directives will be shown in the
-# output. They are ignored by default.
-#show_authors = False
-
-# The name of the Pygments (syntax highlighting) style to use.
-pygments_style = 'sphinx'
-
-# A list of ignored prefixes for module index sorting.
-#modindex_common_prefix = []
-
-
-# -- Options for HTML output 
---------------------------------------------------
-
-# The theme to use for HTML and HTML Help pages.  See the documentation for
-# a list of builtin themes.
-html_theme = 'default'
-
-on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
-
-if not on_rtd:  # only import and set the theme if we're building docs locally
-    import sphinx_rtd_theme
-    html_theme = 'sphinx_rtd_theme'
-    html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
-
-# Theme options are theme-specific and customize the look and feel of a theme
-# further.  For a list of options available for each theme, see the
-# documentation.
-#html_theme_options = {}
-
-# Add any paths that contain custom themes here, relative to this directory.
-#html_theme_path = []
-
-# The name for this set of Sphinx documents.  If None, it defaults to
-# "<project> v<release> documentation".
-#html_title = None
-
-# A shorter title for the navigation bar.  Default is the same as html_title.
-#html_short_title = None
+# -- General configuration ---------------------------------------------------
+# 
https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
 
-# The name of an image file (relative to this directory) to place at the top
-# of the sidebar.
-#html_logo = None
-
-# The name of an image file (within the static path) to use as favicon of the
-# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
-# pixels large.
-#html_favicon = None
-
-# Add any paths that contain custom static files (such as style sheets) here,
-# relative to this directory. They are copied after the builtin static files,
-# so a file named "default.css" will overwrite the builtin "default.css".
-html_static_path = ['_static']
-
-# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
-# using the given strftime format.
-#html_last_updated_fmt = '%b %d, %Y'
-
-# If true, SmartyPants will be used to convert quotes and dashes to
-# typographically correct entities.
-#html_use_smartypants = True
-
-# Custom sidebar templates, maps document names to template names.
-#html_sidebars = {}
-
-# Additional templates that should be rendered to pages, maps page names to
-# template names.
-#html_additional_pages = {}
-
-# If false, no module index is generated.
-#html_domain_indices = True
-
-# If false, no index is generated.
-#html_use_index = True
-
-# If true, the index is split into individual pages for each letter.
-#html_split_index = False
-
-# If true, links to the reST sources are added to the pages.
-#html_show_sourcelink = True
-
-# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
-#html_show_sphinx = True
-
-# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
-#html_show_copyright = True
-
-# If true, an OpenSearch description file will be output, and all pages will
-# contain a <link> tag referring to it.  The value of this option must be the
-# base URL from which the finished HTML is served.
-#html_use_opensearch = ''
-
-# This is the file name suffix for HTML files (e.g. ".xhtml").
-#html_file_suffix = None
-
-# Output file base name for HTML help builder.
-htmlhelp_basename = 'agateexceldoc'
-
-
-# -- Options for LaTeX output 
--------------------------------------------------
-
-# The paper size ('letter' or 'a4').
-#latex_paper_size = 'letter'
-
-# The font size ('10pt', '11pt' or '12pt').
-#latex_font_size = '10pt'
-
-# Grouping the document tree into LaTeX files. List of tuples
-# (source start file, target name, title, author, documentclass 
[howto/manual]).
-latex_documents = [
-  ('index', 'agate-excel.tex', u'agate-excel Documentation',
-   u'Christopher Groskopf', 'manual'),
+extensions = [
+    'sphinx.ext.autodoc',
+    'sphinx.ext.intersphinx'
 ]
 
-# The name of an image file (relative to this directory) to place at the top of
-# the title page.
-#latex_logo = None
-
-# For "manual" documents, if this is true, then toplevel headings are parts,
-# not chapters.
-#latex_use_parts = False
-
-# If true, show page references after internal links.
-#latex_show_pagerefs = False
-
-# If true, show URL addresses after external links.
-#latex_show_urls = False
-
-# Additional stuff for the LaTeX preamble.
-#latex_preamble = ''
+templates_path = ['_templates']
+exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
 
-# Documents to append as an appendix to all manuals.
-#latex_appendices = []
+# -- Options for HTML output -------------------------------------------------
+# 
https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
 
-# If false, no module index is generated.
-#latex_domain_indices = True
+html_theme = 'furo'
 
+htmlhelp_basename = 'agateexceldoc'
 
-# -- Options for manual page output 
--------------------------------------------
+autodoc_default_options = {
+    'members': None,
+    'member-order': 'bysource',
+    'show-inheritance': True,
+}
 
-# One entry per manual page. List of tuples
-# (source start file, name, description, authors, manual section).
-man_pages = [
-]
+intersphinx_mapping = {
+    'python': ('https://docs.python.org/3', None),
+    'agate': ('https://agate.readthedocs.org/en/latest/', None)
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-excel-0.2.5/docs/index.rst 
new/agate-excel-0.4.1/docs/index.rst
--- old/agate-excel-0.2.5/docs/index.rst        2021-08-09 00:07:03.000000000 
+0200
+++ new/agate-excel-0.4.1/docs/index.rst        2023-11-20 21:13:29.000000000 
+0100
@@ -13,7 +13,7 @@
 
     pip install agate-excel
 
-For details on development or supported platforms see the `agate documentation 
<http://agate.readthedocs.org>`_.
+For details on development or supported platforms see the `agate documentation 
<https://agate.readthedocs.org>`_.
 
 Usage
 =====
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-excel-0.2.5/docs/requirements.txt 
new/agate-excel-0.4.1/docs/requirements.txt
--- old/agate-excel-0.2.5/docs/requirements.txt 1970-01-01 01:00:00.000000000 
+0100
+++ new/agate-excel-0.4.1/docs/requirements.txt 2023-11-20 21:13:29.000000000 
+0100
@@ -0,0 +1,3 @@
+furo
+sphinx>2
+docutils>=0.18
Binary files old/agate-excel-0.2.5/examples/covid_19-iss.xlsx and 
new/agate-excel-0.4.1/examples/covid_19-iss.xlsx differ
Binary files old/agate-excel-0.2.5/examples/ne_1033_data.xlsx and 
new/agate-excel-0.4.1/examples/ne_1033_data.xlsx differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-excel-0.2.5/setup.cfg 
new/agate-excel-0.4.1/setup.cfg
--- old/agate-excel-0.2.5/setup.cfg     2021-08-09 00:07:03.000000000 +0200
+++ new/agate-excel-0.4.1/setup.cfg     2023-11-20 21:13:29.000000000 +0100
@@ -4,8 +4,6 @@
     # imported but unused
     agateexcel/__init__.py: F401
     example.py: F401
-    # block comment should start with '# '
-    docs/conf.py: E265
 
 [isort]
 line_length = 119
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-excel-0.2.5/setup.py 
new/agate-excel-0.4.1/setup.py
--- old/agate-excel-0.2.5/setup.py      2021-08-09 00:07:03.000000000 +0200
+++ new/agate-excel-0.4.1/setup.py      2023-11-20 21:13:29.000000000 +0100
@@ -5,13 +5,13 @@
 
 setup(
     name='agate-excel',
-    version='0.2.5',
+    version='0.4.1',
     description='agate-excel adds read support for Excel files (xls and xlsx) 
to agate.',
     long_description=long_description,
     long_description_content_type='text/x-rst',
     author='Christopher Groskopf',
     author_email='chrisgrosk...@gmail.com',
-    url='http://agate-excel.readthedocs.org/',
+    url='https://agate-excel.readthedocs.org/',
     license='MIT',
     classifiers=[
         'Development Status :: 4 - Beta',
@@ -21,11 +21,11 @@
         'Natural Language :: English',
         'Operating System :: OS Independent',
         'Programming Language :: Python',
-        'Programming Language :: Python :: 2.7',
-        'Programming Language :: Python :: 3.6',
-        'Programming Language :: Python :: 3.7',
         'Programming Language :: Python :: 3.8',
         'Programming Language :: Python :: 3.9',
+        'Programming Language :: Python :: 3.10',
+        'Programming Language :: Python :: 3.11',
+        'Programming Language :: Python :: 3.12',
         'Programming Language :: Python :: Implementation :: CPython',
         'Programming Language :: Python :: Implementation :: PyPy',
         'Topic :: Scientific/Engineering :: Information Analysis',
@@ -36,16 +36,12 @@
         'agate>=1.5.0',
         'olefile',
         'openpyxl>=2.3.0',
-        'six',
         'xlrd>=0.9.4',
     ],
     extras_require={
         'test': [
-            'nose>=1.1.2',
-        ],
-        'docs': [
-            'Sphinx>=1.2.2',
-            'sphinx_rtd_theme>=0.1.6',
+            'pytest',
+            'pytest-cov',
         ],
     }
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-excel-0.2.5/tests/test_table_xls.py 
new/agate-excel-0.4.1/tests/test_table_xls.py
--- old/agate-excel-0.2.5/tests/test_table_xls.py       2021-08-09 
00:07:03.000000000 +0200
+++ new/agate-excel-0.4.1/tests/test_table_xls.py       2023-11-20 
21:13:29.000000000 +0100
@@ -1,6 +1,3 @@
-#!/usr/bin/env python
-# -*- coding: utf8 -*-
-
 import datetime
 
 import agate
@@ -12,7 +9,7 @@
     def setUp(self):
         self.rows = (
             (1, 'a', True, '11/4/2015', '11/4/2015 12:22 PM'),
-            (2, u'👍', False, '11/5/2015', '11/4/2015 12:45 PM'),
+            (2, '👍', False, '11/5/2015', '11/4/2015 12:45 PM'),
             (None, 'b', None, None, None),
         )
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-excel-0.2.5/tests/test_table_xlsx.py 
new/agate-excel-0.4.1/tests/test_table_xlsx.py
--- old/agate-excel-0.2.5/tests/test_table_xlsx.py      2021-08-09 
00:07:03.000000000 +0200
+++ new/agate-excel-0.4.1/tests/test_table_xlsx.py      2023-11-20 
21:13:29.000000000 +0100
@@ -1,10 +1,6 @@
-#!/usr/bin/env python
-# -*- coding: utf8 -*-
-
 import datetime
 
 import agate
-import six
 
 import agateexcel  # noqa: F401
 
@@ -13,7 +9,7 @@
     def setUp(self):
         self.rows = (
             (1, 'a', True, '11/4/2015', '11/4/2015 12:22 PM'),
-            (2, u'👍', False, '11/5/2015', '11/4/2015 12:45 PM'),
+            (2, '👍', False, '11/5/2015', '11/4/2015 12:45 PM'),
             (None, 'b', None, None, None),
         )
 
@@ -106,16 +102,10 @@
     def test_ambiguous_date(self):
         table = agate.Table.from_xlsx('examples/test_ambiguous_date.xlsx')
 
-        # openpyxl >= 3 fixes a bug, but Python 2 is constrained to openpyxl < 
3.
-        if six.PY2:
-            expected = datetime.date(1899, 12, 31)
-        else:
-            expected = datetime.date(1900, 1, 1)
-
         self.assertColumnNames(table, ['s'])
         self.assertColumnTypes(table, [agate.Date])
         self.assertRows(table, [
-            [expected],
+            [datetime.date(1900, 1, 1)],
         ])
 
     def test_empty(self):
@@ -147,3 +137,16 @@
         self.assertColumnNames(table, self.column_names)
         self.assertColumnTypes(table, [agate.Number, agate.Text, 
agate.Boolean, agate.Date, agate.DateTime])
         self.assertRows(table, [r.values() for r in self.table.rows])
+
+    def test_from_xlsx_unsized(self):
+        table = agate.Table.from_xlsx('examples/ne_1033_data.xlsx')
+
+        self.assertEqual(len(table.columns), 14)
+        self.assertEqual(len(table.rows), 1036)
+
+    def test_from_xlsx_size_1(self):
+        # https://github.com/wireservice/csvkit/issues/1129
+        table = agate.Table.from_xlsx('examples/covid_19-iss.xlsx')
+
+        self.assertEqual(len(table.columns), 18)
+        self.assertEqual(len(table.rows), 46)

Reply via email to