#launchpad-reviews 2010-06-14
<thumper> https://code.edge.launchpad.net/~thumper/launchpad/linked-bug-visibility/+merge/27466 any one?
<thumper> stub: can you do a pretty trivial review for me?
<thumper> stub: ^^^
 * stub looks
<stub> wtf happened to lp? All my controls are hidden under the subscribers portlet.
<thumper> stub: a "fix" to the template
<thumper> a fix for the fix has landed already
<stub> approved
<thumper> ta
<thumper> stub: https://code.edge.launchpad.net/~thumper/launchpad/diff-tales/+merge/27469 fixes the diff formatter where sql comments are removed :)
<thumper> if you feel like another review
<stub> thumper: I find it worrying we are munging HTML rather than munging strings before we generate the HTML (break_long_words), and that the method name doesn't indicate it accepts HTML input rather than plain text.
<stub> But that is old code moved
<stub> And TestDiffFormatter would be much more readable as a doctest, but that is old too.
<thumper> I'd argue that last point :)
<stub> At the very least, tripple quoted strings in the asserts using dedent("""\
<stub> Or better, expected=dedent("""\   then 'assertEquals(expected, formatterapimagic)'
<stub> Oh... I see. Linebreaks.
<stub> r=stub
* henninge changed the topic of #launchpad-reviews to: On Call: henninge || reviewing: - || queue: [sinzui] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<noodles775> Morning henninge !
<noodles775> I've got an MP ready if you've time: https://code.edge.launchpad.net/~michael.nelson/launchpad/536700-present-packagebuilds-in-ppa-context/+merge/27477
* noodles775 changed the topic of #launchpad-reviews to: On Call: henninge || reviewing: - || queue: [sinzui, noodles775] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<noodles775> (it's just part one, a second branch will follow it).
<henninge> noodles775: Hi! Sure, I will look at it ;)
<noodles775> Thanks henninge.
* henninge changed the topic of #launchpad-reviews to: On Call: henninge || reviewing: noodles775 || queue: [sinzui] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<abentley> henninge_, sinzui's branch has already been reviewed.
<abentley> On Call: henninge, abentley || reviewing: noodles775 || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<sinzui> yes, rockstar reviewed it yesterday
* abentley changed the topic of #launchpad-reviews to: On Call: henninge, abentley || reviewing: noodles775 || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<leonardr> henninge, abentley: i'd like to add https://code.edge.launchpad.net/~leonardr/lazr.restful/cache-unauthorized/+merge/27523 to the queue
<abentley> leonardr, I can have a look at it.
<leonardr> great
* abentley changed the topic of #launchpad-reviews to: On Call: henninge, abentley || reviewing: noodles775, leonardr || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<leonardr> rockstar, can i get you to look at https://code.edge.launchpad.net/~leonardr/launchpad/toggle-representation-cache one more time? i've made a few more changes to get the tests to pass
<abentley> leonardr, rockstar is away for a week.
<leonardr> ok...
* abentley changed the topic of #launchpad-reviews to: On Call: abentley || reviewing: || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<leonardr> abentley: i've assembled two incremental diffs, maybe you can review them?
<leonardr> https://code.edge.launchpad.net/~leonardr/launchpad/toggle-representation-cache/+merge/26725
<abentley> leonardr, rather than catching Exception, can you name the exceptions you want to handle?
<leonardr> abentley: let me check. maybe there's just one storm exception
<leonardr> i won't know for sure until i run the ec2 test though
<abentley> leonardr, on line 126 of the real patch you have "ocument" rather than "document".
<leonardr> will fix
<leonardr> abentley: catching storm.exceptions.ClassInfoError seems to be as good as catching Exception
<abentley> leonardr, excellent.
<leonardr> abentley, any other comments?
<abentley> leonardr, in get_by_key, why not use self.client.get(key, default)?
<leonardr> abentley: i think that should be fine
<abentley> leonardr, the get(key, default) it handles the case where get returns a value that evaluates to False better.
<abentley> leonardr, is it always storm.info.get_obj_info that raises storm.exceptions.ClassInfoError?
<leonardr> abentley: probably, but i'm not sure. now that the except clause returns, i can move the other code outside the try block and see if ec2 takes it
<abentley> leonardr, sounds good.
<abentley> leonardr, aside from that, it looks fine to me.
<leonardr> ok, cool
<leonardr> abentley, the reason for .get(key) or None is that memcached 'get' doesn't take a default
<leonardr> how about this:
<leonardr>         value = self.client.get(key)
<leonardr>         if value is None:
<leonardr>             value = default
<leonardr>         return value
<abentley> leonardr, that's fine, then.
<abentley> leonardr, btw, even if the except clause didn't return, you could still narrow the scope using try/except/else.
<leonardr> abentley: true, thanks
#launchpad-reviews 2010-06-15
* krkhan changed the topic of #launchpad-reviews to: On Call: abentley || reviewing: || queue: [krkhan] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
* sinzui changed the topic of #launchpad-reviews to: On Call: abentley || reviewing: || queue: [krkhan, sinzui] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<jtv> abentley: you're not really currently on call, are you?
<abentley> jtv, true, I'm not.
<jtv> should you even be awake?  :)
<jtv> I'll just chuck myself on the queue.
<abentley> jtv, yeah, it's only 12:50
* jtv changed the topic of #launchpad-reviews to: On Call: - || reviewing: || queue: [krkhan, sinzui, jtv] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<jtv> ah, that's not so bad.
<noodles775> henninge: hi! Did you get a chance to look at my MP yesterday?
<henninge> noodles775: I started but did not finish. Sorry. It's on my list this morning.
<noodles775> Ah oh... great, thanks henninge !
* noodles775 changed the topic of #launchpad-reviews to: On Call: - || reviewing: || queue: [krkhan, sinzui, jtv, noodles775] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
* bigjools changed the topic of #launchpad-reviews to: On Call: - || reviewing: || queue: [krkhan, sinzui, jtv, noodles775, bigjools] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<bigjools> noodles775: you happy with ui=rs for adding fields to forms?
<noodles775> bigjools: It's usually a chance to get a second set of eyes over any potential easy improvements, so best to request a ui review always.
<bigjools> okay np
<bigjools> noodles775: did you know the guitarist in The Offspring is called Noodles? :)
<noodles775> Nope!
<StevenK> noodles775: http://en.wikipedia.org/wiki/Kevin_%22Noodles%22_Wasserman
<henninge> noodles775: review sent
<noodles775> heh... looks like it wasn't for the same reason..
<noodles775> Thanks henninge !
* gmb changed the topic of #launchpad-reviews to: on-call: gmb  reviewing: - || queue: [krkhan, sinzui, jtv, noodles775] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<gmb> Wow, looks like I'm going to have a busy morning.
 * gmb grabs a drink before getting started
<bigjools> gmb: you removed my name from the queue ... you meany
<gmb> bigjools, Hah. Why do I always manage to do that to you?
<bigjools> subliminal
* gmb changed the topic of #launchpad-reviews to: on-call: gmb  reviewing: - || queue: [krkhan, sinzui, jtv, noodles775, bigjools] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
* gmb changed the topic of #launchpad-reviews to: on-call: gmb  reviewing: krkhan || queue: [sinzui, jtv, noodles775, bigjools] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<gmb> Indeed
<bigjools> let me know when you get to it anyway, I am making some, er tweaks :)
<gmb> bigjools, Ok. May be  a while...
<bigjools> yeah I figured
<gmb> krkhan, Which branch of yours do you want me to review? I see two in the queue.
<gmb> export-Person-getBugSubscriberPackages and implement-Bug-findAttachments
<gmb> krkhan, I'll just review the first one for now and come to the other one later.
* gmb changed the topic of #launchpad-reviews to: on-call: gmb  reviewing: krkhan || queue: [sinzui, jtv, noodles775, bigjools, krkhan] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
* gmb changed the topic of #launchpad-reviews to: on-call: gmb  reviewing: sinzui || queue: [sinzui, jtv, noodles775, bigjools, krkhan] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<bigjools> gmb: ok it's all fixed, feel free to JFRI
<gmb> bigjools, Righto.
* gmb changed the topic of #launchpad-reviews to: on-call: gmb  reviewing: jtv || queue: [noodles775, bigjools, krkhan] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
* gmb changed the topic of #launchpad-reviews to: on-call: gmb  reviewing: noodles775 || queue: [bigjools, krkhan] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<noodles775> Thanks gmb, I take it you found the right branch: https://code.edge.launchpad.net/~michael.nelson/launchpad/536700-present-packagebuilds-in-ppa-context-2/+merge/27594
<noodles775> henninge: I've pushed a new rev with some changes, and discussed some other ones from your review on the MP... thanks!
<gmb> noodles775, Yep. Just added the review now; MP page was just giving me the spinner of infinity for some reason.
<noodles775> Thanks gmb.
* gmb changed the topic of #launchpad-reviews to: on-call: gmb  reviewing: bigjools || queue: [krkhan] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<gmb> bigjools, commercial-archive-bug-593636, right?
<bigjools> yip
<gmb> Roit
<ajmitch> gmb: I've got a branch that I want to get in at some point, however it changes an area which currently has no tests. What would be the right thing to do there?
<gmb> ajmitch, My immediate response would be that it would be very cool if you could add unit tests to cover your change. If you can cover the other stuff that isn't covered at the same time, cool, if not, file a bug and add an XXX in the unit test module that you create.
<gmb> ajmitch, Out of interest, what are you touching that's not covered by tests?
<ajmitch> scripts/ftpmaster-tools/sync-source.py
 * wgrant watches the reviewers scatter.
