mirror of
https://github.com/kuhyx/diet-guard.git
synced 2026-11-11 18:53:54 +01:00
Phase 2 consumer migration. diet-guard was the donor for make_button, so it
is one of the two proof consumers the extraction is validated against.
- _gatelock_buttons.py is deleted; its make_button now lives in gatelock,
where the variant API (text colour picked *from* the fill) and the
<Return>/<KP_Enter> bindings serve all four gates instead of one. Call
sites pass _COLORS explicitly, since a shared widget cannot read this
app's module-level palette. Pixel-identical: BODY/LABEL were -16/-14 and
LockConfig.font("body"/"label") yields the same negative (pixel) sizes.
- WidgetGroup now subclasses gatelock's, keeping the list[_W] constructor and
re-narrowing `first` to the widget type. The specialized groups (EntryGroup
over a shared StringVar, TextGroup, ListboxGroup, MacroGroup) are unchanged
behaviour and stay -- gatelock has no equivalent for them.
- bind() keeps *replacing* semantics, inverted from gatelock's additive
default and now documented + tested. _wire_events runs once per
build_surface and again on rebuild, so an additive bind would stack a
second <Return> handler on every surviving widget and log the meal twice.
- conftest swaps gatelock.widgets into the fake-tk module list in the same
edit that removes _gatelock_buttons, since that list fails the whole suite
if it drifts in either direction.
All three gatelock pins move together to v0.5.0 -- pyproject, requirements.txt
and the pylint hook's additional_dependencies. The config comment already
warned that a lagging hook pin lints against a gatelock without the API the
code calls; that is exactly what it did before this bump.
The "<Return> activates a button" test moves to gatelock with the button, so
it runs against real Tk rather than a fake widget that can only report the
binding it was handed.
Verified: 692 tests, 100% branch coverage against the *installed* gatelock
0.5.0 (not a PYTHONPATH shim); the gate builds under xvfb and <Return> and
<KP_Enter> both fire a real button's command, with the accent focus ring
(#B8862E, 2px) instead of Tk's invisible 1px black.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01U4Rj3s7K2qzrLNgJqqPhno
|
||
|---|---|---|
| .. | ||
| tests | ||
| __init__.py | ||
| __main__.py | ||
| _averages.py | ||
| _budget_history.py | ||
| _budget.py | ||
| _calendar_view.py | ||
| _cli_averages.py | ||
| _cli_gate.py | ||
| _cli_sync.py | ||
| _cli.py | ||
| _coerce.py | ||
| _constants.py | ||
| _daystatus.py | ||
| _device.py | ||
| _estimator.py | ||
| _foodbank_manual.py | ||
| _foodbank.py | ||
| _fuzzy.py | ||
| _gate.py | ||
| _gatelock_calendar_ui.py | ||
| _gatelock_calendar.py | ||
| _gatelock_core.py | ||
| _gatelock_groups.py | ||
| _gatelock_mealflow.py | ||
| _gatelock_nutrition.py | ||
| _gatelock_spacing.py | ||
| _gatelock_support.py | ||
| _gatelock_typography.py | ||
| _gatelock_ui_types.py | ||
| _gatelock_ui.py | ||
| _gatelock.py | ||
| _mcp.py | ||
| _portions.py | ||
| _resolve.py | ||
| _slots.py | ||
| _state.py | ||
| _sync_merge.py | ||
| _sync.py | ||
| _test_guard.py | ||