8. Changelog

8.1. v1.2.6 (2023-11-15)

8.1.1. Feat

  • (builder) #104: Allow custom reference definition.

  • (test): Update test cases.

  • (operand) #106: Accept number like .3 to be parsed.

  • (text) #113: Add TEXT function without fraction formatting.

  • (logic): Update logic functions according to new excel logic.

  • (text) #113: Add VALUE function.

  • (math) #121: Improve performances of SUMPRODUCT, PRODUCT, SUM, and SUMIF.

  • (setup): Update requirements.

  • (core): Change development status.

  • (core): Add support for python 3.10 and 3.11.

  • (functions) #121: Improve handling of EMPTY values.

  • (excel): Avoid using flatten function in basic routines.

  • (doc): Add Read the Docs configuration file.

  • (excel): Add tolerance when comparing two excels.

  • (excel): Add compare method to verify if formulas is able to replicate excel values.

8.1.2. Fix

  • (doc): Remove broken badge.

  • (excel) #100: Correct reading rounding from excel.

  • (math) #100: Correct TRUNC defaults.

  • (tokens) #113: Correct sheet_id definition.

  • (functions): Correct dill pickling error.

  • (excel): Correct reference parsing when loading from JSON.

  • (functions): Use an alternative method of vectorize when more than 32 arguments are provided.

  • (look): Correct MATCH, LOOKUP,`HLOOKUP`, and VLOOKUP behaviour when empty values are given.

  • (date): Correct DATEDIF behaviour when unit is lowercase.

  • (test): Use regex for unstable tests due to changes in last digits.

  • (doc): Correct documentation bug due to new sphinx.

  • (excel) #114: Update reading code according to openpyxl>=3.1.

8.2. v1.2.6 (2022-12-13)

8.2.1. Fix

  • (setup): Update schedula requirement.

8.3. v1.2.5 (2022-11-07)

8.3.1. Fix

  • (parser): Correct missing raise.

  • (excel): Skip hidden named ranges.

8.4. v1.2.4 (2022-07-02)

8.4.1. Feat

  • (core): Improve speed performance.

  • (cell): Improve speed RangesAssembler definition.

8.4.2. Fix

  • (cell): Correct range assembler defaults when no sheet_id is defined.

  • (math) #99: Convert args into np.arrays in func xsumproduct.

  • (look): Correct lookup parser for float and strings.

8.5. v1.2.3 (2022-05-10)

8.5.1. Feat

  • (test): Add more error logs.

  • (test): Improve code coverage.

  • (builder): Add compile_class attribute to AstBuilder.

  • (info): Add ISODD, ISEVEN, ISBLANK, ISTEXT, ISNONTEXT, and ISLOGICAL functions.

8.5.2. Fix

  • (excel): Correct file path excel definition.

  • (logic): Correct SWITCH error handling.

  • (actions): Rename workflow name.

  • (readme): Correct badge link for dependencies status.

  • (excel): Correct basedir reference to load files.

  • (date): Correct YEARFRAC and DATEDIF formulation.

  • (cell): Enable R1C1 notation for absolute and relative references.

  • (cell): Correct RangeAssembler value assignment.

8.6. v1.2.2 (2022-01-22)

8.6.1. Fix

  • (excel): Correct function compilation from excel.

8.7. v1.2.1 (2022-01-21)

8.7.1. Feat

  • (functions): Improve performances caching results.

  • (excel): Make replacing missing ref optional in from_dict method.

  • (excel) #73, #75: Improve performances to parse full ranges.

8.7.2. Fix

  • (excel): Correct compile function when inputs are computed with a default function.

8.8. v1.2.0 (2021-12-23)

8.8.1. Feat

  • (binder): Refresh environment binder for 2021.

  • (look) #87: Add ADDRESS function.

  • (test): Update test cases.

  • (financial) #74, #87: Add FV, PV, IPMT, PMT, PPMT, RATE, CUMIPMT, and NPER functions.

  • (info, logic): Add ISNA and IFNA functions.

  • (date) #87: Add WEEKDAY, WEEKNUM, ISOWEEKNUM, and DATEDIF functions.

  • (stat, math) #87: Add SLOPE and PRODUCT functions.

  • (stats) #87: Add CORREL and MEDIAN functions.

  • (bin): Add bin folder.

  • (actions): Add test cases.

  • (stats) #80: Add FORECAST and FORECAST.LINEAR functions.

  • (excel) #82: Add inverse of simple references.

8.8.2. Fix

  • (stat): Correct LARGE and SMALL error handling.

  • (actions): Skip Setup Graphviz when not needed.

  • (actions): Correct coverall setting.

  • (actions): Remove unstable test case.

  • (actions): Disable fail fast.

  • (date, stat): Correct collapsed return value.

  • (function) #78, #79, #91: Correct import error.

8.9. v1.1.1 (2021-10-13)

8.9.1. Feat

  • (excel): Improve performances of complete method.

  • (setup): Add add python 3.9 in setup.py.

  • (functions): Add SEARCH, ISNUMBER, and EDATE functions.

  • (travis): Update python version for coveralls.

8.9.2. Fix

  • (doc): Correct missing documentation link.

  • (doc): Correct typo.

  • (operator) #70: Correct % operator preceded by space.

8.10. v1.1.0 (2021-02-16)

8.10.1. Feat

  • (look) #57: Add SINGLE function.

  • (function) #51: Add google Excel functions.

  • (logic) #55, #57: Add IFS function.

  • (excel) #65: Add documentation and rename method to load models from ranges.

  • (excel) #65: Add method to load sub-models from range.

  • (doc): Update Copyright.

  • (excel): Improve performances.

  • (excel) #64: Read model from outputs.

  • (core): Update range definition with path file.

  • (excel) #64: Add warning for missing reference.

  • (excel) #64: Add warning message when book loading fails.

  • (readme) #44: Add example to export and import the model to JSON format.

  • (readme) #53: Add instructions to install the development version.

  • (excel) #44: Add feature to export and import the model to JSON- able dict.

  • (stat, comp) #43: Add STDEV, STDEV.S, STDEV.P, STDEVA, STDEVPA, VAR, VAR.S, VAR.P, VARA, and VARPA functions.

8.10.2. Fix

  • (financial): Correct requirements for irr function.

  • (excel) #48: Correct reference pointing to different workbooks.

  • (function) #67: Correct compilation of impure functions (e.g., rand, now, etc.).

  • (look) #66: Correct check function did not return value.

  • (test): Remove temp dir.

  • (excel): Correct external link reading.

  • (operator) #63: Correct operator parser when starts with spaces.

  • (text) #61: Convert float as int when stringify if it is an integer.

  • (math) #59: Convert string to number in math operations.

  • (functions): Correct _xfilter operating range type.

  • (parser) #61: Skip n in formula expression.

  • (operator) #58: Correct operator parser for composed operators.

  • (excel): Correct invalid range definition and missing sheet or files.

  • (operand) #52: Correct range parser.

  • (operand) #50: Correct sheet name parser with space.

  • (tokens): Correct closure parenthesis parser.

  • (excel): Skip function compilation for string cells.

  • (tokens): Correct error parsing when sheet name is defined.

8.11. v1.0.0 (2020-03-12)

8.11.1. Feat

  • (core): Add CODE_OF_CONDUCT.md.

  • (function) #39: Transform NotImplementedError into #NAME?.

  • (text) #39: Add CONCAT and CONCATENATE functions.

  • (logic) #38: Add TRUE/FALSE functions.

  • (excel) #42: Save missing nodes.

  • (excel) #42: Update logic for RangesAssembler.

  • (excel): Improve performance of finish method.

  • (core): Update build script.

  • (core): Add support for python 3.8 and drop python 3.5 and drop appveyor.

  • (core): Improve memory performance.

  • (refact): Update copyright.

  • (operand): Add fast_range2parts_v4 for named ranges.

