Releases: SynthGL/wolfxl
Releases · SynthGL/wolfxl
v0.3.0 — Formula Engine Self-Sufficiency
Highlights
62 builtin functions (up from 35). Every whitelisted function now has a builtin implementation — formula evaluation works out of the box with zero external dependencies.
481 tests passing (up from ~200).
New Function Categories
| Category | New Functions | Count |
|---|---|---|
| Financial | PV, FV, PMT, NPV, IRR, SLN, DB | 7 |
| Date | TODAY, DATE, YEAR, MONTH, DAY, EDATE, EOMONTH, DAYS | 8 |
| Conditional Stats | AVERAGEIF, AVERAGEIFS, MINIFS, MAXIFS | 4 |
| Text | UPPER, LOWER, TRIM, SUBSTITUTE, TEXT, REPT, EXACT, FIND | 8 |
Formula Engine Improvements
- ExcelError infrastructure: Proper error values (`#N/A`, `#VALUE!`, `#DIV/0!`, `#REF!`, `#NUM!`, `#NAME?`) that propagate through formula chains like real Excel
- OFFSET: Dynamic range references resolved at evaluator level (`SUM(OFFSET(A1,0,0,5,1))` works)
- Named range resolution: Formulas referencing named ranges are automatically expanded
- XLOOKUP enhanced: All 4 match modes (exact, next smaller, next larger, wildcard) + reverse search
- TEXT format expansion: Currency (`$#,##0.00`), accounting, scientific, multiple date variants
openpyxl Compatibility
New worksheet-level features with Rust backend support:
- `ws.freeze_panes = "B2"` (read/write roundtrip)
- `ws.row_dimensions[1].height = 25` (read/write roundtrip)
- `ws.column_dimensions["A"].width = 15` (read/write roundtrip)
- `ws.auto_filter.ref = "A1:D10"`
- `ws.unmerge_cells("A1:B2")`
- `ws.print_area = "A1:D10"`
Breaking Changes
- Error propagation: `SUM` over cells containing errors now returns the error (correct Excel behavior) instead of silently skipping. Use `IFERROR` to handle.
Install
```bash
pip install wolfxl==0.3.0
```
WolfXL v0.2.1 — Lookup & Conditional Functions
WolfXL v0.2.1 — Lookup & Conditional Functions
Built-in formula engine now covers the most-used Excel lookup and conditional aggregation functions, eliminating the need for the formulas library fallback on common financial modeling patterns.
New Builtin Functions (10 new, 35 total)
Lookup & Reference:
VLOOKUP(value, table, col, [range_lookup])— vertical lookup with exact/approximate matchHLOOKUP(value, table, row, [range_lookup])— horizontal lookup with exact/approximate matchINDEX(array, row, [col])— 1D/2D array indexingMATCH(value, array, [match_type])— search for position (exact, ascending, descending)XLOOKUP(value, lookup, return, [not_found])— modern lookup (exact match builtin, others fall through to formulas)CHOOSE(index, value1, value2, ...)— selection by index
Conditional Aggregation:
SUMIF(range, criteria, [sum_range])— conditional sumSUMIFS(sum_range, range1, criteria1, ...)— multi-criteria sumCOUNTIF(range, criteria)— conditional countCOUNTIFS(range1, criteria1, ...)— multi-criteria count
Other Improvements
&string concatenation operator — enables dynamic criteria like">"&B1RangeValuedataclass — 2D shape-aware ranges for correct INDEX/MATCH behavior- Criteria matching engine — supports operators (
">100"), wildcards ("apple*"), exact match - Nested
INDEX(MATCH())pattern — the ubiquitous financial modeling pattern works end-to-end - Perturbation propagation — all new functions correctly propagate CalcEngine perturbations
- 315 tests (up from 255 in v0.2.0)
Whitelist Expansion (43 functions)
4 new functions whitelisted for the formulas library fallback: XLOOKUP, SUMIF, SUMIFS, COUNTIFS.
Install
pip install wolfxl[calc] # includes formulas library for 200+ function fallback
pip install wolfxl # core I/O onlyFull Changelog
WolfXL v0.1.1
WolfXL v0.1.1 — First Public Release
A fast, Rust-powered Excel I/O library for Python with an openpyxl-compatible API.
Highlights
- 3 backends: calamine-styled reader, rust_xlsxwriter writer, XlsxPatcher (modify mode)
- 3-5x faster than openpyxl for both reads and writes
- Pre-built wheels for Linux, macOS (ARM + x86_64), and Windows — Python 3.9-3.13
- openpyxl-compatible API — drop-in replacement for most read/write workflows
- Modify mode (
load_workbook(path, modify=True)) — surgical ZIP patching, 10-14x vs openpyxl
Performance (vs openpyxl)
| Operation | WolfXL | openpyxl | Speedup |
|---|---|---|---|
| Per-cell read (10K) | 995K cells/s | 284K cells/s | 3.5x |
| Styled read (1K) | 624-742K/s | 131-137K/s | 4-5x |
| Bulk read (10K) | 1.26M cells/s | 372K cells/s | 3.4x |
| Bulk write (100K) | 1.73M cells/s | 347K cells/s | 5.0x |
Install
pip install wolfxlChanges since v0.1.0
- Fixed wheel builds for macOS (switched to macos-14 runners)
- Fixed Python 3.14 incompatibility (pinned to 3.9-3.13)
- Full wheel matrix for all platforms