Martinsos / edlib

Lightweight, super fast C/C++ (& Python) library for sequence alignment using edit (Levenshtein) distance.
http://martinsos.github.io/edlib
MIT License
514 stars 167 forks source link

Improve bindings/python project's setup and organization #226

Open Martinsos opened 2 months ago

Martinsos commented 2 months ago

I don't have much experience with Python, especially the packaging/building + some time has passed since I first created this Python package, so it would be great to revise and modernize the setup / organization of bindings/python package. Fix old mistakes and make sure we use latest best practices.

What I know is that I am currently using Makefile for, but I should probably instead be using setup.py and pyproject.toml for most of this work, as much of it as possible. I should look into that, if I can get rid of Makefile, then other stuff might also work smoother. And then also I can somewhere properly declare which are the deps that python binding uses (for dev), instead of installing one by one in the makefile -> in requirements.txt or maybe in pyproject.toml if that is a better way today.

It might also make sense to reconsider which builder to use. Poetry is popular these days.

Help here is very welcome from experienced Pythonistas!

NOTE: this python package uses edlib cpp library that is plugged in via Cython. This adds some complexity. Also, we are using cibuildwheels to build the wheels in CI.