Script 'mail_helper' called by obssrc
Hello community,

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

Package is "python-agate-sql"

Sun Dec  3 20:49:02 2023 rev:12 rq:1130497 version:0.7.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-agate-sql/python-agate-sql.changes        
2023-05-10 16:18:51.547093475 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-agate-sql.new.25432/python-agate-sql.changes 
    2023-12-03 20:49:21.890991647 +0100
@@ -1,0 +2,9 @@
+Sat Dec  2 17:21:27 UTC 2023 - Dirk Müller <dmuel...@suse.com>
+
+- update to 0.7.0:
+  * Use Fast Executemany Mode
+  * Add Python 3.12 support.
+  * Drop support for Python 3.6 (2021-12-23), 3.7 (2023-06-27).
+  * Allow SQLAlchemy 2. Disallow SQLAlchemy < 1.4.
+
+-------------------------------------------------------------------

Old:
----
  0.5.9.tar.gz

New:
----
  0.7.0.tar.gz

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

Other differences:
------------------
++++++ python-agate-sql.spec ++++++
--- /var/tmp/diff_new_pack.T2PWPR/_old  2023-12-03 20:49:22.411010749 +0100
+++ /var/tmp/diff_new_pack.T2PWPR/_new  2023-12-03 20:49:22.415010896 +0100
@@ -19,7 +19,7 @@
 %{?!python_module:%define python_module() python-%{**} python3-%{**}}
 %define skip_python2 1
 Name:           python-agate-sql
-Version:        0.5.9
+Version:        0.7.0
 Release:        0
 Summary:        SQL read/write support for agate
 License:        MIT
@@ -32,11 +32,11 @@
 BuildRequires:  %{python_module setuptools}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
+Requires:       python-SQLAlchemy
 Requires:       python-agate >= 1.5.0
-Requires:       (python-sqlalchemy >= 1.0.8 with python-sqlalchemy < 2)
 BuildArch:      noarch
 # SECTION test requirements
-BuildRequires:  %{python_module sqlalchemy >= 1.0.8 with %python-sqlalchemy < 
2}
+BuildRequires:  %{python_module SQLAlchemy}
 BuildRequires:  %{python_module agate >= 1.5.0}
 BuildRequires:  %{python_module pytest}
 # /SECTION

++++++ 0.5.9.tar.gz -> 0.7.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-sql-0.5.9/.github/workflows/ci.yml 
new/agate-sql-0.7.0/.github/workflows/ci.yml
--- old/agate-sql-0.5.9/.github/workflows/ci.yml        2023-01-28 
20:54:48.000000000 +0100
+++ new/agate-sql-0.7.0/.github/workflows/ci.yml        2023-10-18 
06:41:37.000000000 +0200
@@ -7,7 +7,7 @@
     strategy:
       matrix:
         os: [macos-latest, windows-latest, ubuntu-latest]
-        python-version: [3.7, 3.8, 3.9, '3.10', '3.11', pypy-3.7]
+        python-version: [3.8, 3.9, '3.10', '3.11', '3.12', pypy-3.9]
     steps:
       - uses: actions/checkout@v3
       - uses: actions/setup-python@v4
@@ -15,5 +15,8 @@
           python-version: ${{ matrix.python-version }}
           cache: pip
           cache-dependency-path: setup.py
-      - run: pip install .[test]
+      - run: pip install .[test] coveralls
       - run: pytest --cov agatesql
+      - env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        run: coveralls --service=github
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-sql-0.5.9/.github/workflows/pypi.yml 
new/agate-sql-0.7.0/.github/workflows/pypi.yml
--- old/agate-sql-0.5.9/.github/workflows/pypi.yml      1970-01-01 
01:00:00.000000000 +0100
+++ new/agate-sql-0.7.0/.github/workflows/pypi.yml      2023-10-18 
06:41:37.000000000 +0200
@@ -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-sql-0.5.9/.readthedocs.yaml 
new/agate-sql-0.7.0/.readthedocs.yaml
--- old/agate-sql-0.5.9/.readthedocs.yaml       1970-01-01 01:00:00.000000000 
+0100
+++ new/agate-sql-0.7.0/.readthedocs.yaml       2023-10-18 06:41:37.000000000 
+0200
@@ -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-sql-0.5.9/AUTHORS.rst 
new/agate-sql-0.7.0/AUTHORS.rst
--- old/agate-sql-0.5.9/AUTHORS.rst     2023-01-28 20:54:48.000000000 +0100
+++ new/agate-sql-0.7.0/AUTHORS.rst     2023-10-18 06:41:37.000000000 +0200
@@ -9,3 +9,4 @@
 * `Jake Zimmerman <https://github.com/jez>`_
 * `Shige Takeda <https://github.com/smtakeda>`_
 * `Roger Webb <https://github.com/RogerWebb>`_
