All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
-
Intern parameterized formula AST shapes for parse, eval, and codegen (#517) (#534,
c452449) -
grapher: Intern parameterized formula AST shapes (#534,
c452449) -
scripts: Measure shape eval and codegen wins (#534,
c452449)
-
grapher: Narrow RangeRef.element return after intern (#522,
29a62a6) -
grapher: Weak intern pool and cheap uncond adjacency check (#522,
29a62a6)
-
grapher: Intern GuardExpr trees and add is_guarded (#522,
29a62a6) -
grapher: Intern GuardExpr trees and add is_guarded (#491) (#522,
29a62a6)
-
core: Avoid grapher import in formula_shape summary (#518,
884bb28) -
core: Correct mean_instances_per_shape and share summarize helper (#518,
884bb28) -
grapher: Document keep_formula_cache load path (#519,
fdaa645)
-
core: Fingerprint parameterized formula AST shapes (#518,
884bb28) -
core: Validate parameterized formula AST shape interning (#517) (#518,
884bb28)
-
grapher: Cut DependencyGraph unpickle peak memory (#514,
95f865a) -
grapher: Cut DependencyGraph unpickle peak memory (#513) (#514,
95f865a)
-
core: INDEX(array, 0) returns whole column/row (#502) (#509,
1f16849) -
evaluator: Satisfy ty on value-mode INDEX args (#509,
1f16849)
-
core: Align INDEX zero selectors and computed-array path (#503) (#510,
7ef28f1) -
core: LOOKUP skips lookup-vector errors (#504) (#508,
c3e4a4f) -
core: LOOKUP skips lookup-vector errors; array arithmetic preserves them (#508,
c3e4a4f)
-
grapher: Infer MATCH extent for INDEX((range<>0),0) (#507,
d18e838) -
grapher: MATCH extent for INDEX((range<>0),0) first-nonzero pattern (#506) (#507,
d18e838) -
tests: Use constant Literal forms in #506 MCVE (#507,
d18e838)
-
grapher: Drop direct_sites_formula, make raw formula storage opt-in (#500,
8a03de3) -
scripts: Add a repeatable graph memory measurement harness (#490) (#501,
35ebe7a)
- grapher:
EdgeProvenance.direct_sites_formulais removed, andFormulaRewriteno longer carriesbefore_formula/after_formula-- the compression audit trail reports normalized formulas only.Node.formulais nowNoneunless the graph is built withcreate_dependency_graph(..., store_raw_formula=True), which TACO range compression requires. Graph caches written by schema 3 are rejected and rebuilt.
-
grapher: Avoid ZeroDivisionError in _div_numeric_domains (#488,
194ab3d) -
grapher: Isolate memoized candidate static-ref sets (#485,
3f68255)
-
grapher: Flatten _edge_extra into typed _edge_provenance (#480,
6145a05) -
grapher: Flatten _edge_extra into typed _edge_provenance (#474) (#480,
6145a05) -
grapher: Slots=True on Node with address-keyed derived-field LRU (#476) (#479,
12f2ff4) -
grapher: Use slots=True on Node with address-keyed LRU (#479,
12f2ff4)
-
dynamic-refs: Gate consumed-leaf bookkeeping on persistent cache (#463) (#464,
fa5722c) -
grapher: Conjoin nested conditional guards into AND edge guards (#115) (#470,
e6e7607)
-
exporter: Omit compute_all when output bindings cover targets (#461,
3b78ee8) -
series-bindings: Enforce input.domain on generated setters (#462,
c7c6d0a) -
series-bindings: Signal when read_*_range is omitted (#459) (#460,
8939626) -
series-bindings: Warn when read_*_range omitted for non-contiguous selection (#460,
8939626)
-
series-bindings: Honour exclude_rows/columns in read_*_range (#456,
98e3e09) -
series-bindings: Honour exclude_rows/columns in read_*_range (#453) (#456,
98e3e09)
-
exporter: Re-export public read_* helpers from generated api.py (#454) (#455,
7a1af13) -
exporter: Re-export read_* helpers from generated api.py (#455,
7a1af13)
-
exporter: Keep public cells out of OptimalCompression (#449,
09738ec) -
exporter: Keep public/series-bound cells out of OptimalCompression (#449,
09738ec)
-
series-bindings: Call compute helpers by dims; move output leaves (#441,
7780a20) -
series-bindings: Call compute helpers by dims; move output leaves (#435) (#441,
7780a20)
-
runtime: Memoize parameterized helpers via xl_helper (#430,
a9746f7) -
runtime: Memoize parameterized helpers via xl_helper / xl_memoize (#430,
a9746f7)
-
ci: Avoid orphan release tags when main push races (#429,
34b4d0b) -
coercions: Reject empty text in numeric coercion (#426,
e009de4) -
coercions: Reject empty text in numeric coercion (#420) (#426,
e009de4) -
evaluator: Ignore blanks/text/bools in range aggregates (#425,
199bd60) -
evaluator: Ignore blanks/text/bools in range aggregates (#419) (#425,
199bd60) -
evaluator: Scalarize 1x1 binary operands (INDEX gates) (#424,
83d1cb2) -
evaluator: Scalarize 1x1 ranges in binary operands (#424,
83d1cb2) -
evaluator: Stop propagating errors through ISNUMBER/ISTEXT (#423,
d5ce6c4) -
exporter: Emit 1x1 ranges as scalar cell reads (#424,
83d1cb2) -
series-bindings: Emit full-arity positional docstring examples (#427,
ef8fdc7)
-
Keep coercion docstring one-line for export baseline (#426,
e009de4) -
tests: Clarify range-aggregate MCVE helper docstring (#425,
199bd60) -
tests: Drop escaped quotes in #421 docstrings (#424,
83d1cb2) -
tests: Ruff-format golden parity SUM comment line (#425,
199bd60)
-
series-bindings: Share workbook reader across validate/resolve (#417,
6ea8062) -
series-bindings: Share workbook reader across validate/resolve (#416) (#417,
6ea8062)
- Canonicalize multi-cell edge endpoints and cache schema
(
367b510)
- Ruff format node extent constructor
(
367b510)
- Drop unused UnionKey import after row-shim removal
(
367b510)
- Migrate row-node tests to union nodes
(
367b510)
-
series-bindings: Reverse address map for reader call forms (#412,
5333fbf) -
series-bindings: Reverse address map for reader call forms (#409) (#412,
5333fbf)
-
grapher: Fail closed on non-arithmetic OFFSET extent ops (#411,
9a8ab6e) -
grapher: OFFSET named ranges with COUNTA(...)+n no longer collapse to 1×1 (#411,
9a8ab6e) -
grapher: Resolve OFFSET named ranges with arithmetic extents (#411,
9a8ab6e)
-
series-bindings: Align read_* emission with discovery exports (#407,
17de304) -
test: Avoid ruff B009 in reader range assertion (#407,
17de304) -
test: Silence ty on xl_range.cell access in reader tests (#407,
17de304)
-
series-bindings: Emit read_* duals of set_* setters (#407,
17de304) -
series-bindings: Emit read_* duals of set_* setters (#404) (#407,
17de304)
-
evaluator: Lazy range cleanup (#336 Phase 4) (#401,
cd88838) -
exporter: Hoist return temps during formula AST emission (#402,
2e53f32)
-
core: Drop redundant cast in Range flatten walk (#396,
c07b157) -
evaluator: Excel COUNTIF skip, AST precheck exemptions, demote AND/OR (#396,
c07b157)
-
evaluator: Reuse materialized arrays on operator fastpath miss (#394,
e7a5c0f) -
evaluator: Type/embed polish for Phase 2 operator maps (#394,
e7a5c0f)
-
evaluator: Lazy Grid maps for binary/unary operators (#336 Phase 2) (#394,
e7a5c0f) -
evaluator: Route binary ops through shared Grid maps (#336 Phase 2) (#394,
e7a5c0f)
-
series-bindings: Accept numpy scalars in measure dtype checks (#386,
c42017c) -
series-bindings: Harden measure dtype enforcement and cleanup (#386,
c42017c)
-
series-bindings: Enforce measure dtype in generated setters (#386,
c42017c) -
series-bindings: Narrow setter input annotations by measure dtype (#386,
c42017c)
-
addressing: Accept ExcelRangeGeometry protocol for export embed (#383,
454c25a) -
export_runtime: Avoid CoreCellValue alias in embedded resolver (#383,
454c25a)
-
Remove dead type/lint suppressions and narrow export ExcelRange bridging (#383,
454c25a) -
Typing audit — drop dead suppressions, narrow ExcelRange casts (#383,
454c25a)
-
core: Unify same-sheet range normalization on single sheet prefix (#382,
6442ade) -
core: Unify same-sheet ranges on single sheet prefix (#382,
6442ade) -
grapher: Harden single-prefix range dep extraction (#382,
6442ade) -
grapher: Mask range spans before cell-ref parse (#382,
6442ade) -
grapher: Refuse unmasked ranges in parse_cell_refs (#382,
6442ade) -
test: Silence ty invalid-argument for CodeGenerator(None) (#382,
6442ade)
-
exporter: Refresh dep-tracking baseline after circular-warning runtime (#381,
b14b682) -
parity: Assert Excel error codes in excel_workbook_parity (#380,
42e7085)
-
series_bindings: Per-dimension dtype for same-concept dimensions (#378,
829ac70) -
series_bindings: Separate dimension id from concept (schema 1.8.0) (#378,
829ac70)
-
series_bindings: Add input.mode override for formula cell setters (#371,
db55ce6) -
series_bindings: Input.mode override for formula cell setters (#371,
db55ce6)
-
export: Address PR review nits for three-layer wrappers (#370,
74b447d) -
export: Move worksheet functions to core with thin wrappers (#370,
74b447d)
- series_bindings: Add
input.mode: override(schema 1.6.0) for public setters on user-editable formula cells (#371)
- series_bindings: Leaf-mode input bindings now error on non-leaf
data_rangeoverlap (non_leaf_input_overlap) instead of warning and silently dropping formula cells. Manifests that relied on the old warn-and-drop behavior must either narrowdata_rangeto graph leaves or declareinput.mode: override.
-
export: Raise-only boundary for embedded runtime helpers (#326) (#368,
c700b80) -
export: Wrap runtime calls with raise_if_sentinel at codegen boundary (#368,
c700b80)
-
grapher: Repair local force subgraph selection (#345,
5d824bf) -
grapher: Repair local force subgraph selection and add tests (#345,
5d824bf)
-
Minor grapher cleanup (dead code, sha256, version, viz API) (#348,
208a56f) -
test: Move local force subgraph oracle into test helpers (#345,
5d824bf)
-
Preserve quoted apostrophe sheet refs in formula normalization (#346,
d4d05a2) -
evaluator: Import xl_isblank from runtime after shim removal (#347,
37677be)
-
Cover remaining apostrophe address parsers and fix call sites (#343,
4ce69d7) -
Xfail graph build with quoted apostrophe sheet refs in formulas (#343,
4ce69d7)
-
exp: Strengthen coverage and add dynamic-ref domain inference (#334,
5103a4a) -
parity: Add live Excel harness and ABS/EXP excel parity tests (#334,
5103a4a)
-
exporter: Emit list_setters/list_computes discovery helpers (#323,
85bef61) -
series-bindings: Add empty_measure and matrix DataFrame setter input (#323,
85bef61) -
series-bindings: Empty_measure knob and matrix DataFrame setter ergonomics (#323,
85bef61)
-
Migrate exported range consumers onto lazy Range (#318,
9c9c9b7) -
Pythonic exported runtime — lazy ranges and raise-based errors (#318,
9c9c9b7) -
Raise Excel errors as exceptions in exported code (#318,
9c9c9b7)
-
exporter: Bind operands once in array-operator guards (#318,
9c9c9b7) -
exporter: Only guard operands that can evaluate to arrays (#318,
9c9c9b7)
-
export-runtime: Drop dead code in export runtime (#318,
9c9c9b7) -
export-runtime: Use canonical sheet-name quoting in OFFSET (#318,
9c9c9b7)
- grapher: Make TACO index a derived artifact, not graph state
(
6370794)
- Use conventional commit for releases
(
cdc155a)
-
Add series-binding helper-block emitter and include_helpers flag (#299,
3c2a37d) -
Emit series-binding coercion into a dedicated _api_helpers module (#299,
3c2a37d)
- Skip CI on version bump
(
eb433b2)
-
series-bindings: Apply key dtype coercion after record normalization (#294,
2053688) -
series-bindings: Customize coercion error messages by layout (#294,
2053688) -
series-bindings: Reject duplicate composite keys in setter batches (#294,
2053688)
-
Automate version bumps with semantic-release (closes #291) (#292,
2a3a8bd) -
series-bindings: Add flexible setter input coercion (closes #243) (#294,
2053688) -
series-bindings: Add matrix Layout and macro_matrix DataFrame test (#294,
2053688) -
series-bindings: Align SeriesInput type hints with DataFrame support (#294,
2053688) -
series-bindings: Extend setter smoke tests and add DataFrame example (#294,
2053688)