examshell-python 0.1.3__py3-none-any.whl → 0.1.4__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,136 @@
1
+ Metadata-Version: 2.4
2
+ Name: examshell-python
3
+ Version: 0.1.4
4
+ Summary: Interactive 42-style exam practice shell for Python exercises
5
+ Author: Denis
6
+ License: MIT
7
+ Requires-Python: >=3.10
8
+ Description-Content-Type: text/markdown
9
+ Requires-Dist: pydantic>=2.0
10
+ Requires-Dist: rich>=13.0
11
+
12
+ # examshell-python
13
+
14
+ Interactive terminal shell for practising 42-style Python exam tasks. Simulates the real exam environment — timed pressure, blind grading, sequential levels — or lets you work through exercises freely in practice mode.
15
+
16
+ ## Features
17
+
18
+ - **Two modes** — Real (exam simulation) and Practice (free training)
19
+ - **Automatic grading** — `grademe` runs your solution against test cases and shows a results table
20
+ - **Multi-language task descriptions** — each task is described in EN, DE, FR, ES, IT
21
+ - **14 tasks across 6 levels** — from easy warm-ups to hard algorithmic challenges
22
+ - **Clean terminal UI** — built with [Rich](https://github.com/Textualize/rich)
23
+
24
+ ## Installation
25
+
26
+ Requires Python 3.10+.
27
+
28
+ ```bash
29
+ pip install examshell-python
30
+ ```
31
+
32
+ Or install from source:
33
+
34
+ ```bash
35
+ git clone <repo-url>
36
+ cd examshell-python
37
+ pip install .
38
+ ```
39
+
40
+ ## Usage
41
+
42
+ ```bash
43
+ examshell42
44
+ ```
45
+
46
+ On launch you choose a mode:
47
+
48
+ ```
49
+ ╭─ Choose your Exam mode ─╮
50
+ │ Real mode (1) │
51
+ │ Practice mode (2) │
52
+ ╰─────────────────────────╯
53
+ ```
54
+
55
+ ### Real mode
56
+
57
+ Simulates the actual exam. Tasks are drawn randomly per level. Each correct solution earns **+16 points**; reach 100 to pass.
58
+
59
+ | Command | Description |
60
+ |------------|------------------------------|
61
+ | `grademe` | Check your solution |
62
+ | `status` | Show current task info again |
63
+ | `finish` | End the exam |
64
+
65
+ ### Practice mode
66
+
67
+ Work through all tasks in any order, retry freely, no score pressure.
68
+
69
+ | Command | Description |
70
+ |------------|----------------------------------|
71
+ | `grademe` | Check your solution |
72
+ | `list` | Show all available tasks |
73
+ | `choose` | Pick a task by number |
74
+ | `skip` | Move to the next task |
75
+ | `status` | Show current task info again |
76
+ | `finish` | End the practice session |
77
+
78
+ ## How it works
79
+
80
+ When a session starts, examshell creates a working directory (`exam42/`) with two sub-folders:
81
+
82
+ ```
83
+ exam42/
84
+ ├── subjects/
85
+ │ └── <task_name>/
86
+ │ ├── <task_name>.en.txt ← task description + signature + examples
87
+ │ ├── <task_name>.de.txt
88
+ │ └── ...
89
+ └── rendu/
90
+ └── <task_name>/
91
+ └── <task_name>.py ← put your solution here
92
+ ```
93
+
94
+ Write your solution in `rendu/<task_name>/<task_name>.py`, then run `grademe`. The shell imports your file, executes each example against it, and prints a pass/fail table.
95
+
96
+ ## Tasks
97
+
98
+ | Level | Difficulty | Task |
99
+ |-------|------------|------|
100
+ | 1 | Easy | `py_bracket_validator` — validate bracket pairs `()[]{}` |
101
+ | 1 | Easy | `py_cryptic_sorter` — custom sort logic |
102
+ | 2 | Easy | `py_echo_validator` — string validation |
103
+ | 2 | Easy | `py_mirror_matrix` — matrix mirroring |
104
+ | 3 | Medium | `py_hidenp` — hidden number problem |
105
+ | 3 | Medium | `py_inter` — intersection of sequences |
106
+ | 3 | Medium | `py_number_base_converter` — base conversion |
107
+ | 3 | Medium | `py_pattern_tracker` — pattern detection |
108
+ | 4 | Medium | `py_anagram` — anagram check |
109
+ | 4 | Medium | `py_shadow_merge` — merge operations |
110
+ | 4 | Medium | `py_string_permutation_checker` — permutation check |
111
+ | 5 | Hard | `py_string_sculptor` — string transformation |
112
+ | 5 | Hard | `py_twist_sequence` — sequence manipulation |
113
+ | 6 | Hard | `py_whisper_cipher` — cipher encoding |
114
+
115
+ ## Dependencies
116
+
117
+ - [`pydantic`](https://docs.pydantic.dev/) ≥ 2.0 — task data models
118
+ - [`rich`](https://github.com/Textualize/rich) ≥ 13.0 — terminal UI
119
+
120
+ ## Project structure
121
+
122
+ ```
123
+ src/examshell/
124
+ ├── __init__.py
125
+ ├── __main__.py
126
+ ├── main.py # CLI entry point, mode logic, UI screens
127
+ ├── models.py # Pydantic models (Task, Description, Example)
128
+ ├── task_generator.py # TaskManager: file creation, grading, task selection
129
+ ├── config.py
130
+ └── data/
131
+ └── data.json # All task definitions
132
+ ```
133
+
134
+ ## License
135
+
136
+ MIT
@@ -5,8 +5,8 @@ examshell/main.py,sha256=3h3G_yjpTDe1FzI2yCLjOLAJnpimp4EE081xEBWoa5I,10109
5
5
  examshell/models.py,sha256=6S83MR7dE1FuEoXY0K3Fz_lVAiNRDVdROHJ_B8Nt1Zk,383
6
6
  examshell/task_generator.py,sha256=z4lSWiAk7rCUen1gcSMiuSuLnNThw0mOhVqOIZuxmuo,6781
7
7
  examshell/data/data.json,sha256=Ccr9fpeUxJqKXPx4e-x8POXH9b0d2GUuttO8U4XmtKg,34795
8
- examshell_python-0.1.3.dist-info/METADATA,sha256=iC2MFvn-SZ4OOLZnmxL5y1qteo8HE66e_LWS75YcIAs,287
9
- examshell_python-0.1.3.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
10
- examshell_python-0.1.3.dist-info/entry_points.txt,sha256=Apx4jSyjUqcm0wNOxlHAyzlm7kDcMqvKCwrl943rCM8,51
11
- examshell_python-0.1.3.dist-info/top_level.txt,sha256=pGd6WjsN6GBAYngnGpYCfK3YDx5Qv4cztfkwE4nzhoU,10
12
- examshell_python-0.1.3.dist-info/RECORD,,
8
+ examshell_python-0.1.4.dist-info/METADATA,sha256=xraLDY-0hGTavxMFnNN6bPCpNk1cp9Uj0Oz3ecAqaQ4,4493
9
+ examshell_python-0.1.4.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
10
+ examshell_python-0.1.4.dist-info/entry_points.txt,sha256=Apx4jSyjUqcm0wNOxlHAyzlm7kDcMqvKCwrl943rCM8,51
11
+ examshell_python-0.1.4.dist-info/top_level.txt,sha256=pGd6WjsN6GBAYngnGpYCfK3YDx5Qv4cztfkwE4nzhoU,10
12
+ examshell_python-0.1.4.dist-info/RECORD,,
@@ -1,10 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: examshell-python
3
- Version: 0.1.3
4
- Summary: Interactive 42-style exam practice shell for Python exercises
5
- Author: Denis
6
- License: MIT
7
- Requires-Python: >=3.10
8
- Description-Content-Type: text/markdown
9
- Requires-Dist: pydantic>=2.0
10
- Requires-Dist: rich>=13.0