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 <[email protected]> +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 }
