mirror of
https://github.com/kuhyx/diet-guard.git
synced 2026-11-11 21:53:52 +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
|
||
|---|---|---|
| .. | ||
| __init__.py | ||
| _gate_keyboard_probe.py | ||
| _gate_layout_probe.py | ||
| _tk_fakes.py | ||
| conftest.py | ||
| test_averages.py | ||
| test_budget_history.py | ||
| test_budget.py | ||
| test_calendar_averages.py | ||
| test_calendar_view.py | ||
| test_cli_averages.py | ||
| test_cli_gate.py | ||
| test_cli_sync.py | ||
| test_cli.py | ||
| test_daystatus.py | ||
| test_estimator.py | ||
| test_foodbank_manual.py | ||
| test_foodbank.py | ||
| test_fuzzy.py | ||
| test_gate_layout_fits.py | ||
| test_gate.py | ||
| test_gatelock_calendar.py | ||
| test_gatelock_fanout.py | ||
| test_gatelock_keyboard.py | ||
| test_gatelock_mealflow.py | ||
| test_gatelock.py | ||
| test_main.py | ||
| test_mcp_averages.py | ||
| test_mcp.py | ||
| test_portions.py | ||
| test_resolve.py | ||
| test_slots.py | ||
| test_state.py | ||
| test_sync_backend.py | ||
| test_sync_banks.py | ||
| test_sync_device_id.py | ||
| test_sync_merge_banks.py | ||
| test_sync_merge.py | ||
| test_sync.py | ||
| test_test_guard.py | ||