=== ursula is now known as Ursinha === Ursinha is now known as Ursinha-afk === Ursinha-afk is now known as Ursinha-nsakf === Ursinha-nsakf is now known as Ursinha-nsafk === Ursinha-nsafk is now known as Ursinha-afk === gmb-sprinting is now known as gmb === Ursinha-afk is now known as Ursinha [14:00] #startmeeting [14:00] Meeting started at 09:00. The chair is barry. [14:00] Commands Available: [TOPIC], [IDEA], [ACTION], [AGREED], [LINK], [VOTE] [14:00] hello and welcome to this week's ameu reviewers meeting. who's here today? [14:00] me [14:00] me [14:00] me [14:01] gah === vednis is now known as mars [14:01] me [14:01] me [14:01] me [14:01] so, the team on sprint is all here [14:02] [TOPIC] agenda [14:02] New Topic: agenda [14:02] == Agenda == [14:02] * Roll call [14:02] * barry to miss the next two weeks [14:02] * plurals, curtis [14:02] * Peanut gallery (anything not on the agenda) [14:02] * Action items [14:02] * Mentoring update [14:02] [TOPIC] * barry to miss the next two weeks [14:02] New Topic: * barry to miss the next two weeks [14:02] me [14:03] so, i'll be at pycon the next two weeks and won't be able to meet. does someone want to take over chair duties for the next two weeks or should we bag the meeting? [14:03] * barry can guess based on today's stellar attendance :) [14:04] i guess i'll send a message to the ml and we can just meet up again in 3 weeks === mrevell_ is now known as mrevell [14:04] [TOPIC] * plurals, curtis [14:04] New Topic: * plurals, curtis [14:04] sinzui: do you want to take this one? [14:04] me [14:05] I have struggled without how to write code in a clean and consisent fashion to handle cases where the page will say 1 member or 2 members. [14:05] barry: Bugs team is sprinting this week, so BjornT, intellectronica, allenap, adeuring and I won't be here... [14:06] gmb: thanks === gmb is now known as gmb-not-here-no- [14:06] I once used ngettext, but I was told to remove it [14:06] should we have a tale formatter to handle this in the template? [14:06] how would it handle irregular plurals? [14:06] view/count/fmt:singular/member/members [14:07] sinzui, probably [14:07] what is the rationale for not using ngettext? [14:07] sinzui, since every other web framework has said formatter, we may take that as a hint ;) [14:07] bigjools: I do not know [14:07] sinzui: you answered me already with your example, you just provide the alternative. np. [14:07] does zpt (or whatever sidnei is experimenting with) support this? [14:08] TALES i18n does not support ngettext either :( [14:08] flacoste: what do you think? [14:08] well [14:09] i think ngetttext is the way to go [14:09] but [14:09] curtis' suggestion is a good worst-solution [14:09] why can't we use ngetttext? [14:09] * sinzui nods [14:09] hmm, i wish gary was here [14:09] I don't recall the reason I was told to remove it [14:10] danilos: was kind enough to tell me to use it [14:10] me, sorry [14:10] My concern is that we void this situation my writing mediocre text like members: 1 [14:10] gary_poster: hi. we're asking about plural forms and ngettext in templates [14:10] gary_poster: we are discussing how to do plurals [14:10] s/void/avoid/ [14:11] gary_poster: zope.i18n doesn't have any support for it i htink [14:11] if are ever going to do proper i18n, we'd have to extend zope.i18n [14:11] barry, flacoste: ok, thanks. no support for plurals? that's surprising [14:11] if we are not interested in l10n as well, coming up with a simpler alternative might do the trick [14:12] gary_poster: sinzui suggested a formater, e.g. view/count/fmt:singular/member/members [14:12] barry: the problem with that is that it hurs i18n [14:12] flacoste: agreed! [14:12] barry: since that only supports english [14:12] I'd want to go to the author (Stephan Richter, IIRC) and verify before going too far; I'd also strongly believe that Zope would be very interested in this if we were working on it [14:12] flacoste: i'd much rather use the zopey way if there is one [14:13] gary_poster: could you ping stephan and see what he recommends? [14:13] I know of a zopey way for i18n collation...but don't know anything about plurals [14:13] barry: yes will do [14:13] everybody should note that ngettext-style depends on an argument (a number) being passed, so that's likely going to live in the view anyway [14:13] gary_poster: awesome, thanks [14:14] yes [14:14] if it's going to be in the template, it's going to be pretty awkward I assume [14:14] [ACTION] gary_poster to check w/stephan richter about the best way to do plurals [14:14] ACTION received: gary_poster to check w/stephan richter about the best way to do plurals [14:14] danilos: zope.i18n isn't about templates [14:14] danilos: tales uses zope.i18n for tempalte tranlsation [14:14] flacoste: right, but people are mostly interested in how it can be applied in templates, if I am not mistaken [14:15] danilos: i think view/templates [14:15] danilos: you can't format a message like that in templates [14:15] since grammar might have to change also [14:15] yes [14:15] flacoste: you certainly can, but TAL would not really work too well with it [14:15] agreed [14:16] danilos: have you seen a solution in another template language that works well? [14:16] gary_poster: work well, plenty, look good, none :) [14:16] s/language/system or whatever/ [14:16] * barry wants to ask if there are any template languages that actually do i18n well ;) [14:16] danilos: heh :-) [14:16] :-) [14:17] I've usually had to extend systems with my own formatters (did that ages ago for smarty and cheetahtemplates) [14:17] okay cool. gary_poster thanks for looking into that for us [14:17] barry: sure, np. [14:17] [TOPIC] * Peanut gallery (anything not on the agenda) [14:17] New Topic: * Peanut gallery (anything not on the agenda) [14:18] does anybody have anything not already on the agenda? [14:18] phew [14:18] [TOPIC] action items [14:18] New Topic: action items [14:19] * gary_poster to add `getStore()` as an alias for `_get_store()` [14:19] that was locally, which I did [14:19] (or at least that's how I interpreted it ;-) ) [14:19] gary_poster: you landed that in a branch already, right? [14:19] yeah [14:19] gary_poster: awesome, thanks [14:19] cool, np [14:19] * gary_poster will check to see if there's a bug open for adding a hook to `bzr send`, and submit one if there isn't [14:19] nope :-( [14:20] np [14:20] * flacoste to look into storm/sqlobject result set compatibility [14:20] * flacoste to work on API reviewer cheat sheet [14:20] hmm [14:20] flacoste: r.u.hoover? [14:20] yeah [14:20] but i think allenap solved the first one [14:20] iirc [14:21] flacoste: It should be in, or nearly merged into storm trunk. It should be an easy backport to our storm branch. [14:23] flacoste: Yes, it is merged into storm trunk. [14:24] are we here? [14:24] yes we are [14:24] barry is gone? [14:25] i'm back i guess [14:25] flacoste: keep these items or drop 'em? [14:25] barry: keep the hoover one [14:25] you got it [14:25] allenap: should we drop the other one? [14:26] flacoste: I don't follow... [14:26] allenap: storm result set compatibility [14:26] I think we should have a new task to backport that change into the LP storm branch. [14:27] I'll do that next week. [14:27] allenap, flacoste cool, let's keep this on the agenda then [14:27] shouldn't we jsut try pdating storm? [14:27] i think jtv was also interested in changes on trunk [14:27] I tried that once and there was lots of breakage, and I didn't have the fu to understand and fix. [14:28] But we should do it. The longer we leave it, the greater the breakage. [14:29] bigjools: i have your branch to review, thaks for working on those helper functions [14:29] no worries [14:29] it wasn't too hard [14:29] [TOPIC] mentoring updates [14:29] anything here? [14:30] well, i think we're done [14:30] #endmeeting [14:30] thanks everyone (except you mootbot) [14:30] :-) Thanks barry === salgado is now known as salgado-lunch === salgado-lunch is now known as salgado === thumper_laptop is now known as thumper === thumper_laptop is now known as thumper === salgado is now known as salgado-afk === gmb-not-here-no- is now known as gmb [22:24] rock. rock. rock. rock. rock. [22:28] soil? [22:30] Ha [22:30] Are we having a meeting? [22:31] here [22:31] paper? [22:32] #startmeeting [22:32] barry, There is already a meeting in progress. [22:32] tee hee [22:32] thank you mootbot [22:32] /msg mootbot shut up [22:33] okay okay, so... welcome to this week's asiapac reviewers meeting. who's here today? [22:33] I am. [22:33] jml: hi! [22:33] i am too [22:33] me [22:33] [TOPIC] agenda [22:33] New Topic: agenda [22:33] although I have about 13 minutes [22:34] * Roll call [22:34] * barry to miss the next two weeks [22:34] * plurals, curtis [22:34] * Peanut gallery (anything not on the agenda) [22:34] * Action items [22:34] * Mentoring update [22:34] [TOPIC] * barry to miss the next two weeks [22:34] New Topic: * barry to miss the next two weeks [22:34] the one it two weeks time is pycon, right? [22:34] so i'll be gone for the next two meetings. it sounded like ameu didn't want to meet while i'm gone. what say you? [22:34] probably not. [22:34] the main benefit of this meeting is connecting with AMEU. [22:35] mwhudson: actually next week i'll be at pycon too [22:35] right [22:35] oh right [22:35] i won't quite have left in 7 days time [22:35] i leave in about 7.25 days i guess :) [22:35] :) [22:35] anyway, no meetings for two weeks, ok, next [22:35] [TOPIC] * plurals, curtis [22:35] New Topic: * plurals, curtis [22:36] so in ameu sinzui brought up the problem of plural forms in zpts [22:36] which really aren't supported well [22:36] ugh yes [22:36] after the meeting we discussed alternatives with gary (who did some research) [22:36] and sinzui proposed something like... [22:37] view/count/fmt:singular/message/messages [22:37] which we all kind of thought was okay [22:37] done. any thoughts? [22:38] umm [22:38] ick [22:38] so fmt:singular adapts integers? [22:38] barry: I'd like to see a complete example, I think. [22:38] * barry delurks sinzui [22:38] I've used a plural helper in the view code [22:38] (because I have questions like mwhudson's) [22:38] I don't like the idea of a tal formatter [22:38] fmt:singular is a pretty crummy name [22:38] It's the same nasty for of ngettext(n, singular, plural) [22:39] it will not be pretty in templates [22:39] It may help us to avoid writing mediorce phrases like [22:39] proposed member: 1 [22:39] * thumper abstains [22:39] sinzui: so what is 'message' in that example? [22:40] fmt:singular/member/members [22:40] It does not help anyone that the 'member' text is move into a tag [22:41] * jml feels a bit dense [22:41] sinzui: what about fmt:singular/approved branch/approved branches/ [22:41] tal needs a switch construct [22:41] do spaces kill it? [22:41] thumper: I would *love* that, but path adapters do not alolow spaces [22:41] s/approved// [22:42] well, we all agree it's not great, but there are limited options [22:42] barry: I'm sure there are cases where we want two words [22:42] approved in the tal wouldn't be translated [22:42] sinzui: so