<ajmitch> heh
<gmb> bigjools, r=me
<bigjools> lmao
<gmb> ajmitch, AHAHAHAHAHA
<gmb> *ahem*
<bigjools> thanks gmb
<ajmitch> also in another branch, adding webservice doctests for blueprints, which will be *fun* but doable :)
<gmb> ajmitch, Not knowing the ftpmaster code at all, I don't know how hard it would be to add sane tests.
<gmb> bigjools, do you know?
<ajmitch> gmb: I love getting that sort of reaction...
<bigjools> sync-source doesn't have tests because it's  very very old
<bigjools> and only usually gets changed by ubuntu guys
<ajmitch> wgrant was just telling me that there's another sort-of-implementation of the same?
<bigjools> and soyuz guys have plans for internal native syncing
<ajmitch> in other words, here be dragons
<bigjools> breathing fire
<bigjools> and brimstone
 * ajmitch should have picked something easy, like rewriting blueprints from scratch
<ajmitch> gmb: shall I put in a merge proposal for the 10-line diff I have, without tests, so that you or someone can pick at it?
<gmb> ajmitch, Yeah, might as well. I might ask someone else to review it at the same time as me though so as to make sure I don't screw something up by approving it.
<gmb> bigjools, Would you be willing to double check ajmitch's branch for me?
<ajmitch> it's probably something that would need to be checked by someone using it
<gmb> I don't know if bigjools counts.
 * bigjools OTP, gimme some 
