v3.0.10
What's Fixed
🐛 Bug Fix: Exrate Tab Processing
- Root cause: User workbooks contain
Exrate USDandExrate EURtabs with non-standard headers (Exchange Rates of US DOLLAR). These tabs were not skipped, causing both the COM engine (Windows) and openpyxl engine (macOS) to try processing them as data sheets — leading to failures. - Fix: Expanded
SKIP_SHEET_NAMESin bothengine.pyandcom_engine.pyto includeExrate USD/Exrate EUR.
🔧 Hardened File Handle Cleanup
- Added explicit
del wb+gc.collect()after workbook close to guarantee file handles are released immediately - Added
os.path.normcase()for case-insensitive path comparison on Windows - Added
time.sleep(0.1)COM cleanup delay to prevent Windows file lock conflicts
✅ Verified
- Both
.xlsxand.xlsprocess successfully (450 ExRate rows each) - 140/140 tests pass, 0 lint errors
Full Changelog: v3.0.9...v3.0.10