+* `Steve Kowalik <https://github.com/s-t-e-v-e-n-k>`_
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-sql-0.5.9/CHANGELOG.rst 
new/agate-sql-0.7.0/CHANGELOG.rst
--- old/agate-sql-0.5.9/CHANGELOG.rst   2023-01-28 20:54:48.000000000 +0100
+++ new/agate-sql-0.7.0/CHANGELOG.rst   2023-10-18 06:41:37.000000000 +0200
@@ -1,3 +1,15 @@
+0.7.0 - Oct 18, 2023
+--------------------
+
+* feat: Use `Fast Executemany Mode 
<https://docs.sqlalchemy.org/en/20/dialects/mssql.html#fast-executemany-mode>`_ 
when using the PyODBC SQL Server dialect.
+* Add Python 3.12 support.
+* Drop support for Python 3.6 (2021-12-23), 3.7 (2023-06-27).
+
+0.6.0 - Sep 26, 2023
+--------------------
+
+* Allow SQLAlchemy 2. Disallow SQLAlchemy < 1.4.
+
 0.5.9 - Jan 28, 2023
 --------------------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-sql-0.5.9/MANIFEST.in 
new/agate-sql-0.7.0/MANIFEST.in
--- old/agate-sql-0.5.9/MANIFEST.in     2023-01-28 20:54:48.000000000 +0100
+++ new/agate-sql-0.7.0/MANIFEST.in     2023-10-18 06:41:37.000000000 +0200
@@ -4,5 +4,7 @@
 include COPYING
 recursive-include docs *.py
 recursive-include docs *.rst
+recursive-include docs *.txt
 recursive-include docs Makefile
 recursive-include tests *.py
+exclude .readthedocs.yaml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-sql-0.5.9/README.rst 
new/agate-sql-0.7.0/README.rst
--- old/agate-sql-0.5.9/README.rst      2023-01-28 20:54:48.000000000 +0100
+++ new/agate-sql-0.7.0/README.rst      2023-10-18 06:41:37.000000000 +0200
@@ -2,6 +2,10 @@
     :target: https://github.com/wireservice/agate-sql/actions
     :alt: Build status
 
+.. image:: 
https://coveralls.io/repos/wireservice/agate-sql/badge.svg?branch=master
+    :target: https://coveralls.io/r/wireservice/agate-sql
+    :alt: Coverage status
+
 .. image:: https://img.shields.io/pypi/dm/agate-sql.svg
     :target: https://pypi.python.org/pypi/agate-sql
     :alt: PyPI downloads
@@ -22,7 +26,7 @@
 
 Important links:
 
-* agate             http://agate.rtfd.org
-* Documentation:    http://agate-sql.rtfd.org
+* agate             https://agate.rtfd.org
+* Documentation:    https://agate-sql.rtfd.org
 * Repository:       https://github.com/wireservice/agate-sql
 * Issues:           https://github.com/wireservice/agate-sql/issues
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-sql-0.5.9/agatesql/__init__.py 
new/agate-sql-0.7.0/agatesql/__init__.py
--- old/agate-sql-0.5.9/agatesql/__init__.py    2023-01-28 20:54:48.000000000 
+0100
+++ new/agate-sql-0.7.0/agatesql/__init__.py    2023-10-18 06:41:37.000000000 
+0200
@@ -1,3 +1 @@
-#!/usr/bin/env python
-
 import agatesql.table
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-sql-0.5.9/agatesql/table.py 
new/agate-sql-0.7.0/agatesql/table.py
--- old/agate-sql-0.5.9/agatesql/table.py       2023-01-28 20:54:48.000000000 
+0100
+++ new/agate-sql-0.7.0/agatesql/table.py       2023-10-18 06:41:37.000000000 
+0200
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-
 """
 This module contains the agatesql extensions to
 :class:`Table <agate.table.Table>`.
@@ -7,6 +5,7 @@
 
 import datetime
 import decimal
+from urllib.parse import urlsplit
 
 import agate
 from sqlalchemy import Column, MetaData, Table, UniqueConstraint, 
create_engine, dialects
@@ -60,7 +59,11 @@
         connection = connection_or_string
         return None, connection
 
-    engine = create_engine(connection_or_string)
+    kwargs = {}
+    if urlsplit(connection_or_string).scheme == 'mssql+pyodbc':
+        kwargs = {'fast_executemany': True}
+
+    engine = create_engine(connection_or_string, **kwargs)
     connection = engine.connect()
     return engine, connection
 
@@ -79,8 +82,8 @@
     """
     engine, connection = get_engine_and_connection(connection_or_string)
 
-    metadata = MetaData(connection)
-    sql_table = Table(table_name, metadata, autoload=True, 
autoload_with=connection)
+    metadata = MetaData()
+    sql_table = Table(table_name, metadata, autoload_with=connection)
 
     column_names = []
     column_types = []
