PMXBOT Log file Viewer

Help | Karma | Search:

#pypa logs for Monday the 25th of August, 2014

(Back to #pypa overview) (Back to channel listing) (Animate logs)
[01:43:14] <dstufft> Lekensteyn: look at peep on PyPI
[06:41:45] <nanonyme> dstufft, now if only that was available in Debian repository, it would solve the chicken and the egg problem :)
[11:52:59] <ionelmc> what's an easy way to have pip retry downloads if timeouts?
[11:53:07] <ionelmc> i have very bad network
[12:22:40] <ionelmc> basically i want to disable connection reuse
[12:22:48] <ionelmc> dstufft: around?
[12:44:12] <nanonyme> Does pip support resuming anyway?
[12:44:19] <nanonyme> Ie for HTTP download
[12:45:14] <nanonyme> Guess probably not, looks like requests doesn't support Range
[13:04:45] <ionelmc> naaa
[13:05:05] <ionelmc> the problem requests has connection pooling by default
[13:05:17] <ionelmc> and pip doesn't let users customize that behavior
[13:05:27] <ionelmc> the problem is that *
[14:54:16] <tomprince> ionelmc: I don't think there is a way currently to retry. But I think that is planned (And maybe even implemented in master?)
[14:55:44] <ionelmc> even if it is, doesn't help me
[14:55:48] <ionelmc> cause vendoring
[14:57:46] <ionelmc> can we stop vendoring ? it's a nightmare to fix/upgrade the subdependencies
[14:59:13] <ionelmc> how does npm handle this?
[14:59:35] <ionelmc> they install the subdeps inside the dependee right?
[14:59:36] <dstufft> ionelmc: we're not going to stop vendoring, about the only option to stop vendoring is to tstop relying on dependencies all together
[14:59:39] <ionelmc> just like vendoring
[15:01:37] <ionelmc> dstufft: what was the initial rationale for vendoring anyway ?
[15:02:16] <dstufft> ionelmc: because ``pip install --upgrade requests`` shouldn't render pip inoperable
[15:03:28] <ionelmc> dstufft: fair, but what if pip would disallow upgrades that wouldn't be "compatible" (don't match requirements in dependees)
[15:04:03] <ionelmc> any plans to implement that?
[15:04:40] <dstufft> ionelmc: some plans sure, even then though, pip is what I call an incidental dependency. I wouldn't want to have to upgrade my app
[15:04:41] <dstufft> er
[15:04:44] <dstufft> hit enter too soon
[15:05:15] <dstufft> I wouldn't want to have to upgrade (or downgrade) my app's use of requests, just because I'm using a different version of pip
[15:05:47] <dstufft> it's "incidental" because it has nothing to do with my project, it just happens to be installed into the same envrionment because that's the only way to do it
[15:06:11] <ionelmc> dstufft: wait. what?!
[15:06:20] <ionelmc> i'm talking about conflict detection
[15:06:44] <ionelmc> the package manager (if there was ever one) should allow dependency conflicts
[15:06:46] <dstufft> yes, but that doesn't help pip except in that certain versions of pip suddenly beomes incompatible with some projects
[15:06:53] <dstufft> it's a good feature in general
[15:06:53] <ionelmc> if something would create conflict, stop, raise error
[15:07:01] <dstufft> but it doesn't help pip have dependencies
[15:07:31] <ionelmc> what does it have to do with pip ?
[15:07:36] <ionelmc> i'm not talking about pip
[15:07:50] <ionelmc> i'm talking about vendoring and conflict resolution
[15:08:27] <ionelmc> you shouldn't be able to upgrade a package if said package depends on newer stuff that breaks already installed packages (a <<<conflict>>>)
[15:10:06] <dstufft> sure, I agree with that
[15:10:31] <ionelmc> yay
[15:10:36] <ionelmc> any plans for this?
[15:11:06] <ionelmc> this would require something like a package database right?
[15:11:26] <dstufft> theortically we have a pacakge database of installed packages, though we don't record all the info we need for it
[15:11:40] <dstufft> there's no oncrete plans for it, it's been in my hwad for awhile
[15:11:47] <ionelmc> i mean a state database (that knows what is installed and what metadata it has)
[15:12:22] <ionelmc> what info is missing?
[15:12:25] <tomprince> But even with that, pip won't stop vendoring stuff.
[15:12:50] <ionelmc> tomprince: well, eventually it will
[15:12:58] <ionelmc> when everyone has a proper package manager
[15:13:03] <ionelmc> long time :)
[15:13:41] <tomprince> The only way it could stop vendoring, is if it was installed in an isolated environment, seperate from the environment to which it is installed.
[15:13:55] <ionelmc> tomprince: otherwise it would be ridiculous, like having a python runtime beeing included in the yum bin
[15:14:28] <dstufft> the difference between yum and pip is that there generally aren't two incompatible versions of python that yum can install
[15:14:53] <ionelmc> afaik yum and apt don't do that, if you uninstall python you're essentially fuxing up your machine
[15:15:17] <ionelmc> same as if you fux up a dep of yum/apt
[15:15:36] <dstufft> right, but what i'm saying is that yum upgrade python is never going to break yum
[15:15:40] <dstufft> (I forget the exact command)
[15:15:51] <dstufft> nor is a downgrade
[15:16:11] <dstufft> you have to go ount of your way to break yum by messing with it's dependencies
[15:16:28] <ionelmc> well yes, cause the package manager doesn't let you upgrade to python3 when yum only runs on py2, duuh ;-)
[15:16:50] <dstufft> the expectations are different
[15:16:59] <dstufft> people don't expect to be able to yum install different versions of python-requests
[15:17:06] <dstufft> peolpe do expect to be able to do that with pip
[15:17:06] <ionelmc> dstufft: so, again, what info is missing? what's required to achieve this ?
[15:17:19] <dstufft> ionelmc: we don't record dependency information in the metadata ATM
[15:17:35] <tomprince> ionelmc: pip instlled in an isolated environment.
[15:18:09] <dstufft> but let's say pip dependenced on requests >=2.3
[15:18:20] <dstufft> now everyone who uses pip cannot use an older version of requests at all
[15:18:36] <dstufft> we're going to force everyone who uses requests themselves to upgrade their own use of requests
[15:18:52] <ionelmc> dstufft: i would assume people use virtualenvs for their `apps` - so they wouldn't care about what's installed globally
[15:19:02] <tos9> I would not assume that and I'd be mad if pip did.
[15:19:06] <ionelmc> i don't have stats for this ofc, do you have any ?
[15:19:14] <dstufft> but it doesn't matter if they use virtualenv, pip gets installed into a virtualenv too
[15:19:18] <tomprince> But pip is installed in each virtualenv too.
[15:19:29] <ionelmc> oh crap
[15:19:47] <dstufft> it would be impossible to install both pip that uses requests >= 2.3 and anything else that uses an older version of requests
[15:20:03] <dstufft> even in a virtualenv
[15:20:45] <ionelmc> can we standardise vendoring ?
[15:20:59] <dstufft> this problem generally doesn't happen with apt/yum/etc, because most everything for the same OS version is going to rely on the same set of stuff
[15:21:15] <ionelmc> yeah i get it
[15:21:32] <dstufft> I don't think we should standardize vendoring, it's a very special case thing
[15:21:43] <ionelmc> but i would be nice if i had the tools to achieve this: `i want to upgrade pip's vendored requests`
[15:22:26] <ionelmc> only pip, virtualenv and requests vendor packages?
[15:22:50] <dstufft> I don't think requests should vendor anything, but me and kenneth disagree with that
[15:23:18] <dstufft> virtualenv doesn't exactly vendor anything, it does have two .whl files in order to install them though
[15:24:20] <dstufft> pip doesn't generally support upgrading it's dependencies (infract Ubuntu 14.04 unbundles dependencies of python-pip, and it's caused some problems for people)
[15:24:28] <dstufft> where things don't match up very well
[15:24:34] <dstufft> unfortinately things are kind of fragile :/
[15:25:17] <ionelmc> dstufft: why shouldn't requests bundle urllib3 and whatever ? any discussions i can read about this?
[15:25:49] <tos9> for one it means that whenever there's a bug in urllib3 you need to wait for a requests release to unbreak requests
[15:25:53] <dstufft> ionelmc: because requests doesn't have the special cases that pip has
[15:26:05] <dstufft> I don't *like* that pip bundles stuff, but it's the best bad option
[15:27:09] <ionelmc> dstufft: what exactly is different in pip then ?
[15:28:04] <dstufft> ionelmc: "requests" is likely to be a dependency of your application/library, and should participate in your dependency tree, "pip" is likely to just be installed because you used a virtualenv (or because you installed Python 3.4+)
[15:28:13] <ionelmc> tos9: sure, but then again, you have the same issue in pip - to make it worse, it's compounded because pip is vendored by virtualenv
[15:28:40] <tos9> ionelmc: it sounds like dstufft agrees and is saying "yeah but there's no better solution"
[15:28:44] <tos9> whereas for requests there is
[15:29:06] <dstufft> people depend on requests, they don't depend on pip
[15:29:56] <ionelmc> how does kenneth justify it? :)
[15:29:58] <tos9> ionelmc: (the only reason why I care is basically ^, which is that if I depend on requests and am waiting on a release that hurts my app)
[15:30:40] <ionelmc> yes, dstufft has a fairly compelling argument for not vendoring in requests
[15:31:05] <dstufft> ionelmc: it's been awhile since i've had this discussion with him, mostly I think his claim is that requests supports vendoring itself and that's harder if urllib3 isn't vendored, also he doesn't consider the fact that requests uses urllib3 to be anything more than an implementatino detail or something
[15:31:41] <dstufft> generally I think the real reason is that dependency resolution in Python isn't very good right now wihch means vendoring more attractive
[15:31:52] <dstufft> more attractive then it would otherwise be*
[15:33:21] <dstufft> (The problem with a more standardized vendoring, is that many packages require modifications to be able to do at, at least modifications to the import statements they make)
[15:33:45] <dstufft> if you look at pip's vendoring, you'll see that a lot of them have been modified to change ``import six`` to ``from pip._vendor import six`` etc
[15:38:06] <tomprince> pip doesn't ever run in the same process as other stuff (like setup.py) does it?
[15:38:33] <dstufft> tomprince: currently it doesn't, in the future it might!
[15:38:45] <dstufft> I have ~plans~ to make it so pip installs setup_requires, not setuptools
[16:12:12] <tomprince> Because, while it is is still vendoring; one could inject the dependencies via sys.path, rather than by putting them in a subpackage.
[16:12:22] <tomprince> But that might not work if user code needs to run in the same process.
[16:17:47] <ionelmc> oh well, last one:
[16:18:10] <ionelmc> didn't setuptools had support for multiple versions at some point ?
[16:37:54] <Lekensteyn> dstufft: thanks, peep looks useful, but it still seems to require manual action to build the requirements.txt file. Or am I missing somethign?
[19:40:50] <Beluki> Hi. Is it normal that 'pip list' and 'pip freeze' show a package name in lowercase, when it's actually UpperCase? (Windows, the package was installed via 'python setup.py install', not pip)
[20:00:27] <gp> I have run into an issue with my deployment. I downloading all of my requirements and then zip them so my application is self contained when it is deployed. This works fine until I just tried using the RC version of django.
[20:00:54] <gp> pip install --download "/foo/bar" "https://www.djangoproject.com/download/1.7c3/tarball/" saves the download as "tarball", not the filename that the django server sets in headers
[20:01:09] <gp> And pip install "/foo/bar/tarball" doesn't work
[20:01:26] <gp> ValueError: ('Missing distribution spec', '/foo/bar/tarball')
[20:03:22] <gp> I am using pip 1.5.6. Does this happen to anyone else?
[20:26:59] <gp> I have to go so I raised an issue here: https://github.com/pypa/pip/issues/1994
[22:30:44] <jj995> after upgrading from Ubuntu from 13.04 to 14.04, pip isn't working right. e.g. "pip list" ends in an Exception (http://pastebin.com/HRAUMQWX). How can I fix this? should I apt-get purge python-pip; apt-get install python-pip? I tried "pip install --upgrade distribute" but that also ended in an error (http://pastebin.com/PCsGWbTr)