dsap-cli 0.1.0__py3-none-any.whl

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.
@@ -0,0 +1,287 @@
1
+ Metadata-Version: 2.4
2
+ Name: dsap-cli
3
+ Version: 0.1.0
4
+ Summary: A CLI for mastering Data Structures & Algorithms using spaced repetition (SM-2).
5
+ Project-URL: Homepage, https://github.com/alquatra/dsap
6
+ Project-URL: Documentation, https://github.com/alquatra/dsap#readme
7
+ Project-URL: Repository, https://github.com/alquatra/dsap.git
8
+ Project-URL: Issues, https://github.com/alquatra/dsap/issues
9
+ Project-URL: Changelog, https://github.com/alquatra/dsap/blob/main/CHANGELOG.md
10
+ Author-email: "Juma R. Paul" <jumarobertpaul@gmail.com>
11
+ Maintainer-email: "Juma R. Paul" <jumarobertpaul@gmail.com>
12
+ License-Expression: MIT
13
+ License-File: LICENSE
14
+ Keywords: algorithms,cli,coding-interview,data-structures,dsa,leetcode,sm2,spaced-repetition,study
15
+ Classifier: Development Status :: 4 - Beta
16
+ Classifier: Environment :: Console
17
+ Classifier: Intended Audience :: Developers
18
+ Classifier: Intended Audience :: Education
19
+ Classifier: License :: OSI Approved :: MIT License
20
+ Classifier: Natural Language :: English
21
+ Classifier: Operating System :: OS Independent
22
+ Classifier: Programming Language :: Python :: 3 :: Only
23
+ Classifier: Programming Language :: Python :: 3.10
24
+ Classifier: Programming Language :: Python :: 3.11
25
+ Classifier: Programming Language :: Python :: 3.12
26
+ Classifier: Programming Language :: Python :: 3.13
27
+ Classifier: Topic :: Education
28
+ Classifier: Topic :: Software Development
29
+ Classifier: Typing :: Typed
30
+ Requires-Python: >=3.10
31
+ Requires-Dist: click<9,>=8.1
32
+ Requires-Dist: pydantic<3,>=2
33
+ Requires-Dist: pyyaml<7,>=6
34
+ Requires-Dist: rich<14,>=13
35
+ Provides-Extra: dev
36
+ Requires-Dist: mypy<2,>=1; extra == 'dev'
37
+ Requires-Dist: pre-commit<4,>=3; extra == 'dev'
38
+ Requires-Dist: pytest-cov<5,>=4; extra == 'dev'
39
+ Requires-Dist: pytest<9,>=8; extra == 'dev'
40
+ Requires-Dist: ruff<1,>=0.4; extra == 'dev'
41
+ Requires-Dist: types-pyyaml<7,>=6; extra == 'dev'
42
+ Description-Content-Type: text/markdown
43
+
44
+
45
+
46
+ # Data Structures and Algorithms Practice (DSAP)
47
+
48
+ [![PyPI version](https://badge.fury.io/py/dsap-cli.svg)](https://pypi.org/project/dsap-cli/)
49
+ [![PyPI downloads](https://img.shields.io/pypi/dm/dsap-cli)](https://pypi.org/project/dsap-cli/)
50
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
51
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
52
+
53
+ DSAP is a terminal-first CLI that schedules coding interview problems using the **SM-2 spaced repetition algorithm**, helping you retain patterns long-term instead of forgetting them after solving once.
54
+
55
+ ---
56
+
57
+ # Why DSAP?
58
+
59
+ Most developers preparing for technical interviews solve algorithm problems once and never revisit them.
60
+
61
+ As a result, they forget patterns they previously learned.
62
+
63
+ DSAP solves this by scheduling problems using **spaced repetition**, a learning technique proven to improve long-term memory.
64
+
65
+ Benefits:
66
+
67
+ - Retain algorithm patterns long-term
68
+ - Structured daily practice
69
+ - Automatic scheduling of reviews
70
+ - Focus on problems you’re about to forget
71
+
72
+ Instead of guessing what to practice next, **DSAP tells you exactly what to review**.
73
+
74
+ ---
75
+
76
+ # Installation
77
+
78
+ ```bash
79
+ # Recommended
80
+ uv tool install dsap-cli
81
+
82
+ # Alternatives
83
+ pipx install dsap-cli
84
+ pip install dsap-cli
85
+ ```
86
+
87
+ Verify installation:
88
+
89
+ ```bash
90
+ dsap --version
91
+ ```
92
+
93
+ ---
94
+
95
+ # Quick Start
96
+
97
+ ```bash
98
+ # Load problems and set focus
99
+ dsap load blind75
100
+ dsap config preferred_set blind75
101
+
102
+ # Start practicing
103
+ dsap next
104
+ ```
105
+
106
+ For the full workflow see:
107
+
108
+ ```
109
+ USER_GUIDE.md
110
+ ```
111
+
112
+ ---
113
+
114
+ # Example Session
115
+
116
+ ```
117
+ $ dsap next
118
+
119
+ 📌 Next Problem
120
+ Two Sum (Easy)
121
+
122
+ Category: Arrays
123
+ Set: Blind 75
124
+
125
+ Open problem in browser? [y/N]
126
+
127
+ After solving, rate your recall:
128
+
129
+ 5 - Perfect
130
+ 4 - Good
131
+ 3 - Hard
132
+ 2 - Incorrect but remembered idea
133
+ 1 - Incorrect
134
+ 0 - Complete blackout
135
+ ```
136
+
137
+ DSAP then schedules the next review automatically.
138
+
139
+ ---
140
+
141
+ # Commands
142
+
143
+ | Command | Description |
144
+ |--------|-------------|
145
+ | `dsap next` | Get next recommended problem |
146
+ | `dsap review` | Review due problems in a session |
147
+ | `dsap list` | List problems with filters |
148
+ | `dsap stats` | View progress and statistics |
149
+ | `dsap load` | Load curated problem sets |
150
+ | `dsap config` | Manage configuration |
151
+ | `dsap reset` | Reset problems and/or progress |
152
+ | `dsap add` | Add a custom problem |
153
+
154
+ ---
155
+
156
+ # Examples
157
+
158
+ ```bash
159
+ # Filter by problem set
160
+ dsap next --set blind75
161
+ dsap review --set neetcode150
162
+
163
+ # Filter by difficulty
164
+ dsap next --difficulty Easy
165
+ dsap list --difficulty Hard
166
+
167
+ # Filter by category
168
+ dsap list --category "Dynamic Programming"
169
+
170
+ # Other options
171
+ dsap review --limit 5
172
+ dsap next --new-only
173
+ dsap list --due
174
+
175
+ # Reset progress
176
+ dsap reset --progress
177
+
178
+ # Reset a specific set
179
+ dsap reset --set blind75 --all
180
+ ```
181
+
182
+ ---
183
+
184
+ # Problem Sets
185
+
186
+ | Set | Problems | Description |
187
+ |----|----|----|
188
+ | `blind75` | 75 | Core interview essentials |
189
+ | `neetcode150` | 150 | Comprehensive curriculum |
190
+ | `grind75` | 75 | Flexible study roadmap |
191
+
192
+ ```bash
193
+ dsap load --list
194
+ dsap load blind75
195
+ dsap load ./custom.yaml
196
+ ```
197
+
198
+ ---
199
+
200
+ # Configuration
201
+
202
+ ```bash
203
+ dsap config --list
204
+ dsap config preferred_set blind75
205
+ dsap config daily_goal 5
206
+ dsap config preferred_difficulty Medium
207
+ dsap config auto_open_browser false
208
+ dsap config --reset
209
+ ```
210
+
211
+ | Setting | Default | Description |
212
+ |----|----|----|
213
+ | `preferred_set` | None | Default problem set |
214
+ | `daily_goal` | 5 | Target problems per day |
215
+ | `preferred_difficulty` | None | Filter by difficulty |
216
+ | `show_hints` | true | Show problem hints |
217
+ | `auto_open_browser` | true | Open problems in browser |
218
+
219
+ ---
220
+
221
+ # How It Works
222
+
223
+ DSAP implements the **SM-2 (SuperMemo 2)** spaced repetition algorithm.
224
+
225
+ After solving each problem, rate your recall from **0–5**.
226
+
227
+ | Rating | Meaning | Effect |
228
+ |----|----|----|
229
+ | 5 | Perfect | Interval grows |
230
+ | 4 | Good | Interval grows |
231
+ | 3 | Hard | Interval grows slowly |
232
+ | 0-2 | Forgot | Interval resets |
233
+
234
+ Typical interval progression:
235
+
236
+ ```
237
+ 1 day → 6 days → 15 days → 38 days → 95 days
238
+ ```
239
+
240
+ After several successful reviews, problems reappear only every few months.
241
+
242
+ ---
243
+
244
+ # Data Storage
245
+
246
+ DSAP stores all data locally:
247
+
248
+ ```
249
+ ~/.dsap/
250
+ ├── dsap.db
251
+ └── config.json
252
+ ```
253
+
254
+ To completely uninstall:
255
+
256
+ ```bash
257
+ uv tool uninstall dsap-cli
258
+ rm -rf ~/.dsap
259
+ ```
260
+
261
+ ---
262
+
263
+ # Development
264
+
265
+ ```bash
266
+ git clone https://github.com/juma-paul/dsap-cli.git
267
+ cd dsap-cli
268
+
269
+ uv sync --all-extras
270
+ uv run pytest
271
+ ```
272
+
273
+ ---
274
+
275
+ # Changelog
276
+
277
+ See the full release history in:
278
+
279
+ ```
280
+ CHANGELOG.md
281
+ ```
282
+
283
+ ---
284
+
285
+ # License
286
+
287
+ MIT
@@ -0,0 +1,18 @@
1
+ dsap/__init__.py,sha256=5XgE49uJFttFU9TWfcb0rIqzvwtuUuWAiaHZhx2ossU,618
2
+ dsap/__main__.py,sha256=GwLikf--QR1WA0rvXyJjF1pDO6-DHf74s8XcVC3z4VQ,122
3
+ dsap/cli.py,sha256=_fwbdCIHB-jf2zDYqhwk9-Gq5S4MN7ZLeAWGil0g8Nw,17886
4
+ dsap/config.py,sha256=Sx2kMclYGrwMz3RaC4LDy5h4bPWoHfqiFm7tuaGBOrs,4648
5
+ dsap/database.py,sha256=nzFvKuy4AITvicOTmici66yaFxnUcQHQXQu3NhyKRR4,27217
6
+ dsap/models.py,sha256=ekQvBxkf0vCRI-58sWPajuIzOTiHVq8HZ_kpIvwP0sE,7009
7
+ dsap/problem_sets.py,sha256=ZZvAr4kHlXqnQbCVQT5N7HW2EznZTENDZWd2KYKXHZw,5427
8
+ dsap/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ dsap/sm2.py,sha256=oVW0BSCIvCR8T-WZuSUkmXCXX0vQSuFSB1UshQlisHQ,17129
10
+ dsap/ui.py,sha256=yD7-AE_SiHiSWI-haBKyUTK6X35TlEaICwmhx_HPqNc,13288
11
+ dsap/data/blind75.yaml,sha256=ZiIZlySgIJUwiBz2qQW9oYE15MjIVVpo-sT9iJtC4aw,14375
12
+ dsap/data/grind75.yaml,sha256=DepmLsHYhSOgRlRg2CCu7JZG7bk2zxUz5gIt1-Q5-og,14078
13
+ dsap/data/neetcode150.yaml,sha256=aKjMy79ZVyl71CLD_fKkkZJx6oACeLId7trSb2bSuDo,28040
14
+ dsap_cli-0.1.0.dist-info/METADATA,sha256=VfrFXCXxfibuQC2XfXJSrTX-tNytTO4a8GtbVld0_io,6383
15
+ dsap_cli-0.1.0.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
16
+ dsap_cli-0.1.0.dist-info/entry_points.txt,sha256=VVbhRF2SvefP5ILXgmDe0DxsGu6Vl26tntajkIERPJY,39
17
+ dsap_cli-0.1.0.dist-info/licenses/LICENSE,sha256=BwtbR5kJlaACk5LKNYgGtMraQK5t9wyAgCUw1eV9Src,1069
18
+ dsap_cli-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.29.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ dsap = dsap.cli:main
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Juma R. Paul
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.