8.11.2. Fix

  • (math) #37: Match excel default rounding algorithm of round half up.

  • (cell): Correct reference in push method.

  • (readme): Correct doctest.

  • (token): Correct separator parser.

  • (excel) #35: Update logic to parse named ranges.

  • (operand): Associate excel_id==0 to current excel.

  • (array): Ensure correct deepcopy of Array attributes.

  • (operand) #39: Correct range parser for named ranges.

  • (operand) #41: Correct named ranges parser.

8.12. v0.4.0 (2019-08-31)

8.12.1. Feat

  • (doc): Add binder.

  • (setup): Add env ENABLE_SETUP_LONG_DESCRIPTION.

  • (core): Add useful constants.

  • (excel): Add option to write all calculate books inside a folder.

  • (stat) #21: Add COUNTBLANK, LARGE, SMALL functions.

  • (date) #35: Add NPV, XNPV, IRR, XIRR functions.

  • (stat) #21: Add AVERAGEIF, COUNT, COUNTA, COUNTIF functions.

  • (math) #21: Add SUMIF function.

  • (date) #21, #35, #36: Add date functions DATE, DATEVALUE, DAY, MONTH, YEAR, TODAY, TIME, TIMEVALUE, SECOND, MINUTE, HOUR, NOW, YEARFRAC.

  • (info) #21: Add NA function.

  • (date) #21, #35, #36: Add date functions DATE, DATEVALUE, DAY, MONTH, YEAR, TODAY, TIME, TIMEVALUE, SECOND, MINUTE, HOUR, NOW, YEARFRAC.

  • (stat) #35: Add MINA, AVERAGEA, MAXA functions.

8.12.2. Fix

  • (setup): Update tests requirements.

  • (setup): Correct setup dependency (beautifulsoup4).

  • (stat): Correct round indices.

  • (setup) #34: Build universal wheels.

  • (test): Correct import error.

  • (date) #35: Correct behaviour of LOOKUP function when dealing with errors.

  • (excel) #35: Improve cycle detection.

  • (excel,date) #21, #35: Add custom Excel Reader to parse raw datetime.

  • (excel) #35: Correct when definedName is relative #REF!.

8.13. v0.3.0 (2019-04-24)

8.13.1. Feat

  • (logic) #27: Add OR, XOR, AND, NOT functions.

  • (look) #27: Add INDEX function.

  • (look) #24: Improve performances of look functions.

  • (functions) #26: Add SWITCH.

  • (functions) #30: Add GCD and LCM.

  • (chore): Improve performances avoiding combine_dicts.

  • (chore): Improve performances checking intersection.

8.13.2. Fix

  • (tokens): Correct string nodes ids format adding .

  • (ranges): Correct behaviour union of ranges.

  • (import): Enable PyCharm autocomplete.

  • (import): Save imports.

  • (test): Add repo path to system path.

  • (parser): Parse empty args for functions.

  • (functions) #30: Correct implementation of GCD and LCM.

  • (ranges) #24: Enable full column and row reference.

  • (excel): Correct bugs due to new openpyxl.

8.14. v0.2.0 (2018-12-11)

8.14.1. Feat

  • (doc) #23: Enhance ExcelModel documentation.

8.14.2. Fix

  • (core): Add python 3.7 and drop python 3.4.

  • (excel): Make ExcelModel dillable and pickable.

  • (builder): Avoid FormulaError exception during formulas compilation.

  • (excel): Correct bug when compiling excel with circular references.

8.15. v0.1.4 (2018-10-19)

8.15.1. Fix

  • (tokens) #20: Improve Number regex.

8.16. v0.1.3 (2018-10-09)

8.16.1. Feat

  • (excel) #16: Solve circular references.

  • (setup): Add donate url.

