v0.3.3 - guaranteed core survives real-world forms
Hardening release, driven by real-world QA over 125 public PDF forms (government, healthcare, legal, business). Found and fixed 4 guaranteed-core bugs that the synthetic test suite could not reach.
Fixes
read_fieldsnow returns the fully-qualified field name (the/Tchain joined by.), so its output is addressable byfill(). Previously it returned the leaf name, whichfillcould not find on hierarchical / XFA forms - read-then-fill failed on most real fillable forms. Flat fields are unchanged.buildno longer crashes on a single-button radio group (reportlab raised "RadioGroup has 1 < 2 RadioBoxes"); a 1-member radio group is built as a checkbox.fillandflattenno longer crash withKeyError '/N'on a widget that has an/APwith no/N(a malformed real-world form); both enumerations are guarded.
Result
On the 125-form real corpus: read_fields 125/125, fill 108/108, flatten 108/108, build 108/108 - zero crashes. Three regression tests added.
Install: pip install acroforge==0.3.3