From d829e1bf957047ab2f195900c5562de423d47751 Mon Sep 17 00:00:00 2001 From: AlgoFoe Date: Sun, 4 Jan 2026 12:20:46 +0530 Subject: [PATCH 01/11] Fix intermittent crash with multiprocessing-aware logging --- fancylog/fancylog.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/fancylog/fancylog.py b/fancylog/fancylog.py index c92f192..72c3f46 100644 --- a/fancylog/fancylog.py +++ b/fancylog/fancylog.py @@ -580,14 +580,22 @@ def setup_logging( ) try: + import multiprocessing import multiprocessing_logging - multiprocessing_logging.install_mp_handler() - logging.info("Starting logging") - logging.info( - "Multiprocessing-logging module found. Logging from all" - " processes" - ) + if multiprocessing.current_process().name != "MainProcess": + multiprocessing_logging.install_mp_handler() + logging.info("Starting logging") + logging.info( + "Multiprocessing-logging module found. Logging from all" + " processes" + ) + else: + logger.info("Starting logging") + logger.info( + "Multiprocessing-logging enabled, " + "but running in main process" + ) except ModuleNotFoundError: logging.info("Starting logging") logging.info( From 375d647f2a5520d1758ae6b3bee57c4196b142c9 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sun, 4 Jan 2026 07:00:28 +0000 Subject: [PATCH 02/11] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- fancylog/fancylog.py | 1 + 1 file changed, 1 insertion(+) diff --git a/fancylog/fancylog.py b/fancylog/fancylog.py index 72c3f46..2e74d13 100644 --- a/fancylog/fancylog.py +++ b/fancylog/fancylog.py @@ -581,6 +581,7 @@ def setup_logging( try: import multiprocessing + import multiprocessing_logging if multiprocessing.current_process().name != "MainProcess": From c8d98f56c41555f7e8a1c46852ed2b498c268e72 Mon Sep 17 00:00:00 2001 From: AlgoFoe Date: Mon, 12 Jan 2026 23:51:49 +0530 Subject: [PATCH 03/11] Fix Windows crash by disabling multiprocessing logging --- fancylog/fancylog.py | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/fancylog/fancylog.py b/fancylog/fancylog.py index 72c3f46..1549346 100644 --- a/fancylog/fancylog.py +++ b/fancylog/fancylog.py @@ -9,6 +9,7 @@ import warnings from datetime import datetime from importlib.util import find_spec +import platform from rich.logging import RichHandler @@ -564,6 +565,14 @@ def setup_logging( Name of the logger to use. If None, the default logger is used. """ + if multiprocessing_aware and platform.system() == "Windows": + warnings.warn( + "Multiprocessing logging is not supported on Windows. " + "It has been disabled.", + UserWarning + ) + multiprocessing_aware = False + logger = initialise_logger( filename, print_level=print_level, @@ -580,22 +589,14 @@ def setup_logging( ) try: - import multiprocessing import multiprocessing_logging - if multiprocessing.current_process().name != "MainProcess": - multiprocessing_logging.install_mp_handler() - logging.info("Starting logging") - logging.info( - "Multiprocessing-logging module found. Logging from all" - " processes" - ) - else: - logger.info("Starting logging") - logger.info( - "Multiprocessing-logging enabled, " - "but running in main process" - ) + multiprocessing_logging.install_mp_handler() + logging.info("Starting logging") + logging.info( + "Multiprocessing-logging module found. Logging from all" + " processes" + ) except ModuleNotFoundError: logging.info("Starting logging") logging.info( From d95593147963d9f1010803e65c25875ed541dbbd Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 12 Jan 2026 18:23:22 +0000 Subject: [PATCH 04/11] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- fancylog/fancylog.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fancylog/fancylog.py b/fancylog/fancylog.py index 1549346..68db6b4 100644 --- a/fancylog/fancylog.py +++ b/fancylog/fancylog.py @@ -4,12 +4,12 @@ import json import logging import os +import platform import subprocess import sys import warnings from datetime import datetime from importlib.util import find_spec -import platform from rich.logging import RichHandler @@ -569,10 +569,10 @@ def setup_logging( warnings.warn( "Multiprocessing logging is not supported on Windows. " "It has been disabled.", - UserWarning + UserWarning, ) multiprocessing_aware = False - + logger = initialise_logger( filename, print_level=print_level, From d09e19c0ad717ab6aa068d65035a743636fcf16c Mon Sep 17 00:00:00 2001 From: AlgoFoe Date: Mon, 12 Jan 2026 23:54:32 +0530 Subject: [PATCH 05/11] Add stacklevel in user warning --- fancylog/fancylog.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fancylog/fancylog.py b/fancylog/fancylog.py index 1549346..0f52723 100644 --- a/fancylog/fancylog.py +++ b/fancylog/fancylog.py @@ -569,7 +569,8 @@ def setup_logging( warnings.warn( "Multiprocessing logging is not supported on Windows. " "It has been disabled.", - UserWarning + UserWarning, + stacklevel=2 ) multiprocessing_aware = False From 6f2800d491c3a42d44c4685ec62b1c6d7ad06c25 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 12 Jan 2026 18:25:27 +0000 Subject: [PATCH 06/11] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- fancylog/fancylog.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fancylog/fancylog.py b/fancylog/fancylog.py index 6783e7d..956c01e 100644 --- a/fancylog/fancylog.py +++ b/fancylog/fancylog.py @@ -570,7 +570,7 @@ def setup_logging( "Multiprocessing logging is not supported on Windows. " "It has been disabled.", UserWarning, - stacklevel=2 + stacklevel=2, ) multiprocessing_aware = False From 2deb1e31f6f09731ee7ec06230c2180945c70ed9 Mon Sep 17 00:00:00 2001 From: AlgoFoe Date: Tue, 13 Jan 2026 13:56:06 +0530 Subject: [PATCH 07/11] Add minimal test --- tests/tests/test_general.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests/tests/test_general.py b/tests/tests/test_general.py index 3efcff6..a14e5f1 100644 --- a/tests/tests/test_general.py +++ b/tests/tests/test_general.py @@ -425,3 +425,16 @@ def test_mock_no_environment(tmp_path): assert f"{'fancylog':20} {'1.1.1'}" assert f"{'pytest':20} {'1.1.1'}" + + +def test_multiprocessing_warning_on_windows(tmp_path): + """A warning is raised and multiprocessing logging + is disabled on Windows. + """ + with patch("platform.system", return_value="Windows"): + with pytest.warns(UserWarning, match="Multiprocessing logging is not supported"): + fancylog.start_logging( + tmp_path, + fancylog, + multiprocessing_aware=True, + ) From b5ff0118d8a9c3fd1b3792e024169fb2a4299036 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 13 Jan 2026 08:27:16 +0000 Subject: [PATCH 08/11] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- tests/tests/test_general.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/tests/test_general.py b/tests/tests/test_general.py index a14e5f1..bd4be5c 100644 --- a/tests/tests/test_general.py +++ b/tests/tests/test_general.py @@ -432,7 +432,9 @@ def test_multiprocessing_warning_on_windows(tmp_path): is disabled on Windows. """ with patch("platform.system", return_value="Windows"): - with pytest.warns(UserWarning, match="Multiprocessing logging is not supported"): + with pytest.warns( + UserWarning, match="Multiprocessing logging is not supported" + ): fancylog.start_logging( tmp_path, fancylog, From 2e6126c258b638fc7c0e7b89125c0c0bf6fed4ff Mon Sep 17 00:00:00 2001 From: AlgoFoe Date: Tue, 13 Jan 2026 17:56:11 +0530 Subject: [PATCH 09/11] Fix pre-commit lint errors --- tests/tests/test_general.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/tests/tests/test_general.py b/tests/tests/test_general.py index a14e5f1..450ad92 100644 --- a/tests/tests/test_general.py +++ b/tests/tests/test_general.py @@ -431,10 +431,14 @@ def test_multiprocessing_warning_on_windows(tmp_path): """A warning is raised and multiprocessing logging is disabled on Windows. """ - with patch("platform.system", return_value="Windows"): - with pytest.warns(UserWarning, match="Multiprocessing logging is not supported"): - fancylog.start_logging( - tmp_path, - fancylog, - multiprocessing_aware=True, - ) + with ( + patch("platform.system", return_value="Windows"), + pytest.warns( + UserWarning, match="Multiprocessing logging is not supported" + ), + ): + fancylog.start_logging( + tmp_path, + fancylog, + multiprocessing_aware=True, + ) From 94fdf3ab0e43c21f7a4a3c576c093146b59d737f Mon Sep 17 00:00:00 2001 From: AlgoFoe Date: Tue, 13 Jan 2026 18:11:39 +0530 Subject: [PATCH 10/11] Validate multiprocessing args before windows override --- fancylog/fancylog.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/fancylog/fancylog.py b/fancylog/fancylog.py index 956c01e..11e60b2 100644 --- a/fancylog/fancylog.py +++ b/fancylog/fancylog.py @@ -565,6 +565,13 @@ def setup_logging( Name of the logger to use. If None, the default logger is used. """ + if multiprocessing_aware and logger_name: + raise ValueError( + "`multiprocessing_aware` is not supported" + "with `logger_name`. Multiprocess logging" + "must be performed with the root logger." + ) + if multiprocessing_aware and platform.system() == "Windows": warnings.warn( "Multiprocessing logging is not supported on Windows. " @@ -581,14 +588,8 @@ def setup_logging( log_to_console=log_to_console, logger_name=logger_name, ) + if multiprocessing_aware: - if logger_name: - raise ValueError( - "`multiprocessing_aware` is not supported" - "with `logger_name`. Multiprocess logging" - "must be performed with the root logger." - ) - try: import multiprocessing_logging From 500d64ff1aff2d258f4669e9549d59510373ecf3 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Tue, 13 Jan 2026 12:42:00 +0000 Subject: [PATCH 11/11] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- fancylog/fancylog.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fancylog/fancylog.py b/fancylog/fancylog.py index 11e60b2..17049bc 100644 --- a/fancylog/fancylog.py +++ b/fancylog/fancylog.py @@ -571,7 +571,7 @@ def setup_logging( "with `logger_name`. Multiprocess logging" "must be performed with the root logger." ) - + if multiprocessing_aware and platform.system() == "Windows": warnings.warn( "Multiprocessing logging is not supported on Windows. " @@ -588,7 +588,7 @@ def setup_logging( log_to_console=log_to_console, logger_name=logger_name, ) - + if multiprocessing_aware: try: import multiprocessing_logging