mirror of
https://github.com/kuhyx/diet-guard.git
synced 2026-11-10 18:07:20 +01:00
deps: flutter 3.47.7, crdt-sync 0.9.2, freedays 0.3.1, pydantic 2.14.0, ruff 0.17.0
Some checks failed
dependency freshness / dependencies on newest stable (push) Has been cancelled
file-length / file length <= 250 lines (push) Has been cancelled
md-naming / markdown naming convention (push) Has been cancelled
pre-commit / pre-commit (${{ matrix.group }}) (mypy, mypy, ) (push) Has been cancelled
pre-commit / pre-commit (${{ matrix.group }}) (pylint, pylint, ) (push) Has been cancelled
pre-commit / pre-commit (${{ matrix.group }}) (rest, , mypy,pylint) (push) Has been cancelled
Tests / test (push) Has been cancelled
release-apk / release (APK) (push) Has been cancelled
repo-contract / repo contract (push) Has been cancelled
Some checks failed
dependency freshness / dependencies on newest stable (push) Has been cancelled
file-length / file length <= 250 lines (push) Has been cancelled
md-naming / markdown naming convention (push) Has been cancelled
pre-commit / pre-commit (${{ matrix.group }}) (mypy, mypy, ) (push) Has been cancelled
pre-commit / pre-commit (${{ matrix.group }}) (pylint, pylint, ) (push) Has been cancelled
pre-commit / pre-commit (${{ matrix.group }}) (rest, , mypy,pylint) (push) Has been cancelled
Tests / test (push) Has been cancelled
release-apk / release (APK) (push) Has been cancelled
repo-contract / repo contract (push) Has been cancelled
ruff 0.17 stabilised CPY001 (ignored: no per-file copyright headers here), ISC004 and ICN001 (autofixed). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015npsYVB2PdtWkG7MPAi4tn
This commit is contained in:
parent
a118120047
commit
f2606fe0ca
2
.github/workflows/release-apk.yml
vendored
2
.github/workflows/release-apk.yml
vendored
@ -60,7 +60,7 @@ jobs:
|
||||
|
||||
- uses: subosito/flutter-action@v2
|
||||
with:
|
||||
flutter-version: 3.47.6
|
||||
flutter-version: 3.47.7
|
||||
channel: stable
|
||||
cache: true
|
||||
|
||||
|
||||
@ -2,7 +2,7 @@ name: diet_guard_app
|
||||
description: "Companion phone app for diet_guard: log meals on the go."
|
||||
publish_to: 'none'
|
||||
|
||||
version: 1.0.110+1
|
||||
version: 1.0.111+1
|
||||
|
||||
environment:
|
||||
sdk: ^3.12.2
|
||||
|
||||
@ -72,8 +72,10 @@ def bodyfat_lines(view: BodyView) -> list[str]:
|
||||
return ["Body fat: not logged (log one to use Katch-McArdle)."]
|
||||
day = max(view.body_fats)
|
||||
return [
|
||||
f"Body fat: {_num(view.body_fats[day], 1)}% on {day} "
|
||||
f"({len(view.body_fats)} readings) -- targets use Katch-McArdle."
|
||||
(
|
||||
f"Body fat: {_num(view.body_fats[day], 1)}% on {day} "
|
||||
f"({len(view.body_fats)} readings) -- targets use Katch-McArdle."
|
||||
)
|
||||
]
|
||||
|
||||
|
||||
@ -85,8 +87,10 @@ def bmi_lines(view: BodyView) -> list[str]:
|
||||
low, high = view.numbers.healthy
|
||||
return [
|
||||
f"BMI {_num(bmi.bmi, 1)} ({bmi.category})",
|
||||
f"Healthy weight for your height (BMI 18.5-24.9): "
|
||||
f"{_num(low, 1)}-{_num(high, 1)} kg",
|
||||
(
|
||||
f"Healthy weight for your height (BMI 18.5-24.9): "
|
||||
f"{_num(low, 1)}-{_num(high, 1)} kg"
|
||||
),
|
||||
f"BMI Prime {_num(bmi.prime, 2)} Trefethen {_num(bmi.trefethen, 1)}",
|
||||
*_wrap(BMI_PRIME_NOTE, " "),
|
||||
*_wrap(TREFETHEN_NOTE, " "),
|
||||
@ -141,8 +145,10 @@ def target_lines(view: BodyView) -> list[str]:
|
||||
target = view.numbers.target
|
||||
if target.kcal is None or target.tdee is None:
|
||||
return [
|
||||
f"{goal_sentence(view.goal)}: no workouts published yet "
|
||||
"(the PC publishes them on sync)."
|
||||
(
|
||||
f"{goal_sentence(view.goal)}: no workouts published yet "
|
||||
"(the PC publishes them on sync)."
|
||||
)
|
||||
]
|
||||
lines = [f"{goal_sentence(view.goal)} eat {target.kcal} kcal a day."]
|
||||
if target.below_floor:
|
||||
|
||||
@ -103,8 +103,10 @@ def eaten_grams(
|
||||
if unit is None:
|
||||
return (
|
||||
portion.count * DEFAULT_ITEM_GRAMS,
|
||||
f"(assumed {DEFAULT_ITEM_GRAMS:g} g per item; "
|
||||
"pass --grams to be exact)",
|
||||
(
|
||||
f"(assumed {DEFAULT_ITEM_GRAMS:g} g per item; "
|
||||
"pass --grams to be exact)"
|
||||
),
|
||||
)
|
||||
return portion.count * unit, None
|
||||
return portion.grams, None
|
||||
|
||||
@ -7,7 +7,7 @@ through ``sys.modules`` instead of binding it at import time.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import datetime
|
||||
import datetime as dt
|
||||
import json
|
||||
from typing import TYPE_CHECKING
|
||||
from unittest.mock import patch
|
||||
@ -28,7 +28,7 @@ from diet_guard.tests._kuchnia_fakes import (
|
||||
if TYPE_CHECKING:
|
||||
from pathlib import Path
|
||||
|
||||
DAY = datetime.date(2026, 8, 22)
|
||||
DAY = dt.date(2026, 8, 22)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
@ -15,7 +15,7 @@ is testable with no thread at all.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import datetime
|
||||
import datetime as dt
|
||||
import queue
|
||||
from types import SimpleNamespace
|
||||
from typing import TYPE_CHECKING
|
||||
@ -38,7 +38,7 @@ if TYPE_CHECKING:
|
||||
|
||||
from diet_guard._estimator import Nutrition
|
||||
|
||||
DAY = datetime.date(2026, 8, 22)
|
||||
DAY = dt.date(2026, 8, 22)
|
||||
|
||||
|
||||
def _dish(name: str = "Kaszotto", priority: int = 1) -> Dish:
|
||||
@ -68,7 +68,7 @@ class TestWorker:
|
||||
def test_a_raising_call_still_feeds_the_queue(self) -> None:
|
||||
# Without the finally, the poll waits forever with the button disabled
|
||||
# and the user cannot get out from behind the lock.
|
||||
def boom(_day: datetime.date) -> tuple[Sequence[Dish], str | None]:
|
||||
def boom(_day: dt.date) -> tuple[Sequence[Dish], str | None]:
|
||||
msg = "kaboom"
|
||||
raise RuntimeError(msg)
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@ that happens, so these assert on **call count** instead.
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import datetime
|
||||
import datetime as dt
|
||||
from unittest.mock import patch
|
||||
|
||||
from diet_guard import _kuchnia_config, _kuchnia_import
|
||||
@ -21,7 +21,7 @@ from diet_guard._kuchnia_parse import Dish
|
||||
from diet_guard._kuchnia_spread import SlottedDish
|
||||
from diet_guard._state_today import today_entries, today_total_kcal
|
||||
|
||||
DAY = datetime.date(2026, 8, 22)
|
||||
DAY = dt.date(2026, 8, 22)
|
||||
|
||||
|
||||
def _dish(name: str = "Kaszotto", kcal: float = 391.0, priority: int = 1) -> Dish:
|
||||
@ -150,7 +150,7 @@ class TestRefreshOnce:
|
||||
return_value=([_dish()], None),
|
||||
) as refresh:
|
||||
_kuchnia_import.refresh_delivery_once(DAY)
|
||||
_kuchnia_import.refresh_delivery_once(DAY + datetime.timedelta(days=1))
|
||||
_kuchnia_import.refresh_delivery_once(DAY + dt.timedelta(days=1))
|
||||
assert refresh.call_count == 2
|
||||
|
||||
def test_an_outage_does_not_suppress_the_retry(self) -> None:
|
||||
|
||||
@ -10,7 +10,7 @@ The endpoint shape here is not the obvious one: ``.../deliveries/{id}/details``
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import datetime
|
||||
import datetime as dt
|
||||
from unittest.mock import patch
|
||||
|
||||
import pytest
|
||||
@ -28,7 +28,7 @@ from diet_guard.tests._kuchnia_fakes import (
|
||||
write_credentials,
|
||||
)
|
||||
|
||||
DAY = datetime.date(2026, 8, 22)
|
||||
DAY = dt.date(2026, 8, 22)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
@ -5,8 +5,8 @@ description = "Tkinter/systemd log-to-unlock meal gate with calorie/macro budget
|
||||
requires-python = ">=3.14"
|
||||
dependencies = [
|
||||
"gatelock @ git+https://github.com/kuhyx/utils@gatelock-v0.9.0#subdirectory=gatelock",
|
||||
"crdt-sync @ git+https://github.com/kuhyx/utils@crdt-sync-v0.9.1#subdirectory=crdt-sync",
|
||||
"freedays @ git+https://github.com/kuhyx/utils@freedays-v0.3.0#subdirectory=freedays",
|
||||
"crdt-sync @ git+https://github.com/kuhyx/utils@crdt-sync-v0.9.2#subdirectory=crdt-sync",
|
||||
"freedays @ git+https://github.com/kuhyx/utils@freedays-v0.3.1#subdirectory=freedays",
|
||||
"defusedxml==0.7.1",
|
||||
"requests==2.34.2",
|
||||
]
|
||||
@ -37,6 +37,8 @@ ignore = [
|
||||
"COM812",
|
||||
"ISC001",
|
||||
"S603",
|
||||
# Stabilised in ruff 0.17; this personal repo carries no per-file copyright headers.
|
||||
"CPY001",
|
||||
]
|
||||
fixable = ["ALL"]
|
||||
unfixable = []
|
||||
|
||||
@ -3,14 +3,14 @@
|
||||
bandit==1.9.4
|
||||
codespell==2.4.3
|
||||
coverage==7.16.2
|
||||
crdt-sync @ git+https://github.com/kuhyx/utils@crdt-sync-v0.9.1#subdirectory=crdt-sync
|
||||
crdt-sync @ git+https://github.com/kuhyx/utils@crdt-sync-v0.9.2#subdirectory=crdt-sync
|
||||
defusedxml==0.7.1
|
||||
freedays @ git+https://github.com/kuhyx/utils@freedays-v0.3.0#subdirectory=freedays
|
||||
freedays @ git+https://github.com/kuhyx/utils@freedays-v0.3.1#subdirectory=freedays
|
||||
gatelock @ git+https://github.com/kuhyx/utils@gatelock-v0.9.0#subdirectory=gatelock
|
||||
mcp==2.3.0
|
||||
mypy==2.4.0
|
||||
pre-commit==4.6.2
|
||||
pydantic==2.13.5
|
||||
pydantic==2.14.0
|
||||
pylint==4.1.2
|
||||
pytest==9.1.1
|
||||
pytest-cov==7.1.0
|
||||
@ -19,4 +19,4 @@ pytest-sugar==1.1.1
|
||||
pytest-xdist==3.8.0
|
||||
pytest-xvfb==3.1.1
|
||||
requests==2.34.2
|
||||
ruff==0.16.10
|
||||
ruff==0.17.0
|
||||
|
||||
Loading…
Reference in New Issue
Block a user