#launchpad-yellow 2011-02-04
<gary_poster> Hello ubuntulog2!  Glad to see ya.  Will be even more glad to see your results in http://irclogs.ubuntu.com/2011/02/04/
* gary_poster changed the topic of #launchpad-yellow to: https://dev.launchpad.net/yellow â http://launchpad.leankitkanban.com/Boards/Show/14028610 â http://irclogs.ubuntu.com/
<bac> hi gmb
<bac> gmb: my babysteps branch is at lp:~bac/launchpad/accordionoverlay if you have time to just see what i've started before we talk later.
<gmb> bac: Sure thing, I'll take a look in a couple of minutes.
<bac> won't take long...not much there yet
<gmb> bac: You call 3580 lines "not much"? 0.o
<bac> oh, yeah
<bac> i forgot i added in the gallery widget
<gmb> bac: Which bits can I ignore (on the basis that they're third party, I suppose)?
<bac> i can push up the pre-req branch
<gmb> bac: That'd be a help, thanks.
<bac> gmb: will do.  just sucked into a CHR conversation now, though
<gmb> Ok, no worries
<bac> gmb: is "list related bugs" a superset of all of the other bug lists, such as subscribed, commented, etc?
<gmb> bac: I'm drawing a blank here. Which page is this on?
<bac> bug.lp.net/~gmb
<gmb> (My guess, incidentally, is "yes")
<gmb> bac: Yes, that's right. It's a superset.
<gary_poster> bac, danilos, gmb, hi.  kanban/mumble in 2.  we are now logged here, btw, per bac's suggestion and thanks to is team
<danilos> gary_poster, thanks for the notice, I'll keep quiet in here then :)
<gary_poster> lol
<gmb> bac: http://pastebin.ubuntu.com/562529
<danilos> gary_poster, fwiw, my branch depends (so far) on your lp:~gary/launchpad/bug548-db-2 â is that the right one to use?
<danilos> gary_poster, (I see -tests as well, so I figured I'd better ask :)
<gary_poster> danilos: yeah.  There are more changes since then to get tests passing--and even more than -tests--but they build on -db-2 .  Once I get test passing and get this landed on db-devel and your branch gets the code merged, we should be good
<danilos> gary_poster, excellent, thanks :)
<gary_poster> danilos: please make sure you hand off that branch to me/the team so we can run with it while you are gone
<danilos> gary_poster, I will!
<gary_poster> thank you :-)
<gary_poster> bac, gmb, danilos, I have a "deliver our weekly goals and problem solve" meeting scheduled in about 22 minutes on the canonical calendar.  I scheduled it later than our daily meeting because I thought it deserved separate attention, but now I find myself annoyed by the interruption. :-/  I also forgot to tell you all about it, and get your feedback.
<gary_poster> Despite my annoyance at my own scheduling, I am still leaning towards suggesting that we go through with the meeting, because I think we have things to deliver, and because I think having a team problem solving time has seemed promising so far.
<gary_poster> So, questions:
<gary_poster> 1) I can show something on staging.  can anyone else show anything today?
<gary_poster> 2) Would you all like to push this till later today, say 17:00 UTC (noon for me and Brad) or 16:30, so it is nearer the EoD of Danilo and Graham?
<gary_poster> And comment: I'll try to be as quick as possible; 15 minutes is a goal, 30 minutes is a limit.
<danilos> gary_poster, wfm (either of the times)
<gary_poster> cool
<bac> either time is ok
<gary_poster> ok
<gmb> gary_poster: Ditto; I'm fine with either (though I've nothing to show thanks to Windmill)
<gary_poster> :-/
<danilos> gary_poster, and on 1), I'm QAing LIFECYCLE change since it should be on qastaging, but it keeps timing out on me so I am struggling a bit
<gary_poster> :-/ understood
<gary_poster> gmb, bac, danilo, ok, let's aim for 16:30 UTC, 11:30 for me and bac
<gmb> Ok
<gary_poster> I'll update the calendar
<gary_poster> and we can talk then about good times for the mtg
<gary_poster> in later weeks
<gary_poster> thank you
<danilos> gary_poster, btw, my email listed in google calendar is danilo.segan@canonical.com, and I generally don't know how to set it up so it recognizes danilo@canonical.com as well; I've noticed that my items sent to danilo@canonical.com don't end up in my calendar in there, so if you have a suggestion on how to fix that, I'd be very happy â if not, can you please send future invitations to danilo.segan@ :)
<gary_poster> danilos: :-) ack, I'll go fix those
<danilos> gary_poster, also, note that current "show off time" works fine today, but would really be my EOD on Fridays otherwise as it is 17:30
<gary_poster> danilos: gotcha.  yeah, we'll try to agree on a good time
<gary_poster> on the call I mean
<gary_poster> bac, danilos, gmb, 2 min delivery mtg warning
<gmb> yup
<bac> rt
 * bac fetches tea and morsels
<gary_poster> danilos and bac, unmute when you are ready :-)
<gary_poster> https://bugs.staging.launchpad.net/~gary/+structural-subscriptions
<danilos> gary_poster, "cronscripts/send-bug-notifications.py -vv"
<danilos> gary_poster, oh, btw, on the DB permissions problem I am having in my branch, I had to add SELECT, INSERT to another two users: checkwatches and updateremoteproduct (for scripts dealing with remote bug syncing, afaict)
<danilos> gary_poster, all for personsettings table, that is :)
<danilos> gary_poster, the tests that failed for me were "-t bugtracker-person.txt -t externalbugtracker-bug-imports.txt -t externalbugtracker-comment-imports.txt -t externalbugtracker-comment-pushing.txt -t externalbugtracker-debbugs.txt -t product-update-remote-product.txt"
<gary_poster> danilos, yeah, gimme one sec, I'll make a commit, push, and suggest you merge
<danilos> gary_poster, cool, thanks
<gary_poster> danilo, lp:~gary/launchpad/bug548-db-3 .  You'll need to rerun make schema, of course.  actually danilo can I convert that into a mid-implementation call, hopefully leading into a review if am I fast enough? :-)
<gary_poster> I made some changes that I question
<danilos> gary_poster, sure thing
<gary_poster> thank you
<gary_poster> so, I'll start blathering here while you get the branch :-)
<gary_poster> som, the change you need is just in security.cfg
<gary_poster> that is already approved by lifeless
<gary_poster> the changes I made recently are in the last two revisions.  The ones I'm partcularly interested in are in lp:~gary/launchpad/bug548-db-3
<gary_poster> eh I mean
<gary_poster> bzr diff -r-2
<gary_poster> In particular, in particular, lib/lp/registry/model/person.py
<gary_poster> Where I added that UnwrittableStub
<gary_poster> meh Unwritable
<gary_poster> So the reason it has to be there is that various things read attributes off of person automatically
<gary_poster> one particular example is the webservice snapshotter
<gary_poster> a NotImplementedError on a read for a team-specific attr did not go over well with that code
<gary_poster> I *can* make a read-only attr for teams though
<gary_poster> that works fine
<danilos> gary_poster, I am looking at it
<gary_poster> cool thanks
<danilos> gary_poster, please do go on explaining it :)
<gary_poster> yeah :-) you wanna switch to mumble?  I can go faster
<gary_poster> I'll keep on here for now
<gary_poster> So, I don't love that stub for two or three reasons
<gary_poster> 1) it's generic and it doesn't need to be yet.  However, it was easy to do, and Stuart wants to make a similar thing in reverse (team-only settings)
<gary_poster> so it would be useful there
<danilos> well, it kinda is ugly :)
<gary_poster> yeah
<danilos> gary_poster, was it not possible to do something like doNotSnapshot for this particular field for teams?
 * gary_poster doesn't know of doNotSnapshot