<gmb> ajmitch, Stick it on the queue anyway. I'm going to grab some lunch in a minute so I'll take a look when I get back.
<ajmitch> sure
<gmb> bigjools, No rush, I'm going to graze for a bit
<ajmitch> I'll be heading off to sleep in a few min
<ajmitch> ok, merge proposal is in, I probably screwed it up somewhere :)
<bigjools> gmb: yes I can check it
<krkhan> gmb: hello
<krkhan> gmb: i've posted the results of person tests in merge proposal comments. the code doesn't introduce any regression
<gmb> krkhan, Ah, so I confused myself a bit (had you exported a property, the test would have broken, because we list the properties exported).
<wgrant> gmb: I've got a couple to throw on the queue, if that's OK.
<gmb> krkhan, So, you need to add a test in xx-person that shows you can call the methdo from the API
<gmb> wgrant, Sure, go for it.
<gmb> wgrant, In fact, I'll do it
<gmb> Otherwise we'll stomp all over each other
<wgrant> (https://code.edge.launchpad.net/~wgrant/launchpad/no-buildd-ogre-model/+merge/27410 and https://code.edge.launchpad.net/~wgrant/launchpad/bug-592935-hide-disabled-ppas/+merge/27411)
<wgrant> Fair point.
<krkhan> gmb: can i just write a unittest for the new method? or is doc test a requirement?
* gmb changed the topic of #launchpad-reviews to: on-call: gmb  reviewing: - || queue: [krkhan, wgrant, wgrant] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<wgrant> Thanks.
<gmb> np
<gmb> krkhan, Doctest is easier because you have a lot of the work done for you in terms of setting up the webservice client (take a look at the existing test to see what I mean).
<mars> Hi gmb, just getting started for the day
<krkhan> gmb: i had done unittests for other branch and wasnt familiar with doctests. but now that i'm going through xx-person.txt i can see what you mean. writing one now
<gmb> mars, Hi. No worries :)
<gmb> krkhan, Cool, thanks. I'll review your other branch now.
* gmb changed the topic of #launchpad-reviews to: on-call: gmb  reviewing: krkhan || queue: [krkhan, wgrant, wgrant] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
* gmb changed the topic of #launchpad-reviews to: on-call: gmb  reviewing: krkhan || queue: [wgrant, wgrant] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
* mars changed the topic of #launchpad-reviews to: on-call: gmb, mars reviewing: krkhan || queue: [krkhan, wgrant, wgrant] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<mars> * gmb has changed the topic to: on-call: gmb  reviewing: krkhan || queue: [wgrant, wgrant] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<gmb> krkhan, Did you have a pre-implementation call with anyone about your branch?
<gmb> (i.e. your Bug.findAttachments() branch)
<gmb> (or a pre-implementation chat, for that matter)
<krkhan> gmb: i had discussed it with bryceh
<krkhan> (my mentor for gsoc)
<gmb> krkhan, Ok.
<gmb> krkhan, I'm just thinking that there's a potential for this method to cause problems.
<gmb> krkhan, What would happen if I ran findAttachments('foo') against a Bug with a 2GB memory dump attached to it?
<krkhan> gmb: that's exactly what i discussed with bryce. should i limit the attachment sizes that are searched or search the text file in chunks?
<gmb> krkhan, Hmm. It's an interesting problem. My first thought is that we should limit the size of the attachments that we search, since searching a 2GB file in chunks will still take ages and will probably time out.
<gmb> krkhan, Also, my thought is that if someone decided to hit the API many, many times in sequence with this request on a large attachment they could down an appserver or two, but that may just be scaremongering.
<gmb> krkhan, So, yes, I think limiting this to files under an entirely arbitrary size would be a sensible measure. Based on what we've seen in the past with filesizes, searching and timeouts I'd suggest < 50MB. Also, chunking might not be entirely terrible.
<BjornT> gmb: your concerns are valid. gmb, krkhan: it would make more sense to try to use the db for this. then we get similar search behaviour as the rest of lp, and you will avoid certain issues
<krkhan> gmb: okay. i'll add the attachment size limits and appropriate tests
<krkhan> BjornT: but db doesn't have attachments
<BjornT> memory and performance is a big piece of concern. another is that the search doesn't behave as the rest of the searches in lp. another is that the current implementation will fail if the attachment contains non-ascii characters
<krkhan> BjornT: i will fix non-ascii problem in the next revision. but i'm confused as to how db can be used for attachment search
<krkhan> we don't have full text indices for the attachments
<BjornT> krkhan: well, i'm not sure exactly how we can use the db. but it would be worth talking to stub (our dba) about it, to see what he thinks.
<BjornT> krkhan: another possible solution would be to get all the attachments and do the searching in the client
<krkhan> BjornT: doing it on the client side is what i did earlier on. it takes ages to download-search through all and defeats the whole purpose. doing searches in chunks and having file size limits can make it memory friendly though
<stub> Using the DB to search attachments is problematic. We would need to store the text of the attachment in the DB (say the first 20k).
<krkhan> stub: that would still be problematic as the matching text might be in the last 20k?
<stub> You are talking about only doing this for limited sized attachments - I chose 20k as the limit.
<stub> But that was an arbitrary choice.
<stub> It might be possible to maintain an full text index but not store the text in the db, but I haven't done that before. It would probably work fine.
<krkhan> the issue is, as gmb said i'm targetting file size limits around 50mb. having 50mb per attachment in the db is going to kill
<gmb> krkhan, The more I think about it, 50MB is far too big
<stub> I don't know if you can feed a chunk that big to tsearch2
<gmb> We should be looking at far less than that.
<gmb> krkhan, What do you forsee using this method for, specifically? What kind of attachments?
<stub> Or using google to search the attachments if we don't mind only doing this for public ones.
<krkhan> gmb: patches and dumps. so that "similar" bugs are automatically reported
<krkhan> stub: would it be okay if a FTI is generated for every attachment that's added?
<stub> Which are not really text, so full text search isn't necessarily the best fit.
<krkhan> stub: yeah, that's what i was thinking
<krkhan> to summarize: the problem is searching through text files on the server. the issue is being memory efficient. db searches aren't possible since data can't be in db and full text doesn't make sense for patches
<krkhan> that only leaves having limits and doing in chunks. if 50 mb is large. we can have 5 mb. but that's arbitrary. if this approach is considered okay the limit itself can be adjusted later on
<stub> In theory, we could add a 'fti' column to bugattachment and a GIST index so we can do full text searches. On upload, we would need to manually generate the tsvector to store in the fti column, since we can't use the trigger approach we use elsewhere. I don't think that would be a resource problem. I don't know if it a good idea though :)
<BjornT> kiko: well, the issues are memory, performance (how long will it take to search through the files), and consistency with other searches in lp
<stub> There will be a limit to how much text you can feed tsearch2 to generate a tsvector, which I forget. That will set your upper limit.
<BjornT> krkhan: well, the issues are memory, performance (how long will it take to search through the files), and consistency with other searches in lp
<krkhan> BjornT: i agree. consistency is a more troublesome issue since there isn't any other search in (afaik) that does something like this.
<gmb> krkhan, BjornT, stub: Might I genially suggest we take this to the mailing list for discussion? Just in the interests of not getting stalled on this in the review channel.
<stub> http://www.postgresql.org/docs/8.3/static/textsearch-limitations.html
<gmb> (#launchpad-dev is equally valid)
<stub> So it explodes if the length of the unique words + some overhead exceeds 1MB.
<krkhan> stub: full text search will generate lots of false positives? "while" is a match regardless of the condition that the loop is using
<krkhan> gmb: should i post this to the list
<BjornT> gmb, krkhan: the mailing list sounds fine. instead of focusing on exactly how to implement findAttachments(), it would be good to explain what it will be used for. maybe there's a better solution to the problem
<gmb> BjornT, krkhan, Agreed. I'll reject the branch and it can be resubmitted when a better solution is found.
<stub> Consider changing the Librarian backend to some sort of database (instead of using the filesystem as the database) that allows you to index and search.
<krkhan> BjornT, gmb: okay. that sounds fine
* gmb changed the topic of #launchpad-reviews to: on-call: gmb, mars reviewing: wgrant || queue: [wgrant] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<stub> krkhan: I don't think so. Using a GIST index for the lookup (GIN still has issues making it unsuitable for arbitrary user queries), you get false positives. PostgreSQL filters these by examining the stored tsvector (the contents of the 'fti' column)
<stub> oh...
<stub> Full text search is useful for searching for words in text.
<stub> Sourcecode isn't really text. Punctuation is important, but text search strips that cruft out.
<krkhan> stub: that's what i was saying. i'm not familiar with fti but i don't think it stores all the ++, --, <=s in the tsvectors
<stub> PG is somewhat limited compared to, say, google - no phrase searches, no nearness. You do get boolean operations (foo AND bar OR NOT baz)
<mars> gmb, since you know which of William's branches are in the queue, should I just move on to the activereviews stack?
<krkhan> stub: apart from the fact that tokens are normalized to lexemes. so "failed" and "fails" match
<gmb> mars, the one I'm *not* reviewing is https://code.edge.launchpad.net/~wgrant/launchpad/bug-592935-hide-disabled-ppas/+merge/27411
<stub> No. You feed it text, it generates a tsvector, which is a list of lexemes (words munged so 'pages' and 'page' generate the same lexeme)
<stub> Yup
<mars> gmb, ok
<mars> abentley, ping, https://code.edge.launchpad.net/~abentley/launchpad/bad-branch-name/+merge/27549 is hosed: merge conflicts with devel.  Do you still want it reviewed?
<krkhan> stub: yes. so if i'm searching for code that contain "pages" code that contain "page" will match too. that is to say, the intended targets of patches and dumps aren't "texts"
<mars> gmb, I'll take the other one then
* mars changed the topic of #launchpad-reviews to: on-call: gmb, mars reviewing: wgrant, wgrant || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<wgrant> mars, gmb: Thanks.
<abentley> mars, sure.  I'll just push the updated version...
<krkhan> anyways. gmb, BjornT, stub: thanks for taking out time to review. will hopefully be back with a better approach soon
<stub> krkhan: Yes. You can't really call that false positives though because it is by design. You can override how words get turned into lexemes so keep punctuation, no stemming etc. but we haven't done that.
<krkhan> stub: i can do that overriding for a specific fti column in bug attachments?
<krkhan> (table)
<abentley> mars, updated.
<mars> thanks abentley
<wgrant> mars: Thanks. Can you ec2 land that, please?
<mars> wgrant, certainly
<gmb> wgrant, r=me on your other branch. I'll ec2 it for you.
<wgrant> gmb: Great, thanks.
<gmb> np
<abentley> gmb, mars: could one of you review https://code.launchpad.net/~abentley/launchpad/fix-592319/+merge/27552 please?
<mars> abentley, gmb, I'll take it
<abentley> mars, thanks.
* mars changed the topic of #launchpad-reviews to:  on-call: gmb, mars reviewing: wgrant, abentley || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
* gmb changed the topic of #launchpad-reviews to:  on-call: gmb, mars || reviewing: -, abentley || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<krkhan> gmb: i've added doctest for my first branch: https://code.launchpad.net/~inspirated/launchpad/export-Person-getBugSubscriberPackages/+merge/27630
* krkhan changed the topic of #launchpad-reviews to:  on-call: gmb, mars || reviewing: -, abentley || queue: [krkhan] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<gmb> krkhan, Thanks, will take a look in a moment. No need to add yourself to the queue again; it comes straight to my inbox once I've reviewed your branch once.
<mars> abentley, done
* gmb changed the topic of #launchpad-reviews to:  on-call: gmb, mars || reviewing: -, abentley || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<mars> I so want an IRC bot
<krkhan> gmb: ah okay. thanks
<abentley> mars, thanks.
<mars> gmb, shall I take wgrant's third branch? https://code.edge.launchpad.net/~wgrant/launchpad/bug-592914-recipe-distroseries-order/+merge/27415
<gmb> mars, Please; I'm OTP at the moment.
<mars> done
* mars changed the topic of #launchpad-reviews to: on-call: gmb, mars || reviewing: -, wgrant || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<abentley> mars, we're not reporting the fact that the branch doesn't exist.  We're reporting the fact that it's not stored on launchpad (and may not exist).
<mars> abentley, oh, so the Exception itself is clearly named in the Launchpad domain, but the error text is clear in the wider Launchpad user's domain
<abentley> mars, you agreed to review my other request: https://code.launchpad.net/~abentley/launchpad/fix-592319/+merge/27552
<mars> abentley, gah, ok
<mars> abentley, I'll do that first then
<gmb> krkhan, Your test tests that the method works, but not that's it's called through the webservice. If you look elsewhere in xx-person.txt you'll see webservice getters being tested using webservice.named_get(). That's what you need to use.
<mars> abentley, done, r=mars
<abentley> mars, thanks.
<gmb> krkhan, So something like
<krkhan> gmb: okay. going to do that now
<gmb> krkhan, Ah, cool.
<gmb> krkhan, Feel free to ping me if you need more info.
<abentley> mars, I'd be happy to change that message to "foo is not a branch on Launchpad" or something similar.  Would that be better?
<mars> abentley, how often do you expect users to accidentally enter the name of a branch that is not on launchpad, vs. how often do you expect them to misspell an existing LP branch name?
<mars> common or uncommon?
<abentley> I think it will be more common to misspell a branch location that is on Launchpad, than to enter one that is not on Launchpad.  The latter is a newbie mistake.
<mars> ok.  Thats' why I think "No such branch" sounds clear - it addresses the most common mistake, but still addresses the rare one.
<abentley> mars, I don't think it addresses the case where the branch exists, but is not on Launchpad.
<mars> abentley, in that case, I'd suggest going with "No such branch" or "Unknown branch".  I like the former for the stated reasons.  Up to you.
<abentley> mars, cool.
<mars> Well, if you enter a bad branch, "No such branch: my-site/foo" and "Unknown branch: my-site/foo" are just as newbie confusing.
<mars> But for a LP user, "No such branch: lp:~foo" is quite clear language.  "Unknown branch: lp~foo" is just a bit more vague, that's all.
<abentley> mars, and why is "foo is not a branch on Launchpad" not less confusing?
<mars> abentley, reading it again, you are right, it is fine as well.  A bit more verbose.  Might sound better.
<mars> abentley, sorry for the trouble, I'm just trying to find a balance between brusque messaging and clear user text.
<abentley> mars, I know, this stuff is never easy.  There's often tension between precision and clarity.
<mars> abentley, I trust your judgement.  Go with what you think fits.
<mars> gmb, afk for a bit
* mars changed the topic of #launchpad-reviews to: on-call: gmb, mars[afk] || reviewing: -, wgrant || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<gmb> mars, Ok.
 * gmb knocks off for the evening
* gmb changed the topic of #launchpad-reviews to:  on-call: mars[afk] || reviewing: wgrant || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
* mars changed the topic of #launchpad-reviews to: on-call: mars || reviewing: wgrant || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<krkhan> gmb: updated my branch to use webservice.get
* mars changed the topic of #launchpad-reviews to: on-call: mars || reviewing: ajmitch || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<deryck[lunch]> hi mars.  I'll add my branch to the queue but will be away eating, so if someone needs to jump me in line, they certainly should.
* deryck[lunch] changed the topic of #launchpad-reviews to: on-call: mars || reviewing: ajmitch || queue: [deryck] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<mars> deryck[lunch], sure, thanks
<joey> mars: there you go
<joey> mars: folks just need to part and then join
<mars> joey, erm, not sure if that works
<mars> joey, was thinking "On-call reviewers should have voice, it would be easier to tell them apart"
<mars> joey, if everyone who logs in has voice, that doesn't work as well
<joey> mars: well, you have already done that I think with asking chanserv for it but it would be a manual process
<joey> mars: now just ask for voice
<mars> joey, perfect!  Thanks
<joey> there you go
<joey> glad I could help
<krkhan> BjornT: ping
* mars changed the topic of #launchpad-reviews to: on-call: mars || reviewing: deryck || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<ajmitch> mars: thanks for checking over that fakesyncs branch. the lack of tests is certainly a problem, but I'm not sure how they could be added for that
<mars> ajmitch, did one of the Soyuz team offer to smoke-test it on dogfood?
<ajmitch> nope, I'd put it up there for gmb/bigjools to look at earlier, when I was awake & in-channel :)
<ajmitch> it's most likely not ready for landing just yet until it can be checked over with some real data
<ajmitch> plus I need to put in the contributors agreement :)
<mars> ok, maybe explicitly add bigjools to the list, or drop him an email.
<mars> ah, that too, yes
<mars> add bigjools to the list of requested reviewers
<ajmitch> besides that, I had a brief chat with an ubuntu archive admin to see if the idea was sane, but no real pre-impl call
<mars> ok, so the policy is good.  bigjools will be able to double-check the implementation
* adiroiban changed the topic of #launchpad-reviews to: on-call: mars || reviewing: deryck || queue: [adiroiban(bug-590899 pre-impl,ui)] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<mars> adiroiban, I can take that now
<adiroiban> mars: I have attached a mockup to the bug
<adiroiban> https://bugs.edge.launchpad.net/rosetta/+bug/590899
<_mup_> Bug #590899: Non human readable plural expression in language web view <ui> <Launchpad Translations:Triaged by adiroiban> <https://launchpad.net/bugs/590899>
<adiroiban> it should be simple
* mars changed the topic of #launchpad-reviews to: on-call: mars || reviewing: adiroban || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<adiroiban> but the bug needs an UI pre-impl talk
<adiroiban> http://launchpadlibrarian.net/50391137/pofile-details.png
<mars> rockstar, ^ do you want to take that?  or should we leave it for one of the UI mentats?
<adiroiban> we need to decide where and how to present the following text âPlural formula: n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < 20)) ? 1 : 2â
<rockstar> mars, I'm on leave all week.  I ain't touchin' it.
<mars> rockstar, ah!
<mars> sinzui, ping?
<sinzui> hi mars
<mars> hi sinzui - any advice for who should pick up adiroiban's UI review?
<sinzui> Me or noodles
<adiroiban> sinzui: no hurry to do this review. I was thinking that mars can do it as part of his path to become a UI reviewer
<sinzui> adiroiban, https://code.edge.launchpad.net/~adiroiban/launchpad/512735/+merge/23759 ?
<adiroiban> sinzui: no
<adiroiban> this is an pre-implementation talk
<adiroiban> https://bugs.edge.launchpad.net/rosetta/+bug/590899
<_mup_> Bug #590899: Non human readable plural expression in language web view <ui> <Launchpad Translations:Triaged by adiroiban> <https://launchpad.net/bugs/590899>
<mars> adiroiban, that's been over a year now, and I don't plan to work on it any time soon :)
<adiroiban> henninge ask to have an an UI pre-impl talk
<sinzui> adiroiban, sorry, I was confused
<adiroiban> and  this is why I am bringing this here
<mars> makes sense
<sinzui> adiroiban, do you wan me to send to my remarks or do you want to talk about it over irc or skype?
<adiroiban> sinzui: http://launchpadlibrarian.net/50391137/pofile-details.png
<sinzui> I am looking at that now.
* mars changed the topic of #launchpad-reviews to: on-call: mars || reviewing: - || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<adiroiban> pick the communication channel that you think it is more appropriate
<sinzui> adiroiban, I will send you my notes, then we can discuss them over irc/skype if we need more information
<adiroiban> sinzui: ok. the mockup source file is here: http://bazaar.launchpad.net/~launchpad-dev/launchpad/rosetta-pofile-translate-mockups/annotate/head:/pofile-details.bmml
<sinzui> fab
<mars> thanks sinzui, adiroiban
* mars changed the topic of #launchpad-reviews to: on-call: - || reviewing: - || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<bryceh> on-call: - || reviewing: - || queue: [bryce] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
* bryceh changed the topic of #launchpad-reviews to: on-call: - || reviewing: - || queue: [bryce] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<bryceh> dah
<wgrant> mars: Oops, I didn't know that attrgetter could handle a second level like that, so I deliberately avoided it.
#launchpad-reviews 2010-06-16
* jtv changed the topic of #launchpad-reviews to: on-call: jtv || reviewing: - || queue: [bryce] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<jelmer_> 'morning jtv
<jtv> Good morning jelmer_!  How's the weather over there?
<jelmer_> jtv: It's nice and sunny, nothing to complain :-)
<jtv> jelmer_: good, because I'll be there in a few weeks.
<jelmer_> ah, nice :-)
<jelmer_> jtv: Mind if I add a branch to the queue?
<jtv> Ahhh, I was wondering why you were all friendly this morning.  :-)  Go ahead.
<jelmer_> hehe, thanks
* jelmer_ changed the topic of #launchpad-reviews to: on-call: jtv || reviewing: - || queue: [bryce, jelmer] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
* gmb changed the topic of #launchpad-reviews to:  on-call: jtv || reviewing: - || queue: [bryce, jelmer, gmb(http://bit.ly/bkJ7dM)] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
* jtv changed the topic of #launchpad-reviews to: on-call: jtv || reviewing: - || queue: [jelmer, gmb(http://bit.ly/bkJ7dM)] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<jtv> jelmer_: looks good... one small thing: consider using "print" for values in doctests so the test doesn't fail if 'value' turns up as u'value' etc.
<jelmer_> jtv: ok
<jelmer_> jtv: and thanks for the review :-)
<jtv> np
<jtv> Explosions.  I may lose power.
<jelmer_> jtv: :-/
<jelmer_> Are the riots still ongoing? I didn't see much in the media recently so I assumed it had quieted down.
<henninge> noodles775: let's see if we can sort this out quickly ... ;-)
<noodles775> Great :)
<noodles775> If talking's easier, we can mumble too.
<jtv> jelmer_: no, that's all over.  The army/government has promised they will consider holding elections in the further future (for now they say they won't because people won't vote for them yet), and in the local way, everything looks like it's gone completely back to normal.  A few buildings are gone, but that's not entirely abnormal in peacetime.
* jtv changed the topic of #launchpad-reviews to: on-call: jtv || reviewing: gmb || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<jelmer_> jtv: ah, good :-)
<jtv> jelmer_: in a way...  but nothing's been solved, the army still controls the media, 69% of money in the banks still belongs to under 1% of the population, and the powerful can still kill normal people in large numbers without ever being called to task.
<noodles775> henninge: https://dev.launchpad.net/StormMigrationGuide#Prejoins
<jtv> jelmer_: anyway, I'll try to keep the politics out of this channel.  :)
<jelmer_> :-)
<jtv> gmb: nitpick about existing code that you only moved...   reason = reason + x  => reason += x
<jtv> in _addReason.
<jtv> gmb, are you here?
<gmb> jtv, I am now
<jtv> gmb: hi... quite a little jungle of similar text composition functions you moved there.
<jtv> gmb: several questions about that code, even though I know it's pre-existing: what about the supervisor for a duplicate bug?  I'm not sure but I think I didn't see that among the possibilities.
<gmb> jtv, I'm going to fix those things in a subsequent branch.
<gmb> (There are a lot of things missing, but we need to move the code before we start fixing the bugs, otherwise we'll just end up in conflict central)
<jtv> Ah great.  I was thinking, why not separate the "you are" / "you are in team %s which is" choice from the "subscribed to" / "bug supervisor for" choice and the "bug %s" / "a duplicate of bug %s" part
<gmb> jtv, Yes, I think that would be a good way to go; we can subclass RecipientReason for handling those cases, which is something else I plan to do.
<jtv> Thanks for placing it into contet.
<jtv> s/contet/context/
<gmb> np
<jtv> This is something you could have mentioned while asking "hey Jeroen, can I chuck this on the queue?"  :-)
<gmb> jtv, Mea culpa, duly noted.
<gmb> (More to the point: should've gone in my MP)
<jtv> ...and now you're depriving my of my chance to give out a Stern Look.
<jtv> Oh well.
<gmb> Heh.
<jtv> But given all that, sure, the branch is good.
<gmb> Thanks
<jtv> gmb: I didn't care much for the "you are directly subscribed" text either...  in real life we say "you are subscribed" and only qualify it when things get more subtle.
<gmb> Agreed
* jtv changed the topic of #launchpad-reviews to: on-call: jtv || reviewing: <your name here $30> || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
* noodles775 changed the topic of #launchpad-reviews to: on-call: jtv || reviewing: noodles_for_30 || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<jtv> noodles775: sounds good...
<jtv> hang on though; see if I can rustle up some action for that failed build we have.
<noodles775> I don't actually have an mp yet... just wanted the $30 :)
* noodles775 changed the topic of #launchpad-reviews to: on-call: jtv || reviewing: - || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<jtv> noodles775: well there's the catch... that money's supposed to flow the other way
<noodles775> jelmer_ or jtv: if either of you have time, could you please take a look at https://code.edge.launchpad.net/~michael.nelson/launchpad/594492-present-bfjs-in-builder-history/+merge/27717
* noodles775 changed the topic of #launchpad-reviews to: on-call: jtv || reviewing: - || queue: [noodles775] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<jtv> Coming...
<jtv> oh, cool stuff there...
* jtv changed the topic of #launchpad-reviews to: on-call: jtv || reviewing: noodles775 || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<noodles775> Thanks jtv!
<jtv> Thank me when it's done.  I can be mean.  :)
<noodles775> Well, I always learn lots :)
* EdwinGrubbs changed the topic of #launchpad-reviews to: on-call: jtv, Edwin || reviewing: noodles775 || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<jtv> noodles775: you describe IBuildFarmJobSet as a set of package builds.  That's not right, is it?
<mars> ajmitch, you may want to withdraw https://code.launchpad.net/~ajmitch/launchpad/fakesyncs/+merge/27615 if you don't feel it is the right approach.  To do so, go to the 'Status:' field at the top and switch it to 'Reject'.
<noodles775> jtv: no, updating now.
<jtv> noodles775: much less stringent, but in case you like it: you can describe :param status: If given, limit the search to builds with this status.
<jtv> Or something like that.
<noodles775> jtv: doing so now.
<noodles775> jtv: also adding a :param user:
<jtv> noodles775: binary_only sounds like it wants to be generalized... something like an optional "get them from this set" argument to override IBuildFarmJobSet with IBinaryPackageBuildSet.  But I'm sure it does what's needed right now, so take that as a mere sidenote.
<noodles775> Noted :)
<jtv> Then, about line 87 of the diff: kudos for checking, but I wonder if that shouldn't be an assertion.  The way it looks to me, if somewhere in the caller there's a codepath that might lead to a nonsensical combination of arguments based on user input or whatever, then the caller broke the contract with this method by not filtering the input better.
<noodles775> jtv: The reason I used an exception was that it could be an API call.
<jtv> noodles775: oic
<jtv> noodles775: moving right along to line 138 of the diff, thanks to Stuart's wonderful work you can now do
<jtv> store = IStore(BuildFarmJob)
<jtv> By the way, please put those imports _all the way_ at the top of the method.
<jtv> Like the way you're using find on a result!
<noodles775> Yeah, I just saw that we can now do that... (I'd not realised we had a version of storm that enabled chaining).
<jtv> Although seeing it in the wild like this, I'm not sure I find it as clear as collecting a list of merge criteria and then passing them as find(MyClass, *criteria).  Maybe I just need to get used to it.
<noodles775> With line 138... erm, how does that work? It just chooses the default flavour based on the model?
 * noodles775 reads the db-policy again.
<jtv> noodles775: yes, IStore uses DEFAULT_FLAVOR.  There are also IMasterStore and ISlaveStore if that's not what you want.
<jtv> noodles775: the elif at line 170 has two things wrong with itâthe indentation of the comment above it, and a missing else.
<noodles775> Nice. Actually, I'd assume I can use slave here anyway.
 * noodles775 looks
<noodles775> The indentation is just because the comment should be below right?
<noodles775> And the missing else? even if it should do nothing? else: pass?
<jtv> Yes, probably with a comment.  You may like rearranging them as well:
<jtv> if user is None:
<jtv>     # Strangers don't get to see our privates.
<jtv>     ...
<noodles775> OK
<jtv> elif user.inTeam(getUtility(ILaunchpadCelebrities).admin):
<jtv>     # Admins see everything.
<jtv>     pass
<jtv> else:
<noodles775> Yep, that's clearer.
<jtv>     # Everyone else gets to see public stuff and what they own.
<jtv> Maybe Storm will let you say something simpler for the Or on private being null or false.
<jtv> In SQL I'd say "is not true," but in Storm Coalesce(Archive.private, False) would work as well.
<jtv> Oh, that doesn't actually help with that last query does it?
<noodles775> No, it's in a separate () (in sql-terms).
<noodles775> But that's good to know about Coalesce
<jtv> BTW beware that this query structure may well be the worst recurring performance hog in LP.
<noodles775> Yeah, I had two different methods, this one (left join) and using difference... do you know which would perform better?
<noodles775> (or did you mean specifically these OR clauses...)
<jtv> I was thinking of a union: publicly visible items, and private ones that the user has a special right to.
<jtv> Yes, that's exactly what I meant.
<noodles775> That's a good idea... I was working with a difference... I'll try that.
<noodles775> jtv: erm, actually, it's the "publicly visible items" that is the problem.
<jtv> The recurring problem is that with the OR, you're combining two very different "shapes" of query:
<noodles775> Which is why I was using difference.
<jtv> Oh, how are they the problem?
<jtv> I mean I can see that there are just going to be _more_ of them, but what else am I missing?
<noodles775> To determine all the public ones requires the leftjoin on PackageBuild (afaics)
<noodles775> Ah, but you mean that bit is ok... it's more the additional team subquery etc.?
<jtv> Yes.  It makes you squeeze two different shapes of query into one.
<jtv> One is a "narrow" one without the extra query, but very "deep" with lots of rows.
<jtv> The other is a "wide" one, but with very few rows so still cheap overall.
<jtv> With the "or," those two are flowing all the way through the same query plan.
<noodles775> Whereas doing a separate query for all the private ones I can see and unioning would solve that right?
<jtv> Right.
<noodles775> I see. Great!
 * noodles775 is glad there happened to be a db-expert on ocr :)
 * jtv coughs modestly
 * noodles775 wonders why he didn't notice the long line at 183 in the lint.
