# pricing_calculator Python model generated by Power Migrate 0.1.0a1 from `pricing_calculator.xlsx` (SHA-256 `d2a7b89598fa1cf4...`), in no-AI mode: every name and every line comes from deterministic rules, so the code can be regenerated and audited without a model call. ## Layout | File | Purpose | | --- | --- | | `model.py` | `compute(book)` runs every logic block in dependency order; `load_inputs()` loads the workbook's own inputs | | `sheets/*.py` | One module per worksheet; one function per logic block (a formula and all the cells it was copied to) | | `xl.py` | Excel value semantics (blank = 0, text/number coercion, error values, VLOOKUP and friends). No dependencies | | `inputs.json` | Every constant cell a formula reads, plus defined names. Edit it, or set cells on the Book, to run new scenarios | | `expected.json` | What Excel last calculated for every formula cell: the reconciliation reference | | `baseline.json` | Cells that reconciled at generation time; `test_model.py` checks they still do | | `udf.py` | User-defined functions from the VBA project, machine-translated where simple, otherwise stubs with the VBA in the docstring (only when the workbook has macros) | ## Run it ```python from pricing_calculator import compute, load_inputs book = compute(load_inputs()) print(book["Sheet1"]["B7"].v) # a single cell's value book["Sheet1"]["B3"] = 42 # change an input... compute(book) # ...and recompute ``` Dates are Excel serial numbers. Error cells hold `XlError` values (`#N/A`, `#DIV/0!`...). Anything the generator could not convert is a call to `xl.UNSUPPORTED(reason)` whose result propagates to every dependent cell and is listed in the reconciliation report; 0 of 194 blocks contain one. This package shows tested equivalence with the workbook's stored values for the cells listed in `baseline.json`. It is not a guarantee for other inputs.