/srv/irclogs.ubuntu.com/2012/04/26/#launchpad-dev.txt

wallyworld_StevenK: is only workaround to downgrade convoy? ImportError: No module named convoy.meta01:05
wgrantsudo apt-get install convoy/precise01:06
wgrantshould do it01:06
wallyworld_so pkg has been updated in repos?01:06
wgrantNo, downgraded.01:06
wgrantThat should still downgrade it01:06
wallyworld_ok,will try thanks01:07
wallyworld_all good01:07
StevenKwallyworld_: I'm working on it.01:16
wallyworld_np. i downgraded to the previous version01:20
StevenKwgrant: I don't think I need Provides: convoy, right?01:35
wgrantStevenK: Hopefully only launchpad-developer-dependencies depends on it, indeed.01:35
wgrantSo just C/R01:35
wgrantsinzui: I see your progressive-enhancement-ftw branch touches the inline-picker.pt, which has a div inside a span, which is illegal. Any chance you could look at fixing that?01:45
wgrantNot sure what it's doing there, but it's probably simple to eliminate.01:46
wgrantI hope.01:46
StevenKWoo03:02
* StevenK rips out five self.assertEquals() and replaces it with MatchesStructure()03:02
wallyworld_wgrant: is it preferred to use a CTE or subsquery to force a distinct to be evaluated before a sort?03:05
lifelesswallyworld_: trick question, there's no point evaluating distinct right before a sort03:07
lifelesswallyworld_: as doing distinct requires sorted data03:07
wgrantYou also have to be careful about doing that with resultsets, as Storm will apply the limit to the outside.03:07
wgrantYou need to play around to see what performs well.03:08
lifelesswallyworld_: whats the big picture ?03:08
wallyworld_such an optimisation was done for a query on the accesspolocygrantflat table already though03:08
wallyworld_lifeless: i am looking at a query which returns a number of rows which when distinct is applied will be far less03:09
wallyworld_and i need the result to be ordered on one of the columns which distinct will operate with03:09
wgrantNeed to know specifics.03:09
wallyworld_lifeless: wgrant: https://pastebin.canonical.com/64992/03:11
wallyworld_i'm experimenting atm with a couple of approaches03:11
wallyworld_a single query and a bit of python to loop over the result set vs 2 queries03:12
lifelesshttps://pastebin.canonical.com/64993/03:12
wallyworld_the sql pasted would be for the single query approach. the will be many rows with SOME and these need to be reduced down to 1 per grantee03:12
lifelessyour current query conflats distinct columns and calculate results03:13
wallyworld_yes it does, i hadn't finished it yet, just threw up something quickly cause you asked :-)03:13
lifelessindeed, so the thing is you asked about forcing an operaiton order; but that sort of optimisation always happens after you can express what you want basically :)03:14
wallyworld_so, without the distinct, the result set might be largish. and order by is done first right?03:14
lifelessno03:14
lifelessorder by is done depending on the plan03:14
lifelessit may use an index03:14
lifelessit may sort in memory03:15
wallyworld_ok. there was a bit of sql already refactored and the comment was that we wanted to force the distinct to be done first since the sort by time dominated the query time03:16
lifelessit may be different on each execution depending on the params03:16
wallyworld_so a sub query was used03:16
wgrantYou need to test with both Ubuntu and Launchpad.03:16
wgrantas targets03:16
lifelesswallyworld_: for this case or another case? Tuning is a vicious cycle of iteration and experimentation03:16
wallyworld_lifeless: another case03:16
lifelessin which case, ignore it. Optimise this separately.03:16
wallyworld_ok. i wasn't sure if we were dealing with a postgres quirk or not03:17
wallyworld_s/quirk/generalisation03:17
wgrantpostgres quirks are completely situation-dependent.03:17
wgrantYou have to test.03:17
lifelessI have a couple of thoughts03:17
lifelesswhat do you want to show when both an artifact and  non-artifact grant are present ?03:18
lifelessor do we prevent that ?03:18
wallyworld_we show ALL03:18
wallyworld_but i now need to know of there are SOME also03:18
wallyworld_whereas before we didn't need to know that03:18
wallyworld_so previously the query i pasted used MIN(COALESCE(artifact, 0)) and a group by03:20
wallyworld_if i keep that i need a second query03:20
wallyworld_or i remove the MIN and have one query with a distinct and order by and a bit of python logic03:21
wallyworld_lifeless: actually, i take it back. i don't need the 'distinct on', just plain old distinct.03:24
wallyworld_for my use case03:25
wgrantYou also don't care about order there, do you?03:26
wallyworld_wgrant: it makes the post processing easier but is not strictly necessary. if the distinct is run first, the order by is trivial03:27
lifelesswhat about https://pastebin.canonical.com/64994/03:27
wallyworld_hence my wanting to run distinct first03:27
lifelessyou'll get up to two rows for any grantee,policy pair03:28
lifelessone with the min null and True03:28
lifelessone with a min value and False03:28
wallyworld_it's missing the group by but perhaps03:29
lifelesswhy would it need one ?03:29
wgrantWe need to know (person, person, artifact grant?, policy grant?)03:30
wgrants/person, person/person, policy/03:30
lifelesswell, this gives you that but not folded into one row03:30
lifelessif you are paginating, you might need the fold03:31
lifelessbut if you are paginating, you might want to avoid entire-context processing, which group by will need03:31
wgrantThis is post-pagination03:31
wallyworld_lifeless: the group by is needed because there's a min() in the select03:31
lifelesswallyworld_: oh duh, of course.03:31
wallyworld_my original query works. wgrant, could you possibly run https://pastebin.canonical.com/64992/ on dogfood, adjusting ids for ubuntu?03:32
wgrant90ms for me + ubuntu-crashes-universe03:34
wgrantSo very slow03:34
lifelesswgrant: how does mine run ?03:35
wgrantBuggily03:35
lifelesswgrant: with an appropriate group by03:35
wallyworld_wgrant: perhaps https://pastebin.canonical.com/64995/03:36
lifelesswgrant: does qas have appropriate data ?03:36
wgrantqas has appropriate data03:36
wgrantlifeless: Your thing has no chance of running without a rewrite03:36
wgrantIt uses artifact in both an aggregate and a non-aggregate.03:36
lifelesswhat are the right constants for you + u-c-u ?03:37
wgrantwallyworld_: 120ms03:37
wallyworld_so even worse :-(03:37
wgrantlifeless: SELECT id FROM accesspolicy WHERE distribution = 103:37
wgrantAnd (21997, 1324721)03:38
wallyworld_wgrant: maybe a subselect?03:38
wgrantWell03:38
lifeless72ms03:38
lifelesswgrant: all specific grants atm right ?03:39
wgrantFor those constraints, yes.03:39
wgrantAh03:39
lifelessSELECT DISTINCT grantee, policy, min(artifact), artifact is NULL FROM AccessPolicyGrantFlat03:39
lifelessWHERE AccessPolicyGrantFlat.grantee IN (21997, 1324721) AND AccessPolicyGrantFlat.policy IN (65,66)03:39
wgrantThe old query is 80ms for the same data on DF, so the 90ms before wasn't too bad.03:39
lifelessGROUP BY AccessPolicyGrantFlat.grantee, AccessPolicyGrantFlat.policy, artifact is NULL03:39
lifelessORDER BY AccessPolicyGrantFlat.grantee, AccessPolicyGrantFlat.policy;03:40
wallyworld_so what's the concensus?03:41
wallyworld_one was run on dogfood, the other qas so can't really compare03:42
wgrantSELECT AccessPolicyGrantFlat.grantee, AccessPolicyGrantFlat.policy, NOT bool_and(artifact IS NOT NULL), bool_or(artifact IS NOT NULL)03:43
wgrantFROM AccessPolicyGrantFlat WHERE AccessPolicyGrantFlat.grantee IN (21997, 1324721) AND AccessPolicyGrantFlat.policy IN (130423, 130464) GROUP BY AccessPolicyGrantFlat.grantee, AccessPolicyGrantFlat.policy03:43
=== jtv1 is now known as jtv
wgrantSELECT AccessPolicyGrantFlat.grantee, AccessPolicyGrantFlat.policy, bool_or(artifact IS NULL), bool_or(artifact IS NOT NULL)03:44
wgrantFROM AccessPolicyGrantFlat WHERE AccessPolicyGrantFlat.grantee IN (21997, 1324721) AND AccessPolicyGrantFlat.policy IN (130423, 130464) GROUP BY AccessPolicyGrantFlat.grantee, AccessPolicyGrantFlat.policy03:44
wgrantbetter03:44
wgrant78ms on DF03:44
wallyworld_i haven't seen bool_or before03:44
wgrantI've never had cause to use it before, either.03:45
wgrantBut I think it fits well here.03:45
wallyworld_what's it do?03:45
wgrantIt's an aggregate function that computes the boolean OR.03:45
wallyworld_ah right, nice03:45
wgrantWhich is, I think, exactly what we want here.03:45
wallyworld_well, before the queru produced column values 'ALL' or 'SOME' not true or false03:46
wgrantYeah03:46
wgrantBut that doesn't really make sense any more03:46
wallyworld_so i could CASE it03:46
wgrantSince we may need to return both.03:46
wallyworld_sure03:46
wallyworld_wgrant: so there's so order by there. that would make post processing easier03:47
wallyworld_but if it adds too much overhead03:47
wgrantYou can just stick an ORDER BY on the end03:48
wgrantDoesn't affect performance in this case.03:48
wgrantSince it has to do the hashagg first.03:48
wallyworld_rightio03:48
wallyworld_wgrant: seems to work ok locally too. thanks. updating code now....03:49
wgrantGreat.03:50
wgrantHm04:01
wgrantSo it looks like tag searching becomes much faster if I remove all the INTERSECT crap04:02
lifelesswgrant: the bool_or is redundant there04:02
wgrantlifeless: How?04:02
lifelessfoo is null is boolean already04:03
lifelessditto is not null04:03
wgrantI use them for the aggregateness04:03
wgrantNot the boolness04:03
wgrantHm. I guess since we paginate before this, we could possibly just get DISTINCT AccessPolicyGrantFlat.grantee, AccessPolicyGrantFlat.policy, artifact IS NULL.04:04
wgrantSince we don't need a single row per person04:04
lifelesswgrant: huh, please enlarge04:04
lifeless(on the aggregateness)04:04
wgrantlifeless: I want the aggregate04:05
wgrantDirectly requesting a non-distinct bool is not an aggregate.04:05
lifelessoh right, I see04:05
lifelesshandy04:05
wgrantBut a distinct bool is probably sufficient here, since we don't care about pagination in this query04:05
wgrantEXPLAIN ANALYZE SELECT DISTINCT AccessPolicyGrantFlat.grantee, AccessPolicyGrantFlat.policy, artifact IS NULL04:06
wgrantFROM AccessPolicyGrantFlat WHERE AccessPolicyGrantFlat.grantee IN (21997, 1324721) AND AccessPolicyGrantFlat.policy IN (130423, 130464) ORDER BY AccessPolicyGrantFlat.grantee, AccessPolicyGrantFlat.policy;04:06
wgrantis pretty much the same speed and less ugly, but will return up to two rows per person04:06
wgrantAnd is sort of the obvious way to go.04:06
wgrantwallyworld_: ^^04:06
lifelessindeed04:06
lifelessits roughly, except cleaner, what I originally suggested.04:06
wgrantAnd working :)04:07
wgrantlifeless: Have you reworked the tag searching stuff at all?04:07
lifelessno04:07
wallyworld_wgrant: i really want one row per person. the query with bool_or is better04:07
wgrantk04:07
wgrantplans are identical04:07
wgrantSo just query prettiness, really04:07
wallyworld_wgrant: and the order by is done outside this bit by the batching stuff i realised04:08
wgrantWell, yeah, (person.id, policy.id) is hardly going to be a user-friendly sort. I assumed it simplified your code somehow.04:08
wallyworld_it would have but now we have one row per person so it doesn't matter04:09
wallyworld_ah never mind, forget my comment about batching - different query04:09
wgrantlifeless: https://pastebin.canonical.com/64996/ is what ALL tag search queries look like now04:10
wgrantlifeless: Replacing the EXISTS ( ... INTERSECT ... ) with EXISTS ( ... ) AND EXISTS ( ... ) is about 30 times faster.04:10
wgrantI guess it plans better from the tag counts.04:10
wgrantI guess I'll do it behind a flag and see what happens.04:11
wgrantBecause it, like, makes Ubuntu multi-tag searches not take 10s.04:11
wgrant(although it was 20s in the old schema)04:11
lifelesswgrant: I tweaked it for the old schema at one point04:20
lifelesswgrant: I'm glad you can get it better04:20
lifelesswgrant: did you end up making an array for tags ?04:26
wgrantlifeless: Not in this round.04:26
adeuringgood mornin07:07
stubGrrr... lifeless stole my namespace with lazr.postgresql.07:42
stubWhat do we have besides lazr? Need to package a Python library containing PG helpers.07:45
wgrantlazr.postgresql, maybe? :)07:45
stub:-P07:46
stubLot of renaming to move that db patch buildout application07:48
lifelessstub: huh, shove your stuff in there.07:59
lifelessstub: its what its there for07:59
stubAnd the obvious name for lazr.postgresql application has now been taken - might be interesting. http://pypi.python.org/pypi/pgmigrate2/1.2.207:59
lifelesshah08:00
lifelessstub: so seriously, put your helpers in lazr.postgresql; theres plenty of namespace within that08:00
lifelessstub: I just hadn't bothered moving stuff it didn't need.08:00
lifeless(into it)08:00
stublifeless: Merging the buildout driven application and my helper library looks like a packaging mess08:00
lifelessstub: how so?08:00
lifelessstub: which helper library ?08:01
stubOne I'm going to assemble so I can get common CLI, helpers like ConnectionString etc. available for our various scripts (backups, database report) without pulling in a Launchpad tree or cargo culting.08:01
stubBeen cargo culting so far and finally got sick of it.08:02
lifelessstub: great; buildout should be fine for that.08:02
lifelessstub: its got a very small dep footprint08:02
lifelessstub: and will play nice with e.g. pip or virtualenv (which btw we probably want to do a mass migration to)08:02
stubI'm thinking a .deb08:03
lifelessstub: still no problem, I wanted lazr.postgresql to end up deb'd too with a primarily CLI interface.08:03
stubPython packages into .deb seem not hard if you are using setup tools. Buildout?08:04
lifelessstub: its still setuptools08:04
lifelessstub: don't overthink it :>08:04
lifelessstub: buildout is for local dev mode; you can totally ignore it as far as delivery of debs is concerned.08:04
stubI'm used to using buildout assembing a tree08:04
lifelessseparate problems.08:04
lifelessbuildout will give you the dev environment.08:04
lifelessThe deb stuff will be a separate packaging tree anyhow.08:04
stubYer, just as long as I can get 'python setup.py install' to install mystuff my limited packaging skills should suffice.08:05
lifelesswhich buildout doesn't affect ;)08:06
lifelessalso you might like to use pkgme for deb stuff08:06
lifelessstub: all that said, the -ops are good at getting buildout trees onto machines via deploymgr, so you might be good to go just as-is, with no packaging effort.08:07
stubIt will end up being used by stuff like lp:losa-db-scripts. Getting helpers on the standard PYTHONPATH seems best to me.08:08
wgrantWhile you're here, I think there is an issue with your assignees-must-have-visibility policy.08:08
wgrantlifeless: ^^08:08
lifelessstub: sure08:08
lifelesswgrant: whats issue ?08:08
wgrantlifeless: I've fixed lots of bugs in my company's private project.08:08
lifelessstub: we should do a catchup; after wgrant grills me ?08:08
wgrantlifeless: But I've just left the company :(08:08
stubAnd the extracted database report, which is what I actually want to be working on.08:08
stublifeless: Sure, or tomorrow if it is late for you.08:09
lifelesswgrant: clearly none of the bugs are your responsibility any more08:09
wgrantlifeless: Now all these historical bugs have to be molested, since I no longer have accss.08:09
lifelessstub: it is late, but today is better.08:09
stubk08:09
wgrantlifeless: That argument might apply to an In Progress bug.08:10
lifelesswgrant: I don't see a conceptual problem: open bugs *should* be updated. Closed bugs the assignee is just vanity, and its in the changelog for the bug.08:10
wgrantBut it probably doesn't apply to a Fix Released one.08:10
lifelessif you consider assignee a next-actor field its clearly irrelevant for F-R bugs08:10
lifelessarguably it should not permit being set there anyhow.08:11
wgrantThat's not how the field is defined at present.08:11
wgrantAnd it has never been used that way.08:11
lifeless(not something we could do today, but if we were starting from scratch...)08:11
lifelesswgrant: actually, it has been used that way.08:11
wgrantSome Ubuntu process bugs use it that way.08:11
wgrantuse/used08:11
wgrantBut nothing widespread.08:11
lifelesswgrant: I forget which team, but there is/was one that religiously updates it that way.08:12
lifelesswgrant: so I admit its a little awkward, but it is, I think, the best of a bunch of bad options.08:16
lifelesswgrant: allowing data that is inconsistent means we have to have safeguards and doublechecks throughout the system; having assignee imply notification means having it imply visibility (by definition)08:19
lifelesswgrant: if we take any one piece out, the system gets harder to explain and use.08:19
lifelesswgrant: I find it implausible that users will be functionally affected if the assignee is cleared when someone leaves; consider the following identical cases:08:20
lifeless - the user deletes their LP account08:20
lifeless - the user merges their LP account08:20
lifelesswgrant: another way of thinking about it is that having a single identity for interacting with multiple partitioned visibility areas has an inbuilt tension.08:22
lifelesswgrant: if you left canonical, for instance, your google docs would be migrated and the account and all its track record nuked.08:23
lifelessstub: so, skype?08:24
stubsure08:24
wgrantlifeless: Assignee doesn't have to imply notification any more than structural subscription does.08:25
StevenKdanhg: O hai!09:26
danhghey stevenk09:26
StevenKdanhg: I'd like to get a text review if you have a moment?09:26
danhgyeah sure09:26
* StevenK stabs gpg for being difficult09:30
jml`hey11:16
=== jml` is now known as jml
jmlthe bug listing page seems to have no favicon11:17
jmlnever mind.11:35
deryckMorning, everyone.13:04
rick_h_morning13:06
abentleyderyck: morning.13:06
abentleyrick_h_: morning.13:06
StevenKrick_h_: Did you see I fixed convoy?13:06
rick_h_StevenK: no, didn't see it. thanks!!!13:06
rick_h_StevenK: I'll pull/check it out and reply to the -dev email then13:06
StevenKrick_h_: It's also on asuka at least13:07
rick_h_StevenK: awesome13:07
StevenKrick_h_: And we set caching on asuka for +combo13:07
* rick_h_ assumes asuka is a dev server13:07
rick_h_or something13:07
StevenKasuka is staging/qastaging's asppserver13:07
rick_h_cool13:07
StevenK*appserver13:07
StevenKrick_h_: We might be in a position to turn on the feature flag on qas and see how much breaks13:08
rick_h_StevenK: very cool then13:08
=== rick_h_ changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | On call reviewer: rick_h* | Firefighting: - | Critical bugs: 3.47*10^2
=== jcsackett changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | On call reviewer: jcsackett, rick_h* | Firefighting: - | Critical bugs: 3.47*10^2
=== sagaci_ is now known as sagaci
awilkinsIs there a statechart of the Launchpad bug statuses ; I have the list of states, but not the transitions. Or is there a particular piece of the source I can look at to work it out?14:13
deryckawilkins, not sure what you mean by the transitions.15:20
deryckawilkins, what are you wanting to understand?15:21
awilkinsderyck, Which state leads to which other state : I got an answer in the non-dev channel, apparently you can move to any state if you have the privileges15:21
awilkinsI just want to compare it to Bugzilla, etc15:21
deryckawilkins, ah, ok.  yeah, there's no set order.15:22
jmllooking at MPs now15:26
* deryck lunches15:55
=== salgado is now known as salgado-lunch
jmlbenji, bac: have replied to MPs. am available for the next hour to chat.16:28
=== salgado-lunch is now known as salgado
sinzuirick_h_, jcsackett: do you have time to review https://code.launchpad.net/~sinzui/launchpad/progressive-enhancement-ftw/+merge/10373316:43
rick_h_sinzui: sure thing16:44
rick_h_sinzui: ping, ? for you17:17
sinzuihi rick_h_17:17
rick_h_sinzui: so you've wrapped the <a> contents with invisible-link css for many cases17:17
rick_h_in a non-js browser situation then, is there any method for these to show up not hidden?17:18
rick_h_since this is to replace no-script use cases17:18
sinzuiah17:18
sinzuiinvisible-link exists the Zope testbrowser, not humans17:19
sinzuithe sprite class instead renders an icon instead of text for the human17:19
rick_h_ok, ic17:19
sinzuirick_h_, there is a nuance we need to consider17:20
sinzuilinx is non-js and non-graphical, so crucial cases of reporting a bug must work without graphics or script. +filebug is such as case. We really want users to see those extra options. There are not edit icons on them17:21
rick_h_ah, gotcha17:22
rick_h_yea, it's the eternal debate of JS flash to hide things vs hiding by default17:23
rick_h_sinzui: so with my icon fonts I've used this: http://pictos.cc/articles/using-icon-fonts/17:24
rick_h_which helps make sure if you don't get the font you get the text17:24
rick_h_I wonder if this could be adapted for a pure css solution17:24
sinzuiah17:25
sinzuiI tried something like that a few years ago17:25
rick_h_yea, I think part of this works because it's a font vs a sprite, but haven't tried it out17:25
sinzuiit was rejected as a programmer hack. I think we could get it accepted on the grounds that we care about accessibility.17:25
rick_h_yea, it works pretty well ime in my side project and if we can praise it for accessability and lack of JS driven flashing UI it's a win17:26
sinzuiAnything that properly sites in the uncode ranges and that we can add beauty too via a web font would be grand17:27
sinzuis/sites/sits17:27
rick_h_yea, unfortunately I think most icon fonts aren't sticking to unicode land because of unidoce issues people end up with17:28
abentleyrick_h_: Could you please review https://code.launchpad.net/~abentley/launchpad/celery-everywhere-9/+merge/103723 ?17:34
rick_h_abentley: will do17:36
rick_h_sinzui: ok, commented, also wanted to bring up alt vs title text for these links since again we're really targeting accessability here17:38
sinzuithank you.17:39
rick_h_thank you, look forward to noscript dying17:40
sinzuirick_h_, I already know that we cannot change the broken span in a div markup easilly17:49
sinzuiWe tried this 18 months ago :(17:49
rick_h_sinzui: ok, it looked like it might be a much bigger task, but wanted to note it17:49
sinzuiIt is quite complicated. I can be done, but that is not the issue that needs to be solved in this branch17:49
abentleygary_poster: ISTM that Storm does not maintain a mapping of table names to classes.  Does that seem correct to you?17:50
rick_h_sinzui: understand17:50
sinzuirick_h_. we stopped adding inline editing to the project page because th divs did bad things in element that had to be inline17:50
gary_posterabentley, it's been a long time since I looked at that code, but I believe you are correct.17:51
rick_h_sinzui: can the reverse happen though, can the spans be turned to divs with inline or inline-block styles?17:51
sinzuiNo.17:52
rick_h_sinzui: ok17:52
sinzuiLp and HTML in general wants form elements to work in line17:52
abentleygary_poster: I had always assumed there would be one.  I also thought having two classes with the same table would be impossible.  But if Storm can't tell that there are two classes with the same table, it shouldn't care, either.17:52
gary_posterheh17:52
sinzuirick_h_, consider that div can never go in a paragraph17:52
rick_h_sinzui: ah right ok.17:53
sinzuirick_h_, you are right about the title, I see I was not consistent17:53
sinzuiI will work on this now17:53
rick_h_sinzui: np, I'll be around laterish today and can ok any time. Thanks for looking into it.17:54
gary_posterabentley, it must reliably be able to determine what class to use to instantiate records from the db; looking for a sec; suspect that this is configuration17:54
abentleygary_poster: There's a complicated derivation dance used in most Jobs classes; but if BranchScanJob, BranchUpgradeJob etc all were ORM objects with the same table, life would be simpler.17:55
abentleygary_poster: I think that it relies on the caller of Store.fine to specify what class to use, and class specifies table.17:55
abentleys/Store.fine/Store.find17:56
gary_posterabentley, yes, I think you are right!  A very interesting idea17:57
gary_posterCrazy idea abentley: you could maybe even pass a (single) factory, depending on how loose the contract is for the first argument to store.find17:58
gary_posterif it just has to be a callable with a __storm_table__ ...17:59
gary_posteryou could create different objects depending on one or more columns18:00
gary_posterMay or may not be a horrible hack :-)18:00
gary_poster__new__ might also lead down interesting, horrible paths18:01
gary_posterif the contract is tighter than "callable + __storm_table__"18:02
abentleygary_poster: So, Store.find does appear to defer to the caller: http://pastebin.ubuntu.com/947827/18:02
gary_postercool18:03
abentleygary_poster: Unfortunately, my current work kinda assumed that I could serialize an IRunnableJob by writing out its table and id.18:05
gary_posterah18:05
deryckjcsackett or rick_h_ -- I've got a branch killing doctests for review.18:31
rick_h_deryck: cool, almost done with abentley's stuff and I can get right onto that18:31
deryckrick_h_, cool, thanks!  It's at: https://code.launchpad.net/~deryck/launchpad/refactor-editemail-doctest-363916/+merge/10371818:32
rick_h_deryck: ok, loading up now. Man, where's that achievement system from jono. I want a reviews badge for today lol18:35
deryckheh18:35
rick_h_deryck: #2 is just for my own curiosity as searching for doc gets me a ton of stuff18:55
deryckrick_h_, so #1 -- I can underbar the create methods. I only did the assert one differently, so it wouldn't be mistaken for any self.assertXXX methods provided by the test case classes....18:57
deryckrick_h_, #2 is due to the error message being an instance in one case, and unicode in all the others.18:58
deryckrick_h_, #2 cont. I think some of the form magic calls doc on the widget to get the error string.18:58
* deryck is re-reading #3 now :)18:58
rick_h_deryck: ok yea wasn't sure what .doc came from that seemed to imply it converted the input to unicode18:59
rick_h_deryck: I've been confused on #1 before as usually personally I'd _private things that weren't tests but were used but then again things like setUp/tearDown and all that aren't as well so I guess it goes either way18:59
rick_h_deryck: #3 just says that each unit test should start with a comment about what's being tested according to the testing style guidelines19:00
lifelesstearDown shouldn't be used :)19:00
deryckrick_h_, yeah, that's why I don't normally underbar something unless I need to signal it is somehow different.19:00
rick_h_and wasn't in this case for the record, just comparing the names of non test_methods19:00
deryckrick_h_, but if you want me to change either for consistency, I don't mind.19:00
deryckhi lifeless  :)19:01
rick_h_right, this only struct me because it did both, I see your point though now deryck. Up to you there19:01
lifelessderyck: o/19:01
deryckrick_h_, so can you point me at a line in that wiki your referring to. We're inconsistent about comments in unit tests, and I followed the example of the other tests in that file.19:02
rick_h_deryck: under "Python test cases" #319:03
deryckrick_h_, ah, see it now thanks.  I can update the other tests in this file then too.19:03
deryckrick_h_, and you know you're a new reviewer. ;)  That's a lot of wiki doc to read thoroughly. :)19:04
lifelessI think that line is too proscriptive; 'test intent should be understandable' is a much better rule19:04
rick_h_deryck: so jcsackett says I'm going to be set free for tues19:04
rick_h_lifeless: come on, I'm a fan of the comment string for a nice readable line in the error reporting :P19:04
rick_h_don't rain on my parade19:04
lifelessrick_h_: in the runner output? All my runners disable that as an antifeature19:05
rick_h_lifeless: yea19:05
deryckI feel like we should have something akin to "You might be a redneck" jokes sometimes....19:05
deryck"You might have a crazy test system if...."19:05
rick_h_hah19:05
deryckit requires multiple huge wiki docs to explain how to write good tests.19:06
deryck:)19:06
rick_h_well test names can be a bit shorter if you have a nice sentence on wtf just blew up in that first comment line. I like that as someone that blows up other peoples testes a lot lol19:06
deryckI really don't mind adding a comment.  Just kidding around.19:06
rick_h_I'm just sticking up for my anti features :)19:08
sinzuirick_h_,  I replied and pushed a change to verify that widget-position-ext is not needed: https://code.launchpad.net/~sinzui/launchpad/progressive-enhancement-ftw/+merge/10373319:28
rick_h_sinzui: saw that, so the two items are the alt tags and the hidden by default text of the links right?19:29
rick_h_did you want to worry about the hidden text bits as a seperate branch/item?19:29
rick_h_and I can approve it as is with the understanding the alt text can get added in?19:29
sinzuirick_h_, I updated my reply. alt tags never EVER worked on anchors19:30
sinzuirick_h_, title is universal and the only true mechanism to use in the 2000's19:32
rick_h_sinzui: ah ok, sorry I was looking at examples at the start wich are tests anyway19:34
sinzui:) That is my trick19:35
rick_h_sinzui: thanks for the updated comment. Marked ok19:35
sinzuifab.19:35
* sinzui reports bug to remove widget-position-ext source-dep19:36
=== rick_h_ changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | On call reviewer: jcsackett | Firefighting: - | Critical bugs: 3.47*10^2
sinzuirick_h_, the http://pictos.cc/font/ is really great. I want to build something with it20:10
abentleyjcsackett: Could you please review https://code.launchpad.net/~abentley/launchpad/efficient-universal-source/+merge/103768 ?20:28
jcsackettabentley: it's in my queue. might be a bit, it's not a short queue. :-)20:28
abentleyjcsackett: That's a second one.20:29
jcsackettabentley: got it, just letting you know i'll get to it asap.20:29
abentleyjcsackett: Cool.20:29
rick_h_sinzui: so I changed over to an open source version: http://fortawesome.github.com/Font-Awesome/20:33
rick_h_sinzui: I paid for pictos though20:34
sinzuiThat is nice too20:36
rick_h_yea, only reason I switched was license, but yea it's nice to use the font idea like that20:37
jcsackettabentley: r=me on that branch, in case you missed the email.21:24
=== jcsackett changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | On call reviewer: - | Firefighting: - | Critical bugs: 3.47*10^2
abentleyjcsackett: thanks.22:02
=== salgado is now known as salgado-afk
StevenK-            'text': '** Visibility changed to: Public',23:15
StevenK+            'text': '** Information type changed from User Data to Public.',23:15

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!