openpyxl.oracle
paper-xlsx 0.2.1 API reference
Bounded recalculation and certification via headless LibreOffice.
This library never calculates — a partial engine is a silent-wrongness machine. Instead it routes to a real implementation of Excel's semantics and reports MEASUREMENTS, never judgments:
recalcrecomputes all cells on a TEMP COPY and scans for Excel error tokens. When given an output path, it splices eligible calculated caches into a separate copy of the original package; LibreOffice's rewritten archive is never delivered.certifychecks whether LibreOffice reproduces the file's own cached values (Excel's answer key for its current inputs) within the pinned tolerance, excluding cells downstream of nondeterministic volatile functions.
Driver rules, all measured:
the caller's file is NEVER handed to LibreOffice (temp copies only — tested
invariant); every invocation gets its own -env:UserInstallation profile
(shared profiles fail nondeterministically); success is returncode == 0 AND the output file exists (soffice exits 0 on unloadable input); stderr
is never parsed (successful runs emit noise); timeouts kill the whole
process group. Custody never depends on this module: everything
preservation-related works with no LibreOffice installed.
DATE_SERIAL_ABS_FLOOR
attributeDATE_SERIAL_ABS_FLOOR= 1e-11ERROR_TOKENS
attributeERROR_TOKENS= frozenset(EXCEL_ERROR_CODES)NUMERIC_ULPS
attributeNUMERIC_ULPS= 4ORACLE_UNSUPPORTED_FUNCS
attributeORACLE_UNSUPPORTED_FUNCS= frozenset(['LAMBDA', 'LET', 'MAP', 'REDUCE', 'SCAN', 'BYROW', 'BYCOL', 'MAKEARRAY', 'ISOMITTED', 'STOCKHISTORY', 'RTD', 'WEBSERVICE', 'FILTERXML', 'IMAGE', 'PY', 'CUBEVALUE', 'CUBEMEMBER', 'CUBESET', 'CUBESETCOUNT', 'CUBERANKEDMEMBER', 'CUBEMEMBERPROPERTY', 'CUBEKPIMEMBER'])