general: migrate modules to use 3.9 features

This commit is contained in:
Dima Gerasimov 2024-10-19 22:10:40 +01:00 committed by karlicoss
parent d3f9a8e8b6
commit 8496d131e7
125 changed files with 889 additions and 739 deletions

View file

@ -2,41 +2,42 @@
Blood tracking (manual org-mode entries)
"""
from __future__ import annotations
from collections.abc import Iterable
from datetime import datetime
from typing import Iterable, NamedTuple, Optional
from typing import NamedTuple
from ..core.error import Res
from ..core.orgmode import parse_org_datetime, one_table
import pandas as pd
import orgparse
import pandas as pd
from my.config import blood as config # type: ignore[attr-defined]
from ..core.error import Res
from ..core.orgmode import one_table, parse_org_datetime
class Entry(NamedTuple):
dt: datetime
ketones : Optional[float]=None
glucose : Optional[float]=None
ketones : float | None=None
glucose : float | None=None
vitamin_d : Optional[float]=None
vitamin_b12 : Optional[float]=None
vitamin_d : float | None=None
vitamin_b12 : float | None=None
hdl : Optional[float]=None
ldl : Optional[float]=None
triglycerides: Optional[float]=None
hdl : float | None=None
ldl : float | None=None
triglycerides: float | None=None
source : Optional[str]=None
extra : Optional[str]=None
source : str | None=None
extra : str | None=None
Result = Res[Entry]
def try_float(s: str) -> Optional[float]:
def try_float(s: str) -> float | None:
l = s.split()
if len(l) == 0:
return None
@ -105,6 +106,7 @@ def blood_tests_data() -> Iterable[Result]:
def data() -> Iterable[Result]:
from itertools import chain
from ..core.error import sort_res_by
datas = chain(glucose_ketones_data(), blood_tests_data())
return sort_res_by(datas, key=lambda e: e.dt)

View file

@ -7,10 +7,10 @@ from ...core.pandas import DataFrameT, check_dataframe
@check_dataframe
def dataframe() -> DataFrameT:
# this should be somehow more flexible...
from ...endomondo import dataframe as EDF
from ...runnerup import dataframe as RDF
import pandas as pd
from ...endomondo import dataframe as EDF
from ...runnerup import dataframe as RDF
return pd.concat([
EDF(),
RDF(),

View file

@ -3,7 +3,6 @@ Cardio data, filtered from various data sources
'''
from ...core.pandas import DataFrameT, check_dataframe
CARDIO = {
'Running',
'Running, treadmill',

View file

@ -5,16 +5,18 @@ This is probably too specific to my needs, so later I will move it away to a per
For now it's worth keeping it here as an example and perhaps utility functions might be useful for other HPI modules.
'''
from datetime import datetime, timedelta
from typing import Optional
from __future__ import annotations
from ...core.pandas import DataFrameT, check_dataframe as cdf
from ...core.orgmode import collect, Table, parse_org_datetime, TypedTable
from datetime import datetime, timedelta
import pytz
from my.config import exercise as config
from ...core.orgmode import Table, TypedTable, collect, parse_org_datetime
from ...core.pandas import DataFrameT
from ...core.pandas import check_dataframe as cdf
import pytz
# FIXME how to attach it properly?
tz = pytz.timezone('Europe/London')
@ -114,7 +116,7 @@ def dataframe() -> DataFrameT:
rows.append(rd) # presumably has an error set
continue
idx: Optional[int]
idx: int | None
close = edf[edf['start_time'].apply(lambda t: pd_date_diff(t, mdate)).abs() < _DELTA]
if len(close) == 0:
idx = None
@ -163,7 +165,9 @@ def dataframe() -> DataFrameT:
# TODO wtf?? where is speed coming from??
from ...core import stat, Stats
from ...core import Stats, stat
def stats() -> Stats:
return stat(cross_trainer_data)

View file

@ -1,5 +1,6 @@
from ...core import stat, Stats
from ...core.pandas import DataFrameT, check_dataframe as cdf
from ...core import Stats, stat
from ...core.pandas import DataFrameT
from ...core.pandas import check_dataframe as cdf
class Combine:

View file

@ -1,7 +1,6 @@
from ... import jawbone
from ... import emfit
from ... import emfit, jawbone
from .common import Combine
_combined = Combine([
jawbone,
emfit,

View file

@ -2,14 +2,14 @@
Weight data (manually logged)
'''
from collections.abc import Iterator
from dataclasses import dataclass
from datetime import datetime
from typing import Any, Iterator
from my.core import make_logger
from my.core.error import Res, extract_error_datetime, set_error_datetime
from typing import Any
from my import orgmode
from my.core import make_logger
from my.core.error import Res, extract_error_datetime, set_error_datetime
config = Any