Desktop: GTK3 + matplotlib app tracking arbitrary events (button -> timestamp -> CSV), with per-event stats, trend charts, settings (rename/add events, relocate data file), and a reset-with-backup flow. Portable desktop launcher via a .desktop.in template + install script, no machine-specific paths baked in. Android: minimal Kivy v1 companion reading/writing the same CSV format, plus buildozer build tooling isolated in a venv and a local p4a recipe override for kivy (see CLAUDE.md for why). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
16 lines
765 B
Diff
16 lines
765 B
Diff
diff -ur kivy-2.3.1b/kivy/lang/parser.py kivy-2.3.1/kivy/lang/parser.py
|
|
--- kivy-2.3.1b/kivy/lang/parser.py 2025-10-19 13:04:51.542798827 +1300
|
|
+++ kivy-2.3.1/kivy/lang/parser.py 2025-10-19 13:05:16.007104601 +1300
|
|
@@ -230,11 +230,7 @@
|
|
|
|
if isinstance(node, (ast.JoinedStr, ast.BoolOp)):
|
|
for n in node.values:
|
|
- if isinstance(n, ast.Str):
|
|
- # NOTE: required for python3.6
|
|
- yield from cls.get_names_from_expression(n.s)
|
|
- else:
|
|
- yield from cls.get_names_from_expression(n.value)
|
|
+ yield from cls.get_names_from_expression(n.value)
|
|
|
|
if isinstance(node, ast.BinOp):
|
|
yield from cls.get_names_from_expression(node.right)
|