Coding 2024-04-19
Current "pretend I'm working on the kanban app but I'm actually not" status:
"Hmm, since this is an application, it sure would make sense to have some kind of lockfile. I wonder if any of the choices for that right now don't somehow bother me."
...
Oof, big "everyone complains about / nobody uses" energy in the current state of things. mousebender sounds nice and targeted in its focus, but it appears to be early days yet. Aside from that, we've got:
- Poetry
- PDM
- uv
- pip-tools
- Pipenv
Doing a bit of research, I think I've found stuff to be unhappy about with all of them, so let's take a closer look at Flet's build process for Android and see if I can find a pragmatic choice for this particular scenario.
Okay, so, I don't know what anyone more knowledgeable about the relevant parts of the Python ecosystem would think of the statement "p4a is kind of like nuitka", but I'm just going to breeze past that so I have some kind of baseline idea of how this all works. Flet requires the patch version of p4a to be pinned lower than the current CPython release, which is a little spicy... However, as far as guaranteeing functionality, I should be "okay" if I match the minor version in my development environment. I'm not seeing a way to directly specify version constraints as part of p4a create --requirements; the documentation only mentions names. It is possible to specify pins through the setuptools integration, but this just seems cursed...
Wait, hold on, do I need to be packaging all dependencies, or just compiled ones? The Flet documentation makes it sound like any packages that don't need a recipe can be installed automatically during the flet build step, I think?
However, there's an additional wrinkle: the CRDT library I want to try to use here is off in pre-release land right now, so pinning its version or somehow telling p4a to take development versions is necessary in order to make it... work.
Remembering how I got started on all of this, it is... helpful... to realize that I don't have any other non-Flet dependencies, so locking is kind of irrelevant.
Ultimately, it makes better sense right now, I think, to make sure I can get all of this functionality working at all, on the desktop, and shelve the whole "get it nicely on my phone" idea for now. (Unless I can turn it into a static site that's installable as a PWA, in which case, that's great. Seems a little improbable, though.)
So, I guess the right course of action right now is to... Start actually prototyping stuff, and try to get a feel for these libraries.
Okay, I'll get on that. Tomorrow.
Good night.