diff --git a/CHANGELOG.md b/CHANGELOG.md index c14fecc..e151baf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,9 @@ and this project adheres to [Semantic Versioning][]. ### Changes - Refactored `ds.ensmbl_to_symbol` to reuse `_download` and fixed mirror fallback to actually switch between Ensembl mirrors +### Bugfixes +- Fixed `_log` setting the root logging level to INFO for all packages (#296) + ## 2.1.4 ### Changes diff --git a/src/decoupler/_log.py b/src/decoupler/_log.py index 78cc0a7..c18319b 100644 --- a/src/decoupler/_log.py +++ b/src/decoupler/_log.py @@ -1,6 +1,10 @@ import logging -logging.basicConfig(level=logging.INFO, format="%(asctime)s | [%(levelname)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S") +logger = logging.getLogger("decoupler") +logger.setLevel(logging.INFO) +_handler = logging.StreamHandler() +_handler.setFormatter(logging.Formatter("%(asctime)s | [%(levelname)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S")) +logger.addHandler(_handler) def _log(message: str, level: str = "info", verbose: bool = False) -> None: @@ -19,6 +23,6 @@ def _log(message: str, level: str = "info", verbose: bool = False) -> None: level = level.lower() if verbose: if level == "warn": - logging.warning(message) + logger.warning(message) elif level == "info": - logging.info(message) + logger.info(message) diff --git a/tests/ds/test_toy.py b/tests/ds/test_toy.py index be540e6..c9209be 100644 --- a/tests/ds/test_toy.py +++ b/tests/ds/test_toy.py @@ -45,7 +45,7 @@ def test_toy( verbose, caplog, ): - with caplog.at_level(logging.INFO): + with caplog.at_level(logging.INFO, logger="decoupler"): adata, net = dc.ds.toy(nobs=nobs, nvar=nvar, bval=bval, pstime=pstime, seed=seed, verbose=verbose) if verbose: assert len(caplog.text) > 0 diff --git a/tests/pp/test_net.py b/tests/pp/test_net.py index 203f1cb..8e48efe 100644 --- a/tests/pp/test_net.py +++ b/tests/pp/test_net.py @@ -24,7 +24,7 @@ def test_validate_net( verbose, caplog, ): - with caplog.at_level(logging.WARNING): + with caplog.at_level(logging.WARNING, logger="decoupler"): vnet = dc.pp.net._validate_net(net=net, verbose=verbose) assert caplog.text == "" assert net.shape == vnet.shape @@ -34,7 +34,7 @@ def test_validate_net( net.drop(columns=["weight"], inplace=True) assert "weight" not in net.columns - with caplog.at_level(logging.WARNING): + with caplog.at_level(logging.WARNING, logger="decoupler"): vnet = dc.pp.net._validate_net(net=net, verbose=verbose) if verbose: assert len(caplog.text) > 0 @@ -119,7 +119,7 @@ def test_adjmat( caplog, ): features = adata.var_names - with caplog.at_level(logging.INFO): + with caplog.at_level(logging.INFO, logger="decoupler"): sources, targets, adjmat = dc.pp.adjmat(features=features, net=net, verbose=verbose) adjmat = adjmat.ravel() non_zero_adjmat = adjmat[adjmat != 0.0] @@ -143,7 +143,7 @@ def test_idxmat( caplog, ): features = adata.var_names - with caplog.at_level(logging.INFO): + with caplog.at_level(logging.INFO, logger="decoupler"): sources, cnct, starts, offsets = dc.pp.idxmat(features=features, net=net, verbose=verbose) if verbose: assert len(caplog.text) > 0