PMXBOT Log file Viewer

Help | Karma | Search:

#pypa-dev logs for Thursday the 7th of May, 2015

(Back to #pypa-dev overview) (Back to channel listing) (Animate logs)
[00:00:13] <dstufft> lifeless: um, I'm not 100% sure what's going on here
[00:00:19] <dstufft> that may be because I'm tired tho
[00:00:35] <lifeless> dstufft: its the top level driver to resolve everything
[00:01:12] <lifeless> key changes
[00:01:18] <lifeless> its recursive rather than iterable
[00:01:46] <lifeless> (the recursive bit isn't shown)
[00:01:59] <lifeless> I'm keeping the external access to self.requirements for compat
[00:02:10] <lifeless> but using a basic types data structure
[00:02:28] <lifeless> as I find that easier to reason about (and cheaper if we don't need to worry about mutability all the time)
[00:02:47] <dstufft> ok
[00:03:04] <lifeless> its a shame we don't have built in copy-on-write functional style dicts
[00:03:10] <lifeless> but I hope we'll be ok without that
[00:03:32] <lifeless> so the idea is that resolve_constraints will be recursive
[00:03:40] <lifeless> taking in the current constraints (union of everything in the call stack)
[00:03:45] <dstufft> lifeless: this is all for resolving dependencies right?
[00:03:49] <lifeless> and the current chosen values
[00:04:15] <lifeless> yes, bug 988
[00:05:32] <lifeless> this will get tweaked a little I think
[00:05:45] <lifeless> there's some bad-O inherent in the current sketched api to resolve_constraints
[00:05:53] <lifeless> I think I'l break out the queue of work
[00:10:23] <dstufft> lifeless: so something I'd thought about doing previouslly, is looking at some of the prior art and trying to split otu the dep solving into it's own library that just pvodied the hooks we needed for pip to implement the parts which were specific to python packaging and pip . THat's not a hard requirement though, but I think it could be very useful to have dep solving be a stand alone thing that pip consumes
[00:10:36] <lifeless> I think so to
[00:10:45] <lifeless> the base thing we need to get to there is a graph like API
[00:11:04] <lifeless> which is where the RequirementCache comes in
[00:11:09] <lifeless> I was working bottom up
[00:11:12] <dstufft> I have https://github.com/CocoaPods/Molinillo bookmarked to look at
[00:11:19] <dstufft> lifeless: sure, just throwing that out there :)
[00:11:25] <lifeless> but then I realised it was all going to be a terrible mess if I didn't have /a/ concrete implementation to talk to
[00:11:49] <dstufft> that wasn't a critism specifically of the work you've got going on, just a "keep this general idea in mind if you're not already"
[00:12:10] <lifeless> yah, took it as such
[00:12:20] <lifeless> I figure, if I have a terribly slow but working thing
[00:12:25] <lifeless> I can move onto the next must-have
[00:12:35] <lifeless> and someone else can take it to the pluggable step
[00:19:16] <lifeless> dstufft: how do you add a Specifier to a SpecifierSet ?
[00:19:32] <lifeless> dstufft: the former isn't a string_type, and its nto a SpecifierSet
[00:21:19] <dstufft> lifeless: generally you shouldn't work with Specifiers directly, even if you only have a single specifier, you're probably better off using a SpecifierSet directly since that'll deal with Specifier vs LegacySpecifier and stuff for you automatically
[00:21:30] <lifeless> k
[00:31:48] <lifeless> dstufft: so - quick check
[00:31:58] <lifeless> dstufft: should pip install PATH always upgrade ?
[00:32:07] <lifeless> dstufft: ditto URLs
[00:32:18] <lifeless> [assuming the version present at PATH|URL != installed-version]
[00:36:22] <lifeless> hah, -d is going to be awesomely confusing with this :)
[10:25:09] <lifeless> dstufft: I'm approximately one function away from this working. Yay.
[10:25:19] <lifeless> dstufft: pushed up another commit
[10:25:20] <dstufft> lifeless: \o/
[10:25:26] <lifeless> dstufft: its very sparse on testing
[10:26:01] <lifeless> dstufft: but - tomorrow I'll fill out RequirementCache.requires, [which has to backend to run egg_info etc - so some bulk code shuffling]
[10:26:18] <lifeless> dstufft: and then we can see how terribad it is/isn't
[10:26:30] <lifeless> with that, gnight
[10:26:43] <dstufft> lifeless: see ya!
[14:22:54] <willingc> dstufft: There's been some positive discussion on the Software Carpentry list about EasyBuild. I suspect that you already know about the project. It sounds pretty useful. https://hpcugent.github.io/easybuild/
[14:24:22] <dstufft> willingc: I hadn't seen it yet actually
[14:25:58] <willingc> dstufft: There's a thread on the SWC mailing list. Discussion continues now at https://github.com/swcarpentry/site/issues/963
[23:24:08] <lifeless> dstufft: is safe_name().lower() idempotent?
[23:26:04] <dstufft> lifeless: um, yes should be
[23:28:04] <lifeless> ok, I will take the easy path of littering it all over the place for now :/
[23:29:35] <lifeless> dstufft: download_dir behaviour
[23:29:43] <lifeless> dstufft: we're going to download many things that aren't needed
[23:29:59] <lifeless> dstufft: I can either teach the cache about the users download_dir and shove everything there
[23:30:01] <lifeless> or
[23:30:12] <lifeless> after we have resolved, copy the chosen artifacts back out
[23:30:16] <dstufft> wooo, download all the things
[23:30:26] <lifeless> I'm thinking the second is perhaps closer to the user intent
[23:30:40] <lifeless> in that you can pip install -f download --no-index
[23:30:45] <lifeless> and have it probably work
[23:30:51] <lifeless> without too-new stuff, for instance
[23:30:57] <dstufft> I think copying the chosen artifacts back out makes the most sense, especially since eventually we should start being able to query PyPI for this information without needing to download all the things
[23:31:22] <lifeless> you might want to release 7.0 this week
[23:31:41] <lifeless> since this stuff is nearly ready to start being split up and merged, and its a big bump too :)
[23:31:49] <lifeless> [just a thought...]
[23:57:11] <lifeless> weird
[23:57:29] <lifeless> dstufft: sort_versions is putting argparse local installed version at position 4 for me
[23:57:36] <lifeless> rather than 0
[23:57:52] <dstufft> lifeless: that's odd...
[23:57:56] <lifeless> yes :)
[23:58:08] <lifeless> I was wondering why I was getting argparse whackiness :)