@@ -110,7 +113,7 @@
         else:
             raise ValueError('Unsupported sqlalchemy column type: %s' % 
type(sql_column.type))
 
-    s = select([sql_table])
+    s = select(sql_table)
 
     rows = connection.execute(s)
 
@@ -179,7 +182,7 @@
     """
     Generates a SQL alchemy table from an agate table.
     """
-    metadata = MetaData(connection)
+    metadata = MetaData()
     sql_table = Table(table_name, metadata, schema=db_schema)
 
     SQL_TYPE_MAP[agate.Boolean] = BOOLEAN_MAP.get(dialect, BOOLEAN)
@@ -216,7 +219,7 @@
                 sql_type_kwargs['scale'] = 
table.aggregate(agate.MaxPrecision(column_name))
 
             # Avoid errors due to NO_ZERO_DATE.
-            # @see 
http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_zero_date
+            # @see 
https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_zero_date
             if not isinstance(column.data_type, agate.DateTime):
                 sql_column_kwargs['nullable'] = 
table.aggregate(agate.HasNulls(column_name))
 
@@ -254,15 +257,15 @@
         Add prefixes to the insert query.
     :param db_schema:
         Create table in the specified database schema.
-    :param constraints
+    :param constraints:
         Generate constraints such as ``nullable`` for table columns.
-    :param unique_constraint
+    :param unique_constraint:
         The names of the columns to include in a UNIQUE constraint.
-    :param chunk_size
+    :param chunk_size:
         Write rows in batches of this size. If not set, rows will be written 
at once.
-    :param col_min_len
+    :param col_min_len:
         The minimum length of text columns.
-    :param col_len_multiplier
+    :param col_len_multiplier:
         Multiply the maximum column length by this multiplier to accomodate 
larger values in later runs.
     """
     engine, connection = get_engine_and_connection(connection_or_string)
@@ -273,25 +276,30 @@
                                min_col_len=min_col_len, 
col_len_multiplier=col_len_multiplier)
 
     if create:
-        if overwrite:
-            sql_table.drop(checkfirst=True)
+        with connection.begin_nested() as conn:
+            if overwrite:
+                sql_table.drop(bind=connection, checkfirst=True)
 
-        sql_table.create(checkfirst=create_if_not_exists)
+            sql_table.create(bind=connection, checkfirst=create_if_not_exists)
+            conn.commit()
 
     if insert:
-        insert = sql_table.insert()
-        for prefix in prefixes:
-            insert = insert.prefix_with(prefix)
-        if chunk_size is None:
-            connection.execute(insert, [dict(zip(self.column_names, row)) for 
row in self.rows])
-        else:
-            number_of_rows = len(self.rows)
-            for index in range((number_of_rows - 1) // chunk_size + 1):
-                end_index = (index + 1) * chunk_size
-                if end_index > number_of_rows:
-                    end_index = number_of_rows
-                connection.execute(insert, [dict(zip(self.column_names, row)) 
for row in
-                                            self.rows[index * 
chunk_size:end_index]])
+        with connection.begin_nested() as conn:
+            insert = sql_table.insert()
+            for prefix in prefixes:
+                insert = insert.prefix_with(prefix)
+            if chunk_size is None:
+                connection.execute(insert, [dict(zip(self.column_names, row)) 
for row in self.rows])
+            else:
+                number_of_rows = len(self.rows)
+                for index in range((number_of_rows - 1) // chunk_size + 1):
+                    end_index = (index + 1) * chunk_size
+                    if end_index > number_of_rows:
+                        end_index = number_of_rows
+                    connection.execute(insert, [dict(zip(self.column_names, 
row)) for row in
+                                                self.rows[index * 
chunk_size:end_index]])
+
+            conn.commit()
 
     try:
         return sql_table
@@ -312,9 +320,9 @@
         The dialect of SQL to use for the table statement.
     :param db_schema:
         Create table in the specified database schema.
-    :param constraints
+    :param constraints:
         Generate constraints such as ``nullable`` for table columns.
-    :param unique_constraint
+    :param unique_constraint:
         The names of the columns to include in a UNIQUE constraint.
     """
     sql_table = make_sql_table(self, table_name, dialect=dialect, 
db_schema=db_schema, constraints=constraints,
@@ -351,7 +359,7 @@
 
     for q in queries:
         if q:
-            rows = connection.execute(q)
+            rows = connection.exec_driver_sql(q)
 
     table = agate.Table(list(rows), column_names=rows._metadata.keys)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-sql-0.5.9/docs/conf.py 
new/agate-sql-0.7.0/docs/conf.py
--- old/agate-sql-0.5.9/docs/conf.py    2023-01-28 20:54:48.000000000 +0100
+++ new/agate-sql-0.7.0/docs/conf.py    2023-10-18 06:41:37.000000000 +0200
@@ -1,224 +1,45 @@
+# 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 = 'agate-sql'
 copyright = '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.5.8'
-# The full version, including alpha/beta/rc tags.
+version = '0.7.0'
 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 = 'agatesqldoc'
-
-
-# -- 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-sql.tex', 'agate-sql Documentation',
-     '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 = 'agatesqldoc'
 
-# -- 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-sql-0.5.9/docs/index.rst 
new/agate-sql-0.7.0/docs/index.rst
--- old/agate-sql-0.5.9/docs/index.rst  2023-01-28 20:54:48.000000000 +0100
+++ new/agate-sql-0.7.0/docs/index.rst  2023-10-18 06:41:37.000000000 +0200
@@ -13,11 +13,11 @@
 
     pip install agate-sql
 
-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>`_.
 
 .. warning::
 
-    You'll need to have the correct `sqlalchemy drivers 
<http://docs.sqlalchemy.org/en/rel_1_0/dialects/index.html>`_ installed for 
whatever database you plan to access. For instance, in order to read/write 
tables in a Postgres database, you'll also need to ``pip install psycopg2``.
+    You'll need to have the correct `sqlalchemy drivers 
<https://docs.sqlalchemy.org/en/rel_1_0/dialects/index.html>`_ installed for 
whatever database you plan to access. For instance, in order to read/write 
tables in a Postgres database, you'll also need to ``pip install psycopg2``.
 
 Usage
 =====
@@ -41,7 +41,7 @@
 
     new_table.to_sql('postgresql:///hospitals', 'doctors')
 
-The first argument to either function can be any valid `sqlalchemy connection 
string <http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html>`_. The second 
argument must be a database name. (Arbitrary SQL queries are not supported.)
+The first argument to either function can be any valid `sqlalchemy connection 
string <https://docs.sqlalchemy.org/en/rel_1_0/core/engines.html>`_. The second 
argument must be a database name. (Arbitrary SQL queries are not supported.)
 
 That's all there is to it.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-sql-0.5.9/docs/requirements.txt 
new/agate-sql-0.7.0/docs/requirements.txt
--- old/agate-sql-0.5.9/docs/requirements.txt   1970-01-01 01:00:00.000000000 
+0100
+++ new/agate-sql-0.7.0/docs/requirements.txt   2023-10-18 06:41:37.000000000 
+0200
@@ -0,0 +1,3 @@
+furo
+sphinx>2
+docutils>=0.18
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-sql-0.5.9/setup.cfg 
new/agate-sql-0.7.0/setup.cfg
--- old/agate-sql-0.5.9/setup.cfg       2023-01-28 20:54:48.000000000 +0100
+++ new/agate-sql-0.7.0/setup.cfg       2023-10-18 06:41:37.000000000 +0200
@@ -4,8 +4,6 @@
     # imported but unused
     agatesql/__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-sql-0.5.9/setup.py new/agate-sql-0.7.0/setup.py
--- old/agate-sql-0.5.9/setup.py        2023-01-28 20:54:48.000000000 +0100
+++ new/agate-sql-0.7.0/setup.py        2023-10-18 06:41:37.000000000 +0200
@@ -5,13 +5,13 @@
 
 setup(
     name='agate-sql',
-    version='0.5.9',
+    version='0.7.0',
     description='agate-sql adds SQL read/write support to agate.',
     long_description=long_description,
     long_description_content_type='text/x-rst',
     author='Christopher Groskopf',
     author_email='chrisgrosk...@gmail.com',
-    url='http://agate-sql.readthedocs.org/',
+    url='https://agate-sql.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 :: 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',
@@ -34,7 +34,7 @@
     packages=find_packages(exclude=['tests', 'tests.*']),
     install_requires=[
         'agate>=1.5.0',
-        'sqlalchemy<2',
+        'sqlalchemy>=1.4',
     ],
     extras_require={
         'test': [
@@ -43,9 +43,5 @@
             'pytest',
             'pytest-cov',
         ],
-        'docs': [
-            'Sphinx>=1.2.2',
-            'sphinx_rtd_theme>=0.1.6',
-        ],
     }
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/agate-sql-0.5.9/tests/test_agatesql.py 
new/agate-sql-0.7.0/tests/test_agatesql.py
--- old/agate-sql-0.5.9/tests/test_agatesql.py  2023-01-28 20:54:48.000000000 
+0100
+++ new/agate-sql-0.7.0/tests/test_agatesql.py  2023-10-18 06:41:37.000000000 
+0200
@@ -1,5 +1,3 @@
-#!/usr/bin/env python
-
 from decimal import Decimal
 from textwrap import dedent
 

Reply via email to