[02:25:13] <BlueAidan> so it appears that pip 8.1.2 normalizes namespace package names differently than previously, leading us to be unable to install them
[02:34:25] <BlueAidan> dstufft: do you have a recommendation for a simple server implementation? I'm not opposed to changing what we have. Just seemed the lightest weight option at the time
[02:34:43] <dstufft> (which is understandable, previously to PEP 503 what the /simple/ API was terribly unspecified and unless you matched the name _exactly_ it may or may not work in a bunch of different scenarios that weren't PyPI, PEP 503 attempts to remedy that, but it means some things broke until they get updated)
[02:35:12] <dstufft> BlueAidan: Honestly, I'm kind of surprised it worked on 8.1.1
[02:35:18] <dstufft> I Thought we broke that ages ago heh
[02:35:43] <BlueAidan> it's worked on every release since like last october/november I'm pretty sure
[02:39:37] <dstufft> Yea, it looks like we "broke" it in 8.0 actually, but there was an edge case specific to . that didn't get broken... until 8.1.2 when we pulled in a new copy of pkg_resources from setuptools which I guess started normalizing the names by default
[02:40:57] <dstufft> so the reason it's not in the changelog, is it was actually a setuptools change and I just didn't notice
[02:41:06] <dstufft> BlueAidan: I've had luck with devpi in the past fwiw
[02:41:38] <BlueAidan> I was hoping to not have something that tries to cache the public pypi; I've had bad luck with those in the past caching things incorrectly
[02:42:30] <BlueAidan> I hear ya; this is a thankless task. Python packaging is a minefield.
[02:43:29] <dstufft> devpi is actually a multi index thing
[02:43:40] <dstufft> it has one repository endpoint that cached PyPI
[02:43:50] <dstufft> but you can add as many other endpoints as you want that don't have that
[02:44:09] <dstufft> (also your endpoints can inherent frome ach other, including inheriting from the pypi mirror)
[02:46:34] <dstufft> BlueAidan: depending on what features you need, a web server and a file system is enough fwiw
[02:47:19] <dstufft> just make a dir for each project, named how the code in PEP 503 says to name it, stick those packages inside of there, and autoindex your server at that dir
[02:50:30] <BlueAidan> yeah; just wasn't expecting this particular rabbit hole tonight... was testing standing up an entire environment and it failed spectacularly. ;)
[02:51:43] <dstufft> yea sorry :( I suspect if you open an issue on pypiserver they'll probably be willing to fix it too :]
[02:52:25] <BlueAidan> yeah; I imagine it's a pretty simple change
[02:52:42] <BlueAidan> guessing setuptools exposes the normalizing function?
[03:37:23] <njs> dstufft: so uh btw maybe should have mentioend before that ruamel.yaml is also a fork of pyyaml that has already moved to single-source py2/py3
[03:37:35] <njs> dstufft: in case you get anyone else asking you to maintain such a thing :-)
[07:54:36] <ronny_> dstufft: ouch, that bugfix in distlib is a breaking behaviour change that warants a major release in semver ^^
[09:18:56] <MarkusH> We just ran into https://github.com/pypa/pip/issues/3666 -- From what I understand this is a backwards incompatibility change that was introduced in a patch release?
[15:28:09] <sontek> Hey, what changed in pip 8.1.2 that would make some packages not be found anymore?
[15:29:36] <sontek> Did we miss a deprecation period or something?
[15:30:07] <sontek> Unscheduled infrastructure work is a bummer
[15:30:16] <sontek> I can upgrade devpi but we usually test our upgrades and shit before we do them
[15:31:09] <dstufft> sontek: The tl;dr of what happened is there was a deprecation warning for the overall normalization changes in pip 6, than went to a error in pip 8, BUT due to a bug that nobody noticed those warnings didn't apply to ``.`` only all the other characters
[15:31:21] <dstufft> so ``.`` kept working accidently
[15:31:54] <dstufft> until we pulled in an updated setuptools and packaging to fix issues with markers and projects being uninstallable depending on what markers they used, and those libs had been correctly implemented
[15:32:08] <sontek> and the decision is to hold people to the change instead of backing out the change until proper deprecation warnings are out?
[15:34:09] <dstufft> sontek: the issue is that either way people are broken, we need the newer libs to fix some projects on PyPI that are completely uninstallable right now, but if we pull in the newer libs we break the ``.`` for repositoreis that didn't correctly implement PEP 503. The decision is to keep the updated libs because those projects on PyPI don't have much of an option to unbreak themselves besides wait for pip, but peolpe affected by this can upgarade
[15:34:09] <dstufft> (or patch their server if it doens't have a new release) to fix it
[15:34:59] <dstufft> so basically, which bad choice do we want to make :(
[15:37:32] <sontek> Yeah, but the existing breakage is at least already known broken things
[15:37:51] <sontek> Waking up to 100 developers not being able to run their tests in our CI system is shitty
[15:38:06] <sontek> I'd rather have things that were broke before to continue being broken
[15:43:31] <dstufft> sontek: I'd rather have broken things that can be fixed quicker, particularly when that broken thing is broken because it was wrong and where other people can control the fix than I would broken things that are blocked on a deprecation process... but at the end of the day neither one is wrong or right, it's just trade offs.