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
