-
Notifications
You must be signed in to change notification settings - Fork 60
Description
Hi Everyone,
I have a vested interest in increasing Koala's maintainability. My project FlyingKoala relies on Koala and I am trying to start a business off the back of it. Some of changes to Koala in the last 12 months, which have helped move Kola forward, have removed features I rely upon and have made it very difficult to re-instate the features I need.
I am in a situation where I have been putting effort into re-writing Koala so we (/I) can have a modernized code base to work from while supporting the features we all want and making the code maintainable.
The original intent was to just remove all the things that are in there for no reason, and keep as much as possible. This was quickly proven not realistically possible. So I've used the "good" bits -- the stuff that does the AST and evaluation -- and have been slowly re-writing the surrounding code.
I have a version now which supports:
- parsing cells, formulas and defined names into a dataclass representing a spreadsheet ("model")
- persisting and loading the model dataclass
- evaluation of cell values (eg; no formulas), and formulas which use cells
I am about 50% through supporting ranges. Ranges are being recognized in defined names and formulas and are being resolved to collections of cell addresses. I am today beginning work on having those collections of cell addresses packaged and passed to the formula functions.
Once Ranges are supported, the basics of Koala's features will have been successfully re-written. I have ignored OFFSET and INDEX for now. I am yet to test (or consciously support) unicode.
The ignore, input/output are not yet supported but need to be for feature parity (and are unbelievably useful).
And I'm yet to implement a method to set value.
Besides re-using a small amount of code for parsing formulas and executing the subsequent Python code, this is essentially a completely new codebase.
Is there an appetite to try and use a re-write for Koala moving forward or is it best this becomes a new project?
I'm happy to make the code available for critique.