Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-mysqlclient for 
openSUSE:Factory checked in at 2026-03-24 18:48:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-mysqlclient (Old)
 and      /work/SRC/openSUSE:Factory/.python-mysqlclient.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-mysqlclient"

Tue Mar 24 18:48:02 2026 rev:26 rq:1342103 version:2.2.8

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-mysqlclient/python-mysqlclient.changes    
2025-06-10 08:57:27.704008656 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-mysqlclient.new.8177/python-mysqlclient.changes
  2026-03-24 18:48:20.329154558 +0100
@@ -1,0 +2,12 @@
+Mon Mar 23 20:58:36 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 2.2.8:
+  * Add local_infile_dir option to restrict LOAD DATA LOCAL
+    INFILE file path.
+  * Add Python 3.14 and drop Python 3.8, 3.9 support.
+  * Experimental support for free threaded Python. Importing
+    MySQLdb doesn't enable the GIL anymore. This doesn't mean
+    mysqlclient is thread safe. You must not use same connection
+    object from multiple threads concurrently.
+
+-------------------------------------------------------------------

Old:
----
  mysqlclient-2.2.7.tar.gz

New:
----
  mysqlclient-2.2.8.tar.gz

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

Other differences:
------------------
++++++ python-mysqlclient.spec ++++++
--- /var/tmp/diff_new_pack.lM7SYR/_old  2026-03-24 18:48:20.885177098 +0100
+++ /var/tmp/diff_new_pack.lM7SYR/_new  2026-03-24 18:48:20.889177260 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-mysqlclient
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -27,7 +27,7 @@
 %bcond_with test
 %endif
 Name:           python-mysqlclient%{psuffix}
-Version:        2.2.7
+Version:        2.2.8
 Release:        0
 Summary:        Python interface to MySQL
 License:        GPL-2.0-or-later

++++++ mysqlclient-2.2.7.tar.gz -> mysqlclient-2.2.8.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mysqlclient-2.2.7/HISTORY.rst 
new/mysqlclient-2.2.8/HISTORY.rst
--- old/mysqlclient-2.2.7/HISTORY.rst   2025-01-10 12:26:10.000000000 +0100
+++ new/mysqlclient-2.2.8/HISTORY.rst   2026-02-10 09:27:59.000000000 +0100
@@ -1,4 +1,18 @@
 ======================
