# prasanththalapanenids-lgtm/pybyu architecture

> Architecture diagram of the GitHub repository prasanththalapanenids-lgtm/pybyu, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/prasanththalapanenids-lgtm/pybyu
- Repository: https://github.com/prasanththalapanenids-lgtm/pybyu

## Overview

PYBYU is an interactive, console-based Python learning package. A learner starts or resumes a course topic, studies its explanations and examples, submits coding tasks for verification, takes a topic exam, and accumulates progress toward topic completion. The graph preserves the documented course, navigation, retry, and tracking capabilities. Source excerpts are partial, so some subsystem connections are shown only where supported by the excerpts or README; the task-verification import references a module absent from the supplied tree.

Main entry points: [`pybyu/learning/topic.py`](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/learning/topic.py) (Topic session), [`pybyu/main.py`](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/main.py) (CLI entry), [`pybyu/progress/progress_manager.py`](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/progress/progress_manager.py) (Saved progress), [`pybyu/resume_learning.py`](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/resume_learning.py) (Resume learning)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_course["Course experience"]
  node_cli["CLI entry<br/>[main.py]"]
  node_registry["Topic registry<br/>[course_registry.py]"]
  node_dashboard["Course dashboard"]
  node_resume["Resume learning<br/>[resume_learning.py]"]
  node_navigator["Learning navigation<br/>[navigator.py]"]
end

subgraph group_learning["Learning content"]
  node_topic["Topic session<br/>[topic.py]"]
  node_content["Python topic lessons"]
  node_info["Explanations<br/>[info.py]"]
  node_examples["Examples<br/>[examples.py]"]
  node_tasks["Coding tasks<br/>[tasks.py]"]
  node_exams["Topic exams<br/>[exams.py]"]
end

subgraph group_verification["Task verification"]
  node_executor["Code execution<br/>[executor.py]"]
  node_checker["Code checker<br/>[code_checker.py]"]
  node_errors["Friendly errors<br/>[error_handler.py]"]
end

subgraph group_progress["Progress tracking"]
  node_topicstate["Topic completion<br/>[topic_manager.py]"]
  node_taskprogress["Task progress<br/>[task_progress.py]"]
  node_examscores["Exam scores<br/>[exam_scores.py]"]
  node_progressfile[("Saved progress")]
end

node_learner(("Learner"))

node_learner -->|"chooses option"| node_cli
node_cli -->|"gets topics"| node_registry
node_cli -->|"opens dashboard"| node_dashboard
node_cli -->|"requests resume"| node_resume
node_cli -->|"runs topic"| node_topic
node_resume -->|"finds topic"| node_registry
node_resume -->|"resumes topic"| node_topic
node_topic -->|"uses lesson data"| node_content
node_topic -->|"navigates content"| node_navigator
node_topic -->|"shows explanations"| node_info
node_topic -->|"shows examples"| node_examples
node_topic -->|"runs tasks"| node_tasks
node_topic -->|"runs exam"| node_exams
node_tasks -->|"executes code"| node_executor
node_executor -->|"checks syntax"| node_checker
node_executor -->|"formats errors"| node_errors
node_tasks -->|"records attempts"| node_taskprogress
node_exams -->|"records score"| node_examscores
node_topic -->|"updates completion"| node_topicstate
node_topic -->|"loads and saves"| node_progressfile
node_dashboard -->|"reads saved state"| node_progressfile
node_resume -->|"reads saved state"| node_progressfile
node_progressfile -.->|"stores task state"| node_taskprogress
node_progressfile -.->|"stores exam state"| node_examscores

click node_cli "https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/main.py"
click node_registry "https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/course_registry.py"
click node_dashboard "https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/course_dashboard.py"
click node_resume "https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/resume_learning.py"
click node_navigator "https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/navigation/navigator.py"
click node_topic "https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/learning/topic.py"
click node_content "https://github.com/prasanththalapanenids-lgtm/pybyu/tree/main/pybyu/content"
click node_info "https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/learning/info.py"
click node_examples "https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/learning/examples.py"
click node_tasks "https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/learning/tasks.py"
click node_exams "https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/learning/exams.py"
click node_executor "https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/verification/executor.py"
click node_checker "https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/verification/code_checker.py"
click node_errors "https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/verification/error_handler.py"
click node_topicstate "https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/topic_manager.py"
click node_taskprogress "https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/progress/task_progress.py"
click node_examscores "https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/progress/exam_scores.py"
click node_progressfile "https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/progress/progress_manager.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_cli,node_registry,node_dashboard,node_resume,node_navigator toneBlue
class node_topic,node_content,node_info,node_examples,node_tasks,node_exams toneAmber
class node_executor,node_checker,node_errors toneMint
class node_topicstate,node_taskprogress,node_examscores,node_progressfile toneRose
class node_learner toneIndigo
```

## Components

### Course experience

- [CLI entry](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/main.py): `pybyu/main.py`
- [Topic registry](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/course_registry.py): `pybyu/course_registry.py`
- [Course dashboard](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/course_dashboard.py): `pybyu/course_dashboard.py`
- [Resume learning](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/resume_learning.py): `pybyu/resume_learning.py`
- [Learning navigation](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/navigation/navigator.py): `pybyu/navigation/navigator.py`

### Learning content

- [Topic session](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/learning/topic.py): `pybyu/learning/topic.py`
- [Python topic lessons](https://github.com/prasanththalapanenids-lgtm/pybyu/tree/main/pybyu/content): `pybyu/content`
- [Explanations](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/learning/info.py): `pybyu/learning/info.py`
- [Examples](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/learning/examples.py): `pybyu/learning/examples.py`
- [Coding tasks](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/learning/tasks.py): `pybyu/learning/tasks.py`
- [Topic exams](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/learning/exams.py): `pybyu/learning/exams.py`

### Task verification

- [Code execution](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/verification/executor.py): `pybyu/verification/executor.py`
- [Code checker](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/verification/code_checker.py): `pybyu/verification/code_checker.py`
- [Friendly errors](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/verification/error_handler.py): `pybyu/verification/error_handler.py`

### Progress tracking

- [Topic completion](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/topic_manager.py): `pybyu/topic_manager.py`
- [Task progress](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/progress/task_progress.py): `pybyu/progress/task_progress.py`
- [Exam scores](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/progress/exam_scores.py): `pybyu/progress/exam_scores.py`
- [Saved progress](https://github.com/prasanththalapanenids-lgtm/pybyu/blob/main/pybyu/progress/progress_manager.py): `pybyu/progress/progress_manager.py`

### Other components

- **Learner**

## Connections

- Learner → CLI entry: chooses option
- CLI entry → Topic registry: gets topics
- CLI entry → Course dashboard: opens dashboard
- CLI entry → Resume learning: requests resume
- CLI entry → Topic session: runs topic
- Resume learning → Topic registry: finds topic
- Resume learning → Topic session: resumes topic
- Topic session → Python topic lessons: uses lesson data
- Topic session → Learning navigation: navigates content
- Topic session → Explanations: shows explanations
- Topic session → Examples: shows examples
- Topic session → Coding tasks: runs tasks
- Topic session → Topic exams: runs exam
- Coding tasks → Code execution: executes code
- Code execution → Code checker: checks syntax
- Code execution → Friendly errors: formats errors
- Coding tasks → Task progress: records attempts
- Topic exams → Exam scores: records score
- Topic session → Topic completion: updates completion
- Topic session → Saved progress: loads and saves
- Course dashboard → Saved progress: reads saved state
- Resume learning → Saved progress: reads saved state
- Saved progress → Task progress: stores task state
- Saved progress → Exam scores: stores exam state
