/srv/irclogs.ubuntu.com/2010/03/23/#launchpad-reviews.txt

NCommanderanyone around?01:53
* thumper hides02:05
NCommanderthumper: can I tempt you for a review? :-)?03:36
thumperNCommander: not right now, I'm just about to go make dinner and come back later this evening03:37
NCommanderthumper: fair enough03:37
mwhudsonNCommander: i might be able to have a look at it03:40
NCommandermwhudson: cool!03:41
NCommandermwhudson: https://code.edge.launchpad.net/~mcasadevall/launchpad/raw_source_changelog_librarian - it probably needs another ec2test run but I fixed all the failures that were in the email03:41
mwhudsonNCommander: did you know that there's a theoretical limit of 800 lines of diff for a review?03:51
mwhudsonoh i see, a lot of the diff is sampledata changes03:52
NCommandermwhudson: no I didn't, although the wiki says to ignore the sampledata change size :-/03:52
mwhudsonNCommander: it's getting a bit late for me, but does your branch store the changelog in the database or in the librarian?04:13
NCommandermwhudson: librarian. See dscfile.py changes04:13
NCommandermwhudson: findAndMoveCopyright and the self.librarian.create call04:14
mwhudsonNCommander: then the sampledata changes look strange04:14
mwhudsonas they seem to include big chunks of changelog04:14
mwhudsonNCommander: do you need to regenerate the sampledata again?04:15
NCommandermwhudson: I see a whole lot of NULLs for the pointer to LFA. There is some changelog data stored in the database by the existing code however04:16
NCommandermwhudson: thats going to get depericated and eventually removed with a little luck04:16
mwhudsonoh ok04:17
mwhudsonahh, happiness is meld on a bigger monitor04:17
NCommandermwhudson: that's the changelog_entry your probably seeing, and there are quite a few issues with its design sadly, raw source changelog will hopefully let us replace it -)04:17
NCommandermeld?04:17
mwhudsonNCommander: a diff tool04:17
NCommandermwhudson: I'm sorry to keep you awake :-/04:19
mwhudsonaagh soyuz code it burns the eyes04:19
mwhudsonNCommander: it'04:19
mwhudsons only late to be concentrating, not to be awake :)04:20
NCommandermwhudson: heh, I plan to be writing more soyuz code in the future, so make sure the brian bleach is near by04:20
mwhudsoncreateUploadedSourcePackageRelease takes far too many arguments04:20
NCommandermwhudson: no kidding :-/04:21
mwhudsonNCommander: ah right, i've finally found the interesting parts of your change04:23
NCommandermwhudson: I'll be AFK for about 15 minutes04:46
mwhudsonNCommander: it'll probably be that long before you have a review, but thanks for letting me know04:47
NCommandermwhudson: back05:03
mwhudsonNCommander: still going!05:03
mwhudsonNCommander: review submitted05:07
NCommandermwhudson: thanks. Fixing.05:12
NCommandermwhudson: maybe yo ucan explain when a module should be in __all__05:13
mwhudsonNCommander: well, maybe that's overly picky of me05:13
mwhudsonNCommander: one way around is that it _needs_ to be in all if it's imported in another module05:13
mwhudsonNCommander: i guess the question is, is findFile part of the 'public interface' of the module05:14
mwhudsonit's a close call in this case05:14
NCommandermwhudson: I think its used in the test suite05:15
NCommandermwhudson: ugh, a few of these exist just before I didn't properly clean up with all the refactoring this branch has gone through05:16
* NCommander headthunks05:16
mwhudsonNCommander: that's what reviews are for :-)05:16
NCommandermwhudson: with 10MiB changelog, that was a security fix that was discovered when I was writing the code05:17
NCommandermwhudson: bigjools and I threw some numbers, and we decided 10MiB was a good value. The old value was 2GiB (hardset DB limit)05:18
mwhudsonNCommander: ok05:18
mwhudsonNCommander: i remember some discussion05:18
mwhudsonbut i remembered it being about copyright, not copyright and changelog05:18
mwhudsonif i remembered wrong, that's fine :)05:19
NCommandermwhudson: well, that's from an earlier version of the branch where changelog and copyright were in the database05:19
NCommanderchangelog will now be in librarian instead of the DB, so I could actually drop that check05:19
NCommandermwhudson: or, well, move it to debian/copyright's finder function05:20
mwhudsonNCommander: in this case i'm just asking the question05:21
mwhudsonmaking sure you've thought it through05:21
mwhudsoni don't have the answer :)05:21
NCommandermwhudson: heh :-)05:24
NCommandermwhudson: you can't set changelog_path with dsc_file's path since its a temporary directory :-/05:26
* NCommander was greatly annoyed by having to make that interface change05:26
mwhudsonNCommander: i mean you could say dsc_file.changelog_path = foo then call findAndMoveChangelog(dsc_file)05:27
NCommandermwhudson: ah, I could do that, although then I need to whack the testing code a bit05:28
NCommandermwhudson: (I sorta like to keep my functions self contained, but maybe just because I'm weird ...)05:29
mwhudsonNCommander: maybe leave it05:30
mwhudsonNCommander: i'm off to sort out dinner, i'll be around ish for another 30 mins maybe but perhaps you'll need to get someone else to review the branch again05:34
NCommandermwhudson: I'm almost done fixing most of the issues05:41
NCommandermwhudson: pushed05:53
NCommander(and resubmitted)05:53
mwhudsonNCommander: you don't need to resubmit05:53
NCommandermwhudson: oh ...05:55
* NCommander already did :-/05:55
mwhudsonwell you'll know for next time :)05:55
mwhudsonNCommander: sorry have to go now, i'll review it first thing tomorrow if noone else gets to it05:57
NCommandermwhudson: fair enough05:58
StevenKNCommander: If you need to make changes to a branch, just push it, the MP is clever enough to realise the branch changed05:59
NCommanderStevenK: I hit the resubmit button so mwhudson Needs Fixing goes back to Review05:59
StevenKNCommander: You can edit the MP state too ...06:00
NCommanderStevenK: ah06:03
StevenKNCommander: I can edit my own MPs and set them betwen WIP, Needs Review and Merged. I'm unsure why the last one is allowed, but the first two make perfect sense.06:06
NCommanderStevenK: are you in ~launchpad?06:07
NCommanderStevenK: I can see Merged, but I always thought that's because I'm in ~launchpad06:07
StevenKI don't think so.06:12
StevenKConfirmed, I'm not a member of ~launchpad06:13
wgrantStevenK: What harm is there in letting people set their own MPs as Merged?06:45
wgrantIt's useful if it wasn't automatically detected.06:45
StevenKWell, what happens if an MP is set to Merged before it's even reviewed?06:46
wgrantIt drops off the review list.06:46
StevenKIE, it could just drop through the cracks if the submitter just sets it to Merged?06:47
wgrantYes.06:47
wgrantBut if they do that, then they're pretty silly.06:47
wgrantIt's just like if they set it back to Work in Progress06:47
StevenKI've done that, which is useful06:48
StevenK"I thought I was ready, oh damn, I missed x, y and z."06:48
NCommanderStevenK: file a bug?07:36
gmbstub, BjornT: Could you take a look at https://code.edge.launchpad.net/~gmb/launchpad/bugwatch-next_check-bug-544238 please? Really need to get this one landed as soon as possible.09:22
stubnag nag nag... :)09:26
gmb:)09:31
gmbstub: Thanks for the review :)09:31
NCommanderstub: BTW, mind looking at the revised raw source changelog (which now uses librarian when you get a chance?)09:34
NCommandermorning bigjools09:34
gmbjml: Can I have your vote on https://code.edge.launchpad.net/~gmb/launchpad/bugwatch-next_check-bug-544238 please?09:39
BjornTgmb: sure, i'll look at it, if you explain how it will be used in more detail :)09:39
gmbBjornT: Cool. So, we want to be a bit more sensible with scheduling bug watch checks. At the moment we check each watch once every 24 hours, but if it's erroring a lot (which we now record in the BugWatchActivity table) we don't want to check it so often.09:40
gmbBjornT: So, instead of building that logic into BugTracker.getBugWatchesNeedingUpdate(), which would be complex at best, we think we should have a garbo-hourly process that looks at all the bug watches checked in the last hour, checks to see how often they've errored and then schedules their next_check accordingly.09:41
gmbSo BugTracker.getBugWatchesNeedingUpdate() will look at the next_check field instead of lastchecked to determine whether a watch needs checking.09:41
gmbThe advantage is that we don't have to further complicate checkwatches to get the back-off for erroring watches.09:42
=== stub1 is now known as stub
BjornTgmb: ok, that makes sense. i'm wondering if we could find a better name? if you set next_check to some time, it doesn't mean that it will be checked exactly at that time, will it?10:00
gmbBjornT: Hmm, true. How about check_after?10:01
stubcheck_due ?10:02
* stub gets out his bike shed schematics10:02
gmbIt should be blue.10:03
BjornTgmb: maybe next_check is good, as long as there is a comment explaining the semantics. can't think of a better name, and i think next_check is better than the other suggestions.10:05
gmbBjornT: Right; I'll add the comment (should've added it anyway).10:05
NCommanderBjornT: you around?10:16
BjornTNCommander: kind of. i'm in desperate need of lunch, though :)10:21
NCommanderBjornT: ah, no rush :-)10:22
NCommanderBjornT: if after lunch you'd be willing to look at my raw_source_changelog_librarian branch, I'd be most grateful10:32
NCommanderstub: thanks for the review10:32
BjornTNCommander: sure. i have a bit of a backlog returning from vacation, but i'll try to get at it today10:36
NCommanderBjornT: thanks10:36
NCommanderBjornT: (its a new merge proposal versus the old one)10:36
=== stub1 is now known as stub
noodles775intellectronica: you don't think it's worth closing the choice edit before bringing up the confirmation?10:44
noodles775(for https://code.edge.launchpad.net/~intellectronica/launchpad/bug-531963/+merge/21628)10:45
intellectronicanoodles775: i do. thanks for your patch, that's exactly what i was missing :)10:45
intellectronicai didn't consider using css to get rid of it10:46
noodles775intellectronica: ah, I just didn't see it in the MP diff. Great.10:46
jmlgmb, I'm confused10:46
jmlgmb, do you want me to do a code review or a db review?10:47
gmbjml: Sorry, DB; typo when I requested the review.10:47
jmlgmb, ta10:48
NCommanderanyone around to do a code review?10:58
=== bac changed the topic of #launchpad-reviews to: on call: bac || reviewing: - || queue: [NCommander,jpds] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
bachi NCommander11:48
NCommandermorning bac11:48
NCommanderbac: https://code.edge.launchpad.net/~mcasadevall/launchpad/raw_source_changelog_librarian/+merge/2190911:48
bacNCommander: morning.  i'll take a look.11:48
NCommanderbac: thanks:-)11:48
=== bac changed the topic of #launchpad-reviews to: on call: bac || reviewing: ncommander|| queue: [jpds] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
bacNCommander: i see that branch has already been reviewed by michael.  generally, for consistency, we have the original reviewer look at changes.12:01
NCommanderbac: his comment he made earlier tonight was to have someone else look at it, else he'd look at it tonight12:04
NCommanderbac: 01:57:31 < mwhudson> NCommander: sorry have to go now, i'll review it first thing tomorrow if noone else gets to it12:04
bacNCommander: ah, ok12:04
NCommanderbac: sorry for the confusion12:05
bacNCommander: and is the branch really 2600 lines?12:05
NCommanderbac: no, its about ~100-200, but I regenerated sample data12:05
bacah, ok.  thanks for that12:05
* bac looks12:05
* NCommander hands bac the brain-bleach12:05
=== mrevell is now known as mrevell-lunch
bachi NCommander -- i've updated your MP.  just a few fixes and then it'll be ready to land.  thanks a ton for the branch!12:58
=== bac changed the topic of #launchpad-reviews to: on call: bac || reviewing: jpds|| queue: [-] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
NCommanderbac: I still need a BjornT +1 before it can land :-/12:59
bacNCommander: right12:59
NCommanderbac: ugh, I missed  afew changes. I shouldn't resubmit on lack of sleep >.<;13:00
bacNCommander: np13:00
bacjpds: i don't see your MP on https://code.edge.launchpad.net/launchpad/+activereviews13:01
jpdsbac: I think bigjools is dealing with it.13:05
bigjoolsyes13:05
=== 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
bacjpds: ok, great.  please remove your name from the topic if you line up a reviewer.13:09
NCommanderbac: I got everything fixed except one lint error that wasn't in code I modified. Its too long by one character, but I don't see a good way to break this up to multiple lines13:13
NCommander            DistroSeries.id == POTemplate.distroseriesID).config(distinct=True)13:13
NCommanderbac: suggestions welcome13:14
bacNCommander: what file?13:14
NCommanderbac: lib/lp/registry/model/distroseries.py13:15
NCommanderbac: sorry :-/13:15
bacNCommander: you could drop the .config() and put it on the next line as a separate statement13:18
backind of cheesy.13:18
NCommanderbac: er, I can?13:20
* NCommander isn't sure he's reading this right them, or why there is a == on that line13:20
=== mrevell-lunch is now known as mrevell
NCommanderbac: oh, I can. bugh, brain without coffee isn't good13:22
adiroibanhenninge: hi, do you have time to look at https://code.edge.launchpad.net/~adiroiban/launchpad/bug-201749/+merge/21250 ?13:34
henningeadiroiban: maybe later, I am at a sprint atm.13:35
adiroibanhenninge: ok. no problem!13:35
NCommanderbac: so, I fixed everything, except utilities/paste doesn't work for me (it wants a python module which I'mlooking for now)13:39
bacNCommander: you can do it by hand.  was just a suggestion13:40
NCommanderbac: ah, ok13:40
bacNCommander: but i'd be interested to hear why it doesn't work.  you do have launchpad-dev-dependencies installed?13:40
NCommanderbac: I do, python-clientcookie wasn't installed13:41
NCommanderbac: changes made, incremental diff posted. I think I addressed all of mwh and your concerns14:01
NCommander[topic] on call: bac || reviewing:  -|| queue: [NCommander] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews14:03
NCommanderer14:03
=== NCommander changed the topic of #launchpad-reviews to: on call: bac || reviewing: -|| queue: [NCommander] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
bigjoolsrockstar: hi, fancy a UI pre-imp check?14:06
bacNCommander: approved with one tiny change.  thanks14:17
=== 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
NCommanderbac: eeek, oops. Sorry. I ran that test suite, nothing blew up :-/14:17
NCommanderBjornT: how goes your backlog?14:23
BjornTNCommander: slowly!14:35
NCommanderBjornT: ow :-/14:35
danilosbac, hi, do you have time to take a look at https://code.edge.launchpad.net/~danilo/launchpad/bug-545070/+merge/21938? (very simple terminology change)14:37
bacdanilos: yep14:37
danilosbac, thanks14:38
NCommanderBjornT: if you don't have time to look at my branch today, no rush. Its a pretty simple change (one row addition, forgein key on LFA), and its not a huge priority14:38
bacdanilos: r=bac14:39
danilosbac, thanks14:39
BjornTNCommander: oh, why didn't you say it was a simple change? :) approved14:45
NCommanderBjornT: awesome. Now how do I get it landed? :-)14:47
rockstarbigjools, sure!14:48
bigjoolsrockstar: great! https://code.edge.launchpad.net/~julian-edwards/launchpad/ppa-deletion-ui/+merge/2192514:48
BjornTNCommander: if you ask bac, he might be kind enough to help you :)14:48
bigjoolsrockstar: there's no tests yet, just the basic implementation14:49
bigjoolsbut feel free to have a play14:49
NCommanderBjornT: should the status be set to Needs merge versus Needs Review?14:49
rockstarbigjools, if it's UI, I don't care about tests.  :)14:50
bigjoolsrockstar: attaboy14:50
bacNCommander: are all of your changes done and pushed?14:51
NCommanderbac: yes.14:51
bacNCommander: ok, i'll send it through ec2 and land it for you14:52
NCommanderbac: w00t14:52
rockstarbigjools, so, I don't feel like I know enough about Soyuz to really grok what I'm trying to review here (and there's no movie/screen shot).  How can I get to the view?15:17
bigjoolsrockstar: go to http://launchpad.dev/~cprov/+archive/ppa15:19
bigjoolssorry I assume too much :)15:19
rockstarbigjools, :)  It's okay.15:19
rockstarbigjools, so, once a PPA is requested for deletion, can it be uploaded to?15:20
rockstarAlso, "Delete PPA" shouldn't show if the deletion request has already been made.15:21
bigjoolsOTP, will type when I can :)15:21
rockstarI also wonder if a red notification for "Deletion in progress" is probably better, since it's more likely to grab your attention.15:22
rockstarAlthough the red often means "It's broken. It's broken! It's BROKEN!!!!"15:22
EdwinGrubbsbac: can you review https://code.edge.launchpad.net/~edwin-grubbs/launchpad/bug-538469-invalid-upstream-link/+merge/2194715:45
=== salgado is now known as salgado-lunch
bacEdwinGrubbs: yes15:47
=== matsubara is now known as matsubara-lunch
=== bac changed the topic of #launchpad-reviews to: on call: bac || reviewing: edwin|| queue: [-] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
bigjoolsrockstar: ok sorry let me read backscroll16:05
=== deryck is now known as deryck[lunch]
bigjoolsrockstar: gnargh too many distractions16:34
bigjoolsrockstar: to answer your questions, no you can't upload to it, the browser code disables it for that reason16:34
bacEdwinGrubbs: nice.  r=bac16:37
EdwinGrubbsthanks16:38
rockstarbigjools, okay.  Did you see my other suggestions?16:38
bigjoolsrockstar: making it red?16:38
bigjoolsyeah16:38
bigjoolshow do I do that?16:38
=== bac changed the topic of #launchpad-reviews to: on call: bac-lunch || reviewing: -|| queue: [-] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
NCommanderbac: so, stupid question, is my branch on EC2, buildbot, or? (I'm kinda confused on how trees actually land ... or how PQM works)16:44
bigjoolsrockstar: what's the best way of making that notification box red?16:57
=== matsubara-lunch is now known as matsubara
=== salgado-lunch is now known as salgado
rockstarbigjools, I think that there's a similar method to the info notification method that does red boxes.17:06
bigjoolsperfect17:07
=== deryck[lunch] is now known as deryck
rockstarbigjools, also, the "Delete PPA" link shouldn't show if the deletion has already been requested.17:16
bigjoolsrockstar: I thought about that, it was easier to leave it and make the page template different!17:16
bigjoolsgenerally I really hate links appearing and disappearing with no explanation :/17:17
bigjoolsbut I can change it17:17
bigjoolsone day I hope we'll present disabled links17:17
rockstarbigjools, grey it out then?17:18
bigjoolsrockstar: does Link do that?17:18
rockstarbigjools, I don't think so, but it should...  :)17:19
bigjoolsheh17:19
rockstarbigjools, basically, you shouldn't be able to click it if it's no longer deletable (because it's already deleted)17:19
bigjoolsI didn't think about it too hard because it won't be around longer than 5 minutes17:20
rockstarhttp://validator.w3.org/feed/check.cgi?url=http%3A%2F%2Fplanet.nclug.org%2Frss20.xml17:20
bigjoolsin any case we're changing tack slightly, and only removing the repository, the PPA will be disabled and hidden17:20
* rockstar slaps his middle click17:21
rockstarbigjools, yeah, I figured that, but to the user, it's "deleted"17:22
bigjoolsrockstar: yeah17:22
bigjoolsrockstar: so I'll make the whole thing disappear and redirect  to the user's profile page, what do you think?17:22
rockstarbigjools, yeah, that's probably a good idea.17:23
rockstarAnd then the info notification is something like "The PPA deletion has been requested."17:23
bigjoolsright17:24
bigjoolsin red?17:24
bigjools:)17:24
rockstarbigjools, no, at that point, blue is fine.17:25
bigjoolsrockstar: cool, thanks for the pre-imp17:33
rockstarbigjools, no prob.17:33
bigjoolsrockstar: I'll ping you for a review when it's done, apparently you need the experience :)17:34
rockstarbigjools, yes, I'm only a lowly padawan.17:34
rockstarOne day I'll be a great Jedi warrior.17:35
rockstarEither that, or become Darth Vader.17:35
rockstarDepends on whether or not I fall in this river of lava.17:35
bigjoolsThese aren't the notifications you're looking for17:35
* bigjools waves hand17:35
bigjoolsmy font made me read that as river of Java17:36
=== gary_poster is now known as gary-lunch
=== salgado_ is now known as salgado
bacNCommander: can i get you to set the commit message on https://code.edge.launchpad.net/~mcasadevall/launchpad/raw_source_changelog_librarian/+merge/2190918:10
=== 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
=== 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
NCommanderbac: done18:33
NCommanderbac: did ec2 pass?18:33
bacNCommander: haven't sent it off yet.  there is a bug in our ec2 script.  will do so now that you've set the commit msg18:33
leonardrbac: very small branch https://code.edge.launchpad.net/~leonardr/launchpad/add-mutators/+merge/2196518:36
=== bac changed the topic of #launchpad-reviews to: on call: bac || reviewing: leonardr || queue: [-] || This channel is logged: http://irclogs.ubuntu.com/ || https://code.edge.launchpad.net/launchpad/+activereviews
=== 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
bacleonardr: done18:40
leonardrbac, great18:40
bacNCommander: i've sent your branch off to ec2 with 'ec2 land'.  if the tests pass it will go directly to pqm.  either way you'll get email18:40
bacwell, theoretically18:41
bacabentley: thanks for your email yesterday about the pitiful state of +activereviews18:44
abentleybac, :-)18:46
=== gary-lunch is now known as gary_poster
mwhudsonbac: are you running NCommander's branch through ec2 ?19:01
* mwhudson reads backlog19:01
mwhudsonbac: nm19:01
bacmwhudson: yeah, i just started it19:01
bacmwhudson: first attempt failed19:02
=== EdwinGrubbs_ is now known as EdwinGrubbs
=== EdwinGrubbs_ is now known as EdwinGrubbs
=== bac 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
=== salgado is now known as salgado-brb
bacNCommander: i sent your branch off to ec2 twice and if failed both times.  it didn't send email, though, so i'm not sure what the problem is21:52
bacNCommander: i'm running your tests locally21:52
NCommanderbac: ugh, now what? :-/21:52
bacsee if i can get output locally21:52
* NCommander feels like he really broke LP :-/21:53
mwhudsoncan someone stamp https://code.edge.launchpad.net/~mwhudson/launchpad/disable-test_import_bzrsvn/+merge/21984 pls21:56
=== matsubara is now known as matsubara-afk
NCommanderbac: I'm probably going to be poof soonish, and then I'm travellig, so this branch might end up sitting until next week if theres a legit test failure22:10
bacNCommander: i'll let you know what happens22:11
NCommanderbac: thanks.22:11
=== salgado is now known as salgado-afk

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