<jtv> Maybe you added the Desc later?
<noodles775> Perhaps.
<noodles775> Anyway, fixed.
<jtv> Cool.
<jtv> Ready to move on?
<noodles775> Well, I haven't re-written the query yet, but I'll do that later so yes :)
<jtv> OK!  I'm looking at the test setup now, ll. 232 and down.
<noodles775> (actually getting strange import error atm: You should not import IRepresentationCache from lazr.restful.interfaces
<noodles775> Yep.
<jtv> Maybe check the __all__ in that lazr file?
<jtv> noodles775: Oh, then maybe it should be lazr.restful.interfaces.some_module
<noodles775> The traceback doesn't mention any code that I've touched, but I'll look at it later... the test setup?
<jtv> No idea, sorry.
<noodles775> No, I meant, getting back on topic, you said: I'm looking at the test setup now, ll. 232 and down.
<jtv> Oh ah!
<jtv> Rightâthat setUp method looks pretty unwieldy, but when I look closer I see it's only about 5 variables being set up.  The rest is self.build_farm_jobs.append lines.
<jtv> So I was thinking:
<jtv>  (i) move the creation of that list to a helper method and then self.build_farm_jobs = self._makeThatList(), and
<jtv> (ii) maybe just write the list in one go instead of with append() lines.
<noodles775> OK.
<jtv> Because lots of text in a setUp often makes it hard to extend or fix tests.
<noodles775> Sounds good.
<jtv> Oh, another point there (and sorry for this, since you're not causing it only revealing it in your diff): I wouldn't derive a base test class from TestCaseWithFactory and then derive the actual tests from that.  Asking for trouble.  Better to create a mixin, and have the concrete test classes derive from TestCaseWithFactory and the mixin.  Python has no qualms about letting you use stuff that isn't in your class but will be in a d
<noodles775> Right, I'll update it (and I probably was the cause).
<noodles775> Strangely, the import error I was seeing was fixed by a make clean;make.
<noodles775> Actually, that makes sense, since I'd since merged devel and not re-run make.
<jtv> "the world will never know!
<jtv> "
<jtv> The makeBuildFarmJob method is shaping up nicely... maybe it's at a point where it's worth moving to the factory?  ISTR we already have something there, in which case a merger may be possible.
<noodles775> Heh... I had this discussion earlier with a different branch. A BuildFarmJob should never be instantiated on its own, so I don't think we should include it in the factory. We should always instead be instantiating the leaf objects (BinaryPackageBuild, SPRecipeBuild).
<noodles775> It is tested here internally, but all other callsites should not ever be creating a BFJ... and IBFJ.specific_job will raise an appropriate exception to tell you that.
<jtv> OK
<noodles775> I've explicitly added a comment in test_packagebuild, and probably should do so here too.
<jtv> Sure... could be brief afaic
<jtv> noodles775: in line 266 of the diff, I think testing against self.build_farm_jobs[:2] is clear enough.  How about:
<jtv>  * holding the result of getBuildsForBuilder in a variable,
<noodles775> Yep.
<jtv>  * comparing its contents to [job for job in self.build_farm_jobs if job.status == BuildStatus.FULLYBUILD]
<jtv>  * and asserting that that is a nonempty, proper subset of self.build_farm_jobs.
<noodles775> OK.
<jtv> Actually this style of testing is a little dangerous in that it invites the old Soyuz problems back.  You're implicitly testing different scenarios by making sure they're all represented in the data, then running the code on it onces.
<noodles775> I just thought it was better than creating the data for each test separately?
<jtv> Well "better" can be a difficult thing to estimate when there are multiple variables.  :-)
<noodles775> And I don't see why you say "implicitly testing", when each case is tested explicitly?
<jtv> But if you want to test "this filters by status," you can create a list with just 2 BFJs, one with the status you're looking for and one with another one.
<jtv> It's implicit in that you're not testing against a set that pinpoints the property that matters, so you can say "baby A had a dry bottom and baby B was wet after the test."
<jtv> Instead, you're implementing a research programme: "of all the babies we tested, the ones using brand X were dry and the ones using Y were wet."
<jtv> That can be very effective at finding unexpected changes.  It can also be rigid and brittle.
<noodles775> Sorry, I don't see how the tests are doing that. For example, if test_getBuildsForBuilder_by_status was updated to show the result only contained items with the expected status, and then demonstrated with a different status.
<jtv> But you're relying on both properties being represented in a generic sample set, rather than on a minimal one.
<noodles775> Yes, because I don't see why a minimal one is less prone to false testing? (ie. implementation filters the correct single instance but for the wrong reason).
<jtv> That's where the ceteris paribus principle comes in.
<noodles775> But I can remove the code from the setup and put it in the individual tests using minimal data.
<noodles775> *ugh* latin.
<jtv> :-)
<jtv> It means, "all other things being equal."
<jtv> You can create two objects that are clearly identical in all respects but one, and then show that that one difference is what determines the outcome.
<jtv> If you ever have any particular reason to believe that some other difference might influence the outcome when it shouldn't, that's also something you can test against.
<noodles775> Yes, if that were the case it would be fine,  but I didn't think we could do that (eg. the related archive name is random etc.)
<noodles775> Right... so, do it in a sensible way. OK.
<noodles775> I'll update the tests :)
<jtv> Not trying to make a religious conversion here.  Common sense still applies.  :-)
<noodles775> jtv: I've pushed the updated query, but will have to do the test updates first thing in the morning. Thanks for all your help.
<jtv> noodles775: thanks for taking the abuse so well.  :)  Still have a few more lines to go if you're up for it.
<noodles775> Yep, I will be up for it tomorrow, if that's ok with you :)
<noodles775> (or if you want to add it to the MP... I was going to just include a url to this irc log, but you could do that and add any extra info on the MP?)
* jtv changed the topic of #launchpad-reviews to: on-call: Edwin || reviewing: - || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<jtv> Sorry EdwinGrubbs, leaving you holding the bag.  :)  Been a busy day, review-wise.
<EdwinGrubbs> jtv: bye. The queue is empty, so that's good.
<jtv> yup.
* henninge changed the topic of #launchpad-reviews to: on-call: Edwin || reviewing: - || queue: [henninge] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<henninge> Edwin-lunch: Hi! When you are filled it would be great if you could look at my slightly over-sized branch. ;-)
<leonardr> Edwin-lunch, after you look at henninge's huge branch, i have a fun one
<leonardr> https://code.edge.launchpad.net/~leonardr/lazr.restfulclient/shim-objects/+merge/27739
* leonardr changed the topic of #launchpad-reviews to: on-call: Edwin || reviewing: - || queue: [henninge, leonardr] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<henninge> Oh yeah right, mine is here: https://code.edge.launchpad.net/~henninge/launchpad/bug-545354-enable-sharing/+merge/27123
<henninge> leonardr: I had all the fun and let Edwin-lunch have nothing ... ;)
* henninge changed the topic of #launchpad-reviews to: on-call: Edwin || reviewing: - || queue: [henninge] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<henninge> well, at least he is having lunch.
<henninge-afk> wel, more like brb
<leonardr> henninge-afk: how about 'collection_of'? that's what we call it in lazr.restful
* sinzui changed the topic of #launchpad-reviews to: on-call: Edwin || reviewing: - || queue: [henninge, sinzui] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<henninge> leonardr: perfect! ;)
<bac> Edwin-lunch:  may i throw another on your queue?
* bac changed the topic of #launchpad-reviews to: on-call: Edwin || reviewing: - || queue: [henninge, sinzui, bac] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<EdwinGrubbs> henninge: I'm starting on your branch now.
* EdwinGrubbs changed the topic of #launchpad-reviews to: on-call: Edwin || reviewing: henninge || queue: [leonardr, sinzui, bac] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<henninge> EdwinGrubbs: thanks!
<henninge> EdwinGrubbs: I may be afk for a little but will definitely come back later today.
<henninge> EdwinGrubbs: Did you notice, that I am not merging into devel but into our "recife" integration branch?
<EdwinGrubbs> henninge: yep, I noticed.
<ajmitch> mars: sadly I can't reject my own merge proposals :)
<mars> ajmitch, ?
<ajmitch> mars: you told me to reject the fakesyncs one, I only have the option of setting it to IP, needs review or merged
<ajmitch> s/IP/WIP/
<mars> is 'Rejected' greyed out?
<ajmitch> no, it didn't show at all
<mars> ajmitch, I can set it to Rejected if you want
<mars> that is strange
<ajmitch> probably due to team membership on the target branch or something like that
<ajmitch> you may as well, I'd set it to work in progress
<mars> ok.  You can always resubmit later
<ajmitch> will do
<ajmitch> sorry to waste your time with it
<mars> no problem.  sometimes you find a better way to tackle something
<mars> so go for it :)
<leonardr> henninge: maybe you want to review my follow-up launchpadlib branch? https://code.edge.launchpad.net/~leonardr/launchpadlib/delay-http-requests/+merge/27759
<henninge> leonardr: r=me ;-)
<leonardr> huzzah
<EdwinGrubbs> henninge: review sent
<henninge> EdwinGrubbs: cheers
<EdwinGrubbs> sinzui: I'm starting on your review now
<sinzui> \o/
<EdwinGrubbs> sinzui: is it really necessary to list enable_bug_expiration and remote_product in the View.field_names thus necessitating the ghost widgets? Couldn't you have instead:
<EdwinGrubbs> def setupWidgets():
<EdwinGrubbs>   self.widgets += self.widgets['bugtracker'].getAdditionalWidgets()
<sinzui> EdwinGrubbs, View will not handle the fields and certainly not apply the update() to the object unless we list them
<sinzui> EdwinGrubbs, I think the feature we want is to delegate rendering in the page. We do want the view to manage the data it is working with, and the widget is the device it uses to do validation.
<EdwinGrubbs> sinzui: ugh, I just have one other comment. In the class declaration for BugTrackerVocabulary, you set _filter=1==1, why not _filter=True?
<sinzui> I like your suggestion
<sinzui> I was concerned about storm, but I should have tried it instead of applying an obvious hack
* sinzui changed the topic of #launchpad-reviews to: on-call: Edwin || reviewing: henninge || queue: [leonardr, sinzui, bac, sinzui] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<EdwinGrubbs> sinzui: "In a registered bug tracker" sounds funny, and it makes the user wonder what "registered" means. How about, "In an external bug tracker"
<sinzui> I was thinking that too.
<sinzui> I hesitated. Since your branch will be ready to add "Register a bug tracker" we should choose text that is consistent
<EdwinGrubbs> sinzui: it would also be nice to add some spacing between the radio buttons, so you don't have to look back to the beginning of the line to tell if the next text field is really part of that selection.
<sinzui> I think I can do that via css
<EdwinGrubbs> sinzui: I could make the link say "Register an external bug tracker"
<sinzui> Do we need "external" in that case
<sinzui> Would someone what to register Launchpad as a bug tracker?
<EdwinGrubbs> sinzui: no, I was just thinking if you wanted "In an external bugtracker" and "Register a bug tracker" to sound more related.
<EdwinGrubbs> sinzui: I've submitted the review. All the comments are what we discussed on IRC already.
<sinzui> There are a lot words on the page. I suspect we will land some text revision after user feed back next week because the options are too complex to scan
<sinzui> thanks
<sinzui> I can dedicate my time to it tomorrow
* EdwinGrubbs changed the topic of #launchpad-reviews to: on-call: - || reviewing: - || queue: [bac, sinzui] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<krkhan> gmb: ping
<gmb> krkhan, It's ten to midnight; any chance it can wait until tomorrow?
<krkhan> gmb: sure. i'm not in a hurry. i just resubmitted my findattachments merge proposal. the new branch uses horspool algo for memory efficient file search. but it'll still need lots of discussion as i still think it'll require lots of changes before being lp ready :) i'll catch you tomorrow then
<gmb> krkhan, Okay; can you request a review from BjornT as well please? He'll want to have some input on this.
<gmb> krkhan, I'll try to take a look some time tomorrow.
<krkhan> gmb: okay. req'ed BjornT for a review as well. thanks
<gmb> krkhan, Np. G'night
#launchpad-reviews 2010-06-17
<krkhan> 'night
<sinzui> 6666666666rt0=kj7uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuy
 * ajmitch hopes that wasn't your over-long password
