Skip to content

Koala is getting increasingly difficult to manage -- re-write? #249

@bradbase

Description

@bradbase

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions