You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Budget an embedded-font form fill as one operation #518
DESIGN.md section 3 (F6) bounds every operation by one budget. #194 (PR #489) made a form fill with Form.font set run as one transaction, but the fill makes several independently budgeted core calls: form_field_fill(draw=False), form_field_draw_face (twice), embedded_font, and add_glyphs. Text shaping is also unbounded until #493.
Goal
A form fill with an embedded Form.font charges one operation budget across all its core calls. When that budget is exceeded, the whole fill rolls back.
Scope
In: sharing one budget across the fill's core calls, and a memory-limit test that checks the rollback of a whole fill.
Out: canvas preparation (#500), and shaping budgets (#493).
Paths
crates/pyropdf-python/src/forms.rs
crates/pyropdf-engine/src/forms/
python/pyropdf/_form.py
tests/test_acroform.py
Acceptance
One budget covers every core call of an embedded-font fill.
A test sets a memory limit that the fill exceeds. It checks that the value, the appearances, and the font's glyphs all roll back, and that the undo history is unchanged.
Notes
Follows the pattern that #500 sets for the canvas. Raised in the review update on #489.
PR #579 on claude/518-form-fill-operation: the embedded-font fill now runs as one operation (begin_operation, generalizing begin_canvas with every document limit). Tests in tests/test_acroform.py cover one shared budget and a whole-fill rollback under a memory limit; python3 tools/check.py --locked passes locally. Next: current-head CI green, then the owner's merge decision.
Activity
yhay81 commentedon Nov 2, 2026
Claimed on branch
claude/518-form-fill-operation.yhay81 commentedon Nov 2, 2026
PR #579 on
claude/518-form-fill-operation: the embedded-font fill now runs as one operation (begin_operation, generalizingbegin_canvaswith every document limit). Tests intests/test_acroform.pycover one shared budget and a whole-fill rollback under a memory limit;python3 tools/check.py --lockedpasses locally. Next: current-head CI green, then the owner's merge decision.Budget an embedded-font form fill as one operation (#518) (#579)