keyflow-typing 1.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. keyflow_typing-1.4.0/PKG-INFO +208 -0
  2. keyflow_typing-1.4.0/README.md +189 -0
  3. keyflow_typing-1.4.0/keyflow/__init__.py +3 -0
  4. keyflow_typing-1.4.0/keyflow/__main__.py +5 -0
  5. keyflow_typing-1.4.0/keyflow/app.py +569 -0
  6. keyflow_typing-1.4.0/keyflow/engine.py +185 -0
  7. keyflow_typing-1.4.0/keyflow/i18n.py +24 -0
  8. keyflow_typing-1.4.0/keyflow/keyboard.py +161 -0
  9. keyflow_typing-1.4.0/keyflow/macprofile.py +189 -0
  10. keyflow_typing-1.4.0/keyflow/screens.py +1179 -0
  11. keyflow_typing-1.4.0/keyflow/stats.py +251 -0
  12. keyflow_typing-1.4.0/keyflow/storage.py +189 -0
  13. keyflow_typing-1.4.0/keyflow/stories.py +366 -0
  14. keyflow_typing-1.4.0/keyflow/stories_en.py +327 -0
  15. keyflow_typing-1.4.0/keyflow/terminal.py +282 -0
  16. keyflow_typing-1.4.0/keyflow/textgen.py +391 -0
  17. keyflow_typing-1.4.0/keyflow/ui.py +515 -0
  18. keyflow_typing-1.4.0/keyflow/updates.py +103 -0
  19. keyflow_typing-1.4.0/keyflow/words.py +238 -0
  20. keyflow_typing-1.4.0/keyflow_typing.egg-info/PKG-INFO +208 -0
  21. keyflow_typing-1.4.0/keyflow_typing.egg-info/SOURCES.txt +31 -0
  22. keyflow_typing-1.4.0/keyflow_typing.egg-info/dependency_links.txt +1 -0
  23. keyflow_typing-1.4.0/keyflow_typing.egg-info/entry_points.txt +2 -0
  24. keyflow_typing-1.4.0/keyflow_typing.egg-info/requires.txt +1 -0
  25. keyflow_typing-1.4.0/keyflow_typing.egg-info/top_level.txt +1 -0
  26. keyflow_typing-1.4.0/pyproject.toml +32 -0
  27. keyflow_typing-1.4.0/setup.cfg +4 -0
  28. keyflow_typing-1.4.0/tests/test_engine.py +70 -0
  29. keyflow_typing-1.4.0/tests/test_keyboard.py +45 -0
  30. keyflow_typing-1.4.0/tests/test_stats.py +106 -0
  31. keyflow_typing-1.4.0/tests/test_stories.py +55 -0
  32. keyflow_typing-1.4.0/tests/test_textgen.py +75 -0
  33. keyflow_typing-1.4.0/tests/test_updates.py +25 -0
