Skip to content

Releases: SynthGL/wolfxl

v0.3.0 — Formula Engine Self-Sufficiency

20 Feb 13:53

Choose a tag to compare

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

20 Feb 10:43

Choose a tag to compare

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 match
  • HLOOKUP(value, table, row, [range_lookup]) — horizontal lookup with exact/approximate match
  • INDEX(array, row, [col]) — 1D/2D array indexing
  • MATCH(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 sum
  • SUMIFS(sum_range, range1, criteria1, ...) — multi-criteria sum
  • COUNTIF(range, criteria) — conditional count
  • COUNTIFS(range1, criteria1, ...) — multi-criteria count

Other Improvements

  • & string concatenation operator — enables dynamic criteria like ">"&B1
  • RangeValue dataclass — 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 only

Full Changelog

v0.2.0...v0.2.1

WolfXL v0.1.1

16 Feb 15:38

Choose a tag to compare

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 wolfxl

Changes 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