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
- Exam hall 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 native-desktop GUI built with PySide6
The project is intentionally minimal and designed to be extended over time.
Installation
From PyPI
pip install unisched
# Then run the app
python -m unisched
It's recommended to use pipx for better dependency resolution:
pipx install unisched
# Then run the app
unisched
Running from source
- Python 3.12
uvpackage manager
Dependencies used by the project:
- pandas
- PySide6
- openpyxl
- odfpy
Install dependencies:
uv sync
Run the GUI app:
uv run unisched
Running Tests
Run all tests:
uv sync --extra dev
uv run pytest
Example Script
Run the sample scheduling script:
uv sync --extra example
uv run python examples/schedule.py
TODOs
- Current optimizer implementation: GraphColoringOptimizer only
- Future optimizers (for later): Simulated Annealing, ILP
- Needs a cute logo for the GUI :)
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.1.tar.gz.
File metadata
- Download URL: unisched-0.1.1.tar.gz
- Upload date:
- Size: 54.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 |
ea6e4f01fd3a4c7ce4dceec8ae7e91b3b5398cc7ca7e415c27a72ae8472c8930
|
|
| MD5 |
139dd8f052a5c545a2aa775d77cd4957
|
|
| BLAKE2b-256 |
6ea2d65098851349eb7494499255d331edf656b03e1fdd1923654d0f14b1b249
|
File details
Details for the file unisched-0.1.1-py3-none-any.whl.
File metadata
- Download URL: unisched-0.1.1-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 |
25b062b08688ad661516f5fb3ac39cfc2bd1cf8424fc45bc1a66db2d95ee7fd3
|
|
| MD5 |
b1684442abacd6c0696bc99e707cb769
|
|
| BLAKE2b-256 |
0004e3de14d883f24086537fd0de6831cd50bbf6c635a36dd10bfe53330680aa
|