@@ -0,0 +1,208 @@
1
+ Metadata-Version: 2.4
2
+ Name: keyflow-typing
3
+ Version: 1.4.0
4
+ Summary: KeyFlow – a typing trainer for the terminal (English & German): WPM tests, endless mode, 40 stories, on-screen keyboard, records and an activity calendar
5
+ Author: YnsLaf
6
+ Project-URL: Homepage, https://github.com/YnsLaf/keyflow
7
+ Keywords: typing,typing-trainer,touch-typing,wpm,terminal,tui,keyboard,tipptrainer
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Environment :: Console
10
+ Classifier: Intended Audience :: End Users/Desktop
11
+ Classifier: Natural Language :: English
12
+ Classifier: Natural Language :: German
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Topic :: Education
15
+ Classifier: Topic :: Games/Entertainment
16
+ Requires-Python: >=3.8
17
+ Description-Content-Type: text/markdown
18
+ Requires-Dist: colorama>=0.4.6
19
+
20
+ # KeyFlow
21
+
22
+ *made by YnsLaf*
23
+
24
+ KeyFlow is a typing trainer for the terminal, written in Python. It runs on
25
+ macOS, Linux and Windows and speaks **English and German**. On first start you
26
+ choose the language of the whole tool.
27
+
28
+ ```
29
+ K E Y F L O W made by YnsLaf Streak 4 days
30
+ Today 6.5/15 min ████░░░░░░░░ 14 days ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
31
+ ────────────────────────────────────────────────────────────────────────
32
+ ❯ 1 Continue: Word test · 25 words ╭──────────────────────────╮
33
+ 2 Practice │ 9 more min to your daily │
34
+ 3 Texts & stories │ goal. │
35
+ 4 Numbers & symbols ╰──┬───────────────────────╯
36
+ 5 Progress ╵
37
+ 6 Settings ╭───────╮
38
+ 7 Quit │ ◕ ◕ │
39
+ │ ‿ │
40
+ ╰─┬───┬─╯
41
+ ╵ ╵
42
+ Flow
43
+ ```
44
+
45
+ ## Installation
46
+
47
+ You need Python 3.8 or newer. Everything else (the `colorama` library) is
48
+ installed automatically.
49
+
50
+ ### macOS and Linux – one command
51
+
52
+ ```bash
53
+ curl -fsSL https://raw.githubusercontent.com/YnsLaf/keyflow/main/install.sh | sh
54
+ ```
55
+
56
+ The installer checks Python, installs [pipx](https://pipx.pypa.io) if needed
57
+ and then installs KeyFlow. Afterwards start it with:
58
+
59
+ ```bash
60
+ keyflow
61
+ ```
62
+
63
+ ### With pip
64
+
65
+ ```bash
66
+ pip install keyflow-typing
67
+ keyflow
68
+ ```
69
+
70
+ On macOS the command is `pip3` (and `python3`). If `keyflow` is not found after
71
+ `pip3 install --user keyflow-typing`, start it with `python3 -m keyflow`.
72
+
73
+ On macOS, pipx is the cleanest way:
74
+
75
+ ```bash
76
+ brew install pipx
77
+ pipx ensurepath
78
+ pipx install keyflow-typing
79
+ ```
80
+
81
+ ### Windows
82
+
83
+ ```bat
84
+ py -m pip install keyflow-typing
85
+ keyflow
86
+ ```
87
+
88
+ Windows Terminal works best.
89
+
90
+ ### Updating
91
+
92
+ ```bash
93
+ pipx upgrade keyflow-typing # or: pip install -U keyflow-typing
94
+ ```
95
+
96
+ > The package on PyPI is called **keyflow-typing** (the name "keyflow" was
97
+ > already taken). The command is simply `keyflow`.
98
+
99
+ ## First start
100
+
101
+ Before KeyFlow starts for the first time, it asks:
102
+
103
+ ```
104
+ Choose your language · Wähle deine Sprache
105
+ ❯ 1 English
106
+ 2 Deutsch
107
+ ```
108
+
109
+ Menus, hints, statistics, achievements, Flow the mascot and the practice texts
110
+ then use that language. You can change it any time in the settings.
111
+
112
+ ## Modes
113
+
114
+ | Mode | What happens |
115
+ |---|---|
116
+ | **Time test** | Type as many words as possible in 15, 30, 60 or 120 seconds. |
117
+ | **Word test** | Type 10, 25, 50 or 100 words as fast as you can. |
118
+ | **Free mode** | No limit – the text never ends. Esc finishes and saves. Words, sentences, numbers, symbols or mixed. |
119
+ | **Endless mode** | Survival: you start with 10 seconds, every correct word adds time, every mistake costs 1 second. Every 20 words the level rises and it gets harder. |
120
+ | **Stories** | 40 stories in English and German: 10 easy, 10 medium, 10 hard, 10 extreme. |
121
+ | **Sentences** | Generated, grammatically correct sentences. |
122
+ | **Numbers** | Prices, times, dates, sums, units and phone numbers. |
123
+ | **Symbols** | Brackets, operators, paths, e-mails and code snippets. |
124
+ | **Mixed (pro)** | Words, capitals, punctuation, numbers and symbols all mixed up. |
125
+ | **Quotes & proverbs** | Proverbs and famous lines from Shakespeare, Austen, Dickens, Goethe, Kafka … |
126
+ | **Weak keys** | Generates text with exactly the keys you get wrong the most. |
127
+ | **Your own text** | Paste a text or load a `.txt` file. Long texts are practiced in parts. |
128
+
129
+ ## While typing
130
+
131
+ - A keyboard under the text shows which key comes next. With capitals and
132
+ symbols the right ⇧ / ⌥ / AltGr key lights up too, and a hint tells you which
133
+ finger to use. Mistakes flash red.
134
+ - The word you are typing is highlighted, and a flowing progress line runs
135
+ above the text.
136
+
137
+ | Key | Action |
138
+ |---|---|
139
+ | Backspace | delete last character |
140
+ | Ctrl + Backspace (macOS: Option + Backspace) | delete whole word |
141
+ | Tab | restart with a new text |
142
+ | Esc | back to the menu (free and endless mode: finish and save) |
143
+
144
+ ## Progress
145
+
146
+ - **Result after every test:** WPM and accuracy in big digits, raw WPM,
147
+ consistency, a speed graph, the keys you missed and new records.
148
+ - **Records** per mode, length and language.
149
+ - **History:** chart of your recent tests and your trend.
150
+ - **Keyboard view:** every key colored by your error rate.
151
+ - **Activity calendar** like on GitHub, plus current and longest streak.
152
+ - **Daily goal and streak** at the top of the menu.
153
+ - **29 achievements**.
154
+
155
+ ## Look
156
+
157
+ - **Background:** KeyFlow colors the terminal when it starts and restores it
158
+ when you quit.
159
+ - The default is "Glass": hue 0°, saturation 0 %, brightness 10 %, opacity 30 %.
160
+ - In the macOS Terminal this uses a Terminal profile called "KeyFlow", which
161
+ KeyFlow creates once (a window briefly opens and closes).
162
+ - The window title then only shows "KeyFlow".
163
+ - **Moving colors:** flowing gradients, a shimmering menu and a pulsing next key.
164
+ - **Flow**, the mascot, blinks, bobs and gives you tips.
165
+
166
+ ## Info & updates
167
+
168
+ The **Info** page in the menu shows your KeyFlow version, whether an update is
169
+ available, how KeyFlow was installed, your Python version and where your data is
170
+ stored. It also has buttons that open GitHub and PyPI in your browser, and an
171
+ **Update now** button that runs the right update command for you.
172
+
173
+ On start KeyFlow asks PyPI in the background whether a newer version exists. If
174
+ so, Flow tells you and the menu shows "Update!". You can turn this off in the
175
+ settings (or set `KEYFLOW_NO_UPDATE_CHECK=1`).
176
+
177
+ ## About
178
+
179
+ KeyFlow is made by **YnsLaf** – [github.com/YnsLaf](https://github.com/YnsLaf).
180
+ Ideas, bugs or wishes? Open an issue on
181
+ [github.com/YnsLaf/keyflow](https://github.com/YnsLaf/keyflow).
182
+
183
+ ## Settings
184
+
185
+ Language, text language, keyboard layout (QWERTZ/QWERTY), word length,
186
+ punctuation, numbers, lowercase only, umlauts, strict mode, live WPM, cursor,
187
+ visible lines, text width, sound, background, color mode, moving colors,
188
+ keyboard while typing, update check, daily goal, reset statistics.
189
+
190
+ ## Data
191
+
192
+ Everything is stored in `~/.keyflow/daten.json`. Use `keyflow --data FILE` or the
193
+ environment variable `KEYFLOW_HOME` to choose another place.
194
+
195
+ ## Development
196
+
197
+ ```bash
198
+ git clone https://github.com/YnsLaf/keyflow
199
+ cd keyflow
200
+ python3 -m venv .venv && source .venv/bin/activate
201
+ pip install -e .
202
+ keyflow
203
+ python -m unittest discover -s tests
204
+ ```
205
+
206
+ A new release on GitHub publishes the package to PyPI automatically
207
+ (`.github/workflows/publish.yml`). Raise the version in `pyproject.toml` and
208
+ `keyflow/__init__.py` first.
@@ -0,0 +1,189 @@
1
+ # KeyFlow
2
+
3
+ *made by YnsLaf*
4
+
5
+ KeyFlow is a typing trainer for the terminal, written in Python. It runs on
6
+ macOS, Linux and Windows and speaks **English and German**. On first start you
7
+ choose the language of the whole tool.
8
+
9
+ ```
10
+ K E Y F L O W made by YnsLaf Streak 4 days
11
+ Today 6.5/15 min ████░░░░░░░░ 14 days ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■
12
+ ────────────────────────────────────────────────────────────────────────
13
+ ❯ 1 Continue: Word test · 25 words ╭──────────────────────────╮
14
+ 2 Practice │ 9 more min to your daily │
15
+ 3 Texts & stories │ goal. │
16
+ 4 Numbers & symbols ╰──┬───────────────────────╯
17
+ 5 Progress ╵
18
+ 6 Settings ╭───────╮
19
+ 7 Quit │ ◕ ◕ │
20
+ │ ‿ │
21
+ ╰─┬───┬─╯
22
+ ╵ ╵
23
+ Flow
24
+ ```
25
+
26
+ ## Installation
27
+
28
+ You need Python 3.8 or newer. Everything else (the `colorama` library) is
29
+ installed automatically.
30
+
31
+ ### macOS and Linux – one command
32
+
33
+ ```bash
34
+ curl -fsSL https://raw.githubusercontent.com/YnsLaf/keyflow/main/install.sh | sh
35
+ ```
36
+
37
+ The installer checks Python, installs [pipx](https://pipx.pypa.io) if needed
38
+ and then installs KeyFlow. Afterwards start it with:
39
+
40
+ ```bash
41
+ keyflow
42
+ ```
43
+
44
+ ### With pip
45
+
46
+ ```bash
47
+ pip install keyflow-typing
48
+ keyflow
49
+ ```
50
+
51
+ On macOS the command is `pip3` (and `python3`). If `keyflow` is not found after
52
+ `pip3 install --user keyflow-typing`, start it with `python3 -m keyflow`.
53
+
54
+ On macOS, pipx is the cleanest way:
55
+
56
+ ```bash
57
+ brew install pipx
58
+ pipx ensurepath
59
+ pipx install keyflow-typing
60
+ ```
61
+
62
+ ### Windows
63
+
64
+ ```bat
65
+ py -m pip install keyflow-typing
66
+ keyflow
67
+ ```
68
+
69
+ Windows Terminal works best.
70
+
71
+ ### Updating
72
+
73
+ ```bash
74
+ pipx upgrade keyflow-typing # or: pip install -U keyflow-typing
75
+ ```
76
+
77
+ > The package on PyPI is called **keyflow-typing** (the name "keyflow" was
78
+ > already taken). The command is simply `keyflow`.
79
+
80
+ ## First start
81
+
82
+ Before KeyFlow starts for the first time, it asks:
83
+
84
+ ```
85
+ Choose your language · Wähle deine Sprache
86
+ ❯ 1 English
87
+ 2 Deutsch
88
+ ```
89
+
90
+ Menus, hints, statistics, achievements, Flow the mascot and the practice texts
91
+ then use that language. You can change it any time in the settings.
92
+
93
+ ## Modes
94
+
95
+ | Mode | What happens |
96
+ |---|---|
97
+ | **Time test** | Type as many words as possible in 15, 30, 60 or 120 seconds. |
98
+ | **Word test** | Type 10, 25, 50 or 100 words as fast as you can. |
99
+ | **Free mode** | No limit – the text never ends. Esc finishes and saves. Words, sentences, numbers, symbols or mixed. |
100
+ | **Endless mode** | Survival: you start with 10 seconds, every correct word adds time, every mistake costs 1 second. Every 20 words the level rises and it gets harder. |
101
+ | **Stories** | 40 stories in English and German: 10 easy, 10 medium, 10 hard, 10 extreme. |
102
+ | **Sentences** | Generated, grammatically correct sentences. |
103
+ | **Numbers** | Prices, times, dates, sums, units and phone numbers. |
104
+ | **Symbols** | Brackets, operators, paths, e-mails and code snippets. |
105
+ | **Mixed (pro)** | Words, capitals, punctuation, numbers and symbols all mixed up. |
106
+ | **Quotes & proverbs** | Proverbs and famous lines from Shakespeare, Austen, Dickens, Goethe, Kafka … |
107
+ | **Weak keys** | Generates text with exactly the keys you get wrong the most. |
108
+ | **Your own text** | Paste a text or load a `.txt` file. Long texts are practiced in parts. |
109
+
110
+ ## While typing
111
+
112
+ - A keyboard under the text shows which key comes next. With capitals and
113
+ symbols the right ⇧ / ⌥ / AltGr key lights up too, and a hint tells you which
114
+ finger to use. Mistakes flash red.
115
+ - The word you are typing is highlighted, and a flowing progress line runs
116
+ above the text.
117
+
118
+ | Key | Action |
119
+ |---|---|
120
+ | Backspace | delete last character |
121
+ | Ctrl + Backspace (macOS: Option + Backspace) | delete whole word |
122
+ | Tab | restart with a new text |
123
+ | Esc | back to the menu (free and endless mode: finish and save) |
124
+
125
+ ## Progress
126
+
127
+ - **Result after every test:** WPM and accuracy in big digits, raw WPM,
128
+ consistency, a speed graph, the keys you missed and new records.
129
+ - **Records** per mode, length and language.
130
+ - **History:** chart of your recent tests and your trend.
131
+ - **Keyboard view:** every key colored by your error rate.
132
+ - **Activity calendar** like on GitHub, plus current and longest streak.
133
+ - **Daily goal and streak** at the top of the menu.
134
+ - **29 achievements**.
135
+
136
+ ## Look
137
+
138
+ - **Background:** KeyFlow colors the terminal when it starts and restores it
139
+ when you quit.
140
+ - The default is "Glass": hue 0°, saturation 0 %, brightness 10 %, opacity 30 %.
141
+ - In the macOS Terminal this uses a Terminal profile called "KeyFlow", which
142
+ KeyFlow creates once (a window briefly opens and closes).
143
+ - The window title then only shows "KeyFlow".
144
+ - **Moving colors:** flowing gradients, a shimmering menu and a pulsing next key.
145
+ - **Flow**, the mascot, blinks, bobs and gives you tips.
146
+
147
+ ## Info & updates
148
+
149
+ The **Info** page in the menu shows your KeyFlow version, whether an update is
150
+ available, how KeyFlow was installed, your Python version and where your data is
151
+ stored. It also has buttons that open GitHub and PyPI in your browser, and an
152
+ **Update now** button that runs the right update command for you.
153
+
154
+ On start KeyFlow asks PyPI in the background whether a newer version exists. If
155
+ so, Flow tells you and the menu shows "Update!". You can turn this off in the
156
+ settings (or set `KEYFLOW_NO_UPDATE_CHECK=1`).
157
+
158
+ ## About
159
+
160
+ KeyFlow is made by **YnsLaf** – [github.com/YnsLaf](https://github.com/YnsLaf).
161
+ Ideas, bugs or wishes? Open an issue on
162
+ [github.com/YnsLaf/keyflow](https://github.com/YnsLaf/keyflow).
163
+
164
+ ## Settings
165
+
166
+ Language, text language, keyboard layout (QWERTZ/QWERTY), word length,
167
+ punctuation, numbers, lowercase only, umlauts, strict mode, live WPM, cursor,
168
+ visible lines, text width, sound, background, color mode, moving colors,
169
+ keyboard while typing, update check, daily goal, reset statistics.
170
+
171
+ ## Data
172
+
173
+ Everything is stored in `~/.keyflow/daten.json`. Use `keyflow --data FILE` or the
174
+ environment variable `KEYFLOW_HOME` to choose another place.
175
+
176
+ ## Development
177
+
178
+ ```bash
179
+ git clone https://github.com/YnsLaf/keyflow
180
+ cd keyflow
181
+ python3 -m venv .venv && source .venv/bin/activate
182
+ pip install -e .
183
+ keyflow
184
+ python -m unittest discover -s tests
185
+ ```
186
+
187
+ A new release on GitHub publishes the package to PyPI automatically
188
+ (`.github/workflows/publish.yml`). Raise the version in `pyproject.toml` and
189
+ `keyflow/__init__.py` first.
@@ -0,0 +1,3 @@
1
+ """KeyFlow – Tipptrainer fürs Terminal. Made by YnsLaf"""
2
+
3
+ __version__ = "1.4.0"
@@ -0,0 +1,5 @@
1
+ import sys
2
+
3
+ from .app import main
4
+
5
+ sys.exit(main())