+ What's new in 2.2.8
+======================
+
+Release: 2026-02-10
+
+* Add ``local_infile_dir`` option to restrict LOAD DATA LOCAL INFILE file 
path. (#755)
+* windows wheel: Update mariadb-connector to 3.4.8 (#773)
+* Add Python 3.14 and drop Python 3.8, 3.9 support. (#774)
+* Experimental support for free threaded Python. Importing ``MySQLdb`` doesn't
+  enable the GIL anymore. This doesn't mean mysqlclient is thread safe.
+  You must not use same connection object from multiple threads concurrently. 
(#775)
+
+
+======================
  What's new in 2.2.7
 ======================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mysqlclient-2.2.7/PKG-INFO 
new/mysqlclient-2.2.8/PKG-INFO
--- old/mysqlclient-2.2.7/PKG-INFO      2025-01-10 12:29:56.780702000 +0100
+++ new/mysqlclient-2.2.8/PKG-INFO      2026-02-10 09:31:55.582916300 +0100
@@ -1,15 +1,14 @@
-Metadata-Version: 2.2
+Metadata-Version: 2.4
 Name: mysqlclient
-Version: 2.2.7
+Version: 2.2.8
 Summary: Python interface to MySQL
 Author-email: Inada Naoki <[email protected]>
-License: GNU General Public License v2 or later (GPLv2+)
+License-Expression: GPL-2.0-or-later
 Project-URL: Project, https://github.com/PyMySQL/mysqlclient
 Project-URL: Documentation, https://mysqlclient.readthedocs.io/
 Keywords: MySQL
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: Other Environment
-Classifier: License :: OSI Approved :: GNU General Public License v2 or later 
(GPLv2+)
 Classifier: Operating System :: MacOS :: MacOS X
 Classifier: Operating System :: Microsoft :: Windows :: Windows NT/2000
 Classifier: Operating System :: OS Independent
@@ -19,17 +18,17 @@
 Classifier: Programming Language :: C
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
 Classifier: Topic :: Database
 Classifier: Topic :: Database :: Database Engines/Servers
-Requires-Python: >=3.8
+Requires-Python: >=3.10
 Description-Content-Type: text/markdown
 License-File: LICENSE
+Dynamic: license-file
 
 # mysqlclient
 
@@ -54,6 +53,17 @@
 * [MySQL Support](https://dev.mysql.com/support/)
 * [Getting Help With 
MariaDB](https://mariadb.com/kb/en/getting-help-with-mariadb/)
 
+## Free threading Python
+
+> [!NOTE]
+> The support for Free threading Python is experimental.
+
+Since v2.2.8, free threading is supported when importing the extension module. 
Therefore, importing MySQLdb does not acquire GIL.
+
+However, this library does not support simultaneous operations on a single 
Connection object from multiple threads, regardless of free threading, and the 
behavior in such cases remains undefined.
+
+> [!WARNING]
+> Do not use a single Connection object from multiple threads simultaneously.
 
 ## Install
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mysqlclient-2.2.7/README.md 
new/mysqlclient-2.2.8/README.md
--- old/mysqlclient-2.2.7/README.md     2025-01-10 12:26:10.000000000 +0100
+++ new/mysqlclient-2.2.8/README.md     2026-02-10 09:27:59.000000000 +0100
@@ -21,6 +21,17 @@
 * [MySQL Support](https://dev.mysql.com/support/)
 * [Getting Help With 
MariaDB](https://mariadb.com/kb/en/getting-help-with-mariadb/)
 
+## Free threading Python
+
+> [!NOTE]
+> The support for Free threading Python is experimental.
+
+Since v2.2.8, free threading is supported when importing the extension module. 
Therefore, importing MySQLdb does not acquire GIL.
+
+However, this library does not support simultaneous operations on a single 
Connection object from multiple threads, regardless of free threading, and the 
behavior in such cases remains undefined.
+
+> [!WARNING]
+> Do not use a single Connection object from multiple threads simultaneously.
 
 ## Install
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mysqlclient-2.2.7/doc/user_guide.rst 
new/mysqlclient-2.2.8/doc/user_guide.rst
--- old/mysqlclient-2.2.7/doc/user_guide.rst    2025-01-10 12:26:10.000000000 
+0100
+++ new/mysqlclient-2.2.8/doc/user_guide.rst    2026-02-10 09:27:59.000000000 
+0100
@@ -396,6 +396,17 @@
         server_public_key_path
             specifies path to a RSA public key used by caching sha2 password 
authentication.
             See 
https://dev.mysql.com/doc/refman/9.0/en/caching-sha2-pluggable-authentication.html
+        
+        local_infile
+            sets ``MYSQL_OPT_LOCAL_INFILE`` in ``mysql_options()`` enabling 
LOAD LOCAL INFILE from any path; zero disables;
+
+            *This must be a keyword parameter.*
+        
+        local_infile_dir
+            sets ``MYSQL_OPT_LOAD_DATA_LOCAL_DIR`` in ``mysql_options()`` 
enabling LOAD LOCAL INFILE from any path; 
+            if ``local_infile`` is set to ``True`` then this is ignored;
+
+            *This must be a keyword parameter.*
 
 .. _mysql_ssl_set: http://dev.mysql.com/doc/refman/en/mysql-ssl-set.html
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mysqlclient-2.2.7/pyproject.toml 
new/mysqlclient-2.2.8/pyproject.toml
--- old/mysqlclient-2.2.7/pyproject.toml        2025-01-10 12:26:10.000000000 
+0100
+++ new/mysqlclient-2.2.8/pyproject.toml        2026-02-10 09:27:59.000000000 
+0100
@@ -2,16 +2,15 @@
 name = "mysqlclient"
 description = "Python interface to MySQL"
 readme = "README.md"
-requires-python = ">=3.8"
+requires-python = ">=3.10"
 authors = [
     {name = "Inada Naoki", email = "[email protected]"}
 ]
-license = {text = "GNU General Public License v2 or later (GPLv2+)"}
+license = "GPL-2.0-or-later"
 keywords = ["MySQL"]
 classifiers = [
     "Development Status :: 5 - Production/Stable",
     "Environment :: Other Environment",
-    "License :: OSI Approved :: GNU General Public License v2 or later 
(GPLv2+)",
     "Operating System :: MacOS :: MacOS X",
     "Operating System :: Microsoft :: Windows :: Windows NT/2000",
     "Operating System :: OS Independent",
@@ -21,12 +20,11 @@
     "Programming Language :: C",
     "Programming Language :: Python",
     "Programming Language :: Python :: 3",
-    "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 :: 3.13",
+    "Programming Language :: Python :: 3.14",
     "Topic :: Database",
     "Topic :: Database :: Database Engines/Servers",
 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mysqlclient-2.2.7/src/MySQLdb/_mysql.c 
new/mysqlclient-2.2.8/src/MySQLdb/_mysql.c
--- old/mysqlclient-2.2.7/src/MySQLdb/_mysql.c  2025-01-10 12:26:10.000000000 
+0100
+++ new/mysqlclient-2.2.8/src/MySQLdb/_mysql.c  2026-02-10 09:27:59.000000000 
+0100
@@ -48,6 +48,10 @@
 #define HAVE_MYSQL_SERVER_PUBLIC_KEY
 #endif
 
+#if !defined(MARIADB_VERSION_ID) && MYSQL_VERSION_ID >= 80021
+#define HAVE_MYSQL_OPT_LOCAL_INFILE_DIR
+#endif
+
 #define PY_SSIZE_T_CLEAN 1
 #include "Python.h"
 
@@ -436,7 +440,7 @@
                   "client_flag", "ssl", "ssl_mode",
                   "local_infile",
                   "read_timeout", "write_timeout", "charset",
-                  "auth_plugin", "server_public_key_path",
+                  "auth_plugin", "server_public_key_path", "local_infile_dir",
                   NULL } ;
     int connect_timeout = 0;
     int read_timeout = 0;
@@ -448,14 +452,15 @@
          *read_default_group=NULL,
          *charset=NULL,
          *auth_plugin=NULL,
-         *server_public_key_path=NULL;
+         *server_public_key_path=NULL,
+         *local_infile_dir=NULL;
 
     self->converter = NULL;
     self->open = false;
     self->reconnect = false;
 
     if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                "|ssssisOiiisssiOsiiisss:connect",
+                "|ssssisOiiisssiOsiiissss:connect",
                 kwlist,
                 &host, &user, &passwd, &db,
                 &port, &unix_socket, &conv,
@@ -469,7 +474,8 @@
                 &write_timeout,
                 &charset,
                 &auth_plugin,
-                &server_public_key_path
+                &server_public_key_path,
+                &local_infile_dir
     ))
         return -1;
 
@@ -479,6 +485,13 @@
         return -1;
     }
 #endif
+
+#ifndef HAVE_MYSQL_OPT_LOCAL_INFILE_DIR
+    if (local_infile_dir) {
+        PyErr_SetString(_mysql_NotSupportedError, "local_infile_dir is not 
supported");
+        return -1;
+    }
+#endif
     // For compatibility with PyPy, we need to keep strong reference
     // to unicode objects until we use UTF8.
 #define _stringsuck(d,t,s) {t=PyMapping_GetItemString(s,#d);\
@@ -599,6 +612,12 @@
     }
 #endif
 
+#ifdef HAVE_MYSQL_OPT_LOCAL_INFILE_DIR
+    if (local_infile_dir) {
+        mysql_options(&(self->connection), MYSQL_OPT_LOAD_DATA_LOCAL_DIR, 
local_infile_dir);
+    }
+#endif
+
     Py_BEGIN_ALLOW_THREADS
     conn = mysql_real_connect(&(self->connection), host, user, passwd, db,
                   port, unix_socket, client_flag);
@@ -2892,7 +2911,9 @@
 
     module = PyModule_Create(&_mysqlmodule);
     if (!module) return module; /* this really should never happen */
-
+#ifdef Py_GIL_DISABLED
+    PyUnstable_Module_SetGIL(module, Py_MOD_GIL_NOT_USED);
+#endif
     if (!(dict = PyModule_GetDict(module))) goto error;
     if (PyDict_SetItemString(dict, "version_info",
                    PyRun_String(QUOTE(version_info), Py_eval_input,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mysqlclient-2.2.7/src/MySQLdb/connections.py 
new/mysqlclient-2.2.8/src/MySQLdb/connections.py
--- old/mysqlclient-2.2.7/src/MySQLdb/connections.py    2025-01-10 
12:26:10.000000000 +0100
+++ new/mysqlclient-2.2.8/src/MySQLdb/connections.py    2026-02-10 
09:27:59.000000000 +0100
@@ -142,7 +142,13 @@
             See 
https://dev.mysql.com/doc/refman/9.0/en/caching-sha2-pluggable-authentication.html
 
         :param bool local_infile:
-            enables LOAD LOCAL INFILE; zero disables
+            sets ``MYSQL_OPT_LOCAL_INFILE`` in ``mysql_options()`` enabling 
LOAD LOCAL INFILE from any path; zero disables;
+            
+        :param str local_infile_dir:
+            sets ``MYSQL_OPT_LOAD_DATA_LOCAL_DIR`` in ``mysql_options()`` 
enabling LOAD LOCAL INFILE from any path; 
+            if ``local_infile`` is set to ``True`` then this is ignored;
+            
+            supported for mysql version >= 8.0.21
 
         :param bool autocommit:
             If False (default), autocommit is disabled.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mysqlclient-2.2.7/src/MySQLdb/release.py 
new/mysqlclient-2.2.8/src/MySQLdb/release.py
--- old/mysqlclient-2.2.7/src/MySQLdb/release.py        2025-01-10 
12:26:10.000000000 +0100
+++ new/mysqlclient-2.2.8/src/MySQLdb/release.py        2026-02-10 
09:27:59.000000000 +0100
@@ -1,3 +1,3 @@
 __author__ = "Inada Naoki <[email protected]>"
-__version__ = "2.2.7"
-version_info = (2, 2, 7, "final", 0)
+__version__ = "2.2.8"
+version_info = (2, 2, 8, "final", 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mysqlclient-2.2.7/src/mysqlclient.egg-info/PKG-INFO 
new/mysqlclient-2.2.8/src/mysqlclient.egg-info/PKG-INFO
--- old/mysqlclient-2.2.7/src/mysqlclient.egg-info/PKG-INFO     2025-01-10 
12:29:56.000000000 +0100
+++ new/mysqlclient-2.2.8/src/mysqlclient.egg-info/PKG-INFO     2026-02-10 
09:31:55.000000000 +0100
@@ -1,15 +1,14 @@
-Metadata-Version: 2.2
+Metadata-Version: 2.4
 Name: mysqlclient
-Version: 2.2.7
+Version: 2.2.8
 Summary: Python interface to MySQL
 Author-email: Inada Naoki <[email protected]>
-License: GNU General Public License v2 or later (GPLv2+)
+License-Expression: GPL-2.0-or-later
 Project-URL: Project, https://github.com/PyMySQL/mysqlclient
 Project-URL: Documentation, https://mysqlclient.readthedocs.io/
 Keywords: MySQL
 Classifier: Development Status :: 5 - Production/Stable
 Classifier: Environment :: Other Environment
-Classifier: License :: OSI Approved :: GNU General Public License v2 or later 
(GPLv2+)
 Classifier: Operating System :: MacOS :: MacOS X
 Classifier: Operating System :: Microsoft :: Windows :: Windows NT/2000
 Classifier: Operating System :: OS Independent
@@ -19,17 +18,17 @@
 Classifier: Programming Language :: C
 Classifier: Programming Language :: Python
 Classifier: Programming Language :: Python :: 3
-Classifier: Programming Language :: Python :: 3.8
-Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
 Classifier: Topic :: Database
 Classifier: Topic :: Database :: Database Engines/Servers
-Requires-Python: >=3.8
+Requires-Python: >=3.10
 Description-Content-Type: text/markdown
 License-File: LICENSE
+Dynamic: license-file
 
 # mysqlclient
 
@@ -54,6 +53,17 @@
 * [MySQL Support](https://dev.mysql.com/support/)
 * [Getting Help With 
MariaDB](https://mariadb.com/kb/en/getting-help-with-mariadb/)
 
+## Free threading Python
+
+> [!NOTE]
+> The support for Free threading Python is experimental.
+
+Since v2.2.8, free threading is supported when importing the extension module. 
Therefore, importing MySQLdb does not acquire GIL.
+
+However, this library does not support simultaneous operations on a single 
Connection object from multiple threads, regardless of free threading, and the 
behavior in such cases remains undefined.
+
+> [!WARNING]
+> Do not use a single Connection object from multiple threads simultaneously.
 
 ## Install
 

Reply via email to