/srv/irclogs.ubuntu.com/2008/06/04/#launchpad-meeting.txt

* ToyKeeper wonders how to get relatively small feature requests pushed through the launchpad development process05:59
jmlToyKeeper: filing a bug works pretty well, as does mentioning it on the #launchpad channel.06:01
ToyKeeperBug 161187 has been idle since November, and seems like it'd be a pretty quick, low-risk enhancement.06:01
ubottuLaunchpad bug 161187 in launchpad "not obvious how to add a download file for a new release" [Medium,Confirmed] https://launchpad.net/bugs/16118706:01
ToyKeeperOops, this is -meeting.  Xchat cuts off the tab titles.  :006:01
mrevellg09:17
=== cprov is now known as cprov-lunch
=== salgado-afk is now known as salgado
=== mrevell_ is now known as mrevell-lunch
=== mrevell-lunch is now known as mrevell
=== barry_ is now known as barry
barryhello everyone and welcome to this week's ameu reviewers meeting.  who's here today?15:01
=== bigjools_ is now known as bigjools
sinzuime15:01
bigjoolsme15:01
schwukme15:01
bacme15:01
allenapme15:01
intellectronicame15:01
flacosteme15:02
salgadome15:02
barryBjornT: ping15:02
barrydanilos: ping15:02
barryEdwinGrubbs: ping15:02
barrygmb: ping15:02
intellectronicabarry: gmb had to leave urgently earlier today, so he probably won't be participating in the meeting15:02
BjornTme15:03
EdwinGrubbsme15:03
barryintellectronica: okay thanks (hope all is okay)15:03
barrystatik: ping15:03
barryi think that's everyone15:03
statikme!15:03
barry== Agenda ==15:03
barry * Roll call15:03
barry * Next meeting15:03
barry * Action items15:03
barry * Queue status15:03
barry * Mentoring update15:03
barry * Review process15:03
barry   * domain-specific cheat sheets: there should be only one way to do it15:03
barry   * (intellectronica) What should our policy be for the formatting of destructuring assingments?15:03
barry * Next meeting15:03
barryeveryone good for next week, same time & place15:04
barrywe'll take that as "yes" :)15:04
barry * Action items15:04
barry * barry to start discussion of big branch rejection policy on ml15:05
* barry sucks15:05
barry * bigjools to start domain specific cheat sheets15:05
* bigjools sucks too15:05
barry * flacoste to add `safe_hasattr()` to `lazr.utils`15:05
bigjoolstbh I won't start that until after 2.015:05
barryflacoste: does NOT suck!15:05
flacostedone!15:05
barrybigjools: okay, should we leave it on there or axe it?15:05
bigjoolsbarry: it might be better to axe it until we can all agree on a good format for each project15:06
barrybigjools: done15:06
bigjoolscommon format, I mean15:06
barry * bjorn to add recommendation to test style guide saying don't use asserts in doctests15:06
barryBjornT: ^^15:07
BjornTthat's done15:07
barryBjornT: excellent, thanks!15:07
barry * Queue status15:07
barryjml was going to remove his rejected branch from the general queue15:08
intellectronicathere are quite a few branches on the general queue. i suggest allocating to reviewers at the end of allenap's shift and mine if we didn't finish15:08
barryother than that, how are things going?15:08
barryintellectronica: +115:08
barryintellectronica: favor mentorees if you can15:08
intellectronicaah good idea, wouldn't have thought about that15:09
* bigjools does not need any more this week!15:09
intellectronicabigjools: noted. but you can always reject if you're overloaded15:09
bigjoolsjust saving wasted effort ...15:10
barryany other queue related comments?15:10
barry * Mentoring update15:11
barryif you have graduations or suggestions for recruits, send 'em to me15:11
barrythat's all i have15:12
flacostethat was shor115:12
barrywait, just on mentoring...15:12
barry * Review process15:12
barry   * domain-specific cheat sheets: there should be only one way to do it15:12
intellectronicayeah, you should _always_ cheat15:13
barrybigjools: something was suggested in the asiapac meeting, regarding the soyuz suggestion you made.  jml thought that the code should express there's only one way to do it15:13
bigjoolsbarry: that would be quite hard15:13
bigjoolsbut I understand the ethos15:14
barrybigjools: make it a private attribute?15:14
barrybigjools: or, er non-public15:14
barrybut in general, yes, that's what we should be doing15:14
bigjoolsit needs lots of drive-by fixing before that can happen, but yes I agree15:14
bigjoolsencapsulation is the way forwards15:15
bigjools;)15:15
barrybigjools: cool :)15:15
barrybtw intellectronica :)15:15
barry   * (intellectronica) What should our policy be for the formatting of destructuring assingments?15:15
barryintellectronica: the floor is yours15:15
intellectronicawell, the question is pretty self explenatory15:16
intellectronicaa) (item1, item2) = multival_func()15:16
intellectronicab) [item1, item2] = multival_func()15:16
intellectronicac) item1, item2 = multival_func()15:16
intellectronicawhich one should it be?15:16
intellectronicai used to write c, today i reviewed b, and got convinced that it should probably be a15:16
* barry prefers (c) unless there's only one item15:16
* bigjools votes (a) or (b) but not (c)15:16
bigjoolsand kiko preferred that too15:16
* sinzui lists c15:17
* bac prefers c15:17
* allenap prefers c15:17
salgadoyeah, I prefer (c) too15:17
kikowhat are the dangers with c)15:17
barrybigjools: kiko prefers (c)?15:17
* EdwinGrubbs thinks "item1 = func()[0]" looks cleaner for a single value15:17
* sinzui likes c15:17
kiko?15:17
barryEdwinGrubbs: i agree, but there's been disagreement over that one.  SteveA prefers:15:17
intellectronicakiko: you mentioned problems when refactoring. one could get confused when cut-and-pasting code, i suppose15:17
barry[item] = func()15:17
* flacoste voes c15:18
barryand i've tended to let those go in reviews these days, though i was much stickier about them at one time15:18
flacostethat's because it's easy to miss the trailing comma15:18
barryflacoste: yes, definite this would suck:  foo, = func()15:18
flacosteor because that makes sure that you are really expecting only one items15:18
flacoste[item] = func() vs item func()[0]15:19
barrySteveA: things the latter looks "magical"15:19
barryer, s/things/thinks15:19
* allenap prefers tuple literals: (item,) = func()15:19
intellectronicai think the format for two items should be identical to the format for one item, for simplicity15:19
sinzuibarry: the latter is obtuse15:19
EdwinGrubbs(foo,) = func() would also look ugly15:19
barryi.e. it's not clear that you're expecting func() to return a sequence of exactly one item15:19
EdwinGrubbs[foo] = func() is cleaner15:20
barryintellectronica: well, unfortunately, python has this syntactic wart, so i'm not in favor of consistency here15:20
salgadoI think we should use "[item] = singleval_func()" and "item1, item2 = multival_func()".  the reason being that in the first case that makes it clear that the return value is expected to have a single value and the brackets makes it more visually distinctive than a single trailing comma (e.g. "item, = func()")15:20
barrysalgado: +115:21
allenapfunctions always returning a 1-tuple are probably broken anyway.15:21
intellectronicabarry: we could always use square brackets. i also like omitting them, but kiko's argument was convincing15:21
bacand if you're only interested in the nth value?  is 'item = func()[n]' acceptable then?15:21
bigjoolshmmm it smacks of inconsistency to me15:21
flacostei think so15:21
barryallenap: i've seen them mostly in tests, where func() returns "some sequence" which for a test case happens to have exactly 1 item15:21
kikoyes15:21
kikoI personally feel that15:21
kikoa, b = x15:22
kikois kinda error prone15:22
salgadobac, in that case I usually unpack all items and then use only the one I want15:22
kiko(a, b) = x15:22
kikoI think that15:22
allenapbarry: ah, true.15:22
kikoa = x, y15:22
kikois even more error prone15:22
kikoand we should definitely always do15:22
flacostekiko: why is it error prone?15:22
kikoa = (x, y)15:22
sinzuiI like to see all the items unpacked...the identifier names act as documentation even when one one item is used.15:22
flacosteno, a, b = y15:22
intellectronicai agree with kiko. i think we should have `(x,) = func()` and `(x, y) = func()`15:22
kikoflacoste, because it's easy to miss the comma in long statements15:22
barrybac: i personally have no problem with that15:23
salgadobac, the reason why I do that is explained by sinzui above. :)15:23
kikoI've lost time tracking down this sort of sillyness15:23
flacoste(x,) = func() is error prone15:23
intellectronicasinzui: but won't lint error on that?15:23
flacostethat's easy to miss the comma there and do15:23
flacoste(x) = func()15:23
flacostewhich isn't the same thing15:23
sinzuiintellectronica: pylint sucks!15:23
flacostei'm -1 on (x,)15:23
kikoflacoste, agreed. if you have a comma, we should have multiple items15:23
kikoI'm -1 on (x,) as well15:23
kikoI am +1 on (x, dummy)15:23
kikothat's what I mean.15:23
kikono implicit tuples I think?15:24
intellectronicabut if you return a 1-tuple?15:24
flacosteand why (x, dummy) over x, dummy?15:24
kikoanyway, just my 2c15:24
flacosteintellectronica: x = func()15:24
kikoflacoste, because it's easy to miss the comma.15:24
kikoas I said above? :)15:24
flacosteand use x as a tuple15:24
flacostehow would you miss the ocmma?15:24
barrybtw, this pertains to record-type tuple unpacking, not list-type sequence unpacking.  i.e. if you really are interested in the 7th item in a 7-string list, use mystrings[7]15:24
flacosteyou xdummy?15:24
flacosteyou read xdummy?15:24
kikoflacoste, it is trickier when there's other punctuation or long words.15:25
barrykiko: i only find them hard to miss when they are trailing commas, but that's just me15:25
kikobut as I said, it was just a suggestion, I will keep on being explicit in code I write :)15:25
intellectronicaok, if 1-tuples are not relevant to the discussion, then i think (x, y) = is the best option15:26
salgadowhy aren't 1-tuples relevant?15:26
sinzuiintellectronica: the pylint warning is an edge case. I have added disabled the warning. We could have a rule that identifiers ending in a trailing _ are to be ignored.15:26
intellectronicasalgado: because they only happen when you return a sequence, not when you return a structure15:27
sinzuiintellectronica: ignore that middle-would-be-sentence15:27
barrydo we need a guideline here, or can we accept both "x, y =" and "(x, y) = "?15:28
BjornTintellectronica: tests do unpacking of sequences quite often, where the length of the sequence is well-known15:28
barryBjornT: in tests, i think [foo] = func() is fine15:29
intellectronicaBjornT: sure, but they could still make an exception for 1-tuples15:29
barrythough i still prefer foo = func()[0]15:29
bigjools[0] is a magic number though15:30
BjornTbarry: i kind of agree with you. in tests i prefer [foo] = func(), but in real code i prefer foo = func()[0], together with an assert len(func()) == 115:30
sinzuibarry wont get that past me in a review15:30
BjornTif you use an assert, the 0 isn't very magical15:31
barryBjornT: +115:31
barryBjornT: i definitely prefer the much more explicit length assertion15:31
flacosteverbose15:31
barry[foo] = func() seems passive agressive to me :)15:31
flacosteconsise15:32
flacosteconcise15:32
bigjoolsI must admit, I've got to prefer the short form for its conciseness15:32
salgadowe seem to have only two occurrences of that in non-test code15:33
salgadodatabase/queue.py:            [source] = self.sources15:33
salgadowebapp/dynmenu.py:            [name] = self.names15:33
intellectronicaanyway, [foo] is a slightly degenerate case that should only happen in tests, so we should decide on the multiple value, and allow for exceptions if we only have one value15:33
salgadoand a third one15:34
salgadoscripts/ftpmaster.py:        [action] = self.args15:34
barryintellectronica: agreed, okay, here's the vote:15:34
barry(a) foo, bar = func(); (b) (foo, bar) = func()15:34
barrywhat say ye: a or b15:34
intellectronicab15:35
flacostea15:35
barrya15:35
bigjoolsb15:35
salgadoa15:35
BjornTa15:35
baca15:35
sinzuia15:35
allenapa15:35
statika15:35
barryokay, unless the australian superdelegates steal the election, we'll go with (a)15:36
intellectronicabigjools: you see, you thoght convincing me would save you some work, but now you'll have to change it :)15:36
bigjoolsintellectronica: too late!15:36
barryanyway, that's all i have.  we have 9 minutes for anything not on the agenda.  anybody have anything else?15:36
bigjoolsI think it's inconsistent between one and many values now, but hey ho15:37
mptbarry, judging by the "baa baaaaa", it looks like they already have ;-)15:37
sinzuiI propose that we end unused identifiers with an underscores (ot 2 underscores). It makes it a clearer which as really needed. I can add a pylint rule to never warn that they are unused.15:37
* barry will update the style guide and send an email15:37
barrysinzui: ?15:38
bigjoolsfor tests?15:38
* sinzui asks fore better typing for his birthday15:38
barrysinzui: i don't understand the suggestion15:38
salgado(thing_i_want, thing_I_dont_want_) = foo() ?15:39
sinzuibarry: I want a naming convention for variables that are unpacked and unused by the code.15:39
sinzuiWe can also tell pylint to ignore them.15:39
barrysinzui: oh, i use 'ignore'15:39
bigjoolsI quite often do dummy = func() in doctests when func produces unwanted output15:39
barryas in: ignore, ignore, supergoodness, ignore, ignore = func()15:40
sinzuibarry: what is ignore? a port, a day?15:40
salgadoI use dummy, but that doesn't tell me what data it's supposed to hold15:40
barrysinzui: who cares?15:40
bigjoolsif you're ignoring it who cares15:40
sinzuibarry: I care!15:40
sinzuibarry: I'm an idiot. I want to know what the ignored variable is. I may want to use it15:41
barrysinzui: then it's really not unused is it?15:41
sinzuibarry: then I rename it15:41
barrysinzui: i don't see how you can have a naming convention for items you don't care about if you really want to know what they are :)15:42
sinzuibarry: The code may not use them, but what they are is self-documentation15:42
=== cprov-lunch is now known as cprov
barrysinzui: so then, what naming convention are you proposing?15:43
sinzuiending the dummy variables with an underscore (or 2 of them)15:43
=== mrevell_ is now known as mrevell
allenapscheme_, netloc_, path, query, fragment_ = urlparse.urlsplit(...)15:44
sinzuibarry: pylint will complain about unused variables. I have seen a number of meaningful names in an unpack statement changed to dummy.15:44
barryallenap: oh, i don't think i've seen that.  yeah, that's ugly15:44
sinzuiallenap: right15:45
barrysome of those will go away in python 2.5 anyway, y'know15:45
sinzuiallenap: in py 2.5 you can use their names15:45
barrysinzui: exactly15:45
barrynamed tuples rule15:45
allenapDo you mean 2.6?15:46
barryanyway, we're out of time.  sinzui take it to the ml?15:46
sinzuiok15:46
barryallenap: nope, 2.515:46
allenapReally, I didn't know. Cool :)15:46
barrythanks everyone, that's it.  have a good week!15:46
barry#endmeeting15:46
* barry looks to the sky and yells: moooootbooootttttt!15:47
intellectronicathanks barry15:47
=== mrevell_ is now known as mrevell
=== Moot2 is now known as MootBot
=== kiko is now known as kiko-fud
=== salgado is now known as salgado-lunch
=== salgado-lunch is now known as salgado
=== kiko-fud is now known as kiko
=== kiko is now known as kiko-afk
=== salgado is now known as salgado-afk

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