guillermo-navas-palencia / optbinning

Optimal binning: monotonic binning with constraints. Support batch & stream optimal binning. Scorecard modelling and counterfactual explanations.
http://gnpalencia.org/optbinning/
Apache License 2.0
435 stars 98 forks source link

partial support of python3.6 #223

Closed detrin closed 1 year ago

detrin commented 1 year ago

Hi, it is me again. I would like to discuss adding python3.6 to the list of supported python versions. I understand that it may not be possible with all dependencies, but perhaps you could support python3.6 only partially on modules and classes that are not affected by those dependencies? Me and vavrato are highly interested in such partial support. What do you think? Do you think it is possible or rather impossible?

vavrato commented 1 year ago

The corresponding discussion why Python 3.7 is required is in this post here.

If I understand correctly, Python 3.7 is required because of a solver that is used in piecewise binning.

guillermo-navas-palencia commented 1 year ago

Exactly, RoPWR uses CVXPY, which requires >= 3.7.

detrin commented 1 year ago

Exactly, RoPWR uses CVXPY, which requires >= 3.7.

Okay, do you think it would be possible not to import RoPWR while on python3.6? Thereforeoptbinning on 3.6 would have all functionality. Searching for ropwr There are those two occurrences:

We would like to use OptimalBinning, OptimalBinning2D, BinningProcess nad SBOptimalBinning. Do you think that would be possible without RoPWR?

guillermo-navas-palencia commented 1 year ago

Personally, I do not think this is a good idea, especially since newer versions of other libraries such as Scikit-Learn or NumPy are no longer supporting Python 3.6. I would recommend creating a specific version satisfying your needs after cloning this repository.

detrin commented 1 year ago

Scikit-Learn or NumPy are no longer supporting Python 3.6

Yes, we are well aware of this, and this will only be temporal support for the next ca 6 months, then we will use python 3.9 and higher.

I would recommend creating a specific version satisfying your needs after cloning this repository.

Well, if you don't like this idea, I understand it, but for us it will mean maintaining a mirror where we will need to disable the installation of RoPWR in setup.py and requirements.txt and remove all traces of RoPWR importing in your code. That being said, we will need to also remove everything that uses RoPWR package in optbinning. Though this is possible it won't be easy to maintain over the next 6 months with the speed you contribute to the package. It seems we don't have any other option.

guillermo-navas-palencia commented 1 year ago

Regarding the number of contributions, I am afraid that should not be a significant concern for the next six months. Starting in 2023, I plan to slow down and reduce the number of releases to 1 every 3/4 months. I took this decision due to my time limitations, the lack of pull request contributions, and the inexistent support from many companies currently benefiting from the library. If the situation changes, I might reconsider.

detrin commented 1 year ago

Starting in 2023, I plan to slow down and reduce the number of releases to 1 every 3/4 months. I took this decision due to my time limitations, the lack of pull request contributions, and the inexistent support from many companies currently benefiting from the library.

That is unfortunate but understandable. It might change in future who knows? I will close the issue for now.