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.
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.
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.
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.
No, that’s… against community rules :) I don’t like the common use of venvs or .toml very much and I don’t like their use by other people and “timid” is also diplomatic. So you’re getting timid, and we get to get along and we can agree to disagree on the use of .venvs and we can wish each other a pleasant day.
Think you broke the Internet. That’s brilliant /nosarc.
Want you to write my code of misconduct!
It’s literally 10x faster
reminds me of the ol’ joke
young bull: lets run down the hill and get us a heffer
old bull: lets walk down and do 'em all
wtf is your rush?
It literally doesn’t matter how long it takes. Especially when Astral has moved on.
It’s literally 10x faster. I’m not sure what kind of person wouldn’t care about that. On that, lets agree to disagree.
Thru magic Astral has funding. I don’t. So why shoulder the risk that their magical situation will continue forever.
When Astral goes tits up, which we seem to agree on, and everyone is whining crying and screaming, at least there is one or more fallback(s) written in Python which is/are maintainable by people without magical super powers.
I have no need for this kind of tool, because I don’t have version conflicts. Does this manage my dependencies in other ways?
Happily no. wreck attempts to do only one thing. If you don’t have version conflicts in your requirements files then whatever you are doing, keep doing that.
No idea what .in is.
requirements-*.in
. are placed in folders. So requirements/whatever.in
--> requirements/whatever.lock
and requirements/whatever.unlock
Are they still .txt or is there a new file standard for .lock and .unlock?
.txt
is meaningless or exceedingly broad. A text file huh? Well that explains everything.
The standard is what works.
use of venvs
Containerization, especially for GUIs and apps, is better than depending on venvs. Until it’s not. Then still need venvs
The same argument can be made for supporting Windows and MacOS. Don’t have these dev environments. But somehow found a way to support these platforms.
If you look into it, pyQt[x] and pySide[x] aren’t all that different. The intent of PySide is to keep them for the most part compatible.
Don’t have to manage everything, just what is being used.
Doing the wrong thing explains most my packages:
wreck – dependency management
drain-swamp with drain-swamp-action – build backend with build plugins
logging-strict – strictly validated logging configuration
pytest-logging-strict – the same thing except a pytest plugin
What else am i not supposed to do?
There is lots of complexity creep. And i’m one person with a finite lifespan. So had to decide what to spend time on.
systemd is ideal for those running servers. I’m publishing Python packages and wanted to keep focused on that.
If you wish to work for me for free, cuz i have zero access to labor or funding, to upgrade my tech infrastructure, i could be a useful person to know.
Especially if you believe strongly i should be running much better infrastructure.
Why have you been keeping this a secret?
I have. Wanted to see if anyone would find a published pypi.org package organically, w/o any marketing.
Surely with a trillion eye balls and the super powers of AI, it would be impossible to hide something in plain sight, Right? Especially on the most important topic in Python.
Now the question becomes, does the world+dog ignore federated social media? Is every coder required to have a blog?
What do you do when there is/are unavoidable package dependency conflict(s)? <-- biggest question in Python
Often times, split out into mutliple venvs.
For example, Sphinx
requires py310+. My default is py39. myst-parser
restricts dependencies rather than allow the latest and greatest. So there is an unavoidable need for two venv.
After setting up pyenv, how much setup is required, in pyproject.toml
, to setup these two venv?
Looking at poetry, it’s focused on one venv. And it’s annoying it considers pyproject.toml
to be a r/w file. I want to configure for an unlimited number of venv.
The OP author is very familiar with uv, having written multiple articles on it. Pushes it onto his students. So i get it, the article is focused on uv and he is invested in uv. This assessment is a tiny bit unfair, but enough, only, to justify reading the article with a tiny grain of salt.
For package management, i’m happy with pyenv. So there i have a bias.
The biggest praise i have is, it follows the UNIX philosophy, do one thing and do it well
. uv does multiple things, the issue comes down to resources required to maintain a super complex thing. Especially in a completely different coding language! I DONT GIVE TWO SHIATS IF ITS FASTER, I care about maintainability after the original geniuses disappear and they will.
Any blog post which doesn’t mention competitors, tiny grain of salt --> giant grain of salt.
If not mentioned, have to assume either don’t know about them or haven’t bothered to try them.
What are the actual competitors to uv (specifically for dependency management)?
The only package mentioned is: poetry
poetry also violates the UNIX philosophy. It combines build backend with dependency management. I want them separate.
Open up that super powerful doom pr0n machine, AI, and get it to find the other (dependency management packages). Mention them in the blog post.
i’m deadly serious. A cafe isn’t silent, just are left alone to do our thing
multiprocessing humbles the plans of mortal men
(Initially thought you were being sarcastic.)
Some things are so complex they can only be understood in long functions. Break up the long functions and what’s going on is lost.
Only have one example where the complexity is best left alone, the heart of a requirements management package. Where the whole is greater than the sum of it’s parts. Or the parts lose meaning if taken in isolation.
surprised flake8+black even allows a comment as the docstring.
Prefer triple single quotes over triple double quotes. But black slapped me back into conformance. Of course i’m right, but evidently that’s not good enough. So triple double quotes it is.
Slap me often and hard enough, i learn conform.
Except for build backends and requirements management.
i ditched Ubuntu for Void Linux LXDE. Void Linux has runit rather than systemd
This predates snapd
Disclaimer: you have to setup the wifi and enable logind
Take any package that is no longer maintained and git clone it.
Configure the dev environment
pre-compile
three tox config files:
testing, docs/lint/formatting/pre-compile/interrogate, update/sync requirements files
unittest --> pytest
Read the tests and then bring it up to your current competency level
gh workflows
pyproject.toml
poetry is worthless!
If the build backend focus is on requirements and not build plugins, remove it. Use a separate package for requirements file management.
For how to do this see how logging-strict is doing it
https://github.com/msftcangoblowm/logging-strict
Specifically pyproject.toml
and tox-req.ini
home is not a safe environment. Might be possible with alot of preparation like sound proof and a lock on the room.
The entire point of all the security is to protect yourself from the wife unit
I code at a cafe. Far far far away from interruptions.
so does zfs, so does wayland, so does trying out every distro, so does trying out every text editor and associated plugins, so does trying out ventoy, so does GrapheneOS, …
Everything makes life easier, but comes down to,
Linux isn't free, it costs you your time
Which can be reframed,
what do you really want to spend your time on?
If i really really really had to answer that overly honestly, want:
my GUI apps non-blocking on heavy background processes
distributing out tasks to many computers and runners
None of which screams or necessitates systemd or zfs or wayland or trying out every distro, every text editor every plugin, ventoy, or GrapheneOS.
Not in a house with a fox with a crow and a bow a knot on a cot or relaxed in the snow, i will not eat never ending random suggestions Sam, i will never eat them Sam i am.