diff --git a/src/pycharting/core/server.py b/src/pycharting/core/server.py index c3d7808..546d863 100644 --- a/src/pycharting/core/server.py +++ b/src/pycharting/core/server.py @@ -40,8 +40,6 @@ async def get_response(self, path: str, scope: MutableMapping[str, Any]) -> Resp return response -# Configure logging -logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s") logger = logging.getLogger(__name__) diff --git a/tests/pycharting/core/test_server.py b/tests/pycharting/core/test_server.py index 407dc95..75599be 100644 --- a/tests/pycharting/core/test_server.py +++ b/tests/pycharting/core/test_server.py @@ -271,3 +271,21 @@ def test_run_server_auto_port_fallback(): run_server(host="127.0.0.1", port=occupied, auto_port=True) mock_ffp.assert_called_once_with(occupied + 1) assert mock_uvicorn.run.call_args.kwargs["port"] == fallback + + +def test_import_leaves_root_logging_unconfigured(): + """Importing pycharting must not install handlers on the root logger (#100). + + Run in a fresh interpreter: pytest attaches its own capture handlers to the + root logger, so an in-process check would never see an empty list. + """ + import subprocess + import sys + + result = subprocess.run( + [sys.executable, "-c", "import logging, pycharting; print(logging.getLogger().handlers)"], + capture_output=True, + text=True, + check=True, + ) + assert result.stdout.strip() == "[]"