8.16.2. Fix

  • (functions) #18: Enable check_error in IF function just for the first argument.

  • (functions) #18: Disable input_parser in IF function to return any type of values.

  • (rtd): Define fpath from prj_dir for rtd.

  • (rtd): Add missing requirements openpyxl for rtd.

  • (setup): Patch to use sphinxcontrib.restbuilder in setup long_description.

8.16.3. Other

  • Update documentation.

  • Replace excel with Excel.

  • Create PULL_REQUEST_TEMPLATE.md.

  • Update issue templates.

  • Update copyright.

  • (doc): Update author mail.

8.17. v0.1.2 (2018-09-12)

8.17.1. Feat

  • (functions) #14: Add ROW and COLUMN.

  • (cell): Pass cell reference when compiling cell + new function struct with dict to add inputs like CELL.

8.17.2. Fix

  • (ranges): Replace system max size with excel max row and col.

  • (tokens): Correct number regex.

8.18. v0.1.1 (2018-09-11)

8.18.1. Feat

  • (contrib): Add contribution instructions.

  • (setup): Add additional project_urls.

  • (setup): Update Development Status to 4 - Beta.

8.18.2. Fix

  • (init) #15: Replace FUNCTIONS and OPERATORS objs with get_functions, SUBMODULES.

  • (doc): Correct link docs_status.

8.19. v0.1.0 (2018-07-20)

8.19.1. Feat

  • (readme) #6, #7: Add examples.

  • (doc): Add changelog.

  • (test): Add info of executed test of test_excel_model.

  • (functions) #11: Add HEX2OCT, HEX2BIN, HEX2DEC, OCT2HEX, OCT2BIN, OCT2DEC, BIN2HEX, BIN2OCT, BIN2DEC, DEC2HEX, DEC2OCT, and DEC2BIN functions.

  • (setup) #13: Add extras_require to setup file.

8.19.2. Fix

  • (excel): Use DispatchPipe to compile a sub model of excel workbook.

  • (range) #11: Correct range regex to avoid parsing of function like ranges (e.g., HEX2DEC).

8.20. v0.0.10 (2018-06-05)

8.20.1. Feat

  • (look): Simplify _get_type_id function.

8.20.2. Fix

  • (functions): Correct ImportError for FUNCTIONS.

  • (operations): Correct behaviour of the basic operations.

8.21. v0.0.9 (2018-05-28)

8.21.1. Feat

  • (excel): Improve performances pre-calculating the range format.

  • (core): Improve performances using DispatchPipe instead SubDispatchPipe when compiling formulas.

  • (function): Improve performances setting errstate outside vectorization.

  • (core): Improve performances of range2parts function (overall 50% faster).

8.21.2. Fix

  • (ranges): Minimize conversion str to int and vice versa.

  • (functions) #10: Avoid returning shapeless array.

8.22. v0.0.8 (2018-05-23)

8.22.1. Feat

  • (functions): Add MATCH, LOOKUP, HLOOKUP, VLOOKUP functions.

  • (excel): Add method to compile ExcelModel.

  • (travis): Run coveralls in python 3.6.

  • (functions): Add FIND,`LEFT`,`LEN`,`LOWER`,`MID`,`REPLACE`,`RIGHT`,`TRIM`, and`UPPER` functions.

  • (functions): Add IRR function.

  • (formulas): Custom reshape to Array class.

  • (functions): Add ISO.CEILING, SQRTPI, TRUNC functions.

  • (functions): Add ROUND, ROUNDDOWN, ROUNDUP, SEC, SECH, SIGN functions.

  • (functions): Add DECIMAL, EVEN, MROUND, ODD, RAND, RANDBETWEEN functions.

  • (functions): Add FACT and FACTDOUBLE functions.

  • (functions): Add ARABIC and ROMAN functions.

  • (functions): Parametrize function wrap_ufunc.

  • (functions): Split function raise_errors adding get_error function.

  • (ranges): Add custom default and error value for defining ranges Arrays.

  • (functions): Add LOG10 function + fix LOG.

  • (functions): Add CSC and CSCH functions.

  • (functions): Add COT and COTH functions.

  • (functions): Add FLOOR, FLOOR.MATH, and FLOOR.PRECISE functions.

  • (test): Improve log message of test cell.

