There should be one-- and preferably only one --obvious way to do it.
There are very few one package to rule them all in Python. There are always various similar yet different packages.
Gotta breakdown what you are trying to accomplish. And find packages that do only that. Packages which combine many things into one, might lead to not understanding how it’s doing what it’s doing.
desired build backend features
-
supports build plugins
-
bypasses the pip limitation of not being able to pass build configs options thru to the build backend subprocess
deal breaker (bad) in a build backend:
-
deals with requirements
-
written in a coding another language you are not familiar with (Rust or node or Go)
Sure, but the Zen isn’t saying there must be only one. Just that to get stuff done the first trial shouldn’t be evaluate 20 different ways. There should be an obvious choice, with alternatives for the corner cases.
Packaging is so fundamental to a project that you almost need to choose what you’re doing before a single line of code is written.
Packaging seems to be a separate skill. Separate from coding. Lots of people are good at coding. Then hit the packaging roadblock.
Can step in and white knight, but too many projects are like that.
-
Disagree with you.
Isn’t the entire point of Python adding support for roll your own build backend, so we can have many different build backends?
btw i wrote my own
It’s not me you disagree with. It’s PEP 20 - The Zen of Python
There already exists multiple build backends. So adding one more can’t be violating some rule.
Are there gatekeepers who say it’s ok for them but not for anyone else? Do i have to bribe them to be in the in crowd? Am i lower class or an outcast?
This reminds me of proof of stake (1998) with it’s master nodes. Which are nodes run by elites where pleb nodes are lessor.
bitcoin (2009) solved that
What a bunch of nonsense.
How many requirements related libraries are there?!
A standard or package which encourages plugins, but writing a plugin is bad?!
… weird. I don’t understand how you can argue that with a straight face
Maturin got top 5! Way to go Rust! 🎉
deleted by creator
How to separate requirements handling and build backend
then drain-swamp (+drain-swamp-action) which supports build plugins with built in plugin for specifying semantic version.
Prefer to tell the builder the desired version rather than to be told. Options: ‘tag’, ‘current’, or specify the version. Version bump is silly.
This way can set the semantic version before tagging a release.
Warning
This is hardcore. Not for noobs, the faint of heart, or wise guys. If you don’t need build plugins then maybe drain-swamp is not for you. If you are doing something in
setup.py
, that you can’t live without, then might have a looksie at drain-swamp.