[00:15:19] <prologic> so dstufft until the above issue is resolved somehow pinning to pip==6.0.2 and virtualenv==12.0.2 (uses pip==6.0.2) seems to work okay for me
[00:48:52] <prologic> almost a double hit in perfroamcne
[00:49:28] <dstufft> it used to be we had no persistent cache on the HTTP access (other than the download cache) but we did have an unconditional in memory cache
[00:49:47] <dstufft> I removed it when I added the new persistent cache
[00:49:55] <dstufft> might need to add something back
[01:27:18] <ronny> dstufft: are there any docs when and how RECORD, installed-files.txt and entrypoin maps are generated? im trying to port pipsi to winsows and i keep running into surprises with paths
[01:27:54] <ronny> (for example shortenedfilenams in the installed-files list)
[14:07:05] <xafer> which has issue removing installs with non pep440 version
[14:07:37] <xafer> youtube is installed in youtube_dl-2015.01.11.dist-info but pip will only searhc it in youtube_dl-2015.1.11.dist-info
[14:08:12] <xafer> it is somewhat similar to https://github.com/pypa/pip/issues/2293
[14:12:01] <xafer> I'll try to update my patch for dist also
[15:27:36] <vBm> xafer / ionelmc ... ive tried searching but can't find it ... is there any way to purge pip list ? ... it still includes stuff i've removed via pip uninstall
[16:11:47] <tos9> ionelmc: Yeah, except I want to do it from python
[16:12:31] <ionelmc> tos9: not sure about pip's api
[16:12:32] <tos9> I mean, I'm going to have to subprocess out to run the pip install anyhow, but :/
[16:12:52] <ionelmc> i'm pretty sure pip does weird things with the logging config so you can't just run it in the same process
[16:13:35] <ionelmc> unless you use some of the more 'inner' api
[16:13:38] <tos9> ionelmc: Yeah, I know that I don't want to run anything pip related in-process... I guess since pip is doing the downloading I might as well just shut up and fork
[16:13:57] <ionelmc> maybe dstufft would know what's best
[16:15:19] <xafer> that's what pip does to build a wheel: https://github.com/pypa/pip/blob/develop/pip/wheel.py#L551-L570
[16:15:43] <xafer> so basically call setup.py bdist_wheel, via subprocess
[16:16:35] <pf_moore> tos9: it's actually a surprisingly ill-defined problem (says me, who keeps trying to do it :-))
[16:17:48] <tos9> pf_moore: If we're breaking down the steps and doing it ourselves, theoretically 1 and 2 have a 0, which is "check to see if a wheel exists already" yeah?
[16:18:06] <tos9> Well, does pip wheel do that part?
[16:23:33] <pf_moore> What that does is take "pip install foo" and convert it into "pip wheel foo" followed by "pip install <the-wheel>" and caches the wheel to avoid step 1 in the future
[16:24:21] <tos9> pf_moore: But how do you avoid step 1? If you run pip wheel again, it doesn't check to see that there's an existing wheel
[16:24:44] <xafer> tos9, it does if you add --find-links into your pip.conf
[16:24:47] <ionelmc> tos9: basically this http://blog.ionelmc.ro/2015/01/02/speedup-pip-install/
[16:24:57] <tos9> Oh right sorry, it only doesn't for VCS links
[16:25:06] <tos9> (I abandoned that approach because of ^)
[16:25:18] <pf_moore> tos9: internal magic. The wheel caching thing would be a transparent improvement to pip install, and isn't really the same as what we were talking about...
[16:26:08] <tos9> pf_moore: Yeah I'm on the same page now -- I did the same thing, but VCS links broke it, so now I am doing... other things
[16:27:02] <pf_moore> For me, the whole "maintain a wheelhouse" thing is to avoid ever installing from sdist, because I don't like setuptools' executable wrappers (on Windows) and I prefer the ones I get from a wheel install. Petty of me I know...
[16:27:58] <ionelmc> tos9: what i'm doing currently for some terrible debian package is something like this:
[16:29:59] <ionelmc> only for what's now in req.txt, not all the crap that accumulated in $build_cache
[16:30:26] <pf_moore> Ah, ok - you use a common build cache for multiple requirements files. Makes sense.
[16:31:13] <ionelmc> ah yeah, cause i have a couple debs
[16:31:18] <pf_moore> And yeah, VCS deps are a PIT with this sort of thing (because they don't have a well-defined version, basically, so pip sees them as always newer than any built file)
[16:31:30] <ionelmc> plus there's the garbage issue
[16:31:51] <ionelmc> pf_moore: what if you'd tag it with a "fake" version?
[16:31:55] <tos9> pf_moore: yeah, which is why I would have answered your earlier question (about what to do when a wheel satisfies a req but isn't latest) with "meh just use it" :P
[16:32:27] <xafer> I'd say fork the VCS and put a local tag on its version number ?
[16:33:56] <pf_moore> ionelmc: Can't say I've ever tried it, it may work
[16:34:02] <ionelmc> but not everyone wants to maintain internal infrastructure
[16:35:01] <pf_moore> I could do loads of cool things with a private PyPI where I could serve generated stuff. devpi plugins basically, but I've never investigated...
[16:35:21] <ionelmc> tos9: as a workaround, you could manually do pip wheel for those source packages
[16:35:31] <ionelmc> and then match the versions in your req.txt
[16:35:36] <pf_moore> Serve VCS URLs as versioned sdists, automatically wheel convert wininsts and exes, etc.
[16:35:50] <ionelmc> you need two req files with that, one with only the source deps
[16:36:06] <ionelmc> and one with matching versions (so they hit the wheelhouse)
[16:38:11] <ionelmc> tos9: you can prolly automate generating the version reqs, by running pip freeze
[16:42:27] <tos9> ionelmc: it's easier I think to well, either send a PR to pip to "fix" it or add a flag :P, or to do what I'm doing now, which is to parse the file for VCS links and manually pip install them without the vcs link once the wheel is present
[19:18:16] <wsanchez> Note: all sh scripts must 'set -e', always.
[19:18:29] <wsanchez> Also 'set -u' but that's not why I'm dumb today
[19:33:07] <ionelmc> wsanchez: pastebin the whole output
[19:33:27] <ionelmc> hard to tell what the actual problem is otherwise
[19:37:45] <wsanchez> ionelmc: I think pip may be exiting with the correct status and my script is not catching it because the script is a Mailefile and make sucks
[19:38:01] <wsanchez> So lemme make sure that's not the problem.
[19:39:07] <ionelmc> ah yes, the perils of makefiles :)
[19:39:29] <Alex_Gaynor> wsanchez: It may depend how the script is failing; I just did a trivial `pip install extension-that-wont-compile` and pip exited with $status => 1
[20:07:52] <wsanchez> For GNU Makefiles, this is a good thing to do: .SHELLFLAGS = -euc
[20:08:18] <wsanchez> Which will cause the shell to exist on errors or undefined variables
[20:10:50] <wsanchez> The python-ldap is a crime against humanity.