An exam scheduler application built with Python, designed to optimize exam schedules at university level.
Project description
Unisched - Extensible University Exam Scheduler
This is my (Adheesh Trivedi's) submission for the course "Advanced Programming".
Unisched is a basic, modular exam scheduling project that currently supports:
- Registration data loading from CSV, Excel, and ODS
- Core scheduling using a graph coloring optimizer (DSatur-based)
- Conflict-aware schedule generation with simple penalty calculation
- A desktop GUI built with PySide6
The project is intentionally minimal and designed to be extended over time.
Current Architecture
unisched.io: file handling and registration-data loadingunisched.domain: schedule models and conflict/penalty helpersunisched.core: coordinator and optimizer interfaces/implementationsunisched.gui: desktop user interface
Requirements
- Python 3.12
uvpackage manager
Dependencies used by the project:
- pandas
- PySide6
- openpyxl
- odfpy
Quick Start
Install dependencies:
uv sync
Run the GUI app:
uv run python -m unisched
Running Tests
Run all tests:
uv run pytest
Example Script
Run the sample scheduling script:
uv run python examples/schedule.py
Notes
- Current optimizer implementation: GraphColoringOptimizer only
- Future optimizers (for later): Simulated Annealing, ILP
- GUI tests are currently not included
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file unisched-0.1.0.tar.gz.
File metadata
- Download URL: unisched-0.1.0.tar.gz
- Upload date:
- Size: 228.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
94a86db6525e58eeff3b12532cd473319770505ce4b058f489ec0090eb6f3fc1
|
|
| MD5 |
32af8a00208b187560112b48c1f56f1e
|
|
| BLAKE2b-256 |
63d885d8291ad26f237b9505b245c410b7fe59cc2ab6f94eda5e0465833a8e03
|
File details
Details for the file unisched-0.1.0-py3-none-any.whl.
File metadata
- Download URL: unisched-0.1.0-py3-none-any.whl
- Upload date:
- Size: 29.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee08d6c80317858cff558288484ef7dc6cb058f9d13a17759c83e294151f19d0
|
|
| MD5 |
d9e3f6d3f96181dace93f34bf79651cc
|
|
| BLAKE2b-256 |
4cb55e0666297545943348d8b00b9d0f4ffa92cdb52d0954c0fc156798b32944
|