From 3b466120b27d29645d60d43c0a4dc0f008794e33 Mon Sep 17 00:00:00 2001 From: Sean Budd Date: Thu, 16 Apr 2026 14:07:34 +1000 Subject: [PATCH 1/5] Fix deprecated usage of getLevelName --- source/logHandler.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/source/logHandler.py b/source/logHandler.py index 4e1f7a17ccb..2f925026881 100755 --- a/source/logHandler.py +++ b/source/logHandler.py @@ -657,9 +657,8 @@ def setLogLevelFromConfig(): return import config - levelName = config.conf["general"]["loggingLevel"] - # logging.getLevelName can give you a level number if given a name. - level = logging.getLevelName(levelName) + levelName: str = config.conf["general"]["loggingLevel"] + level = logging.getLevelNamesMapping().get(levelName, log.INFO) # The lone exception to level higher than INFO is "OFF" (100). # Setting a log level to something other than options found in the GUI is unsupported. if level not in (log.DEBUG, log.IO, log.DEBUGWARNING, log.INFO, log.OFF): From a849787e632825cbf3c6f477adc9945a1d994ca2 Mon Sep 17 00:00:00 2001 From: Sean Budd Date: Thu, 16 Apr 2026 14:13:12 +1000 Subject: [PATCH 2/5] Update source/logHandler.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- source/logHandler.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/logHandler.py b/source/logHandler.py index 2f925026881..70b1af27b90 100755 --- a/source/logHandler.py +++ b/source/logHandler.py @@ -658,10 +658,10 @@ def setLogLevelFromConfig(): import config levelName: str = config.conf["general"]["loggingLevel"] - level = logging.getLevelNamesMapping().get(levelName, log.INFO) + level = logging.getLevelNamesMapping().get(levelName) # The lone exception to level higher than INFO is "OFF" (100). # Setting a log level to something other than options found in the GUI is unsupported. - if level not in (log.DEBUG, log.IO, log.DEBUGWARNING, log.INFO, log.OFF): + if level is None or level not in (log.DEBUG, log.IO, log.DEBUGWARNING, log.INFO, log.OFF): log.warning("invalid setting for logging level: %s" % levelName) level = log.INFO config.conf["general"]["loggingLevel"] = logging.getLevelName(log.INFO) From bafb140534e504c71f90839474e25928ee897aa2 Mon Sep 17 00:00:00 2001 From: Sean Budd Date: Tue, 21 Apr 2026 11:30:28 +1000 Subject: [PATCH 3/5] fix other instance --- source/config/__init__.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/source/config/__init__.py b/source/config/__init__.py index c9b3f600708..a2a3fb202ab 100644 --- a/source/config/__init__.py +++ b/source/config/__init__.py @@ -590,7 +590,7 @@ def _initBaseConf(self, factoryDefaults=False): self.profiles.append(profile) self._handleProfileSwitch() - def _loadConfig(self, fn, fileError=False): + def _loadConfig(self, fn: str, fileError: bool = False) -> ConfigObj: log.info("Loading config: {0}".format(fn)) profile = ConfigObj(fn, indent_type="\t", encoding="UTF-8", file_error=fileError) # Python converts \r\n to \n when reading files in Windows, so ConfigObj can't determine the true line ending. @@ -609,10 +609,15 @@ def _loadConfig(self, fn, fileError=False): # since profile settings are not yet imported we have to "peek" to see # if debug level logging is enabled. try: - logLevelName = profile["general"]["loggingLevel"] + logLevelName: str = profile["general"]["loggingLevel"] + if not logLevelName: + level = None + else: + level = logging.getLevelNamesMapping().get(logLevelName) except KeyError: - logLevelName = None - if log.isEnabledFor(log.DEBUG) or (logLevelName and DEBUG >= logging.getLevelName(logLevelName)): + level = None + + if log.isEnabledFor(log.DEBUG) or (level and DEBUG >= level): # Log at level info to ensure that the profile is logged. log.info( "Config loaded (after upgrade, and in the state it will be used by NVDA):\n{0}".format( From 3effa80b4256550fbd39bcf3fbca074666ef7940 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 21 Apr 2026 01:31:39 +0000 Subject: [PATCH 4/5] Pre-commit auto-fix --- source/config/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/config/__init__.py b/source/config/__init__.py index a2a3fb202ab..4601c8b1b37 100644 --- a/source/config/__init__.py +++ b/source/config/__init__.py @@ -609,7 +609,7 @@ def _loadConfig(self, fn: str, fileError: bool = False) -> ConfigObj: # since profile settings are not yet imported we have to "peek" to see # if debug level logging is enabled. try: - logLevelName: str = profile["general"]["loggingLevel"] + logLevelName: str = profile["general"]["loggingLevel"] if not logLevelName: level = None else: From 7bb44c07bd492c1506c7d28172dd1eb0119ac42a Mon Sep 17 00:00:00 2001 From: Sean Budd Date: Tue, 21 Apr 2026 11:44:02 +1000 Subject: [PATCH 5/5] Apply suggestion from @seanbudd --- source/config/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/config/__init__.py b/source/config/__init__.py index 4601c8b1b37..4e24377abda 100644 --- a/source/config/__init__.py +++ b/source/config/__init__.py @@ -590,7 +590,7 @@ def _initBaseConf(self, factoryDefaults=False): self.profiles.append(profile) self._handleProfileSwitch() - def _loadConfig(self, fn: str, fileError: bool = False) -> ConfigObj: + def _loadConfig(self, fn: str | None, fileError: bool = False) -> ConfigObj: log.info("Loading config: {0}".format(fn)) profile = ConfigObj(fn, indent_type="\t", encoding="UTF-8", file_error=fileError) # Python converts \r\n to \n when reading files in Windows, so ConfigObj can't determine the true line ending.