-
Notifications
You must be signed in to change notification settings - Fork 932
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add tools comparison tables #1196
base: main
Are you sure you want to change the base?
Conversation
0773046
to
acb7387
Compare
acb7387
to
bcbd0a2
Compare
bcbd0a2
to
649d346
Compare
fc81238
to
f5d8598
Compare
:header-rows: 1 | ||
:stub-columns: 1 | ||
|
||
,``[build-system]`` (PEP-517),``[project]`` (PEP-621),editable (PEP-660),C extensions |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The key difference between tools like enscons, scikit-build-core, and meson-python is the language they use for configuring C extensions. I'd change the C extensions
column into an "Extensions configuration" column, and put things like "SCONS" for enscons
. I'd add scikit-build-core
with "CMake", maturin
with "Cargo (Rust)", and meson-python
with Meson. setuptools
would be "setup.py". The others with "no" would be either "None", except for poetry-core
("build.py"), and hatchling
("Via plugins").
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@henryiii Thanks for the suggestions. I think I managed to integrate them all.
fc6d036
to
b6913f5
Compare
81e481e
to
60bb50e
Compare
This PR looks really useful, but unfortunately has been open since January. Would any maintainer have the time to take a look? |
60bb50e
to
e68caac
Compare
|
||
,Install Python,Install packages,Build distributions,Upload distributions,Manage virtual environments,Lock files | ||
build,no,no,yes,no,no,no | ||
Flit,no,yes,yes,yes,yes,yes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I do not believe Flit has lock file support.
Also, I find the "Install Packages" column a bit misleading because pip is a general package installer, while Flit, Hatch & co. can only install the project being developed, if it uses their build backend.
pipx,no,yes,no,no,no,no | ||
Poetry,no,yes,yes,yes,yes,yes | ||
pyenv,yes,no,no,no,no,no | ||
Pyflow,yes,yes,yes,yes,yes,yes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would not mention Pyflow here. It is unmaintained.
Poetry,no,yes,yes,yes,yes,yes | ||
pyenv,yes,no,no,no,no,no | ||
Pyflow,yes,yes,yes,yes,yes,yes | ||
setuptools,no,yes,yes,no,no,no |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I believe that setuptools' support for installing packages is essentially what powers python setup.py install
and is thus deprecated.
venv,no,no,no,no,yes,no | ||
virtualenv,no,no,no,no,yes,no | ||
virtualenvwrapper,no,no,no,no,yes,no | ||
wheel,no,no,yes,no,no,no |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What are you referring to with the “yes” here? You can of course assemble a wheel “by hand” using wheel pack
, but I think most people would expect the ability to “build distributions” to mean something different (basically, being a pyproject build frontend).
virtualenvwrapper,no,no,no,no,yes,no | ||
wheel,no,no,yes,no,no,no | ||
|
||
Build back-ends are not listed here, but they are in a dedicated section below. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You did list Flit, PDM, ...
:header-rows: 1 | ||
:stub-columns: 1 | ||
|
||
,``[build-system]`` (PEP-517),Build,Upload,Env,Interchangeable build back-end,Plugins,Lock file |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What do you mean by “[build-system]
(PEP-517)”? That it is a PEP 517 compliant build backend?
As said above, I'd remove Pyflow from this table; then this column won't be useful anymore since all of the other backends listed support PEP 517.
I'd also expand “Env” (“Manage environments”?) and add a note to explain what “Interchangeable build back-end” means.
pipx,yes,no | ||
|
||
``pipx`` is intended to be used to install standalone applications | ||
rather than to install packages in a virtual environment. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Since you mention the special purpose of pipx
, I'd also mention the special purpose of pip-tools
, namely lock file management.
,``[build-system]`` (PEP-517),sdist,wheel | ||
build,yes,yes,yes | ||
pip,yes,no,yes | ||
wheel,no,no,yes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same question as above about wheel
: I wouldn't consider it a “build frontend”.
@willingc, rebased. For info:
I do not know which form is the most appropriate. I do not believe our guide should go too much into details in order to avoid risking being seen as choosing one tool over another (not the Pipenv story again). Also the more details we add, the more we have to keep everything up-to-date as those tools' scopes and feature sets evolve over time. For sure what this needs is links (but those can be added at the end, because I find it quite annoying to do links in reStructuredText). This also needs conda for sure, probably spack and maybe a bunch of other things (pex, shiv, pyinstaller, pyoxidize, and so on?). But hard to know what is the right balance. Maybe we do not want to have things that are too niche. |
e68caac
to
014e1da
Compare
Thanks for the rebase @sinoroc. I think that it would be helpful to add a date to give the reader when the last time this was updated and note that tools are evolving so do check their documentation as well. |
Is it something that would be interesting for the guide in principle?
Preview:
Plan is to add more tools, most notably conda and maybe also things like Spack, scikit-build, and so on. But first I would like to have an agreement that something like this is useful, and that this form is suitable.