PMXBOT Log file Viewer

Help | Karma | Search:

#pypa-dev logs for Friday the 10th of April, 2015

(Back to #pypa-dev overview) (Back to channel listing) (Animate logs)
[00:00:03] <sevenhill> hi
[00:00:11] <dstufft> sevenhill: hello
[00:00:47] <lifeless> I'll document this as a caveat too
[00:00:57] <lifeless> dstufft: folk there should build interpreter specific wheels
[00:01:07] <ionelmc> lifeless: dstufft: quick question - won't wheel caching cause problems on 2.7 where wheel doesn't have the ABI tagging implemented yet? (like debug/wide different abis)
[00:01:09] <lifeless> dstufft: e.g. pp27 as the python tag
[00:01:26] <sevenhill> i'm getting error while installing latest version of pip
[00:01:44] <sevenhill> File "D:\python35\lib\site-packages\pip-1.5.6-py3.5.egg\pip\_vendor\distlib\scripts.py", line 290, in _get_launcher result = finder(distlib_package).find(name).bytes AttributeError: 'NoneType' object has no attribute 'bytes'
[00:02:12] <dstufft> ionelmc: possibly, we can fake the ABI on Python 2.7 (though we aren't right now). It's probably unlikely that someone has Python 2.7 with two different ABIs on the same machine though
[00:02:33] <dstufft> sevenhill: I think there was an issue about this just earlier today..
[00:03:24] <dstufft> lifeless: it might be a good argument for an API that lets pip ask an sdist what the total set of wheels it can produce is
[00:03:32] <dstufft> that's not tied to this PR though
[00:03:33] <ionelmc> dstufft: i often have that problem, the debug python build helps with debugging
[00:04:11] <lifeless> dstufft: two different 2.7 ABI's - actually common on Ubuntu etc when folk need to debug things, they install the debug interpreter build
[00:04:16] <sevenhill> dstufft: i had 6.0.8 and it said you need to update after i tried it kissed my current version i pycharm installed 1.5.6 . And whenever i try to upgrade from it to 6.1.1 i'm getting that error
[00:04:36] <lifeless> ionelmc: my answer would be short term - disable the cache when doing debug work, longer term we fix that wheel bug
[00:04:49] <ionelmc> hopefully this gets fixed till we get the wheel caching
[00:05:11] <dstufft> ionelmc: open an issue please, I'll mark it so I don't forget to sort something out before 7.0 is released
[00:05:24] <lifeless> it is an existing issue today though
[00:05:47] <lifeless> as any wheels you build won't be marked properly, so 'pip wheel' will build a bad wheelhouse
[00:06:02] <dstufft> lifeless: yea for sure, the difference being that pip wheel is opt in
[00:06:18] <dstufft> sevenhill: can you paste the whole traceback
[00:06:22] <dstufft> into a pastebin
[00:07:03] <dstufft> sevenhill: https://github.com/pypa/pip/issues/2669 does this describe your issue?
[00:07:34] <ionelmc> dstufft: done
[00:07:50] <sevenhill> dstufft: yes almost same
[00:08:01] <lifeless> ionelmc: is 2.6 affected too ?
[00:08:22] <ionelmc> i suspect all 2.x
[00:08:48] <ionelmc> DanielHolth said it's a missing wheel feature, "long standing" even :)
[00:10:14] <sevenhill> dstufft: http://paste.ubuntu.com/10787243/
[00:11:11] <lifeless> sevenhill: ahha, we had that reported just earlier today
[00:11:36] <lifeless> sevenhill: on windows, right ?
[00:12:00] <sevenhill> yes on windows 10 and python 3.5a3
[00:12:20] <lifeless> so pip 1.5.6 is failing to install the new pip. Hmmm
[00:12:38] <sevenhill> on the other hand i just gived that command again without touching anything
[00:12:41] <sevenhill> and it installed
[00:13:30] <sevenhill> look : http://paste.ubuntu.com/10787273/
[00:21:50] <lifeless> sevenhill: is there anything interestingin the d:\pip\pip.log ?
[00:24:13] <sevenhill> lifeless: it can be caused of non latin usernames
[00:24:19] <dstufft> lifeless: I think the wheel building is a lot closer now (possible even ready to go sans the comments I've made so far), I want to think a little bit about if the sdist filename alone is enough of a cache key or not
[00:24:50] <sevenhill> lifeless: Removing temporary dir C:\Users\MERFAD~1\AppData\Local\Temp\pip_build_ÖmerFadıl <--- Ö and ı ( dotless ı ) might be a problem about it not sure
[00:25:19] <sevenhill> because just after that : Exception: Traceback (most recent call last): ....
[00:25:31] <sevenhill> AttributeError: 'NoneType' object has no attribute 'bytes'
[00:25:44] <lifeless> dstufft: I've fixed the comments I believe
[00:26:09] <sevenhill> http://paste.ubuntu.com/10787352/
[00:26:23] <lifeless> dstufft: I don't think the filename is enough of a key, I think we need to validate that it looks like a versioned sdist rather (say) git+https://github.com/pypa/pip
[00:26:35] <lifeless> dstufft: where the filename will be 'pip' and its clearly the wrong key
[00:26:50] <dstufft> lifeless: yea, that's a good point
[00:27:14] <lifeless> and there is no right key that wouldn't expose the 'and you used a different index' issue again
[00:27:29] <lifeless> so we need to only cache when there is what looks like a proper sdist IMO
[00:27:38] <lifeless> dstufft: is there an existing regex around for that ?
[00:28:52] <lifeless> oh, I hadn't changed the exception type - first time I've heard *raising* Exception referred to as bare :)
[00:28:57] <lifeless> I'll do that too
[00:30:47] <dstufft> So I'm trying to decide if "pip-6.1.0.tar.gz" is "unique enough" to be globally distinct or if we'd want to use the link.url as the cache key. The downsides of using link.url is you can't share caches amongst multiple indexes (like what Openstack does with it's per region indexes), so it's reallly trying to decide if the benefit of sharing a cache is worth the possible confusion if two things have two different "pip 6.1.0". With EP 440
[00:30:47] <dstufft> ideally nobody is re-using numbers like that but I doubt if we already convinced everyone to do that
[00:32:08] <dstufft> the old download cache (before we had the http cache) used the whole url as the cache key for the safety reason
[00:45:14] <lifeless> if there are two different pip 6.1.0 tarballs
[00:45:17] <lifeless> the universe will cry
[00:45:35] <lifeless> if someone is using devpi for instance
[00:45:49] <lifeless> and uploading *different* contents with the same version to devpi and then to pypi
[00:45:59] <lifeless> they're going to confuse more than just this cache
[00:46:13] <lifeless> for instance, the current set of installed packages is a form of cache
[00:48:55] <dstufft> lifeless: yea I agree with that in general, the primary concern being that users are often not going to be aware of this cache nor have much insight into what is inside it. I'm totally on board with having two different pip 6.1.0 tarballs being a bad thing (that's why PEP 440 added local versions). Just on the fence about whether It's OK for us to say that if you do that then this implicit cache thing is going to give weird results (and maybe
[00:48:55] <dstufft> that's fine, maybe we already have weird results if you do that and this is just another thing)
[00:49:36] <lifeless> we shouldn't build wheels for local versions either
[00:50:02] <lifeless> I'm undecided about dev releases
[00:50:16] <lifeless> I wonder if pbr should start generating local versions for untagged things
[00:50:20] <dstufft> lifeless: pip is a bit postel's tarpit, people do lots of strange things and trying to define the line between what might break and is OK to break, and what break and is not OK to break is always an interesting thing
[00:51:55] <dstufft> for now, I don't think you need to change it from filename to url, I'm just going to think about it some more
[00:52:20] <lifeless> dstufft: care to point me at code for identifying sdist filenames though ?
[00:52:29] <dstufft> um
[00:52:30] <dstufft> sec
[00:52:33] <lifeless> I figured it would be in index.py, but hmmm
[00:53:38] <dstufft> https://github.com/pypa/pip/blob/develop/pip/index.py#L681-L784
[00:53:44] <dstufft> I think it's tied up in that block of code
[00:55:33] <lifeless> bbs, lunch then getting this tweak done
[00:55:38] <lifeless> the rest are all done
[00:59:04] <dstufft> lifeless: FWIW I think that the structure of this is correct. I'm going to play with it locally and put it through it's paces and stuff, but I think that any changes it would need are not going to be major structural changes
[00:59:11] <dstufft> have a good lunch!
[01:01:24] <lifeless> right, fed.
[01:25:25] <lifeless> dstufft: are there package names that look like versions ?
[01:25:57] <lifeless> dstufft: e.g. why does _egg_info_matches take the name as a parameter, rather than splitting on the last - before version strings?
[01:55:47] <dstufft> lifeless: because you can't unambigously parse it without the project name
[01:56:08] <dstufft> is foo-2-2 ("foo-2", "2") or ("foo", "2-2")
[01:56:19] <lifeless> ok, so there are package names with versions in them
[01:56:25] <lifeless> fuckity fuck fuck
[02:00:23] <lifeless> so, we'll have to heuristic it up
[03:16:39] <lifeless> dstufft: ok, thats done and pushed up
[03:43:17] <lifeless> dstufft: when you wake up - https://github.com/pypa/pip/pull/2618 now has everything done I think
[19:19:23] <wickman> dstufft: are you at pycon this year?
[19:19:31] <dstufft> No :(
[19:19:35] <wickman> aw dang
[19:19:51] <dstufft> couldn't leave the country with my daughter, or leave my daughter for that long
[19:20:02] <wickman> maybe pdx next year
[19:20:12] <dstufft> yea, pdx should happen for me
[19:21:56] <lifeless> dstufft: o/
[19:25:38] <dstufft> lifeless: heya
[19:32:45] <lifeless> dstufft: 2618 has everything we've discussed applied to it
[19:34:13] <lifeless> dstufft: its my weekend now, but if you a) have time and b) have questions, I'll see what I can do about answering :)
[19:34:29] <dstufft> lifeless: cool, I'll take a look in a bit
[22:37:50] <ErikRose> dstufft: jezdez: Can one of you remind me why #sha256=abcde URL hashes don't suffice for peep's functionality? Is it just that we didn't want to turn every requirement line into a URL?
[22:46:43] <dstufft> ErikRose: you mean a requirements.txt file that has like foo==1.0#sha256=blah ?
[22:47:05] <ErikRose> More like http://.../foo.tar-1.0#sha256=blah
[22:47:18] <dstufft> oh
[22:47:28] <ErikRose> It doesn't check #sha256... on non-URLs right now, obviously.
[22:47:44] <dstufft> well for that, we don't want every requirements line to be an url because portability is great
[22:47:53] <ErikRose> But if one were willing to turn every req into a URL, ... right.
[22:47:58] <dstufft> and i don't think pip checks hashes on an url inside a requirements.txt
[22:48:01] <dstufft> (we could though ofc)
[22:48:20] <ErikRose> I'm sitting here with some Twitter ops folks who thing it does. I'm picking through the source now.
[22:48:26] <ErikRose> thing→think
[22:48:34] <ErikRose> It's all very confusing. :-)
[22:48:43] <wickman> i did think it does
[22:48:44] <ErikRose> (We're having a pypa open space atm.)
[22:48:45] <wickman> but i guess not
[22:50:03] <ErikRose> wickman: The case I do think is true is that it checks the URL hash it gets from PyPI against the downloaded file to guard against transmission defects.
[22:50:15] <ErikRose> Oh my poor, aching brain. :-)
[22:51:20] <wickman> ok, that's what we do
[22:51:23] <wickman> (in pex)
[22:53:32] <ErikRose> Bravo. :-D
[22:53:45] <ErikRose> So I guess all your reqs are URLs, then.
[22:54:13] <wickman> no, i'm saying that if we get a url with a #hash=ext, we at least verify it but that's it
[22:54:22] <ErikRose> gotcha
[22:55:00] <dstufft> it checks the url from PyPI
[22:55:05] <dstufft> but not one in a requirements.txt
[22:55:17] <ErikRose> Thanks, dstufft. Sorry you couldn't make it here!
[22:55:27] <wickman> pex will do it from requirements.txt as well (but the requirements.txt support is in a non-master branch atm)
[22:55:41] <wickman> should be done by monday
[22:55:53] <dstufft> https://github.com/pypa/pip/issues/468 I know this because this is one of the first issues I ever opened on pip :D
[22:57:02] <dstufft> also lol 3 years ago
[22:57:45] <ErikRose> I just hosted an open space on open-source burnout I wish we could have had you at.
[22:57:54] <ErikRose> I think I might have to start a Maintainers Anonymous for mutual support.
[22:58:24] <ErikRose> "My name is Erik, and it's been 6 days since my last commit." "Hi, Erik."
[22:59:27] <dstufft> I'm getting better about not jumping headfirst into every problem at least
[22:59:29] <dstufft> :D
[23:00:25] <ErikRose> Here's what I jotted down during it: https://gist.github.com/anonymous/44f10da267b0f17430c8
[23:06:46] <dstufft> ErikRose: I know some of these feels :( trying to manage incoming PRs can be hard
[23:06:57] <dstufft> saying no is hard too :V
[23:07:22] <ErikRose> Admitting "I'm never going to look at this. I don't hate you. I just don't care enough or have time." is hard, too.
[23:08:07] <ErikRose> Everyone wants to submit patches, which is great. But few want to assume responsibility.
[23:08:29] <ErikRose> When I accept a PR, I am committing to support that code for the rest of my life. The submitted can just disappear into the internet mists.
[23:08:41] <ErikRose> "Here, adopt my child. I didn't write tests, though."
[23:08:48] <ErikRose> :-)
[23:11:36] <tomprince> ErikRose: http://felixge.de/2013/03/11/the-pull-request-hack.html
[23:12:50] <ErikRose> tomprince: Interesting! I have toyed with trying this on one of my projects to see what happens.
[23:13:10] <dstufft> I get the feeling that wouldn't work very well for pip
[23:13:56] <ErikRose> I did deputize somebody on chardet. I said "Guess what: you're now a co-maintainer! Enjoy!"
[23:14:00] <ErikRose> It worked out really well, actually.
[23:14:15] <dstufft> i've done it on shit I don't care about much
[23:14:20] <dstufft> django-passwords recently
[23:14:21] <ErikRose> Moved that sucker to a GH org, and away it went.
[23:14:57] <ErikRose> tomprince: Boy, this article describes me to a tee.
[23:16:49] <tomprince> dstufft: Are you sure? It would certainly end up with a different result than the current one.
[23:17:03] <tomprince> I don't know if it would be a better or worse one.
[23:17:14] <tomprince> Certainly not as standards driven as it currently is.
[23:17:56] <ionelmc> i suspect the problem is that it's hard to understand the code
[23:18:35] <ionelmc> without other people reviewing your changes it's hard to do anything good
[23:19:22] <ionelmc> well, not "the code"
[23:19:25] <ionelmc> the interactions
[23:22:13] <dstufft> yea, it's easy to just add quick fixes to a particular problem without thinking about the broader implications