examshell-python 0.1.1__tar.gz → 0.1.4__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 (20) hide show
  1. examshell_python-0.1.4/PKG-INFO +136 -0
  2. examshell_python-0.1.4/README.md +125 -0
  3. {examshell_python-0.1.1 → examshell_python-0.1.4}/pyproject.toml +2 -2
  4. {examshell_python-0.1.1 → examshell_python-0.1.4}/src/examshell/main.py +1 -1
  5. examshell_python-0.1.4/src/examshell_python.egg-info/PKG-INFO +136 -0
  6. examshell_python-0.1.1/PKG-INFO +0 -10
  7. examshell_python-0.1.1/README.md +0 -0
  8. examshell_python-0.1.1/src/examshell_python.egg-info/PKG-INFO +0 -10
  9. {examshell_python-0.1.1 → examshell_python-0.1.4}/setup.cfg +0 -0
  10. {examshell_python-0.1.1 → examshell_python-0.1.4}/src/examshell/__init__.py +0 -0
  11. {examshell_python-0.1.1 → examshell_python-0.1.4}/src/examshell/__main__.py +0 -0
  12. {examshell_python-0.1.1 → examshell_python-0.1.4}/src/examshell/config.py +0 -0
  13. {examshell_python-0.1.1 → examshell_python-0.1.4}/src/examshell/data/data.json +0 -0
  14. {examshell_python-0.1.1 → examshell_python-0.1.4}/src/examshell/models.py +0 -0
  15. {examshell_python-0.1.1 → examshell_python-0.1.4}/src/examshell/task_generator.py +0 -0
  16. {examshell_python-0.1.1 → examshell_python-0.1.4}/src/examshell_python.egg-info/SOURCES.txt +0 -0
  17. {examshell_python-0.1.1 → examshell_python-0.1.4}/src/examshell_python.egg-info/dependency_links.txt +0 -0
  18. {examshell_python-0.1.1 → examshell_python-0.1.4}/src/examshell_python.egg-info/entry_points.txt +0 -0
  19. {examshell_python-0.1.1 → examshell_python-0.1.4}/src/examshell_python.egg-info/requires.txt +0 -0
  20. {examshell_python-0.1.1 → examshell_python-0.1.4}/src/examshell_python.egg-info/top_level.txt +0 -0