8.22.2. Fix

  • (rtd): Update installation file for read the docs.

  • (functions): Remove unused functions.

  • (formulas): Avoid too broad exception.

  • (functions.math): Drop scipy dependency for calculate factorial2.

  • (functions.logic): Correct error behaviour of if and iferror functions + add BroadcastError.

  • (functions.info): Correct behaviour of iserr function.

  • (functions): Correct error behaviour of average function.

  • (functions): Correct iserror and iserr returning a custom Array.

  • (functions): Now xceiling function returns np.nan instead Error.errors[‘#NUM!’].

  • (functions): Correct is_number function, now returns False when number is a bool.

  • (test): Ensure same order of workbook comparisons.

  • (functions): Correct behaviour of min max and int function.

  • (ranges): Ensure to have a value with correct shape.

  • (parser): Change order of parsing to avoid TRUE and FALSE parsed as ranges or errors as strings.

  • (function):Remove unused kwargs n_out.

  • (parser): Parse error string as formulas.

  • (readme): Remove downloads_count because it is no longer available.

8.22.3. Other

  • Refact: Update Copyright + minor pep.

  • Excel returns 1-indexed string positions???

  • Added common string functions.

  • Merge pull request #9 from ecatkins/irr.

  • Implemented IRR function using numpy.

8.23. v0.0.7 (2017-07-20)

8.23.1. Feat

  • (appveyor): Add python 3.6.

  • (functions) #4: Add sumproduct function.

8.23.2. Fix

  • (install): Force update setuptools>=36.0.1.

  • (functions): Correct iserror iserr functions.

  • (ranges): Replace ‘#N/A’ with ‘’ as empty value when assemble values.

  • (functions) #4: Remove check in ufunc when inputs have different size.

  • (functions) #4: Correct power, arctan2, and mod error results.

  • (functions) #4: Simplify ufunc code.

  • (test) #4: Check that all results are in the output.

  • (functions) #4: Correct atan2 argument order.

  • (range) #5: Avoid parsing function name as range when it is followed by (.

  • (operator) #3: Replace strip with replace.

  • (operator) #3: Correct valid operators like ^- or *+.

8.23.3. Other

  • Made the ufunc wrapper work with multi input functions, e.g., power, mod, and atan2.

  • Created a workbook comparison method in TestExcelModel.

  • Added MIN and MAX to the test.xlsx.

  • Cleaned up the ufunc wrapper and added min and max to the functions list.

  • Relaxed equality in TestExcelModel and made some small fixes to functions.py.

  • Added a wrapper for numpy ufuncs, mapped some Excel functions to ufuncs and provided tests.

8.24. v0.0.6 (2017-05-31)

8.24.1. Fix

  • (plot): Update schedula to 0.1.12.

  • (range): Sheet name without commas has this [^Wd][w.] format.

8.25. v0.0.5 (2017-05-04)

8.25.1. Fix

  • (doc): Update schedula to 0.1.11.

8.26. v0.0.4 (2017-02-10)

8.26.1. Fix

  • (regex): Remove deprecation warnings.

8.27. v0.0.3 (2017-02-09)

8.27.1. Fix

  • (appveyor): Setup of lxml.

  • (excel): Remove deprecation warning openpyxl.

  • (requirements): Update schedula requirement 0.1.9.

8.28. v0.0.2 (2017-02-08)

8.28.1. Fix

  • (setup): setup fails due to long description.

  • (excel): Remove deprecation warning remove_sheet –> remove.