[00:27] <mwhudson> jml: did you land your lib/devtools branch yet?
[00:27] <jml> mwhudson, not even finished yet, I'm afraid.
[00:27] <mwhudson> jml: i find myself wanting to move bits of ec2test in there
[00:28] <jml> mwhudson, heh
[00:28] <jml> mwhudson, please feel free
[00:28] <jml> I'll suck up the conflicts.
[00:35] <mwhudson> jml: i have this feeling i'll almost certainly want to talk to you about libraryizing ec2test in a while, are you going to be mostly online today?
[00:35] <jml> mwhudson, I am.
[00:36] <mwhudson> great
[00:36]  * mwhudson looks at the code again
[00:53] <jml> heh heh
[00:54] <rockstar> Note to self: Never, ever, ever, ever do `easy_install launchpadlib` ever again.
[00:54] <jml> 'sagi python-launchpadlib' works in karmic
[00:54] <jml> (finally!)
[00:55] <jml> very happy today because of that.
[00:56] <mwhudson> rockstar: s/launchpadlib//
[00:56] <rockstar> mwhudson, virtualenv
[00:56] <mwhudson> rockstar: ah, ok
[01:11] <jml> mwhudson, you mentioned last night that we only look in 'lp' and 'canonical'
[01:11] <jml> mwhudson, I guess I ought to add 'devscripts' to that, if I can figure out how.
[01:12] <mwhudson> jml: i think it's going to be pretty easy if you find the relevant part of the code
[01:13] <jml> buildout-templates/bin/test.in looks promising.
[01:14] <jml> wuu.
[01:15] <jml> compare and contrast: http://paste.ubuntu.com/268282/
[01:17] <mwhudson> jml: ugh
[01:18] <jml> mwhudson, that's right, 2 seconds of zopey waiting.
[01:20] <jml> mwhudson, actually, when you call me re the ec2test stuff, I'd like to talk with you a little about this branch.
[01:20] <mwhudson> jml: would in about an hour work for you?
[01:21] <jml> mwhudson, yeah.
[01:21] <mwhudson> cool
[01:21]  * mwhudson lunches
[01:32]  * mwhudson sings the "someone broke the buildbot" song
[01:40] <jml> the blame list is surprisingly empty
[02:26] <jml> mwhudson, yo
[02:28] <mwhudson> jml: hi
[02:29] <mwhudson> jml: life's throwing me a curve ball, biab
[02:29] <jml> mwhudson, np
[02:38] <jml> cprov, I've done a bunch of stuff with nascentupload
[02:38] <jml> cprov, I'd like to hook branches up to it now
[02:38] <jml> cprov, which involves inferring an archive
[02:38] <cprov> jml: you sound scary sometimes.
[02:38] <jml> I'm not scary.
[02:39] <cprov> jml: most of the time.
[02:39] <jml> cprov, not branches up to nascentupload itself, but rather up to verify_upload.
[02:40] <cprov> jml: right, calculating branch push perms with verify_upload, that was the original plan, wasn't it ?
[02:40] <jml> cprov, that's right
[02:40] <jml> cprov, but I can't seem to recall how we figured out the archive based on the SuiteSourcePackage
[02:41] <jml> there are two choices I can see. ssp.distribution.main_archive
[02:41] <jml> or something handwavey that looks at the publishing history
[02:41] <cprov> jml: defaulting Primary, IIRC
[02:41] <jml> cprov, that's ssp.distribution.main_archive, right?
[02:41] <cprov> jml: the current SPBranch url doesn't support PPAs
[02:42] <cprov> jml: yes, that's it.
[02:42] <jml> cool.
[02:42] <jml> easy as.
[02:42] <jml> cprov, thanks.
[02:42] <cprov> jml: but it may change on partner uploads
[02:42] <cprov> jml: 'partner' component == PARTNER archive
[02:42] <jml> hmm.
[02:43] <jml> cprov, how do we get the component from a SuiteSourcePackage?
[02:43] <cprov> jml: the component of the latest publication
[02:44] <jml> cprov, is there already a function or method that knows that parter component implies partner archive?
[02:44] <cprov> jml: there is a hack in nascentupload
[02:45] <cprov> jml: NU.overrideArchive()
[02:45] <jml> cprov, you owe me sooo many caipirinhas
[02:46] <cprov> jml: countless.
[03:12] <wgrant> cprov: When is that cesium ensurePerson CP happening?
[03:13] <cprov> wgrant: it won't be released until 3.0 rollout, AFAICT
[03:13] <wgrant> cprov: Oh, damn.
[03:13] <cprov> wgrant: iron.cc (debian-imports) is fixed.
[03:14] <wgrant> cprov: But Karmic is out of luck?
[03:14] <wgrant> (as well as the rebuild -- I guess I'll get my script to ignore upload failures for now)
[03:15] <cprov> wgrant: sort of, maybe the 'me too' in the bug report can help to make a point.
[03:16] <cprov> wgrant: it's actually very simple, since the revision was already CPed.
[03:16] <wgrant> cprov: I suppose. I will me-too.
[03:28] <cprov> wgrant: CP requested, easier than I thought.
[03:28] <wgrant> cprov: Thanks!
[03:28] <wgrant> What sort of process is involved in that?
[03:34] <cprov> wgrant: rolling the current production branch to a new set of machines
[03:34] <wgrant> cprov: Well, obviously, but I imagine there's a fair bit of preparation and approval paperwork.
[03:35] <cprov> wgrant: in this case all soyuz upload frontends (ppa, builddmaster and ubuntu)
[03:35] <cprov> wgrant: the paperwork was already done for the CP on the debian-imports machine
[03:35] <wgrant> cprov: Ah, right.
[03:36] <cprov> wgrant: from the developer PoV it is: 1) get it reviewed and landed on lp:devel 2) talk to the release-manager and convince him the CP is needed.
[03:39]  * mwhudson is still a bit unconvinced of the benefit of targeted fixes vs the downside of having different services running different code
[03:39] <mwhudson> not my field though i guess
[03:40] <wgrant> That has caused confusion in the past.
[03:41] <wgrant> cprov: Why are the stats on /builders down the side rather than along the top?
[03:42] <wgrant> If they were along the top, the builder listing would be much more readable as status lines would wrap less.
[03:50] <cprov> wgrant: but OTOH to access the builder list you would have to always scroll down
[03:51] <cprov> wgrant: also the official summary is bigger than the ppa summary, so an ugly whitespace would appear if they were in the same grid row.
[03:51] <wgrant> cprov: Some of it would fit, and the builder list is always multiple screenfuls now.
[03:51] <wgrant> cprov: Hm, damn, true.
[03:51] <wgrant> It seems like such a waste.
[03:52] <wgrant> And it's hard to scan the table.
[03:52] <wgrant> But I can't now see where else to put it.
[03:52] <cprov> wgrant: I still have to submit a change to fix the 'status' column content
[03:53] <wgrant> cprov: What's wrong with it?
[03:53] <cprov> doesn't show 'MANUAL' mode properly neither private-builds
[03:53] <wgrant> cprov: Works OK for private builds, AFAICT. (or at least as well as HiddenBuilder makes it...)
[03:54] <cprov> wgrant: but uses the NOT-OK icon, which is NOT-GOOD :)
[03:54] <wgrant> cprov: Well, I'd say HiddenBuilder is really ungood!
[03:55] <cprov> wgrant: the concept itself or the implementation ?
[03:55] <wgrant> cprov: Concept.
[03:56] <cprov> wgrant: the other alternative is to user an IBuilder macro, which seems much clearer conceptually, since IBuilder.status belongs to the view domain.
[03:57] <wgrant> cprov: IBuilder.status makes me sad, yes.
[03:57] <wgrant> If that goes into the view, and builder.logtail gets properly secured, I don't see any reason for HiddenBuilder to exist.
[03:57] <cprov> wgrant: being on the view means we can't use it in zopeless mode (easily) but that's not a problem anymore.
[03:57] <wgrant> It had me very confused when I first looked around that area of code.
[03:59] <wgrant> cprov: Why was it used in Zopeless stuff?
[04:00] <cprov> wgrant: when we had scripts/ftpmaster/buildd-monitor.py (a shell-like debug tool for the buildfarm)
[04:00] <cprov> for instance.
[04:01] <wgrant> cprov: Ah, right.
[04:01] <cprov> wgrant: but as I said, not a problem anymore, it's gone.
[04:02] <cprov> wgrant: getting rid of HiddenBuilder and IBuilder.status looks like a nice weekend task.
[04:04] <wgrant> cprov: I'd not object to killing it myself.
[04:05] <cprov> wgrant: if you have time, that would be great!
[04:05] <wgrant> cprov: I will have ample time after finishing exams tomorrow.
[04:06] <wgrant> I guess then the archive and sometimes source can be linked to from the status, too.
[04:06] <cprov> wgrant: yes, once it's done in the view domain it becomes much easier.
[04:08] <cprov> okay, bed-time over here. G'night all!
[04:08] <wgrant> cprov: Night. Thanks.
[04:09] <cprov> wgrant: good luck with your tests and we can talk more about the IBuilder changes tomorrow.
[04:25] <jml> mwhudson, https://code.edge.launchpad.net/~jml/launchpad/better-sourcecode-update
[05:21] <mwhudson> argh
[05:22] <mwhudson> hm
[05:22]  * mwhudson fixes, but wonders how that ever worked
[05:36] <jml> mwhudson, what are you fixing?
[05:36] <mwhudson> jml: i think i figured it out
[05:36] <mwhudson> jml: ec2test imports plugins without enabling plugins
[05:37] <jml> mwhudson, oh yeah.
[05:37] <jml> mwhudson, I saw that behaviour in the pasnt.
[05:37] <jml> I'm not a huge fan of ec2test's plugin dependencies, tbh.
[05:38] <mwhudson> one thing at a time :)
[05:39] <jml> heh
[05:52]  * jml does some scienc
[05:52] <jml> e
[06:10] <jml> mwhudson, interestingly, pulling each branch one after the other with no actual changes takes substantially longer than rsyncing with no changes.
[06:11] <mwhudson> jml: multiple ssh negotiations?
[06:11] <jml> mwhudson, quite possibly.
[06:11] <jml> 5m4s vs 12s
[06:13] <wgrant> I find that SSH negotations to bazaar.lp.net can take up to 10 seconds at bad times.
[06:13] <mwhudson> jml: if you're using bzrlib you can probably get it to reuse the transport
[06:13] <mwhudson> jml: is your branch on lp up to date?
[06:15] <jml> mwhudson, not quite
[06:15] <mwhudson> jml: give it a push and i'll see if i can give you a hint :)
[06:18] <jml> mwhudson, now that I can commit safely (and thus be allowed to push again!), sure
[06:20] <jml> done.
[06:23] <mwhudson> jml: oh
[06:23] <jml> mwhudson, what?
[06:24] <mwhudson>     cmd_pull().run_argv_aliases(['-d', destination, branch_url])
[06:24] <mwhudson> bit hard to jam transport sharing in there
[06:24] <jml> mwhudson, yeah. it was only a stop-gap.
[06:25] <jml> figuring out the actual API for pulling required deciphering cmd_pull, which I'm not really up for right now.
[06:25] <mwhudson> branch.pull(otherbranch)
[06:25] <jml> does that update the working tree?
[06:25] <mwhudson> jml: basically have a list around for the duration of the script
[06:26] <mwhudson> jml: pass it as possible_transports when you open the branch
[06:26] <mwhudson> jml: not sure actually
[06:26] <mwhudson> jml: so you're probably right to be cautious
[06:33] <jml> :(
[06:33] <jml> because the config uses lp: URLs, sharing transports isn't as easy as all that.
[06:36] <mwhudson> not sure i get the point
[06:38] <jml> oh never mind.
[06:38]  * mwhudson EODs
[06:38] <jml> it's because an edge server is having a hissy fit :)
[06:38] <jml> mwhudson, ciao
[06:39] <mwhudson> jml: i think bzr+ssh://bazaar.launchpad.net/~mwhudson/launchpad/libraryize-ec2test is probably good to land, ish at least btw
[06:39] <mwhudson> jml: maybe you could take a look?
[06:39] <mwhudson> jml: it's pretty boring so far
[06:42] <jml> mwhudson, sure
[06:45] <jml> mwhudson, fwiw, sharing the transports makes it substantially faster, but still slower than rsync. I think the extra time is lp: resolution.
[08:19] <adeuring> good morning
[08:52] <maxb> jml: Hi, how did we leave things w.r.t you fixing the broken stack-on location for the meta-lp-deps branches?
[08:52]  * maxb wonders if maybe they should be owned by a team that lets me write to them :-)
[09:03] <maxb> How do you trigger the default branch stacking? Is it necessary to have a development focus?
[09:13] <maxb> Does anyone fancy fixing some broken stacked_on locations for me or shall I mail the list?
[09:20] <maxb> Now we have mad, should I assume diff-output in merge cover letters is redundant?
[09:38] <wgrant> maxb: It's not because of mad, but yes.
[09:38] <wgrant> maxb: LP will generate the diff and email it out.
[09:42] <maxb> Perhaps we should update the template cover letters on the wiki?
[09:54] <wgrant> maxb: Certainly a good idea.
[11:01] <deryck> Morning, all.
[11:03] <jtv> hi deryck
[11:04] <jtv> barry, ping
[13:09] <gmb> Hmm. Pulling devel is taking a while. Maybe I've just got a shonky connection.
[14:28] <sinzui> OMG! I just got autoresponder from feedback@...I do exist
[14:28]  * sinzui wonders if his email will show up
[14:30] <mrevell> heh
[14:37] <gmb> I would like to take this opportunity to say AAAAAAAAAAAH.
[14:37] <gmb> (Because primal screaming in Starbucks is generally frowned upon)
[14:41] <deryck> no wonder everyone looked at me strange last time I worked in Starbucks
[14:41] <deryck> flacoste, ping
[14:49] <flacoste> hi deryck
[14:52] <barry> bac: no karmic goodness yet.  it took all night just to get windows updated.  this morning wubi wouldn't work for either karmic or jaunty, but i booted to the live cd and was very happy that unlike vista, jaunty had no problem with my kvm switching.  i'll hack on this more tonight
[14:54] <gmb> deryck: WRT bugtask-index.pt, I think there's some mileage in converting it to 3.0 and landing that before working on the redesign. It (should) only be a couple of minor tweaks to get it up to spec, AFAICT. That okay with you?
[14:54] <deryck> gmb, of course.
[14:55] <gmb> Cool.
[14:56] <gmb> deryck: Of course, if I'm wrong and it ends up being more painful than I expected, I'll just go straight for the redesign since we're not really losing anything in that case.
[14:56] <deryck> gmb, right, makes sense.
[14:57] <deryck> gmb, you might just consider the questions of what actions go in the portlet, etc. based on the conversion rules.  That is a large part of the redesign idea anyway.
[14:57] <gmb> deryck: Right. I'll look at that. After I get the portlets to appear in the right place, that is...
[14:57] <deryck> heh.  understood.
[15:11]  * gmb -> afk for a bit to pick the car up; back later on
[15:12] <gmb> Oh, wait. Might be an idea to make sure there's a train to catch before buggering off.
[15:12]  * gmb stays put
[15:18] <flacoste> barry: finally it seems zope will check-in your doctest fix!!!
[15:32] <barry> flacoste: wow
[15:38] <gmb> Right, *now* i'm going to go get my car. Back later, people.
[15:40] <matsubara> stub, Chex, gary_poster, rockstar, bigjools, henninge_, sinzui, intellectronica, Ursinha: LP production meeting in 20 @ #launchpad-meeting
[15:40] <intellectronica> matsubara: thanks for the reminder
[15:41] <gary_poster> ty
[15:41] <bigjools> I love all-day meetings and phone calls
[15:41] <henninge_> matsubara: thanks, danilos will sit in for me today again.
[15:48] <Ursinha> cprov, hi
[15:48] <cprov> Ursinha: yo!
[15:48] <Ursinha> :)
[15:49] <Ursinha> cprov, have you seen this problem before? OOPS-1347F129
[15:49] <ubot3> https://devpad.canonical.com/~jamesh/oops.cgi/1347F129
[15:49] <Ursinha> hmm bad link?
[15:49] <Ursinha> https://lp-oops.canonical.com/oops.py/?oopsid=1347F129
[15:50] <cprov> Ursinha: let me check.
[15:51] <Ursinha> sure
[15:54] <cprov> Ursinha: I never seen it before, let me investigate, I will report back in a bit.
[15:55] <Ursinha> sure cprov, thanks!
[16:15] <rockstar> abentley, Could this issue be caused by mad and some preview diff changes: https://lp-oops.canonical.com/oops.py/?oopsid=1348EA292
[16:41] <abentley> rockstar: Yes, it could.  We may need to blank existing diffstats.
[17:43] <maxb> flacoste: Thanks! And that version of launchpad-dependencies is good to be copied to jaunty too
[17:45] <flacoste> maxb: good point, doing that right now
[17:46] <maxb> I'm assuming that at this point in time we're just ignoring intrepid completely, and hardy mostly unless something urgent comes up
[17:46] <flacoste> yes
[18:03] <cprov-lunch> Ursinha: re. https://lp-oops.canonical.com/oops.py/?oopsid=1347F129, that's an *insane* URL (probably create with a double copy & paste). I don't really know what to do to prevent it.
[18:04] <cprov-lunch> Ursinha: please file a bug on soyuz, I will find out how to generate a proper 404 for it.
[18:04] <Ursinha> sure cprov-lunch, thanks
[18:09] <barry> bac: only 100 failures to go!
[18:40] <bac> barry: i thought you only started with 70
[18:41] <barry> bac: i merged rf :(
[19:08] <flacoste> Soyuz is DONE!!!
[19:08] <flacoste> Congratulations to cprov, noodles775, bigjools!
[19:09] <cprov> flacoste: thanks, and AFAIK the prize is 'now, convert blueprints' :)
[19:09] <flacoste> part of the prize :-)
[19:09] <flacoste> but i won't bug anybody with that until Monday
[19:09] <flacoste> And registry has converted their 100th template
[19:09] <deryck> congratz to soyuz!
[19:12] <cprov> flacoste: I'm not complain, it's fair enough we've pushed most of the complex templates (distribution, distroseries) to foundations.
[19:13] <flacoste> err, registry
[19:13] <flacoste> foundations are the 3.0 UI slacker
[19:14] <bigjools> don't forget I did some of registry's templates already :)
[19:47] <salgado> gary_poster, around?
[19:48] <gary_poster> salgado: yes
[19:49] <salgado> gary_poster, hi there.  quick question... is it possible to go up from a subview to the view that originally called it?
[19:49]  * salgado realizes this may not be a very clear question, but knowing how smart gary_poster is, it might not be a problem. :)
[19:51] <gary_poster> salgado: heh.  hey.  in depends on how the subview was instantiated.  If the view used itself as a context then the subview might have stashed it away.  If that's not the case (and it very well might not be) the effective answer is "no".
[19:51] <gary_poster> You could actually do it by climbing the stack to find the frame of the parent view maybe, but I don't think anybody wants to see that code. :-/
[19:53] <gary_poster> salgado: ...there might possibly be something stashed on the request you could use, though I doubt it.  Well, maybe.  Looking...
[19:53] <salgado> gary_poster, in this case the subview was called from the template ('context/@@+foo')
[19:53] <gary_poster> yeah, that would not include the parent view as context, just the usual (context, request).
[19:53] <salgado> I was afraid climbing the stack was the only option, but if there's something in the request, it'd be great
[19:58] <gary_poster> salgado: still looking, because I thought there was something more likely to help and without the underline, but request._last_obj_traversed might be the top view...
[19:59] <salgado> that'd be just perfect
[20:03] <salgado> (Pdb) p self.request._last_obj_traversed.__class__
[20:03] <salgado> <class 'zope.app.publisher.browser.viewmeta.SimpleViewClass from /home/salgado/devel/launchpad/breadcrumbs-for-leafs/lib/lp/registry/browser/../templates/person-edit.pt'>
[20:04] <salgado> it is, indeed, the top view, but wrapped in this SimpleViewClass thing which prevents me from doing anything useful with it, it seems
[20:04] <flacoste> salgado: no
[20:05] <flacoste> salgado: views are generated class that have the actual view class as parent
[20:05] <gary_poster> salgado: if that object seems to be what you want, I think we can make it accessible without the underline with just a small adjustment.  We already override the publication object, and it gets notice of the last traversed object, and the publication object is available off the request.
[20:05] <gary_poster> Therefore we could make publication.afterTraversal, or even publication.callObject, stash the terminal bit of the traversal in a more "official" way.
[20:05] <gary_poster> and then you could get the object from wherever you stashed it (the publication or the request or whatever)
[20:05] <flacoste> gary_poster, salgado: we already have an array saving all traversed objects
[20:06] <flacoste> although the view wouldn't be there
[20:06] <flacoste> since it's updated by Navigation and not the request/publication
[20:06] <flacoste> but salgado wanted to fix that
[20:06] <gary_poster> flacoste: ah, I thought I remembered that.  That must be Launchpad-specific, rather than Zope?
[20:06] <salgado> so many things I wanted to fix
[20:06] <flacoste> yes
[20:06] <salgado> request.traversed_objects
[20:06] <flacoste> yeah, but that's updated by Navigation
[20:06] <flacoste> not the request itself
[20:07] <flacoste> which is dumb
[20:07] <flacoste> and should be fixed
[20:07] <salgado> right, but these are different problems
[20:07] <gary_poster> yeah, if that were updated by the request then you'd have what you want.  If you want a hack, then you can do what I suggested, and have one of those hooks stash the last traversed object in the same list.
[20:08] <gary_poster> then when you fix it to do the right thing, the code you write now will still work
[20:08] <gary_poster> salgado: as far as the SimpleViewClass not being what you want, flacoste is right of course--it is a generated base class, not a wrapper.  You should still be able to get what you expect off of the instance.
[20:09] <salgado> yeah, /me gotta learn how to read the output of print statements.  it clearly says it is a class
[20:10] <gary_poster> salgado: maybe already clear, but I'd say that fixing the traversed_objects generation is not quite a different problem.  If the request updated that list of traversed objects, the last one would be the view to which the URL had traversed (as opposed to any traversal done within a page template) so it would probably be what you want
[20:11] <gary_poster> so yes different, but if it were fixed, there would be a clear relatively easy answer here
[20:11] <salgado> oh, right, I see what you mean now
[20:13] <salgado> for some reason I assumed request.traversed_objects should only have the content objects that we traverse and completely ignored the fact that we could append the top view there too
[20:13] <salgado> flacoste, do you see a problem with that?
[20:14] <flacoste> salgado: i don't mind either way
[20:14] <gary_poster> right.  it is in fact always traversed, so it is theoretically very reasonable.  practically, it might throw a monkey wrench in code using that list already, but you'd be looking for that.
[20:14] <flacoste> right, there will probably fallout from such a change
[20:14] <flacoste> although i think the only thing that use it is the breadcrumbs code
[20:14] <flacoste> so not a big fallout
[20:14] <flacoste> since that's the primary reason to make this change
[20:15] <gary_poster> because you are rewriting that now, essentially, salgado?
[20:15] <salgado> gary_poster, I don't understand your question
[20:16] <gary_poster> I was asking if this effort--the thing you are working on that made you ask me about how to get the top-level view--is for a project of rewriting the breadcrumb code
[20:17] <gary_poster> salgado: if the fallout is big, the other approach I talked about would be less elegant but could be easily made to be less invasive.
[20:17] <salgado> gary_poster, not really -- all I want now is to use the title of the current page in the breadcrumbs
[20:17] <gary_poster> I see
[20:17] <gary_poster> Well, sounds like your call to me. :-)
[20:23] <salgado> I've already spent a lot more time than I should on this, so I'd rather go with whatever is quicker now
[20:24] <salgado> gary_poster, what should I do to get the actual view from that SimpleViewClass?
[20:24] <salgado> I've tried self.request._last_obj_traversed.__parent__, but that gives me the actual view's context
[20:26] <gary_poster> salgado: the SimpleViewClass is the view
[20:27] <gary_poster> salgado: if you look in __class__.__bases__ (maybe you will have to walk up a bit) you will see the mix in that you expect, or if you do an isinstance(view, ClassYouExpect) you should see what you expect
[20:28] <salgado> gary_poster, could that be security proxied?
[20:28] <gary_poster> salgado: could be yes
[20:28] <gary_poster> salgado: type(obj) should tell you
[20:29] <salgado> that's it
[20:35] <salgado> gary_poster, would it be ok if I use request._last_obj_traversed for now and file a bug to fix it right after 3.0?  I really need to land this so that I can get back to work on page conversions
[20:36] <gary_poster> salgado: I don't like it, but I understand.  I don't want it to get lost, if that's what you do.
[20:36] <gary_poster> salgado: but if it is fixed right after 3.0, that would be cool
[20:37] <allenap> cprov, salgado: Fyi, I've forced a build in devel.
[20:37] <allenap> cprov, salgado: Ah, and it's just fallen over again for a different reason.
[20:38] <allenap> cprov, salgado: It's because LP is fubar'ed.
[20:39] <cprov> allenap: yup, bzr smartserver is affected too
[20:40] <salgado> gary-away, I'll give bug 423898 a go, then, but if it's tricky to fix I'll resort to request._last_obj_traversed for now. thanks a lot for the help
[20:40] <ubot3> Malone bug 423898 in launchpad-foundations "Should not rely on Navigation._publishTraverse() to have objects appended to request.traversed_objects" [Undecided,Triaged] https://launchpad.net/bugs/423898
[20:40] <mup> Bug #423898: Should not rely on Navigation._publishTraverse() to have objects appended to request.traversed_objects <Launchpad Foundations:Triaged> <https://launchpad.net/bugs/423898>
[20:40] <mup> Bug #423898: Should not rely on Navigation._publishTraverse() to have objects appended to request.traversed_objects <Launchpad Foundations:Triaged> <https://launchpad.net/bugs/423898>
[20:40] <mup> Bug #423898: Should not rely on Navigation._publishTraverse() to have objects appended to request.traversed_objects <Launchpad Foundations:Triaged> <https://launchpad.net/bugs/423898>
[20:40] <salgado> flacoste, do you have a couple minutes to talk about ^?
[20:42] <flacoste> sure
[20:42] <flacoste> skype or IRC?
[20:42] <salgado> flacoste, whatever works best for you
[20:43] <salgado> I just want some pointers so that I can try and fix it
[20:43] <flacoste> ok
[20:43] <salgado> I had a quick look before filing it and it was not clear to me where I'd do what is currently done by Navigation
[20:46] <flacoste> salgado: i'd suggest afterTraversal in the publication, do you agree gary-away?
[20:47] <mwhudson> good morning
[20:53] <barry> bac: canonical.launchpad.helpers.backslashreplace()
[20:54] <bac> barry: nice
[20:54] <bac> barry: your way is shorter
[20:54] <barry> yeah, i wish i'd known about it like 72 hours ago ;/  waaaayyy too late to go back now
[20:54] <barry> yeah
[20:57] <mwhudson> abentley, rockstar: i need to be away at the stand up time, would you be ok with having it earlier?
[20:58] <rockstar> mwhudson, sure.
[21:02] <salgado> flacoste, that didn't work -- now only the view is added to traversed_objects
[21:03] <gary_poster> flacoste, salgado: I was thinking of afterTraversal as a hack solution.  It would not replace the current code, only add to it
[21:03] <gary_poster> flacoste: therefore it might be an ok interim step
[21:04] <gary_poster> that's one of the approaches I mentioned earlier
[21:04] <gary_poster> you could leave the current behavior of the navigation
[21:04] <gary_poster> but add this other behavior
[21:04] <gary_poster> and then when you did it "right" (by overriding the publication's traverse methods, and unfortunately maybe having to copy-n-paste code, because you would want to inject something in a loop)
[21:04] <gary_poster> yhe code that gets the object for titles would still be looking in the same place
[21:05] <gary_poster> salgado: did that make some sense?
[21:05] <salgado> I see
[21:05] <flacoste> ???
[21:05] <flacoste> ah, ok
[21:05] <flacoste> afterTraversal is called only once
[21:05] <flacoste> not on every step
[21:05] <flacoste> salgado: callTraversalHooks would be the one to use then
[21:05] <flacoste> or traverseName
[21:05] <flacoste> salgado, gary_poster^^^
[21:06] <gary_poster> flacoste, traversalHooks maybe.  traverseName would make me nervous, but maybe.  I'd look into it if desired, but want to get to some other tasks ATM.  Well, I'll look at the publication again...argh
[21:07] <gary_poster> ok looking
[21:07] <salgado> gary_poster, I don't understand why I'd want a loop?  I thought it'd be just a matter of moving the "request.traversed_objects.append(ob)" from one place to another
[21:08] <salgado> from Navigation to traversalHooks(), that is
[21:08] <gary_poster> salgado: traversalHooks might work yes.  Didn't have code open, so working from memory, and have other things going on simultaneously :-) .  Going to look at code now...
[21:09] <salgado> gary_poster, it works. :)
[21:10] <gary_poster> salgado: yes, cool.  The loop I was talking about was the one in zope/publisher/base.py, in the traverse method.  Since we have the hook we don't need to rewrite the loop, yes.
[21:12] <salgado> cool, let me run some more tests now to see if this is really what we need
[21:12] <salgado> thanks a lot, gary_poster and flacoste
[21:13] <gary_poster> cool, np
[21:24] <mwhudson> abentley: have you seen https://bugs.edge.launchpad.net/launchpad-code/+bug/427383 ?
[21:24] <ubot3> Malone bug 427383 in launchpad-code "ValueError: No JSON object could be decoded in merge through the API" [Undecided,New]
[21:28] <jelmer> has launchpad switcehd to python 2.5 yet?
[21:30] <mwhudson> jelmer: no
[21:31] <mwhudson> jelmer: talk to gary_poster about that :)
[21:35] <jelmer> ah, pity
[22:01]  * mwhudson afk for a bit
[22:02] <mwhudson> rockstar: you talk to abentley and i'll talk to you when i get back?
[22:02] <rockstar> mwhudson, oh crap, I forgot he's off today.
[22:02] <rockstar> You and I will chat when you get back.
[22:05] <barry> bac: good news: i'm down to 22 failures.  bad news: these are the ugliest ones :/
[22:05] <bac> go go go
[22:05] <gary_poster> jelmer: Ideally for LP 3.0 (this release), definitely for subsequent release.
[22:05] <rockstar> barry, sounds like you and I are in a similar boat.
[22:06] <barry> rockstar: i'm paddlin' hard :)  what branch are you working on?
[22:07] <rockstar> barry, I'm working on the branch index page.
[22:08] <rockstar> barry, so when I ran the tests to see which failed after my changes, the answer was "all"
[22:08] <barry> rockstar: heh, sounds like me.  my branch changes page <titles> so every story broke
[22:14] <mwhudson> rockstar: oh yeah!
[22:14]  * mwhudson still not ere
[22:21] <maxb> mwhudson: "changes are propagated to the mirrored side" - when?
[22:31]  * barry fixes 2 more.  20 to go
[22:42] <micahg> hi, I"m getting a badsig on the lp-dev ppa
[22:52] <micahg> kfogel, I'm getting a badsig on the lP dev ppa
[22:52] <micahg> LP
[22:52] <wgrant> micahg: Which distroseries?
[22:53] <wgrant> And are you sure there's no proxy?
[22:53] <micahg> jaunty
[22:53] <micahg> well, I imported the key already
[22:53] <wgrant> BADSIG means you have the key, but the signature is bad, doesn't it?
[22:54] <wgrant> And the signature is good, so it's probably a proxy between you and LP.
[22:54] <kfogel> micahg: I'm no sig expert, but don't install till this is resolved, obviously
[22:54] <micahg> ok
[22:54] <micahg> well, there is a proxy
[22:54] <micahg> but it doesn't happen for any other ppa
[22:54] <wgrant> A bad, evil proxy.
[22:54] <kfogel> wgrant: how could a proxy do this?  The proxy shouldn't interfere with data transfer like that, should it?
[22:55] <kfogel> A sig is just a file.
[22:55] <micahg> ah
[22:55] <wgrant> kfogel: Happens all the time with bzr. It caches one version of one file, another version of another.
[22:55] <micahg> I had the Packages.bz2 file excluded
[22:55] <micahg> maybe I need the sig file excluded
[22:55] <micahg> wgrant: can you tell me what I need to have excluded from the squid proxy?
[22:56] <wgrant> The relevant files are Release, Release.gpg, Packages, Packages.gz, Packages.bz2. But you shouldn't need to do that.
[23:12]  * barry fixes 3 more; 17 to go
[23:25] <jml> kfogel: hellloooo
[23:25] <kfogel> jml: hi, let's resume your review of my merge proposal https://code.edge.launchpad.net/~kfogel/launchpad/add-community-contributions-script/+merge/11417
[23:25] <jml> kfogel: as you know, I am reviewing your patch @ https://code.edge.launchpad.net/~kfogel/launchpad/add-community-contributions-script/+merge/11417
[23:25] <kfogel> FAIL
[23:25] <kfogel> jml: ok, so first thing is -- 4 space indentation, not 2
[23:25]  * kfogel goes to his branch to make the change
[23:25] <jml> kfogel: I don't normally do reviews in real-time chat, so we'll see how this goes.
[23:26] <jml> kfogel: also, PEP 8 says that docstrings should be start with a single summary line, then have a blank line, then have any other text as following paragraphs.
[23:26] <kfogel> jml: don't worry, I won't interpret anything as snarkiness unless it actually is.
[23:26] <kfogel> jml: thx, ok
[23:26] <jml> kfogel: which the module docstring doesn't do.
[23:26] <jml> (see PEP 257 for details)
[23:26] <jml> http://www.python.org/dev/peps/pep-0257/
[23:27] <jml> comments are good
[23:27] <jml> little bit disappointed that "Right Way" and "XML" are in the same sentence...
[23:27] <kfogel> jml: ironically, if you look at ~kfogel/+junk/lpcc/lpcc.py, that's how I originally had it.  Later I compactified it.
[23:27] <kfogel> jml: HAH, re XML
[23:28] <kfogel> jml: I'm not reading all of PEP 257 now, unless you think I should.  I'm just changing as you directed.
[23:28] <jml> kfogel: you never ever need to end a line of Python with a semi-colon
[23:29] <jml> kfogel: for 'RevisionError', consider replacing the 'pass;' line with a short docstring
[23:29] <jml> kfogel: sure, don't read it all now, just pasting for reference
[23:29] <kfogel> jml: old C habit, thx
[23:30] <jml> kfogel: we tend to use XXX, rather than TODO.
[23:30] <kfogel> jml: ok
[23:30] <jml> kfogel: there's (ugh) a format for them too.
[23:30] <kfogel> jml: I'm falling behind, but I'll catch up if you slow down :-)
[23:30] <jml> kfogel: heh heh.
[23:31] <kfogel> jml: is there something I can put in the file to tell it the python indent level?
[23:31]  * kfogel researches emacs
[23:31] <jml> kfogel: don't know. I have 4 set as my global default indent.
[23:32]  * jml looks for the XXX policy
[23:32] <jml> (too many wikis)
[23:33] <barry> kfogel: in python-mode.el (the one true python editing mode) there's py-indent-offset, which defaults to 4
[23:34] <jml> # XXX: SteveAlexander 2007-03-12 bug=12345: This code is going to
[23:34] <jml> #  fail after next year.
[23:34] <barry> kfogel: python docstrings are easy.  the rules essentially came from elisp, circa 1994 (defined at the first python conference at NIST -- i'm old, i was there :)
[23:35] <barry> s/conference/workshop/ but still
[23:35] <kfogel> jml, barry: dang it, what's the Easy Way to re-indent a bunch of python from level 2 to 4?
[23:35] <kfogel> barry: that's why I instinctively followed it at first, only to undo it later (not realizing it was the rule in Python too)
[23:36] <barry> kfogel: C-c TAB -- py-indent-region, though it's often just as easy to indent-rigidly
[23:36] <barry> :)
[23:36] <jml> kfogel: I used to know this...
[23:36] <kfogel> barry: indent-rigidly wouldn't work because this code nests to more than one level
[23:37] <jml> indent-region, I think
[23:37] <jml> C-M-\
[23:37] <kfogel> barry: py-indent-region also doesn't exist -- isn't that an old python mode?  python-modes got all confused at some time in the past; I'm using whatever is in the Emacs bleeding edge tree right now.
[23:38] <kfogel> jml: indent-region also doesn't work, because I have nesting
[23:38] <jml> meh.
[23:38] <jml> search and replace '  ' with '    '?
[23:38] <kfogel> jml, barry: the only thing I can think of is a query-replace-regexp,...
[23:38] <kfogel> yeah
[23:38] <barry> kfogel: do yourself a favor and grab lp:python-mode :)
[23:39] <jml> except it breaks other things you might like
[23:39] <kfogel> barry: oh ho, is that it then?
[23:39] <kfogel> barry: ok, doing now
[23:39] <barry> kfogel: you don't really want the whole history, but python.el is a total rewrite that rms ordered for no good reason.  python-mode.el's been around for much much longer (1995 or so), is well maintained by python core devs, and is full of awesomehood :)
[23:39] <kfogel> barry: why on earth aren't we shipping it in GNU Emacs??
[23:39] <jml> ... and missing some features from python.el
[23:41] <kfogel> barry: the indent is working fine now, thx
[23:41] <barry> jml: works both ways, and there is some activity in python-mode world to port those over (though it appears a merge is politically impossible)
[23:41] <barry> kfogel: yeah, exactly. politics (imho)
[23:42] <jml> kfogel: for strings like rev_url_base, prefer foo = (\n"blah blah blah "\n"blah blah.")
[23:42] <barry> kfogel, jml anyway, this is fun, but dinner awaits :)   if you're really interested in the gory details (from my admittedly biased position), give me a call sometime
[23:43] <barry> i'll be back online later.  gotta get karmic up on my new machine!
[23:43] <kfogel> barry: have fun!
[23:43] <kfogel> ...stormin' da castle
[23:43] <jml> heh
[23:43] <jml> barry, g'night.
[23:44] <kfogel> jml: so for "# ### TODO", switch to "# XXX" with subsequent lines indented 2?
[23:44] <jml> indented 2? uhh, no.
[23:45] <jml> kfogel: I'll amend the policy doc.
[23:45] <kfogel> jml: sorry, indented 1
[23:45] <wgrant> Should the anti-Karmic notes on /Getting and /Running be removed, or just altered to say it now works?
[23:45] <kfogel> wgrant: if it works, then yeah
[23:46] <kfogel> wgrant: oh sorry
[23:46] <kfogel> wgrant: I think it's worth mentioning that it now works on Karmic
[23:46] <wgrant> kfogel: That's what I thought.
[23:46] <kfogel> we can remove that after a while
[23:46] <jml> kfogel: no indentation. nobody does it, the policy is wrong.
[23:46] <kfogel> jml: ok
[23:46] <jml> kfogel: you should also include your name and the date
[23:46] <jml> (now it's correct)
[23:47]  * jml harnesses the lightning
[23:47]  * mwhudson returns
[23:47] <kfogel> jml: what page are you editing?  is there an example there?
[23:47] <jml> mwhudson, hi
[23:47] <mwhudson> maxb: "eventually"
[23:47] <deryck> Hi, all.
[23:47] <mwhudson> maxb: or after the branch is unlocked
[23:47] <jml> kfogel: https://dev.launchpad.net/XXXPolicy
[23:48] <mwhudson> maxb: i think i fixed all the branches now
[23:48] <mwhudson> mwh@grond:libraryize-ec2test$ bzr log lp:~launchpad/meta-lp-deps/gutsy
[23:48] <mwhudson> ssh: Could not resolve hostname bazaar.launchpad.launchpad: Name or service not known
[23:48] <mwhudson> what on earth?
[23:48] <mwhudson> bazaar.launchpad.launchpad?
[23:49] <jml> kfogel: at one point, you do a lot of 's += '
[23:49] <jml> kfogel: that's fine, but mostly you shouldn't do string concatenation that way, because Python is terrible.
[23:49] <wgrant> mwhudson: That lp: URL resolves fine here....
[23:49] <kfogel> jml:         rev_url_base = (
[23:49] <kfogel>             "http://bazaar.launchpad.net/~launchpad-pqm/"
[23:49] <kfogel>             "launchpad/devel/revision/")
[23:49] <kfogel> jml: IRC-messed-indentation aside, that's the way to do it?
[23:50] <jml> kfogel: that's right.
[23:50] <kfogel> jml: and it's not a tuple because there's no comma at the end?
[23:50] <jml> kfogel: correct.
[23:50] <jml> kfogel: Python treats adjacent string literals as one string
[23:50] <kfogel> jml: yeah, I just didn't know (or forgot) about the grouping parens, and could never find a way to get adjacent strings to indent nicely.
[23:51]  * jml likes kfogel, but wishes kfogel_ would fall in a well.
[23:51] <kfogel> jml: so instead of "s += ...", should I do "s.append()" or something?
[23:51] <kfogel> jml: is there a kfogel_ here?
[23:51] <kfogel> kfogel_: ayt?
[23:51] <kfogel> whoa
[23:51] <kfogel> how'd he get in here?
[23:51] <kfogel> I don't even know how to make him go away.
[23:52] <jml> x = ['ouaeo', 'hateouahseo', 'gq;jmkw']; 's = '.join(x)
[23:52] <jml> umm.
[23:52] <jml> s = ''.join(x), rather.
[23:52] <jml> kfogel: you know about abbrev-mode right?
[23:52] <kfogel> jml: yes
[23:52] <kfogel> why?
[23:53] <jml> kfogel: you say, # "ExternalContributor" is too much to type, so I guess we'll just use this.
[23:53] <kfogel> jml: that's so I could get the great abbreviation, man!
[23:53] <jml> kfogel: But I say, Ex M-/ is easy to type :)
[23:53] <jml> kfogel: heh
[23:53] <kfogel> jml: (also, just because I use abbrev mode doesn't mean other people do)
[23:54] <kfogel> jml: I usually just use dynamic abbrevs anyway
[23:54] <jml> kfogel: you can leave it as is, but normally Launchpad code favours longer names.
[23:54] <jml> and relies on people having decent editors or great patience.
[23:55] <kfogel> jml: ah, ok
[23:55] <kfogel> jml: in this case, I'd like to leave it, for obvious reasons, but noted for next time.
[23:55] <jml> blank line after class docstrings
[23:56] <jml> kfogel: ooh. time to python up :)
[23:56]  * jml is looking at show_contributions
[23:57] <kfogel> jml: whew, ok.  slow down, still correcting all the s += stuff.
[23:57] <jml> kfogel: ok. sorry.
[23:57] <mwhudson> wgrant: repeatable for me
[23:58] <kfogel> jml: (don't really have to slow down, just explaining where I've got off to)