Does anyone if there is a way I can enforce/commun...
# singer-tap-development
r
Does anyone if there is a way I can enforce/communicate what version of Poetry should be used for development of an SDK tap? I've been having issues with compatibility with the tap's
poetry.lock
file and various versions of Poetry.
c
I see two approaches: 1. External version manager (i.e. asdf) 2. Somehow embedd a Poetry wrapper into the project (No idea how to do it with Poetry, I only know that that's how it's done with pdm)
e
I've been meaning to give pixi a try
c
I've never used anything conda related. Can't really comment on that
@Reuben (Matatika): I forgot about nix, it has somewhat decent integration with poetry. So, devs could do a
nix shell
in a project, I suppose (haven't actually tried it). https://github.com/nix-community/poetry2nix
r
Yeah, there's definitely some interesting stuff here. I guess my main concern is just people being put off from contributing because the dev setup is too complex, or they are put off because they have to install another Python dependency management tool. I feel Poetry is almost a best practice for Python projects at this point, so is fairly normal to state as a development prerequisite - just stuck on this annoying
poetry.lock
compatibility issue. I found an issue for a Poetry wrapper, so I'm going to keep an eye on that as well: https://github.com/python-poetry/poetry/issues/4988
c
I feel Poetry is almost a best practice for Python projects at this point
I have migrated away from poetry to pdm, mainly because poetry seemed like it was doing a bit too much (I guess one of the things that really made my head scratch is when
poetry shell
stopped working due to a bug in one of the other poetry libraries which is their own TUI library ... I just didn't think that project management and TUI libraries belong together ...) https://github.com/python-poetry/poetry/issues/7184 The other unfortunate thing for poetry is that it was created a little bit too early to adopt PEP-621 which is now the standard metadata management and poetry is now the only major project management tool that doesn't implement it. The last thing that made me switch was the dependency resolution, I felt that the resolver is a really key part for project management tools, and having a tool that uses a "reputable" resolver was important to me.
r
Yeah, that's interesting too because I have heard other people say they dropped Poetry in favour of some other tool for similar reasons... This might be a close-minded way of thinking (I'm not super knowledgeable on PEP and the intricacies of Python package managers), but I don't think I'd switch to another package manager for developing taps with the SDK, unless the SDK itself switches to a different one in a later version. Having said that, you have piqued my interest in
pdm
- is it effectively a drop-in replacement for Poetry (i.e. compatible with an SDK tap project)?
c
(i.e. compatible with an SDK tap project)
Yup. There's really nothing special that Poetry does in the SDK cookiecutter template.
pdm
is really nice. Only concern is that it's pretty much a one person project ... which is really not that uncommon ... 😂 And the project maintainer is 100% passionate about it.
Regarding the dependency resolver topic, this is the resolver that
pdm
uses https://github.com/sarugaku/resolvelib It's developed by one of the members of the Python Package Authority (although the project itself is not an official PyPA project) The resolvelib resolver is the one used by (and written for?)
pip
r
Thanks for this @christoph - going to have a look at this for sure. 🙂