Betteridge’s law of headlines
nice catch and thanks for the teaching moment
To keep it simple
testing and static type checking – catches all the bugs
linting and formatters – so git diff
isn’t pure noise showing trailing and unnecessary whitespace and collaborators won’t have to go back to correct things that coulda been automagically fixed.
in code documentation – Can be extracted by Sphinx as part of the documentation process. Hint: interrogate is your friend.
gh workflows – to have the test suite run against various py versions, os, and maybe architectures. Without which not even confident it runs well on your own machine let alone anywhere else.
requirements.txt – is an output file. Where is requirements.in ??
xz hacker sends his love
Makefile – for people who like a ton of shell scripts in their Python packages. Up until realize that ya know which Python interpreter is being run, but can’t have any level of confidence about the shell interpreter. Cuz it’s a big unknown and unknowable. Gotta just take it on faith.
Admit it, the author brought a smile to your face!
Can’t stop laughing, the codebase and authors stance on packaging are hilarious.
After reviewing the source code, was gonna write helpful feedback. Then realized this project is perfect as-is.
A perfect example of what a python project looks like by those who really really hate packaging and UX.
Once upon a time, I was that guy too
Rally to protect the acolytes from those demanding efforts towards packaging and common practices!
Hey it works on their machine and maybe will on yours
Unless you use Void (sv) or Alpine Linux (openrc). Those people suck the fun out of the room.
Everyone should be using systemd, expect Grandma. She gets a smartphone.
U are not wrong.
Dependency management is tough and often frustrating. Dealing with resolving dependency conflicts is unavoidable. This area is a constant focus of development, so could see improvements over time.
Some packages to keep an eye on:
pip & setuptools
pip-tools (specifically pip-compile)
https://pypi.org/project/pip-compile-multi/
poetry
Any others i’ve missed?
If it’s worth sharing it’s worth to accompany the blog post with a repo containing unittests and tox.ini and pre-commit
If that had been done, tox would give feedback that match switch support is py310+
functools.singledispatch
might be helpful to test multiple implementations
Complaint about sharing code within a blog post is the quality is ALWAYS suspect.
Lets leave crapoverflow.com style code examples in the past. Instead share tested code.
Also logging is not isolated. Bleeds all over the place. Which is a deal breaker
Not worth the endless time doing forensics
Agree! Lets stick with multiprocessing
one thread sounds nice. Lets do much more of that
that’s pretty cool u are curating release announcements
A package’s requirements are left unlocked An app’s requirements are locked
This doesn’t excuse app devs from excluding a
requirements.in
file