This pull request makes matplotlib, seaborn and sklearn python modules bindings work on Windows. It also refactors the relevant pieces of code, so:
1) it doesn't leak memory
2) it doesn't crash Luna when called with "wrong" arguments
3) Python exceptions are translated to C++ exceptions and C++ exceptions are translated to Luna exceptions — all preserving the original error message from the throw location
4) it is MUCH shorter and simpler
It also adds unit tests that generate PNG plot and regression functions. Also CircleCI image has been updated so the test can succeed.
Notes:
This PR introduces a new C++ dependency: pybind11 (see updated README). It is a header-only library, so it should install without any hassle.
This PR introduces dependency between the core Dataframes library and Python with Numpy library. It is necessery — otherwise both Plot and Learn libraries (that do not know about each other) try to load their own Python interpreter, breaking each other. This is not a good long-term solution. When more Luna modules will want to use Python we will have to separate its loading into separate module.
huge parts of matplotlib-cpp code have been intentionally left as commented-out. I rewritten only the parts we do use. Other parts are left for future convenience — they can be pretty mechanically refactored, when we want to add a new chart type.
This pull request makes matplotlib, seaborn and sklearn python modules bindings work on Windows. It also refactors the relevant pieces of code, so: 1) it doesn't leak memory 2) it doesn't crash Luna when called with "wrong" arguments 3) Python exceptions are translated to C++ exceptions and C++ exceptions are translated to Luna exceptions — all preserving the original error message from the throw location 4) it is MUCH shorter and simpler
It also adds unit tests that generate PNG plot and regression functions. Also CircleCI image has been updated so the test can succeed.
Notes: