Changelog¶
All notable changes to pyaota will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.4.0] - 2026-03-24¶
Added¶
Interactive grading (
--interactiveflag ongrade) – when a QR code, student-ID field, or answer bubble cannot be read automatically, pyaota pauses and prompts the operator at the terminal to supply the missing value. For unanswered questions a matplotlib window displays the bubble row so the operator can confirm or override the detected answer. See Grading for full details.
[0.3.0] - 2026-02-27¶
Added¶
Compact MCQ choice layout – choices are automatically arranged in two columns when all choice texts are short enough (
_choices_columnshelper).True/False question simplification – T/F questions no longer render a separate choices block; the stem is prefixed with bold
True (T) / False (F).T/F correct-answer highlighting – in
compile-dumpthe correct answer for T/F questions is visually indicated with a filled circle (\correctlabel), consistent with MCQ behaviour.Greedy topic redistribution –
get_random_selectionno longer errors when a topic has fewer questions than the uniform quota; available questions are redistributed across better-stocked topics so the total count is always met.--font-size {10pt,11pt,12pt}option onbuildandcompile-dump(default12pt).--question-spacing <LENGTH>option onbuildandcompile-dump(default24pt).--bubble-font-size <PT>option onbuildandmake-answersheet(default8.0); uses an absolute\fontsizecommand so bubble text is unaffected by the document class font size.--odd-page-answersheetflag onbuildandmake-answersheet; inserts a blank filler page when needed so the answer sheet always lands on an odd-numbered (right-hand) page for double-sided printing.--rasterizeflag onbuildandmake-answersheet; post-processes the compiled PDF by rasterizing it at 300 DPI (viapdf2image+ Pillow) to improve compatibility with printer RIPs that struggle with complex TikZ paths.Full command line is now echoed at
DEBUGlevel to the diagnostic log at startup.
Fixed¶
Excess vertical space between a code-block stem and the choices list in MCQs (cancelled the implicit
belowskipof thelstlistingenvironment with\vspace{-\medskipamount}).Answer sheet page always renders at 12 pt regardless of the
--font-sizesetting, since the layout dimensions are absolute.
[0.2.0] - 2026-01-26¶
Added¶
serialization of answer sheet layouts to JSON
[0.1.0] - 2026-01-26¶
Initial release of pyaota
Breaking Changes Policy¶
pyaota follows semantic versioning:
MAJOR version (X.0.0): Incompatible API changes
MINOR version (0.X.0): New functionality, backwards-compatible
PATCH version (0.0.X): Bug fixes, backwards-compatible
Deprecation Warnings¶
No features are currently deprecated.
When features are deprecated, they will:
Remain functional in current MAJOR version
Issue
DeprecationWarningwhen usedInclude migration instructions in warning message
Be documented in this changelog
Be removed in next MAJOR version
Contributing to Changelog¶
When contributing changes:
Add entry under
[Unreleased]sectionUse appropriate subsection (Added/Changed/Deprecated/Removed/Fixed/Security)
Write concise, user-focused descriptions
Link to relevant issue/PR numbers
Maintainers will organize entries during release
Example entry:
[Unreleased]
------------
Added
~~~~~
* New equestion type: OCR short answer
* something else
Fixed
~~~~~
* poorly formatted answer sheet resutls
See Also¶
GitHub Contributing Guide - How to contribute
GitHub Releases - Release notes
GitHub Issues - Bug reports and feature requests