CLI Reference¶
This reference is generated from course_hoanganhduc/core.py and lists CLI flags grouped by section.
Automation¶
--generate-weekly-workflow: Generate a sample GitHub Actions workflow for weekly automation--run-weekly-automation: Run weekly automation for a closed assignment--run-weekly-local: Run weekly automation locally and archive reports--weekly-assignment-id: Canvas assignment ID for weekly automation--weekly-category: Assignment group/category filter for missing-submission reminders--weekly-dest-dir: Output directory for weekly downloads--weekly-local-root: Local folder for weekly report archiving (default: cwd)--weekly-meaningful-threshold: Meaningfulness threshold for weekly automation--weekly-notify-missing: Send reminders for missing submissions after due date--weekly-ocr-lang: OCR language for weekly automation--weekly-ocr-service: OCR service for weekly automation--weekly-refine: AI refinement method for weekly notices--weekly-score: Score to assign to clean submissions (default: 10)--weekly-similarity-threshold: Similarity threshold for weekly automation--weekly-teacher-canvas-id: Canvas user ID for summary notifications--workflow-assignment-id: Assignment ID placeholder for workflow--workflow-course-code: Course code placeholder for workflow--workflow-course-id: Course ID placeholder for workflow--workflow-students-branch: Deprecated alias for –workflow-toolkit-branch--workflow-students-repo: Deprecated alias for –workflow-toolkit-repo--workflow-teacher-canvas-id: Teacher Canvas ID placeholder for workflow--workflow-toolkit-branch: Branch for course toolkit repo--workflow-toolkit-repo: Repo URL for course toolkit
Canvas: Admin Tools¶
--canvas-deadline-category(-cdc): Assignment category (group) to filter when changing deadlines--canvas-lock-category(-clc): Assignment category (group) to filter when changing lock dates--change-canvas-deadlines(-ccd): Change deadlines for one or more Canvas assignments (provide assignment IDs, or leave blank to select interactively)--change-canvas-lock-dates(-ccl): Change lock dates (lock_at) for one or more Canvas assignments (provide assignment IDs, or leave blank to select interactively)--create-canvas-groups: Create groups in a Canvas course group set--delete-empty-canvas-groups(-deg): Delete all empty groups (groups with no members) from a Canvas course group set--grade-resubmission(-grs): List resubmissions and regrade them (optionally provide assignment IDs)--group-name-pattern: Pattern for group names, e.g., ‘Group {i}’ (default: ‘Group {i}’)--group-set-id: Canvas group set ID to create groups in (leave blank to select interactively)--keep-old-grade: Keep previous grade for resubmissions without prompting--new-canvas-due-date(-ncd): New due date for Canvas assignments (format: YYYY-MM-DD HH:MM)--new-canvas-lock-date(-ncl): New lock date for Canvas assignments (format: YYYY-MM-DD HH:MM)--no-restricted(-nres): Disable restricted mode for grading Canvas assignments (list all assignments with submissions and all students who submitted)--num-groups: Number of groups to create (default: 5)
Canvas: People and Communication¶
--add-canvas-announcement(-aa): Create a new announcement in Canvas course--announcement-file: TXT file with announcement body--announcement-message: Short message for Canvas announcement--announcement-title: Title for Canvas announcement--canvas-assignment-category(-cac): Assignment category (group) to filter when listing Canvas assignments--canvas-course-id(-cc): Canvas course ID (overrides default)--canvas-unenroll-all: Unenroll all matched Canvas students without selection--canvas-unenroll-domain: Email domain(s) to match for Canvas unenroll (comma-separated)--canvas-unenroll-email: Email(s) to match for Canvas unenroll (comma-separated)--canvas-unenroll-missing-student-id: Unenroll Canvas students missing Student ID in local database--canvas-unenroll-select: Select Canvas students to unenroll from a list--comment-canvas-submission(-cs): Add a comment to a Canvas assignment submission--download-canvas-assignment(-da): Download all submission files for a Canvas assignment (optionally provide assignment ID)--download-dest-dir(-dd): Destination directory for downloaded Canvas assignment files--edit-canvas-pages(-ep): List and edit Canvas course pages--fetch-canvas-messages(-fm): Fetch and reply to Canvas inbox messages--grade-canvas-assignment(-ga): Grade Canvas assignment submissions interactively--invite: Invite students after –add-file import (skips those already enrolled)--invite-canvas-email(-ie): Invite a single user to Canvas course by email--invite-canvas-file(-if): Invite multiple users to Canvas course from a TXT file or string of pairs/emails--invite-canvas-name: Name for Canvas invite (for single user)--invite-canvas-role(-ir): Role for Canvas invite (student/teacher/ta, default: student)--invite-role(--invite-rote): Role for –invite (student/teacher/ta, default: student)--invite-section: Default Canvas section name for –invite (optional)--list-canvas-assignments: List all assignments on Canvas LMS--list-canvas-members(-cm): List all members (teachers, TAs, students) of a Canvas course--list-multiple-submissions-on-time(-lm): List students who submitted twice or more to an assignment and the first submission is on time (optionally provide assignment ID)--notify-incomplete-reviews(-nr): Find and notify students who have not completed required peer reviews for a Canvas assignment--review-assignment-id(-rai): Canvas assignment ID for peer review notification--search-canvas-user(-cu): Search for a user in Canvas by name or email--sync-canvas(-sc): Sync Canvas course members to local database--unenroll-canvas: Unenroll Canvas students by domain/email/select/missing-id Successful unenroll removes matching students from the local database (by Email or Canvas ID).
Canvas: Rubrics and Grading¶
--add-canvas-grading-scheme(-ags): Add a grading scheme to Canvas course from JSON file--check-student-submission-similarity(-css): Check similarities between submissions of the same student for different assignments. Optionally provide a Canvas student ID or a comma-separated list of IDs. If not provided, will prompt for selection interactively.--export-canvas-grading-scheme(-egs): List and export Canvas grading schemes (grading standards) to JSON--export-canvas-rubrics(-er): Export Canvas rubrics to TXT/CSV file--final-evals-announce(-fea): Also create a course announcement after sending final evaluations.--final-evals-course-id(-fec): Canvas course ID to use when sending final evaluations (overrides default CANVAS_LMS_COURSE_ID).--import-canvas-rubrics(-imr): Import rubrics from TXT/CSV file to Canvas course--list-canvas-rubrics(-lr): List all unique rubrics used in Canvas course--rubric-assignment-id(-rid): Assignment ID to filter rubrics--send-final-evaluations(-sfe): Send final evaluation results to students via Canvas. Optionally provide directory with evaluation files (default: final_evaluations).--update-canvas-rubric-id(-uri): Rubric ID to associate with assignments (leave blank to select interactively)--update-canvas-rubrics(-ur): Update rubric for one or more Canvas assignments (provide assignment IDs, or leave blank to select interactively)
Configuration¶
--backup-config: Back up config.json to a timestamped file (optional: backup dir)--clear-config(-ccfg): Delete stored config.json from the default location--clear-credentials(-ccred): Delete stored credentials.json and token.pickle from the default location--config(-cfg,-c): Load config from JSON file and save to default location--config-backup-keep: Number of config backups to retain (default from config)--course-code(-ccode): Course code for config folder (e.g., MAT3500)--detect-local-ai: Detect locally installed AI models (Ollama-compatible)--list-ai-models(-lam): List available AI models for a provider (‘gemini’, ‘huggingface’, ‘local’, or ‘all’)--local-llm-args: Extra args for local LLM command--local-llm-command: Command to run the local LLM (default: ollama)--local-llm-gguf-dir: Directory to scan for .gguf models (llama.cpp)--local-llm-model: Local LLM model name (default from config/settings)--restore-config: Restore config.json from a backup (default: latest)--student-sort-method: Student sort method for detail outputs (first_last, last_first, id)--test-ai(-tai): Test AI services (‘gemini’, ‘huggingface’, ‘local’, or ‘all’)--test-ai-gemini-model: Override Gemini model name for –test-ai all--test-ai-huggingface-model: Override HuggingFace model name for –test-ai all--test-ai-model(-tam): Override model name for –test-ai (provider-specific)
Course Calendar¶
--build-course-calendar: Build course calendar and export to TXT/MD/ICS--calendar-course-code: Course code for calendar title--calendar-course-name: Course name for calendar summaries--calendar-extra-holidays: Comma-separated extra holiday dates (YYYY-MM-DD,YYYY-MM-DD)--calendar-extra-week: Allow one make-up week when holidays skip sessions--calendar-input: TXT file with first-week schedule and optional holidays--calendar-output-base: Output base name for calendar files (default: course_calendar)--calendar-output-dir: Output directory for calendar exports (default: cwd)--calendar-weeks: Number of official weeks (default: 15)--force: Force Canvas calendar import (do not skip duplicates)--import-canvas-calendar-ics: Import an iCal (.ics) file and create Canvas calendar events--skip-duplicates: Skip Canvas calendar events that match existing entries
Exams (Multichoice)¶
--evaluate-multichoice-answers: Evaluate student answers for multiple-choice exam (provide exam type: midterm/final, default: global EXAM_TYPE)--extract-multichoice-answers(-ema): Extract student answers from scanned multi-choice exam sheet PDF--extract-multichoice-solutions(-ems): Extract multiple-choice exam solutions from PDF (each page is one sheet code)--sync-multichoice-evaluations(-sme): Sync multichoice exam evaluations to Canvas assignment (provide exam type: midterm/final, default: global EXAM_TYPE)
General¶
--dry-run: Preview actions without writing files or databases--list-cli-aliases: List auto-generated short aliases for long-only CLI flags--log-backups: Number of rotated log files to keep--log-dir: Directory for log files (default: config folder)--log-level: Logging level (default: INFO)--log-max-bytes: Max size in bytes for rotating logs--refine: Refine generated messages/announcements with AI--verbose(-v): Enable verbose output--version: Show package name and version and exit.
Google Classroom¶
--download-google-classroom-submissions(-dgcs): Download latest Google Classroom submissions and run checks--gc-apply-all: Apply grading to all listed submissions without selection--gc-coursework-id: Google Classroom coursework ID(s) to grade (optional)--gc-download-coursework-id: Google Classroom coursework ID(s) to download (optional)--gc-download-dest-dir: Download folder for Google Classroom submissions (optional)--gc-grade-score: Score to assign to selected submissions (optional)--gc-include-graded: Include already graded submissions--gc-meaningful-threshold: Meaningfulness threshold for Google Classroom checks--gc-ocr-lang: OCR language for Google Classroom checks--gc-ocr-service: OCR service for Google Classroom checks (ocrspace/tesseract/paddleocr)--gc-similarity-threshold: Similarity threshold for Google Classroom checks--gc-unenroll-all: Unenroll all matched Google Classroom students without selection--gc-unenroll-domain: Email domain(s) to match for Google Classroom unenroll (comma-separated)--gc-unenroll-email: Email(s) to match for Google Classroom unenroll (comma-separated)--gc-unenroll-missing-student-id: Unenroll Google Classroom students missing Student ID in local database--gc-unenroll-select: Select Google Classroom students to unenroll from a list--google-course-id(-gci): Google Classroom course ID (prompts if None)--google-credentials-path(-gcp): Path to Google Classroom credentials JSON file--google-token-path(-gtp): Path to Google Classroom token pickle file--grade-google-classroom(-ggc): Grade Google Classroom assignment submissions--list-google-courses(-lgc): List Google Classroom courses for the current account--list-google-students: List Google Classroom students for a course (uses--google-course-idor prompts)--sync-google-classroom(-sgc): Sync students in the local database with active students from Google Classroom course--unenroll-google-classroom(-ugc): Unenroll Google Classroom students by email domain Successful unenroll removes matching students from the local database (by Email or Google_ID).
OCR and PDFs¶
--add-blackboard-counts(-b): Extract and add blackboard counts from PDF to database--export-blackboard-counts(-B): Export blackboard counts by date for all students to TXT/Markdown file (use .txt or .md extension, default: TXT)--extract-text(-t): Extract handwriting text from PDF and save to TXT file--ocr-lang(-L): OCR language for PDF extraction (default: auto)--ocr-service(-O): OCR service to use for PDF extraction (default: ‘ocrspace’). The ‘ocrspace’ service uses the OCR.space API and works better for handwriting text. The other two services work better for printed text and require additional local installation.--print-blackboard-counts(-p): Print blackboard counts by date for all students--simple-text(-T): Extract simple text (no layout) from PDF OCR
Student Database¶
--add-file(-a): Import students from Excel, CSV, or PDF file into the database--add-google-sheet(-gsh): Import students from Google Sheet URL (optional: URL, default from config)--import-companies(nargs=’?’): Import company data from Excel/CSV to companies.db--export-companies: Export company list to Excel file--import-mini-projects: Import mini-project data from Google Sheets (lecturer topics + student registrations)--mini-project-lecturer-sheet: Google Sheet URL for lecturer mini-project topics (optional; default from config)--mini-project-registration-sheet: Google Sheet URL for student mini-project registrations (optional; default from config)--all-details(-A): Show details of all students--backup-db: Back up students.db to a timestamped file (optional: backup dir)--db(-db,-D): Database file name (default: students.db, saved in script folder)--db-backup-keep: Number of database backups to retain (default from config)--details(-d): Show details of a student by name, student id, or email--dry-run-rows: Number of preview rows to show with –dry-run + –add-file (default: 5)--duplicate-name-field: Field to detect duplicates (name/google/canvas or custom field name)--duplicate-name-format: Output format for duplicate-name report (default: txt)--duplicate-name-output: Output path for duplicate-name report (optional; extension inferred from format if missing)--export-all-details(-E): Export all student details to TXT file--export-anonymized(-ean): Export anonymized roster to CSV (optional: output path)--export-emails(-e): Export all student emails to TXT file (avoids duplicates)--export-emails-and-names(-en): Export all student emails and names to TXT file (default: emails_and_names.txt)--export-excel(-x): Export student list to Excel file--export-final-grade-distribution: Export final grade distribution to a TXT file. Optionally provide output path (default: ./final_grade_distribution.txt).--export-grade-diff: Export grade updates to CSV when updating MAT files (optional: output path)--export-roster(-ero): Export classroom roster to CSV file (default: classroom_roster.csv)--generate-final-evaluations(-gfe): Generate per-student final evaluation TXT reports (optional: output dir, default: ./final_evaluations).--list-duplicate-names: List students who share the same full name--list-email-domain(-led): List students whose email matches domain(s) (comma-separated, e.g., gmail.com,outlook.com)--list-missing-ids: List students missing Google/Canvas/Student IDs (optional: google,canvas,student,all or comma-separated)--list-submission-status: List students by submission status (prefix withgoogle:orcanvas:, optional@assignment). Values: Google Classroom =NEW,CREATED,TURNED_IN,RETURNED,RECLAIMED_BY_STUDENT; Canvas =UNSUBMITTED,SUBMITTED,GRADED,PENDING_REVIEW,COMPLETE.--load(-l): Load students from database file--load-override-grades(-log): Load override_grades.xlsx and persist overrides to the database (default: override_grades.xlsx).--missing-ids-format: Output format for missing-ids report (default: txt)--missing-ids-output: Output path for missing-ids report (optional; extension inferred from format if missing)--modify(-m): Interactively modify the student database--restore-db: Restore students.db from a backup (default: latest)--save(-s): Save current students to database file--search(-S): Search for students by keyword (name, student id, email, etc.)--sync-mat-canvas: Sync CC/GK/CK scores from MAT*.xlsx to Canvas assignments (uses configured assignment IDs)--sync-mat-types: Comma-separated list of score types to sync (CC,GK,CK). Default: all available.--update-mat-excel(-ume): Update MAT*.xlsx file(s) with grades from database (provide one or more file paths)--validate-data: Validate student data and write a report (optional: output path)