Skip to content

Commit 0b68221

Browse files
authored
Replace loguru with default logging (#170)
* Replace loguru with default logging * Remove loguru from tests
1 parent cd41865 commit 0b68221

File tree

10 files changed

+27
-22
lines changed

10 files changed

+27
-22
lines changed

pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ dependencies = [
2121
"polars >= 1.0.0, <= 1.17.1",
2222
"bigtree == 0.18.*",
2323
"ruamel.yaml == 0.18.*",
24-
"loguru == 0.7.*",
2524
"hydra-core == 1.3.*",
2625
"pytimeparse == 1.1.*",
2726
"networkx == 3.3.*",

src/aces/__main__.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
"""Main script for end-to-end cohort extraction."""
22

3+
import logging
34
import sys
45
from importlib.resources import files
56

67
import hydra
78
import polars as pl
89
import pyarrow as pa
910
import pyarrow.parquet as pq
10-
from loguru import logger
1111
from meds import label_schema, prediction_time_field, subject_id_field
1212
from omegaconf import DictConfig
1313

14+
logger = logging.getLogger(__name__)
1415
config_yaml = files("aces").joinpath("configs/_aces.yaml")
1516

1617
if len(sys.argv) == 1:
@@ -136,12 +137,9 @@ def main(cfg: DictConfig) -> None:
136137
from datetime import datetime
137138
from pathlib import Path
138139

139-
from hydra.core.hydra_config import HydraConfig
140140
from omegaconf import OmegaConf
141141

142-
from . import config, predicates, query, utils
143-
144-
utils.hydra_loguru_init(f"{HydraConfig.get().job.name}.log")
142+
from . import config, predicates, query
145143

146144
st = datetime.now()
147145

src/aces/config.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from __future__ import annotations
55

66
import dataclasses
7+
import logging
78
import re
89
from collections import OrderedDict
910
from dataclasses import field
@@ -15,7 +16,6 @@
1516
import polars as pl
1617
import ruamel.yaml
1718
from bigtree import Node
18-
from loguru import logger
1919

2020
from .types import (
2121
ANY_EVENT_COLUMN,
@@ -26,6 +26,8 @@
2626
)
2727
from .utils import parse_timedelta
2828

29+
logger = logging.getLogger(__name__)
30+
2931

3032
@dataclasses.dataclass
3133
class PlainPredicateConfig:

src/aces/constraints.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
"""Contains utilities for validating that windows satisfy a set of constraints."""
22

3+
import logging
4+
35
import polars as pl
4-
from loguru import logger
56

67
from .types import ANY_EVENT_COLUMN
78

9+
logger = logging.getLogger(__name__)
10+
811

912
def check_constraints(
1013
window_constraints: dict[str, tuple[int | None, int | None]], summary_df: pl.DataFrame

src/aces/extract_subtree.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
"""This module contains the functions for extracting constraint hierarchy subtrees."""
22

3+
import logging
34
from datetime import timedelta
45

56
import polars as pl
67
from bigtree import Node
7-
from loguru import logger
88

99
from .aggregate import aggregate_event_bound_window, aggregate_temporal_window
1010
from .constraints import check_constraints
1111

12+
logger = logging.getLogger(__name__)
13+
1214

1315
def extract_subtree(
1416
subtree: Node,

src/aces/predicates.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
"""This module contains functions for generating predicate columns for event sequences."""
22

3+
import logging
34
from pathlib import Path
45

56
import polars as pl
6-
from loguru import logger
77
from omegaconf import DictConfig
88
from polars.exceptions import ColumnNotFoundError
99

@@ -15,6 +15,8 @@
1515
START_OF_RECORD_KEY,
1616
)
1717

18+
logger = logging.getLogger(__name__)
19+
1820

1921
def direct_load_plain_predicates(
2022
data_path: Path, predicates: list[str], ts_format: str | None

src/aces/query.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,18 @@
33
It accepts the configuration file and predicate columns, builds the tree, and recursively queries the tree.
44
"""
55

6+
import logging
67

78
import polars as pl
89
from bigtree import preorder_iter
9-
from loguru import logger
1010

1111
from .config import TaskExtractorConfig
1212
from .constraints import check_constraints, check_static_variables
1313
from .extract_subtree import extract_subtree
1414
from .utils import log_tree
1515

16+
logger = logging.getLogger(__name__)
17+
1618

1719
def query(cfg: TaskExtractorConfig, predicates_df: pl.DataFrame) -> pl.DataFrame:
1820
"""Query a task using the provided configuration file and predicates dataframe.

src/aces/utils.py

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import io
2-
import os
2+
import logging
33
import sys
44
from collections.abc import Generator
55
from contextlib import contextmanager
66
from datetime import timedelta
77

8-
import hydra
98
from bigtree import Node, print_tree
10-
from loguru import logger
119
from pytimeparse import parse
1210

11+
logger = logging.getLogger(__name__)
12+
1313

1414
def parse_timedelta(time_str: str = None) -> timedelta:
1515
"""Parse a time string and return a timedelta object.
@@ -66,9 +66,3 @@ def log_tree(node: Node) -> None:
6666
with capture_output() as captured:
6767
print_tree(node, style="const_bold") # This will print to the captured StringIO instead of stdout
6868
logger.info("\n" + captured.getvalue()) # Log the captured output
69-
70-
71-
def hydra_loguru_init(filename: str) -> None:
72-
"""Must be called from a hydra main!"""
73-
hydra_path = hydra.core.hydra_config.HydraConfig.get().runtime.output_dir
74-
logger.add(os.path.join(hydra_path, filename))

tests/test_meds.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55

66
root = rootutils.setup_root(__file__, dotenv=True, pythonpath=True, cwd=True)
77

8+
import logging
89
import tempfile
910
from io import StringIO
1011
from pathlib import Path
1112

1213
import polars as pl
1314
import pyarrow as pa
14-
from loguru import logger
1515
from meds import label_schema, subject_id_field
1616
from yaml import load as load_yaml
1717

@@ -28,6 +28,7 @@
2828
except ImportError:
2929
from yaml import Loader
3030

31+
logger = logging.getLogger(__name__)
3132
pl.enable_string_cache()
3233

3334
TS_FORMAT = "%m/%d/%Y %H:%M"

tests/utils.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@
44

55
root = rootutils.setup_root(__file__, dotenv=True, pythonpath=True, cwd=True)
66

7+
import logging
78
import subprocess
89
import tempfile
910
from pathlib import Path
1011

1112
import polars as pl
12-
from loguru import logger
1313
from polars.testing import assert_frame_equal
1414

15+
logger = logging.getLogger(__name__)
16+
1517

1618
def run_command(script: str, hydra_kwargs: dict[str, str], test_name: str, expected_returncode: int = 0):
1719
command_parts = [script] + [f"{k}={v}" for k, v in hydra_kwargs.items()]

0 commit comments

Comments
 (0)