public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: dev-python/logutils/, dev-python/logutils/files/
@ 2025-03-17  9:07 Michał Górny
  0 siblings, 0 replies; only message in thread
From: Michał Górny @ 2025-03-17  9:07 UTC (permalink / raw
  To: gentoo-commits

commit:     2c886f9b9d4e373c7adb0df48742d9aac4af1d5c
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Mon Mar 17 09:00:49 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Mon Mar 17 09:07:34 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2c886f9b

dev-python/logutils: Enable py3.13

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 .../logutils/files/logutils-0.3.5-py313.patch      | 90 ++++++++++++++++++++++
 dev-python/logutils/logutils-0.3.5-r1.ebuild       | 20 ++++-
 2 files changed, 107 insertions(+), 3 deletions(-)

diff --git a/dev-python/logutils/files/logutils-0.3.5-py313.patch b/dev-python/logutils/files/logutils-0.3.5-py313.patch
new file mode 100644
index 000000000000..e6b804f2e042
--- /dev/null
+++ b/dev-python/logutils/files/logutils-0.3.5-py313.patch
@@ -0,0 +1,90 @@
+From f33a518fc04bcb4f875b2c741c7bbee8db9e01d8 Mon Sep 17 00:00:00 2001
+From: Arne Keller <arne.keller@posteo.de>
+Date: Sat, 11 Jan 2025 11:27:21 +0100
+Subject: [PATCH] Fix Python 3.13 compatibility
+
+---
+ logutils/dictconfig.py   |  9 +++++++--
+ tests/test_dictconfig.py | 14 ++++++++++----
+ 2 files changed, 17 insertions(+), 6 deletions(-)
+
+diff --git a/logutils/dictconfig.py b/logutils/dictconfig.py
+index c774552..2e33031 100644
+--- a/logutils/dictconfig.py
++++ b/logutils/dictconfig.py
+@@ -290,7 +290,12 @@ class DictConfigurator(BaseConfigurator):
+             raise ValueError("Unsupported version: %s" % config['version'])
+         incremental = config.pop('incremental', False)
+         EMPTY_DICT = {}
+-        logging._acquireLock()
++        # Python 3.13+ renamed these functions
++        try:
++            acquire, release = logging._prepareFork, logging._afterFork
++        except AttributeError:
++            acquire, release = logging._acquireLock, logging._releaseLock
++        acquire()
+         try:
+             if incremental:
+                 handlers = config.get('handlers', EMPTY_DICT)
+@@ -431,7 +436,7 @@ class DictConfigurator(BaseConfigurator):
+                         raise ValueError('Unable to configure root '
+                                          'logger: %s' % e)
+         finally:
+-            logging._releaseLock()
++            release()
+ 
+     def configure_formatter(self, config):
+         """Configure a formatter from a dictionary."""
+diff --git a/tests/test_dictconfig.py b/tests/test_dictconfig.py
+index 3aee984..e56d267 100644
+--- a/tests/test_dictconfig.py
++++ b/tests/test_dictconfig.py
+@@ -30,6 +30,12 @@ def handlerFunc():
+ class CustomHandler(logging.StreamHandler):
+     pass
+ 
++# Python 3.13+ renamed these functions
++try:
++    acquire, release = logging._prepareFork, logging._afterFork
++except AttributeError:
++    acquire, release = logging._acquireLock, logging._releaseLock
++
+ class ConfigDictTest(unittest.TestCase):
+ 
+     """Reading logging config from a dictionary."""
+@@ -39,7 +45,7 @@ class ConfigDictTest(unittest.TestCase):
+         self.adapter = LoggerAdapter(l, {})
+ 
+         logger_dict = logging.getLogger().manager.loggerDict
+-        logging._acquireLock()
++        acquire()
+         try:
+             self.saved_handlers = logging._handlers.copy()
+             self.saved_handler_list = logging._handlerList[:]
+@@ -50,7 +56,7 @@ class ConfigDictTest(unittest.TestCase):
+                 self.saved_level_to_name = logging._levelToName.copy()
+                 self.saved_name_to_level = logging._nameToLevel.copy()
+         finally:
+-            logging._releaseLock()
++            release()
+ 
+         self.root_logger = logging.getLogger("")
+         self.original_logging_level = self.root_logger.getEffectiveLevel()
+@@ -58,7 +64,7 @@ class ConfigDictTest(unittest.TestCase):
+ 
+     def tearDown(self):
+         self.root_logger.setLevel(self.original_logging_level)
+-        logging._acquireLock()
++        acquire()
+         try:
+             if hasattr(logging, '_levelNames'):
+                 logging._levelNames.clear()
+@@ -75,7 +81,7 @@ class ConfigDictTest(unittest.TestCase):
+             loggerDict.clear()
+             loggerDict.update(self.saved_loggers)
+         finally:
+-            logging._releaseLock()
++            release()
+ 
+     message_num = 0
+ 

diff --git a/dev-python/logutils/logutils-0.3.5-r1.ebuild b/dev-python/logutils/logutils-0.3.5-r1.ebuild
index fd886838498d..230f6aeac8f5 100644
--- a/dev-python/logutils/logutils-0.3.5-r1.ebuild
+++ b/dev-python/logutils/logutils-0.3.5-r1.ebuild
@@ -1,15 +1,18 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=8
 
 DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{9..12} )
+PYTHON_COMPAT=( python3_{10..13} )
 
 inherit distutils-r1 pypi
 
 DESCRIPTION="The logutils package provides a set of handlers for the Python standard"
-HOMEPAGE="https://bitbucket.org/vinay.sajip/logutils"
+HOMEPAGE="
+	https://bitbucket.org/vinay.sajip/logutils/
+	https://pypi.org/project/logutils/
+"
 
 LICENSE="BSD"
 SLOT="0"
@@ -24,6 +27,17 @@ BDEPEND="
 
 distutils_enable_tests unittest
 
+PATCHES=(
+	# https://bitbucket.org/vinay.sajip/logutils/pull-requests/5
+	"${FILESDIR}/${P}-py313.patch"
+)
+
+src_prepare() {
+	distutils-r1_src_prepare
+
+	sed -i -e 's:assertEquals:assertEqual:' tests/*.py || die
+}
+
 python_test() {
 	eunittest -s tests
 }


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2025-03-17  9:08 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-17  9:07 [gentoo-commits] repo/gentoo:master commit in: dev-python/logutils/, dev-python/logutils/files/ Michał Górny

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox