[SCHEDULER-TA] - Project Optimization suite
Advanced Academic Grading & Pairing Optimizer.
(OVERVIEW)
The system transforms raw campus schedules into an economic convenience model. It uses a weighted penalty system to rank potential scheduling options:
- Each Day of Turnaround: 1 Point
- Each "Special" Campus Trip: 10 Points
- Wait Time (Same-Day): 0.1 Points per Hour
- External Workload: Dynamic (User-Defined)
By minimizing the total penalty score, the system identifies the most "human- friendly" schedules for Graders and Professors.
(COMMANDS)
db: Manage the persistent staff database (init, reset, export, add-person, list).quiz: Generate ranked collection/pickup windows for a specific pair.heatmap: Generate a convenience score for every assignment day (Pop quiz mode).pair: Calculate department-wide best matches (Global Matchmaking).timeline: Generate chronological turnaround guidance for onboarding.cadence: Evaluate weekly collection schedules over a semester for syllabus design.
CLI Usage Examples
Database Management (Adding Staff)
./scheduler-ta db init
./scheduler-ta db add-person --name "Euler" --role "Teacher" --sched "MWF 10am-11am"
# Note: Re-running add-person on an existing name gracefully updates their schedule!
./scheduler-ta db list
# To back up the database into a raw SQL dump:
./scheduler-ta db export
# To wipe the database clean and start over:
./scheduler-ta db reset
Individual Turnaround Mode (Shane Catch-up Scenario)
./scheduler-ta quiz --prof "MWF 10am-11am" --grader "TTh 1pm-2pm" --load 50
Global Matchmaking Mode (Department-Wide Optimization)
./scheduler-ta pair --prof "MW 1pm-2pm" --prof "TTh 9am-10am" \
--grader "MWF 10am-11am" --grader "TTh 2pm-3pm" \
--global-opt --date "04/06"
Heatmap Mode (Prof. Euler's Dashboard)
./scheduler-ta heatmap --prof "MWF 10am-12pm" --grader "TTh 1pm-2pm"
Syllabus Cadence Advisor Mode (Designing the Semester)
Helps a Professor decide which day of the week to place weekly assignments on.
# Using the staff added to the database during setup
./scheduler-ta cadence --prof-name "Euler" --grader-name "Shane" --weeks 16
# Or using on-the-fly schedules without the database
./scheduler-ta cadence \
--prof "MWF 10am-12pm" \
--grader "TTh 1pm-2pm"
(MODELING CAPABILITIES)
What it CAN model
- (PERSISTENCE) Uses a local SQLite database (
~/.scheduler_ta/data.db) via SQLAlchemy for centralized staff management. - (TIME-AWARE) Calculates the hour-gap between class ends and grader arrival.
- (WEEKLY) Supports complex, multi-block weekly schedules (e.g. MWF + TTh).
- (CONVENIENCE) Automatically identifies when a Grader is already on campus.
- (OPTIMAL) Solves for the best pairings across a department using the Hungarian Algorithm (Scipy Backend).
- (DYNAMIC) Supports short-term, date-aware matchmaking with the
--dateflag. - (WORKLOAD) Penalizes specific dates where a Grader has external commitments (like Shane's catch-up period).
What it CANNOT model
- (REAL-TIME) Does not yet integrate directly with live University registrar data.
(FUTURE ROADMAP)
- (IMPORT) Bulk CSV/JSON import for department-wide scheduling.
- (DB-SYNC) Integration with university enrollment & registrar databases.
- (WEB-PORTAL) Front-end (HTML/JS) for slot viewing and student requests.
- (PERSIST) SQL-based backend for persistent staff and section data.
- (UI) Visual heatmap dashboard (Streamlit/FastAPI).
- (QUANTITY) Support for
n_studentsandtime_per_studentto scale grading load penalty.
(DEVELOPMENT)
License
This project is licensed under the MIT License.
Packaging & Releasing
To package this application and deploy to PyPI via twine (if configured):
# Compile source and wheel distribution
python3 -m build
# Check bundle health
twine check dist/*
# Upload to TestPyPI
twine upload --repository testpypi dist/*
This project maintains strict quality standards:
- [Pylint] 10.00/10 Score
- [Pytest] 97.5% Project Minimum Test Coverage
- [Flake8] Standardized Compliance
make test # Run full test suite with coverage reports
make test-v # Run verbose tests (visualize matchmaking solutions)
make lint # Run all quality checks
make format # Auto-format source and documentation
Metadata
Release files for scheduler-ta 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| scheduler_ta-0.1.1.tar.gz | 24.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| scheduler_ta-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.1 kB
Release files / scheduler_ta-0.1.1.tar.gz
| Download URL | scheduler_ta-0.1.1.tar.gz |
|---|---|
| Size | 24.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3ff57a69661f9f5cebed71cea56d5a0fb2defb8af7370ace628edb48ed9e5e4b
|
|
BLAKE2b-256 checksum How to use checksums |
0f42ac8950fdd0b41dc04b4a14e0c99488354efda19137229972afedcca23a81
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.14.3
|
Release files / scheduler_ta-0.1.1-py3-none-any.whl
| Download URL | scheduler_ta-0.1.1-py3-none-any.whl |
|---|---|
| Size | 16.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9c3fb0c9c49d094d10ee88500635d40a944cfba5ecaec5aaea1ecc42012e022b
|
|
BLAKE2b-256 checksum How to use checksums |
c7078a1195e261ba871f3deaa9bf546ac1f2cd28946d643c2d8b81e27f1c8098
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.0.0 CPython/3.14.3
|
Security for scheduler-ta 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.