<sinzui> ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm]6ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttg888888888888888888888888888888888i=iiiiiiikvjkkkkkkkkkkkkkkkkkkkk
<sinzui> kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkki]=\\\\m
<sinzui> MKkkkkkkkkkkkkkkkkkkki
<thumper> cat on the keyboard?
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
<sinzui> ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
<sinzui> mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm]6ttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttg888888888888888888888888888888888i=iiiiiiikvjkkkkkkkkkkkkkkkkkkkk
<sinzui> kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkki]=\\\\m0-
<ajmitch> or he's pasting the source for the next version of LP
<sinzui> [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
<sinzui> [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
<sinzui> [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
<sinzui> [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
<sinzui> [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
<sinzui> [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[["{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{
<sinzui> {{{{{{{{{{[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[p--------------------------------
<sinzui> Sorry. I removed the sleeping cat from my keyboard. What you could not hear is that she also started the music. She is deaf and illiterate and has no idea she is a nuance.
<wgrant> Haha.
<jelmer_> lol
<thumper> any reviewers around?
<thumper> https://code.edge.launchpad.net/~thumper/launchpad/bmp-index-faster/+merge/27788
<thumper> stub: hi
<stub> yo
<thumper> stub: can I get you to do a quick review?
<stub> sure
<thumper> https://code.edge.launchpad.net/~thumper/launchpad/bmp-index-faster/+merge/27788
<stub> I like adding the webapp specific extensions to Decorated rather than messing with the underlying model. Scripts can still have similar performance issues though so we might one day need layers of decoration.
<stub> self.tasks and self.bugtasks being identical purely for backwards compatibility?
<stub> same with self.bugtask and self.getBugTask(), although they seem to return different things.
<stub> self.tasks, self.bugtasks, self.bugtask, self.getBugTask(), self.default_bugtask.... urgh...
<thumper> stub: agreed
<thumper> stub: I plan to talk with gary at some stage about model caches
<thumper> stub: ok, self.tasks and self.bugtasks could be merged
<thumper> the other methods override specific bug behaviour
<thumper> that is used in the view / templates
<thumper> and need to be provided
<thumper> to use the cached bugtasks rather than hit the db
<stub> Right. I've put in my review, r=stub with a request to at least document things ('Override bug behavior to use cached bugtasks rather than hit the database' etc.)
<thumper> stub: ta
* noodles775 changed the topic of #launchpad-reviews to: on-call: noodles775 || reviewing: - || queue: [bac, sinzui] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<noodles775> jtv: Hi! I've pushed the changes from our discussion yesterday, and attached the incremental to the MP when you've time to go over it:
<noodles775> https://code.edge.launchpad.net/~michael.nelson/launchpad/594492-present-bfjs-in-builder-history/+merge/27717
<jtv> noodles775: just saw the notification email, thanks
* henninge changed the topic of #launchpad-reviews to: on-call: noodles775 || reviewing: - || queue: [bac, sinzui,henninge] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
 * henninge reserves a spot in the queue
<henninge> ;)
<henninge> Moin noodles775!
<noodles775> Hi henninge :D, I'll get started on the queue straight after our standup.
 * henninge still needs to write the MP ...
<jtv> noodles775: those tests look much better to me now...  one thing though: what does the login(ANONYMOUS) do?
<jtv> It's a bit scary to have that hidden away in the middle of a helper... I know TANSTAAFL but are there at least cheap ways around it?
<noodles775> Use removeSecurityProxy instead of logging in to setup the test?
<jtv> Any idea how many of those you'd need?
<jtv> BTW what I like to do with unit tests is use whitespace to divide them into paragraphs: preparation, the action you're testing, verification.  With that I usually don't mind so much having something like an explicit identity switch after the setup (usually isolated in a method).
<noodles775> Just one in this case.
<jtv> Then yes, I'd use rSP and forget the login.  Login is just more state.
<jtv> "State" is the programming equivalent of worldly goods.  We should getting tied down by it.
<noodles775> jtv: pushed http://pastebin.ubuntu.com/450986/
* noodles775 changed the topic of #launchpad-reviews to: on-call: noodles775 || reviewing: henninge || queue: [bac, sinzui] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<jtv> noodles775: meanwhile, can I push a really really simple branch onto the queue?
<jtv> Qui tacet consentire videtur...
* jtv changed the topic of #launchpad-reviews to: on-call: noodles775 || reviewing: henninge || queue: [bac, sinzui, jtv] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
 * jtv knows how much noodles775 hates Latin  :-)
<noodles775> It's not that I hate Latin, but more that it's not often I see it used without some kind of snobbery ;)
<jtv> la snobberie, c'est moi  :-)
 * noodles775 smiles
<jtv> henninge: setCurrentTranslation branch for your review, if convenient: https://code.edge.launchpad.net/~jtv/launchpad/recife-552639/+merge/24883
 * henninge was just getting bored ... ;-)
<jtv> ...almost!  :-)
* noodles775 changed the topic of #launchpad-reviews to: on-call: noodles775 || reviewing: bac || queue: [sinzui, jtv] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<noodles775> Hi mrevell, will you get a chance to do the text review for bac? I'll do a code review after you've finished: https://code.edge.launchpad.net/~bac/launchpad/clarity/+merge/27747
<mrevell> noodles775, Yes, absolutely. I'm looking at that next.
* noodles775 changed the topic of #launchpad-reviews to: on-call: noodles775 || reviewing: sinzui || queue: [bac(waiting for text review), jtv] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<noodles775> mrevell: great, thanks.
<jtv> noodles775: very nice now!  I had a few more remarks about test_binary_only_false...
 * jtv rummages
<noodles775> Thanks!
<jtv> Ah yes, instead of testing builds.count() perhaps you could test something like all([build.isReallyBinary() for build in builds])
<jtv> (And maybe check that 0 < binary_only_count < all_count to ensure that the test is meaningful)
<jtv> noodles775: with that, I think we're all good.  Thanks for bearing with me, and hurray for the good work.
<noodles775> OK, fixing now... thanks jtv... learned lots as usual :) (You'll update the MP?)
<jtv> noodles775: OK
<henninge> noodles775: thanks for the review! ;)
<noodles775> np... it was a nice easy change (after a lot of investigative work it sounds!)
<noodles775> jtv: is this what you had in mind: http://pastebin.ubuntu.com/450999/
<jtv> noodles775: yup...  and there's probably an assertLess or something so that if it fails you get to see the actual values.
 * jtv checks lib/lp/testing/__init__.py
<jtv> Turns out there's an assertBetween.
<jtv> self.assertBetween(0, binary_only_count, all_count)
<noodles775> Great.
<jtv> noodles775: scnr
 * noodles775 would love to do some more baking ;)
<jtv> ah, you already googled it  :-)
* bigjools changed the topic of #launchpad-reviews to: on-call: noodles775 || reviewing: sinzui || queue: [bac(waiting for text review), jtv, bigjools] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
* noodles775 changed the topic of #launchpad-reviews to: on-call: - || reviewing: sinzui || queue: [bac(waiting for text review), jtv, bigjools] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
* noodles775 changed the topic of #launchpad-reviews to: on-call: - || reviewing: - || queue: [bac(waiting for text review), jtv, bigjools] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<henninge> jtv: there is a text conflict in your branch
* bac changed the topic of #launchpad-reviews to: on-call: - || reviewing: - || queue: [bac, jtv, bigjools] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<bac> hi EdwinGrubbs, can i take you up on your offer of a review?
<EdwinGrubbs> bac: sure
<bac> EdwinGrubbs:  great
<bac> EdwinGrubbs:  never mind.  it looks like jelmer_ did it
<bac> jelmer_:  did you do a code review on my branch?  if so, could you add it to the MP rather than just marking it as approved?
<jelmer_> bac: I did the review by emal but it looks like it hasn't arrived.
<jelmer_> bac: *email
<jelmer_> bac: I'll dig up the email and paste the review in the web UI, sorry.
<bac> jelmer_:  thanks, np
* jelmer_ changed the topic of #launchpad-reviews to: on-call: jelmer || reviewing: jtv || queue: [bigjools] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<jtv> henninge: I know... been trying to resolve that but don't have the right solution yet.
<jelmer_> is code.edge.launchpad.net down?
<henninge> jtv: really, is that complicated? looks simple to me.
<jtv> henninge: bear in mind, this is a 4-way merge.
<henninge> Oh hi!
<jtv> hi
<henninge> jtv: I will send you a first review but I have to leave soon. We should talk about it in more detail tomorrow.
<jtv> ok
<krkhan> gmb: ping
* noodles775 changed the topic of #launchpad-reviews to: on-call: jelmer || reviewing: jtv || queue: [bigjools, noodles] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<noodles775> :)
<gmb> krkhan, Hi. I haven't had chance to look at your branch yet; will try to look in the next 45 minutes or so.
<krkhan> gmb: okay. thanks
* jelmer_ changed the topic of #launchpad-reviews to: on-call: jelmer || reviewing: bigjools || queue: [noodles] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<henninge> jtv: review sent, I am leaving now.
#launchpad-reviews 2010-06-18
* adeuring changed the topic of #launchpad-reviews to: on-call: adeuring || reviewing: - || queue: [noodles] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<noodles775> Hi adeuring, when you've time, can you please take a look at: https://code.edge.launchpad.net/~michael.nelson/launchpad/588288-log-parser-dont-read-entire-file-qa/+merge/27849
<adeuring> noodles775: sure
* adeuring changed the topic of #launchpad-reviews to: on-call: adeuring || reviewing: noodles || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad
<adeuring> noodles775: r=me, but with some complaints about the error haindling in parse_file()
* adeuring changed the topic of #launchpad-reviews to: on-call: adeuring || reviewing: - || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad
<noodles775> Thanks adeuring, I'll take a look.
<adeuring> noodles775: I'm just writung ione more comment ;)
* adeuring changed the topic of #launchpad-reviews to: on-call: adeuring || reviewing: - || queue: [] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
* sinzui changed the topic of #launchpad-reviews to: on-call: adeuring || reviewing: - || queue: [sinzui] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<sinzui> adeuring, I have a short branch for review. Are you available?
<adeuring> sinzui: sure
<adeuring> sinzui: r=me
<sinzui> that adeuring
<krkhan> gmb: hello
<gmb> krkhan, Hello. Still haven't had chance to do your review; will definitely do it within the next hour though.
<gmb> Apologies
<gmb> Crazy busy
<krkhan> gmb: np. i'll just keep my fingers crossed ;) tyt
<gmb> krkhan, Thanks :). Trying to get UI mockups done before the weekend.
<sinzui> bac: are you on call after adeuring?
* sinzui changed the topic of #launchpad-reviews to: on-call: - || reviewing: - || queue: [sinzui] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<bac> sinzui:  man i forgot all about it
<bac> sinzui:  yes, i'm supposed to be OCR today
* bac changed the topic of #launchpad-reviews to: on-call: bac || reviewing: - || queue: [sinzui] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<bac> and so i am
* bac changed the topic of #launchpad-reviews to: on-call: bac || reviewing: sinzui || queue: [-] || omThis channel is logged: http://irclogs.ubuntu.c/ || https://code.edge.launchpad.net/launchpad/+activereviews
* bac changed the topic of #launchpad-reviews to: on-call: bac || reviewing: sinzui || queue: [-] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad/+activereviews
<sinzui> thanks bac
<bac> sinzui:  not used to this friday shift
* bac changed the topic of #launchpad-reviews to: on-call: bac || reviewing: sinzui || queue: [-] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/+activereviews
* bac changed the topic of #launchpad-reviews to: on-call: bac || reviewing: sinzui || queue: [-] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<bac> sinzui:  done
<abentley> bac, could you please review https://code.edge.launchpad.net/~abentley/launchpad/skip-repeat-builds/+merge/27954 ?
<bac> abentley:  sure
* bac changed the topic of #launchpad-reviews to: on-call: bac || reviewing: abentley || queue: [-] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<abentley> bac, thanks.
<bac> abentley:  done
* bac changed the topic of #launchpad-reviews to: on-call: bac || reviewing: - || queue: [-] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
<abentley> bac, thanks for your review.
<bac> np
#launchpad-reviews 2010-06-20
<krkhan> gmb: hello
#launchpad-reviews 2020-06-11
<royalewithcheese>    <body style="background-color:red;">      <h1>Products</h1> Fuck You!  </body>