@@ -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
@@ -0,0 +1,125 @@
1
+ # examshell-python
2
+
3
+ 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.
4
+
5
+ ## Features
6
+
7
+ - **Two modes** — Real (exam simulation) and Practice (free training)
8
+ - **Automatic grading** — `grademe` runs your solution against test cases and shows a results table
9
+ - **Multi-language task descriptions** — each task is described in EN, DE, FR, ES, IT
10
+ - **14 tasks across 6 levels** — from easy warm-ups to hard algorithmic challenges
11
+ - **Clean terminal UI** — built with [Rich](https://github.com/Textualize/rich)
12
+
13
+ ## Installation
14
+
15
+ Requires Python 3.10+.
16
+
17
+ ```bash
18
+ pip install examshell-python
19
+ ```
20
+
21
+ Or install from source:
22
+
23
+ ```bash
24
+ git clone <repo-url>
25
+ cd examshell-python
26
+ pip install .
27
+ ```
28
+
29
+ ## Usage
30
+
31
+ ```bash
32
+ examshell42
33
+ ```
34
+
35
+ On launch you choose a mode:
36
+
37
+ ```
38
+ ╭─ Choose your Exam mode ─╮
39
+ │ Real mode (1) │
40
+ │ Practice mode (2) │
41
+ ╰─────────────────────────╯
42
+ ```
43
+
44
+ ### Real mode
45
+
46
+ Simulates the actual exam. Tasks are drawn randomly per level. Each correct solution earns **+16 points**; reach 100 to pass.
47
+
48
+ | Command | Description |
49
+ |------------|------------------------------|
50
+ | `grademe` | Check your solution |
51
+ | `status` | Show current task info again |
52
+ | `finish` | End the exam |
53
+
54
+ ### Practice mode
55
+
56
+ Work through all tasks in any order, retry freely, no score pressure.
57
+
58
+ | Command | Description |
59
+ |------------|----------------------------------|
60
+ | `grademe` | Check your solution |
61
+ | `list` | Show all available tasks |
62
+ | `choose` | Pick a task by number |
63
+ | `skip` | Move to the next task |
64
+ | `status` | Show current task info again |
65
+ | `finish` | End the practice session |
66
+
67
+ ## How it works
68
+
69
+ When a session starts, examshell creates a working directory (`exam42/`) with two sub-folders:
70
+
71
+ ```
72
+ exam42/
73
+ ├── subjects/
74
+ │ └── <task_name>/
75
+ │ ├── <task_name>.en.txt ← task description + signature + examples
76
+ │ ├── <task_name>.de.txt
77
+ │ └── ...
78
+ └── rendu/
79
+ └── <task_name>/
80
+ └── <task_name>.py ← put your solution here
81
+ ```
82
+
83
+ 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.
84
+
85
+ ## Tasks
86
+
87
+ | Level | Difficulty | Task |
88
+ |-------|------------|------|
89
+ | 1 | Easy | `py_bracket_validator` — validate bracket pairs `()[]{}` |
90
+ | 1 | Easy | `py_cryptic_sorter` — custom sort logic |
91
+ | 2 | Easy | `py_echo_validator` — string validation |
92
+ | 2 | Easy | `py_mirror_matrix` — matrix mirroring |
93
+ | 3 | Medium | `py_hidenp` — hidden number problem |
94
+ | 3 | Medium | `py_inter` — intersection of sequences |
95
+ | 3 | Medium | `py_number_base_converter` — base conversion |
96
+ | 3 | Medium | `py_pattern_tracker` — pattern detection |
97
+ | 4 | Medium | `py_anagram` — anagram check |
98
+ | 4 | Medium | `py_shadow_merge` — merge operations |
99
+ | 4 | Medium | `py_string_permutation_checker` — permutation check |
100
+ | 5 | Hard | `py_string_sculptor` — string transformation |
101
+ | 5 | Hard | `py_twist_sequence` — sequence manipulation |
102
+ | 6 | Hard | `py_whisper_cipher` — cipher encoding |
103
+
104
+ ## Dependencies
105
+
106
+ - [`pydantic`](https://docs.pydantic.dev/) ≥ 2.0 — task data models
107
+ - [`rich`](https://github.com/Textualize/rich) ≥ 13.0 — terminal UI
108
+
109
+ ## Project structure
110
+
111
+ ```
112
+ src/examshell/
113
+ ├── __init__.py
114
+ ├── __main__.py
115
+ ├── main.py # CLI entry point, mode logic, UI screens
116
+ ├── models.py # Pydantic models (Task, Description, Example)
117
+ ├── task_generator.py # TaskManager: file creation, grading, task selection
118
+ ├── config.py
119
+ └── data/
120
+ └── data.json # All task definitions
121
+ ```
122
+
123
+ ## License
124
+
125
+ MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "examshell-python"
7
- version = "0.1.1"
7
+ version = "0.1.4"
8
8
  description = "Interactive 42-style exam practice shell for Python exercises"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -24,4 +24,4 @@ examshell42 = "examshell.main:cli"
24
24
  where = ["src"]
25
25
 
26
26
  [tool.setuptools.package-data]
27
- examshell = ["data/*.json"]
27
+ examshell = ["data/*.json"]
@@ -323,4 +323,4 @@ def cli() -> None:
323
323
 
324
324
 
325
325
  if __name__ == "__main__":
326
- cli()
326
+ cli()
@@ -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
@@ -1,10 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: examshell-python
3
- Version: 0.1.1
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
File without changes
@@ -1,10 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: examshell-python
3
- Version: 0.1.1
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