<danilos> (I don't know what doNotSnapshot does on a lower level, it might be something like this :)
<gary_poster> heh, no idea
<gary_poster> but it is an existing pattern, which is good
<gary_poster> new pattersn are bad :-)
<danilos> gary_poster, it's to stop stuff from being traversed for API implementation, I have no idea if it's anything like this and whether it'll solve a problem for you at all :)
<danilos> gary_poster, the only thing I know is that it exists and that when you see web service call requesting another million objects, you need to put a doNotSnapshot around the exported field :)
<danilos> i.e. usually for collections, but maybe it can work here as well
<gary_poster> it is not conditional
<gary_poster> (I just looked it up)
<gary_poster> so I can't say "only snapshot this if this is not a team"
<gary_poster> it's just a marker interface assertion
<gary_poster> on an interface field
<gary_poster> and I think that this might very well want to be exported in the webservice
<gary_poster> I suppose that would be a simple fix, which I should not ignore...
<danilos> gary_poster, right
<gary_poster> I'm loooking throught the failed tests to see if that was the only problem with this implementation
<danilos> gary_poster, so, I can't come up with any better suggestion on how to do what you are doing with the UnwritableStub
<gary_poster> I could build a type
<gary_poster> which would be faster
<gary_poster> on the run-time side
<gary_poster> I'd be switching __getattr__/__set_attr__ magic for "make me a class" magic
<gary_poster> the only advantage of type really is that it would be faster in the Python, and I would not have to do that yucko __dict__ thing, if it doesn't start with '_', which I hate :-P
<gary_poster> Ah
<gary_poster> No, doNotSnapshot doesn't slove all the problems
<gary_poster> we have other things that are doing verifyObject, for instance
<danilos> gary_poster, heh, well, you could also make a non-generic PersonSettings implementation for teams-only, but considering you are going quite some length to avoid non-generic solution, I should better shut up :)
<gary_poster> and they fall over
<gary_poster> heh
<gary_poster> I also don't like re-listing attributes
<gary_poster> it feels error prone
<gary_poster> I could certainly do
<gary_poster> class UnwritablePersonSettings:
<gary_poster>     @property
<gary_poster>     def selfgenerated_bugnotifications(self):
<gary_poster>         return True
<gary_poster> and be done, but then I've had to define the default, what, four times?  five?
<danilos> gary_poster, to be honest, I don't feel very smart at this late hour, so I am struggling following all the alternatives you are describing :)
<gary_poster> :-)
<gary_poster> fair enough
<danilos> (though, late hour might just be an excuse :)
<gary_poster> heh :-)
<gary_poster> danilo, well, merge my vranch, and fix that thing you are working on, and I'll see if I can come up with something that makes me slightly happier in < 15 min
<gary_poster> branch
<gary_poster> this will at least unblock you
<danilos> gary_poster, right, thanks
<danilos> gary_poster, fwiw, I've confirmed: if there is only a direct subscription, LIFECYCLE subscription works correctly (i.e. it mutes all other emails)
<gary_poster> cool
<gary_poster> thank you
<gary_poster> do we have a test for the other circumstance to your knowledge?
<gary_poster> (the failing one)
<danilos> gary_poster, no, unfortunately
<danilos> gary_poster, also, all the tests I've tried pass with your branch merged in
<gary_poster> cool
<gary_poster> yeah, ec2 failed with some, and my branch fixes everything ec2 complained about
<danilos> gary_poster, so, generally, my branch for 548 is ready to land, and I am pretty confident all lp.bugs tests pass
<gary_poster> awesome
<gary_poster> so you are just waiting on me ;-)
<gary_poster> may I land it for you?
<danilos> gary_poster, do you want me to set off an ec2 test run that'll email you when the test run is finished
<danilos> gary_poster, yeah, by all means :)
<danilos> gary_poster, if you want to just do the test run yourself, that's fine as well :)
<gary_poster> yeah the ec2 test run that would be  awesome thank you
<danilos> gary_poster, also, before heading off for the day, I'd like to look into the lifecycle stuff and see exactly what's left to do
<gary_poster> makes sense
<gary_poster> danilo, you still here?  If so, you can try bringing me back from the edge. :-)
<gary_poster> http://pastebin.ubuntu.com/562678/
<gary_poster> This PersonSettings thing is supposed to grow...
<gary_poster> Argh!  I'm horrible at this kind of thing :-)
<gary_poster> Because I want to do #1
<gary_poster> But I think it will make people unhappy :-/
<gary_poster> I'll go have some lunch :-P
<gary_poster> don't worry about it if you are gone danilo, you need to go start your break :-)
<danilos> gary_poster, heh, I am still around
<danilos> gary_poster, I think you can go with 1 if you come up with a nice little name for it like doNotSnapshot
<danilos> gary_poster, it would be nice if one could simply do if isteam: self.personsettings = makeReadOnly(PersonSettings()) or something like that
<danilos> gary_poster, which is basically what you are doing
<danilos> gary_poster, so as long as you come up with decent names, I think option 1 is just fine
<danilos> gary_poster, ok, I've added a comment to bug 711901 with a test case (I did it against my bug-584 branch because I had end-to-end test set-up in there, and as soon as it lands, test is usable in it's current form)
<_mup_> Bug #711901: Implement direct lifecycle subscriptions <qa-ok> <Launchpad itself:Fix Committed by danilo> < https://launchpad.net/bugs/711901 >
<danilos> gary_poster, is it ok if I leave it up to you to create a card on the kanban board and file a bug if/when needed?
<danilos> gary_poster, also, ec2 test run is going on for my bug-548-use-preference branch, it should email you at gary.poster@canonical.com as well
<gary_poster> danilos: ok, thanks for advice
<gary_poster> yes, I can file bug
<gary_poster> have a great weekend
<danilos> gary_poster, thanks a lot :) enjoy yours as well
<gary_poster> bac, you available for a review soon?  It's potentially easy...and maybe not. :-/
<gary_poster> https://code.launchpad.net/~gary/launchpad/bug548-db-3/+merge/48651
<bac> gary_poster: yes
<gary_poster> thank you
<gary_poster> you may need context
<gary_poster> though I tried to give enough
<gary_poster> I just committed a change reverting  one line of a comment in garbo.py from "# TeamParticipation, EmailAddress, as all Person entries will be" back to "# TeamParticipation or EmailAddress, as all Person entries will be"
<gary_poster> and pushed
<bac> gary_poster: i need some help understanding what is going on in readonly_settings
<bac> which, to me, means there is an opportunity for some explanatory comments in the code
<gary_poster> in the function itself, or what its goals are?
<bac> both.
<gary_poster> at least, yes
<gary_poster> ok cool
<bac> closure_f makes my head hurt
<gary_poster> yeah ok
<bac> what are you doing there?
<gary_poster> You are familar with the old closure-in-a-loop problem?
<gary_poster> where you want the closure to have the value within the loop
<bac> let's say i'm not, for our viewers out there to follow
<gary_poster> :-) ok
<gary_poster> So, when you want to make a closure
<gary_poster> for each value in a loop
<gary_poster> in Python each closure is bound to the locals
<gary_poster> not a snapshot
<gary_poster> but the mutable collection of locals
<gary_poster> so
<gary_poster> for i in range(4):
<gary_poster> no try again
<gary_poster> l = [lambda: i for i in range(4)]
<bac> would this go faster spoken?
<gary_poster> yeah probly :-)
<gary_poster> I'll keep my headphones on so you can yell into mumble if you like :-)
<bac> gary_poster: the rest of it looks good, so pending some good wordsmithing on the readonly_settings method it'll be mostly done.
<gary_poster> awesome thanks bac
<bac> please try to clean up some lint, too.  the redef of 'Reference' in model/person in particular
<bac> sorry to ask for that since you're under the clock, but it's easy
<gary_poster> understod, will do
<gary_poster> bac, pushed, and the mp is updated.  I may have gone overboard on the comments. :-)
<bac> gary_poster: where did the oauth file come from?
<gary_poster> ?
<gary_poster> looking
<gary_poster> not me
<gary_poster> I think it is like the widgets stuff
<gary_poster> merge artifacts
<gary_poster> this branch has been around for a while
<gary_poster> in various forms
<gary_poster> I haven't merged db-devel because it would make all the previous MPs confused
<gary_poster> the way to confirm that I haven't touched it is to merge my branch into db-devel...but I haven't :-)
<bac> gary_poster: ok, just so long nothing sneaks in
<bac> your new comments are fantastic
<bac> i read them aloud to jojo and he nodded his head appreciatively
<gary_poster> lol
<bac> r=bac
<gary_poster> thank you!
