Skip to content

Commit 06a98c8

Browse files
committed
Refactor progress bar to cli level
1 parent f8773f2 commit 06a98c8

File tree

3 files changed

+17
-19
lines changed

3 files changed

+17
-19
lines changed

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ test = [
4242
"pytest >=6",
4343
"pytest-cov >=3",
4444
"mypy >=1.10",
45+
"types-tqdm",
4546
]
4647
dev = [
4748
"pytest >=6",

src/aross_stations_db/cli.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from aross_stations_db.config import CliLoadSettings
77
from aross_stations_db.db.setup import (
8-
generate_event_objects,
8+
generate_event_object,
99
load_events,
1010
load_stations,
1111
recreate_tables,
@@ -52,10 +52,11 @@ def init(skip_load: bool = False) -> None:
5252
# The event processing steps are split into stages to provide better feadback at
5353
# runtime. On slower systems, it can be unclear what the bottleneck is. In the
5454
# long run, we should try to optimize this after learning more.
55-
events = generate_event_objects(
56-
tqdm(raw_events, desc="Reading events"),
57-
)
55+
events = [
56+
generate_event_object(e) for e in tqdm(raw_events, desc="Reading events")
57+
]
5858

59+
# TODO: Is there any way we can monitor this process with a progress bar?
5960
logger.info("Loading events; this can take a minute or so")
6061
load_events(events, session=db_session)
6162
logger.info("Loaded events")

src/aross_stations_db/db/setup.py

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import datetime as dt
2-
from collections.abc import Iterator
32

43
from sqlalchemy import MetaData, insert
54
from sqlalchemy.orm import Session
@@ -65,20 +64,17 @@ def load_stations(stations: list[dict[str, str]], *, session: Session) -> None:
6564
session.commit()
6665

6766

68-
def generate_event_objects(raw_events: Iterator[dict[str, str]]) -> list[Event]:
69-
return [
70-
Event(
71-
station_id=event["station_id"],
72-
time_start=dt.datetime.fromisoformat(event["start"]),
73-
time_end=dt.datetime.fromisoformat(event["end"]),
74-
snow_on_ground=_snow_on_ground_status(event["sog"]),
75-
rain_hours=int(event["RA"]),
76-
freezing_rain_hours=int(event["FZRA"]),
77-
solid_precipitation_hours=int(event["SOLID"]),
78-
unknown_precipitation_hours=int(event["UP"]),
79-
)
80-
for event in raw_events
81-
]
67+
def generate_event_object(raw_event: dict[str, str]) -> Event:
68+
return Event(
69+
station_id=raw_event["station_id"],
70+
time_start=dt.datetime.fromisoformat(raw_event["start"]),
71+
time_end=dt.datetime.fromisoformat(raw_event["end"]),
72+
snow_on_ground=_snow_on_ground_status(raw_event["sog"]),
73+
rain_hours=int(raw_event["RA"]),
74+
freezing_rain_hours=int(raw_event["FZRA"]),
75+
solid_precipitation_hours=int(raw_event["SOLID"]),
76+
unknown_precipitation_hours=int(raw_event["UP"]),
77+
)
8278

8379

8480
def load_events(events: list[Event], *, session: Session) -> None:

0 commit comments

Comments
 (0)