You have

[22:42] ? [22:42] yes [22:42] * thumper really has to run soon [22:43] thumper: a quick skip ahead to action items then... [22:43] * mwhudson finds where he wrote "jobs" [22:43] * thumper to open bug on `webservice` pagetests globs problem [22:43] mwhudson: ug, i'm not sure that's better :/ [22:43] anyway [22:43] it's not [22:43] * thumper tries to remember what it was [22:43] havent' filed one [22:44] thumper: salgado is an admin [22:44] was it that they are all salgado? [22:44] in the sample data [22:44] right [22:44] not done [22:44] thumper: keep on the agenda or not's all i care about [22:44] keep [22:44] thumper: got it [22:44] thx [22:45] anyway, just to close the loop on the plurals thing: if you guys have better ideas, please email the list. nobody especially happy about the tal formatter, but we don't have better ideas [22:45] ok. [22:45] has an email been sent to the list yet? [22:46] mwhudson: i don't think so. i /think/ it was discussed in a review [22:46] ok [22:46] it would be good if someone sent an email, I think. [22:46] * barry hopes sinzui will email about it [22:46] maybe we can trick sinzui into writing a mail [22:46] :) [22:46] mwhudson: i'll slip something into his coffee tomorrow morning [22:46] anyway... [22:46] ok [22:46] [TOPIC] * Peanut gallery (anything not on the agenda) [22:46] New Topic: * Peanut gallery (anything not on the agenda) [22:47] do you guys have anything not on the agenda today? [22:47] I have some things [22:47] * assertFoo vs failUnlessFoo [22:47] * messages in assertions & TestStyleGuide [22:47] * super vs upcalling [22:47] * thumper leaves [22:47] jml: floor is yours [22:47] These all came up in reviews. [22:47] thumper: bye [22:47] jml: I'll talk to you later about these [22:47] thumper: ok. [22:47] grepping shows assertFoo is currently preferred to failUnlessFoo. [22:47] I think we should lean that way. [22:48] jml: lean toward assertFoo? [22:48] barry: yeah. no need to use the failUnless methods at all, I reckon. [22:48] jml: very occasionally i find failUnless reads better, but generally i agree [22:49] cool. [22:49] yes [22:49] apparently the TestStyleGuide recommends using messages in assertions [22:49] sometimes i feel failFoo reads better for guard assertions [22:49] [ACTION] barry will add the preference for assertFoo to the TSG [22:49] ACTION received: barry will add the preference for assertFoo to the TSG [22:50] mwhudson: agreed. it shouldn't be a hard and fast rule, but a strong preference [22:50] to do this properly with the default TestCase, you need to do your own string substitution of values. [22:50] all else being equal [22:50] barry: +1 [22:50] jml: yeah, think often messages are superfluous [22:50] barry: +1 [22:50] superfluous and paradoxically confusing [22:50] I had a whole bunch of really useful arguments for this that I wielded in a review. [22:50] oh. [22:50] jml: i *really* like (informative) assert messages [22:50] barry: but wait, there's more :) [22:51] barry: I changed the default implementation of assertEqual in our base TestCase class (canonical.launchpad.testing.TestCase -- you're all using that, right?) [22:51] given that we have tracebacks and assertFoo methods that produce reasonable messages on their own.... [22:51] mwhudson: exactly [22:51] mwhudson: a message is often a cheap substitute for a domain-specific assert method. [22:51] anyway [22:52] the default implementation now includes the message *and* the two compared values, pretty printed, in the exception [22:52] just like bzrlib. [22:52] jml: wait. you're not talking about assert statements! [22:52] barry: no, not assert statements, assertions in tests. [22:53] barry: sorry for the confusion. [22:53] jml: ah. i think i'm starting to agree with you then :) [22:53] anyway. [22:53] (we shouldn't write assert statements, probably, a different bikeshed though) [22:54] basically, the TSG should be updated to say a) we use *our* base TestCase, b) you don't need to provide a third parameter to assertEqual [22:54] jml: +1 [22:54] jml: +1 [22:54] and the final thing is upcalling vs super. [22:55] jml: though i think we very often /don't/ use our TestCase :( [22:55] barry: TestCaseWithFactory is more commonly used, and it's a subclass. [22:55] [ACTION] barry to update TSG to state we should use our TestCase base and not use 3rd args to assertFoo() [22:55] ACTION received: barry to update TSG to state we should use our TestCase base and not use 3rd args to assertFoo() [22:55] barry: my secret squirrel plan is to add testtools to rf deps and then make that the base of our base :) [22:55] jml: jfdi [22:56] need to RT & all that. [22:56] (which reminds me, can you please merge testtools into python trunk pls?) [22:56] * barry coughs: zc.buildout [22:56] anyway, upcalls [22:56] personally, I think they are clearer. also, mostly in tests & Twisted-using code, you are forced to use them. [22:57] jml: i recall a long discussion with SteveA about this and that z3 basically requires you to super() [22:57] barry: and Twisted requires you to upcall :) [22:57] jml: there's no "up" in "super" [22:58] oh wait [22:58] barry: I haven't seen any subclassing APIs in z3 [22:58] jml: look at the request code sometime :) [22:58] as in z3 things you need to subclass to work. [22:58] mwhudson: I use my third eye for that stuff :) [22:59] almost everything in Launchpad isn't the request code though. [22:59] jml: how often does twisted and zope intersect? [22:59] anyway, I suggest that the review attitude to upcall vs super be, officially, "chill Winston". [22:59] barry: mostly in tests. [23:00] (where you have to upcall because most of the base classes are old-style) [23:00] jml: heh [23:00] jml: yeah. old-styles /have/ to upcall [23:00] barry: there's a lot of old-style code out there [23:00] jml: 'cept all our own classes are always new-style [23:00] Twisted, for one, hasn't switched because it *changes the API of the class* [23:01] barry: I have a Python riddle [23:01] class A [23:01] is oldstyle [23:01] * barry only does haikus [23:01] __metaclass__ = type [23:01] class B(A): [23:01] class B is _____? [23:02] newstyle/ [23:02] should it upcall or use super? [23:02] class C(B): [23:02] should it upcall or use super? [23:02] (Python is the ideal teaching language) [23:03] jml: B is oldstyle [23:03] jml: none of our exceptions would work if this wasn't true :) [23:03] it has to be because new style classes can't have only classic class bases [23:03] oh of course :) [23:04] so it has to upcall [23:04] anyway, I renew my request to relax the review attitude toward upcalling. :) [23:04] jml: so basically your suggestion is to chillax and let the dev do what they want? [23:04] barry: yes. [23:04] barry: as long as it works. [23:04] +1 [23:04] i'm okay with that [23:05] barry: cool. [23:05] that's all I have to say :) [23:05] [] [23:05] jml: great, thanks! [23:05] barry: np. [23:05] i have nothing else for today. how 'bout you? [23:06] not I. [23:06] barry: i'm good [23:06] barry: thanks [23:06] awesome, thanks guys. [23:06] #endmeeting [23:06] Meeting finished at 18:06. [23:06] mwhudson: see you next week :) [23:06] barry: yeah! [23:07] sinzui, bac, barry -> dinner [23:07] barry: i arrive fairly late the night before the conf starts [23:07] mwhudson: thursday? [23:07] barry: land at 2000 or so [23:07] barry: yeah [23:07] barry: i shall investigate hotel bars until i find someone i recognise :) [23:07] mwhudson: sounds like a plan! [23:07] mwhudson: i'll keep an eye out for ya [23:08] bye guys [23:08] barry: cool [23:08] bye