[05:55] <dilys> Merge to thelove@canonical.com/bazaar--devo--1.0: baz cacherev is now much smarter. 'baz cacherev (|patch-level|FQ(PN/VN)) now works' (patch-65)
[06:36] <stub> http://www.gnu.org/software/gnu-arch/  <-- The GNU Arch logo is a squid taking a crap???
[09:52] <sabdfl> stub: wrong window? /msg wife net time :-)
[09:52] <sabdfl> next
[09:54] <sabdfl> lifeless, SteveA: i'd like to get rid of the arch tags, but understand we don't want to lose changes in the process
[09:54] <sabdfl> can i suggest that the process be to move the offending file to filname.py.oldtag, then copy it to the new filename and remove the tag
[09:54] <sabdfl> we can remove the oldtag files once we are happy it won't lose changes
[09:59] <sabdfl> stub: still around?
[10:00] <stub> yo
[10:02] <sabdfl> any chance of a dogfood code update today?
[10:03] <stub> sure
[10:03] <sabdfl> thanks, i'mkeen to start polishing the malone UI and get feedback
[10:04] <stub> Last update was yesterday
[10:13] <sabdfl> i made some more tweaks last night
[10:13] <sabdfl> does it take a long time to rev it?
[10:14] <sabdfl> also, i'm trying to make newsampledata, has the procedure changed?
[10:20] <sabdfl> i did a "make" in the db/schema dir, then made my changes, then "make newsampledata", and the changes did not show up in the newsampledata
[10:20] <sabdfl> stub: ^ ?
[10:21] <stub> Its a fairly quick and painless procedure
[10:21] <sabdfl> erm, sorry, i'm an idiot
[10:21] <stub> I'm not aware of any sampledata changes
[10:21] <sabdfl> i was making the vchanges on the dogfood server, no wonder it didn't show up on my localhost :-)
[10:32] <sabdfl> SteveA, stub: is there any way to make widgets context-aware
[10:33] <sabdfl> for example, if we have already selected an upstream product, then when it comes to selecting packages, we should pre-show a shortlist of packages for those products
[10:33] <Kinnison> Morning
[10:34] <stub> sabdfl: A widget can get its context, as can a named vocabulary
[10:34] <sabdfl> ok, that's the context that it's running on
[10:35] <sabdfl> can that be used to share information between cooperating widgets?
[10:35] <sabdfl> hmm... no it can't
[10:35] <sabdfl> because that all has to happen client side, really
[10:35] <sabdfl> unless we make popups the default, and make the popup check the context too
[10:36] <sabdfl> here's the example: the "add a bug" form
[10:36] <stub> sabdfl: I think a widget might be able to locate other widgets in the same form, but you are right in that it would involve resubmitting the form
[10:36] <sabdfl> it has the bug details, then the upstream, then the package selector
[10:36] <stub> I think this is might example you are stealing ;)
[10:36] <sabdfl> it would make sense that the package selector would learn from the upstream product selector
[10:36] <sabdfl> might example?
[10:36] <stub> c/might/my
[10:37] <sabdfl> ry
[10:37] <sabdfl> using popups this could still work though
[10:38] <sabdfl> when the popup selector pops, does it contact the server at all?
[10:38] <stub> Yes - we would define a customized popup so that it interrogates the parent form for the product and only displays the available sourcepackages.
[10:38] <sabdfl> can't *only* display the available sourcepackages
[10:38] <stub> sabdfl: Yes - the popup window is a view on the page it was loaded from (the editform or addform view)
[10:39] <sabdfl> would have to allow you to search because we are not certain that every package and upstream is already in the db
[10:39] <sabdfl> and besides, a bug could affect two unrelated packages
[10:41] <stub> So the popup would default to showing the best guesses (if possible), but search is still possible?
[10:45] <SteveA> sabdfl: I think it would be fine to do what you suggest to all the files that have tags.
[10:46] <SteveA> the important thing is that files don't just disappear altogether
[10:53] <Kinnison> Morning lulu
[11:05] <lulu> kinnison: :o) again!
[11:18] <Kinnison> I need to add a whatever it is called (MultipleJoin ?) to the DistroRelease class in order to get at the DistroArchRelease objects related to it. How do I do that, given that DistroRelease is defined with the _columns = []  syntax ?
[11:27] <carlos> Kinnison: you can see an example at lib/canonical/launchpad/database/person.py
[11:28] <carlos> # RelatedJoin gives us also an addLanguage and removeLanguage for free
[11:28] <carlos>     languages = RelatedJoin('Language', joinColumn='person',
[11:28] <carlos>         otherColumn='language', intermediateTable='PersonLanguage')
[11:28] <carlos>     _emailsJoin = MultipleJoin('RosettaEmailAddress', joinColumn='person')
[11:28] <carlos> def emails(self):
[11:28] <carlos>         return iter(self._emailsJoin)
[11:29] <Kinnison> carlos: Right
[11:31] <Kinnison> So...
[11:31] <Kinnison>     _archJoin = MultipleJoin( 'DistroArchRelease', joinColumn='distrorelease' )
[11:31] <Kinnison>     def architectures(self):
[11:31] <Kinnison>         return iter(self._archJoin)
[11:31] <Kinnison> allows me to do something like:
[11:32] <Kinnison> for dar in dr.architectures():
[11:32] <Kinnison>    pass
[11:32] <Kinnison> yes?
[11:36] <carlos> Kinnison: I think so
[11:37] <Kinnison> cool; I'll try it later when I have a db to try it on :-)
[11:37] <carlos> Kinnison:  the "_archJoin" thing is only needed if you are exposing that in the interface
[11:38] <Kinnison> oh? Otherwise what should I do?
[11:38] <carlos> if it's for internal use, you can use it directly with other name
[11:38] <carlos> just architectures = MultipleJoin ...
[11:38] <Kinnison> oh righty
[11:41] <Kinnison> so...
[11:41] <Kinnison>     architectures = MultipleJoin( 'DistroArchRelease',
[11:41] <Kinnison>                                   joinColumn='distrorelease' )
[11:41] <Kinnison> let's me do
[11:41] <Kinnison> for dar in dr.architectures:
[11:41] <Kinnison>    pass
[11:41] <Kinnison> ?
[11:42] <stub> I've just done the dogfood update
[11:43] <Kinnison> elmo: ping?
[11:45] <carlos> Kinnison: yes
[11:45] <carlos> Kinnison: it looks like an attribute but it's a method
[11:45] <Kinnison> carlos: cool
[11:45] <carlos> or a kind of
[11:45] <Kinnison> Heh
[11:45] <carlos> that's how I see it, not sure if I'm wrong but it works that way :-)
[11:48] <Kinnison> >>> dr.architectures[0] .architecturetag
[11:48] <Kinnison> u'i386'
[11:48] <carlos> Kinnison: ;-)
[12:17] <SteveA> carlos: how is https://wiki.canonical.com/RosettaToDogfood going?
[12:17] <carlos> SteveA: don't know, I left on Thursday to attend a GNOME conference, I gave to daf a scritp to import the users into the dogfood server
[12:18] <carlos> SteveA: we had a problem with it and spiv was looking at it
[12:18] <SteveA> ok, let's ask daf when he is here.
[12:18] <carlos> I need to talk today with spiv and daf to know the status
[12:18] <SteveA> andrew is on vacation now
[12:18] <SteveA> you won't be able to talk with him
[12:18] <carlos> ok
[12:18] <SteveA> do you know what the problem was?
[12:19] <carlos> the transactions were not working
[12:19] <carlos> the import was done, but it was never committed
[12:19] <carlos> spiv said he saw it before but he was not able to reproduce it
[12:19] <carlos> until we gave him our script
[12:21] <SteveA> I can see that this is a problem with zopeless setup that needs fixing.  but it should not stop actually moving rosetta to use the dogfood server.
[12:21] <SteveA> the script could have explicit transaction handling in it
[12:22] <carlos> SteveA: If I do that, the script breaks
[12:22] <carlos> let me execute it and show you the error...
[12:24] <SteveA> ok
[12:25] <Kinnison> If I have been hacking on a pile of stuff and then I realise that I need to undo about four changes to a dir; commit everything else; then get that bit back; is it possible in tla?
[12:28] <Kinnison> aah buggrit; it can go as one uberchange and then I'll carry on hacking :-)
[12:30] <carlos> hmmm, it does not gives an error now, but the data is not stored
[12:31] <carlos> wait
[12:31] <carlos> ok
[12:31] <carlos> SteveA: it's fixed
[12:31] <carlos> I was looking at the wrong database
[12:32] <carlos> SteveA: it should work now if it's executed in the dogfood database
[12:32] <SteveA> ok.  is there anything else standing in the way of getting rosetta to use the dogfood system today?
[12:33] <SteveA> have the changes to virtual hosting set-up been discussed with elmo?
[12:36] <carlos> SteveA: don't know, that's the only thing that remains to move to dogfood server as soon as the script is executed in the new server
[12:37] <carlos> are we moving then to launchpad.domain or will we still use rosetta.domain?
[12:40] <SteveA> to users of the system, it will appear the same as before
[12:41] <carlos> ok
[12:51] <sabdfl> ok, bug assignment is looking a LOT better now
[12:51] <sabdfl> SteveA: in tal, how can is set an attribute to an element if something on the context is True?
[12:54] <SteveA> you mean an attribute in the xml sense?
[12:54] <SteveA> yeah
[12:55] <Kinnison> Okay; I've finally seen it too many times not to know what it means... what *is* 'tal' ?
[12:55] <SteveA> um, you'd say tal:attributes="foo python:context/truevalue and 'something' or None"  but that is very ugly
[12:55] <SteveA> better to use a method on your view's class
[12:56] <SteveA> Kinnison: "Template attribute language".  a language expressed as elements and attributes in a particular namespace, used in xml documents to do certain kinds of processing.
[12:57] <SteveA> used in wikipedia's wiki implementation, zope, plone, zope3, roundup, and various other places
[12:57] <Kinnison> SteveA: gotcha
[01:02] <sabdfl> SteveA: great, thanks, view method it is :-)
[01:03] <Kinnison> How do I get the equivalent of gdb for python then? E.g. perl -d
[01:04] <elmo> pdb
[01:05] <Kinnison> we don't seem to install that by default. Or is it a module or something?
[01:05] <Kinnison> elmo: any chance you can get mawson's archive mirror updated?
[01:06] <Kinnison> aah it is
[01:06] <elmo> it's a module - see the python docs
[01:06] <Kinnison> thanks dude
[01:06] <elmo> yeah, I'm doing it now
[01:07] <SteveA> Kinnison: neat way: insert the following in your software somewhere.  import pdb; pdb.set_trace()
[01:07] <SteveA> conventionally it is on one line, statements separated by a semicolon
[01:07] <SteveA> this drops you into the debugger where it is executed
[01:07] <Kinnison> I see
[01:08] <SteveA> use 's' to step to the actual point you want
[01:08] <Kinnison> yep
[01:08] <SteveA> use 's' to step, 'n' to skip over the next statement
[01:08] <SteveA> 'c' to continue
[01:08] <SteveA> and various other things
[01:08] <SteveA> use vi or emacs?
[01:08] <SteveA> there's a groovy add-on for emacs where you can use the pdb console in one window, and see the code synchronized in another 
[01:09] <SteveA> and there's a similar but less functional thing for vim somewhere too
[01:09] <doko> Kinnison: in recent python packages pdb is installed as a binary as well in /usr/bin
[01:10] <Kinnison> SteveA: About three steps and one print and I worked out what was missing from my code
[01:10] <Kinnison> Lua has a similar tool
[01:10] <Kinnison> wherever you want to drop into the debugger stick debug.debug()
[01:11] <Kinnison> so if you want to drop into the debugger on every line stick that as a linehook :-)
[01:11] <Kinnison> I ought to write a better debugger using all that
[01:11] <SteveA> pdb is great.  jim fulton wrote a howto once called "the debugger is my friend" 
[01:12] <Kinnison> Heh
[01:12] <Kinnison> What's the equiv of int() for floating point numbers?
[01:12] <SteveA> or was it "the debugger is your friend"
[01:12] <SteveA> you mean a constructor?
[01:12] <SteveA> float()
[01:12] <Kinnison> coolie
[01:12] <SteveA> eww, floats ;-)
[01:12] <Kinnison> or does str have a method for that?
[01:13] <sabdfl> SteveA: is it possible to bind a checkbox input and some text, so clicking on the text is like clicking on the checkbox?
[01:13] <Kinnison> I'm being workraved; bbl after a 'rest break'
[01:13] <SteveA> Kinnison: well, that depends on what you want to do.  int() constructs an int, and float() constructs a float.  Maybe you want to parse strings into ints / floats?
[01:13] <SteveA> sabdfl: try making the text a <label for="checkbox_name">Text here</label>
[01:14] <sabdfl> ok
[01:14] <SteveA> alternatively, enclose the lot in the <label>Text <input ... /> </label>.  But the former is easier to maintain, I think, and clearer.
[01:14] <SteveA> it says more clearly what you want.
[01:15] <sabdfl> doesnt work
[01:15] <sabdfl> label comes after the input?
[01:15] <SteveA> let me do a quick experiment
[01:16] <Kinnison> SteveA: well yes; I want a float from a string :-)
[01:16] <Kinnison> SteveA: I.E. given '5.3' I want 5.3
[01:17] <SteveA> sabdfl: my mistake.  the "for" has to refer to an id attribute
[01:17] <sabdfl> id?
[01:18] <SteveA> so <label for="mybox">Some text</label>  <input type="checkbox" id="mybox" name="mybox" value="foo" />
[01:18] <sabdfl> ok, will try, thanks
[01:18] <Kinnison> Yes; that's right
[01:18] <SteveA> Kinnison: float('1.2')
 tags are your a11y friend
[01:18] <Kinnison> SteveA: yeah; I'll do that then. thanks
[01:18] <SteveA> catch ValueError, generally
[01:19] <Kinnison> that's probably a job for the thing calling this
[01:19] <Kinnison> but I'll consider it
[01:19] <SteveA> I can't comment, not having seen/understood the code
[01:20] <Kinnison> It's lots of skeleton code currently as I slowly hang things off the lucille config framework
[01:20] <Kinnison> Once we know what the config should really *really* look like; it'll become columns in the database and thus be typechecked implicitly
[01:21] <SteveA> in that case, I wouldn't catch an exception at all, and let it propagate to the thread
[01:22] <SteveA> seeing as it is a coding error / setup error if so
[01:22] <Kinnison> Cool; that was what I was thinking. It's good to have confirmation
[01:22] <SteveA> ok
[01:27] <sabdfl> SteveA: when you're all raved out, could you tell me what the right way to select a checkbox is in html? in otherwords, to render it checked
[01:28] <sabdfl> selected="yes" doesn't work
[01:28] <Kinnison> CHECKED
[01:28] <Kinnison> erm; checked :-)
[01:28] <Kinnison> <checkbox name="foo" value="bar" checked>
[01:28] <sabdfl> Kinnison: multo gracias!
[01:31] <SteveA> well
[01:31] <SteveA> that's not valid xhtml
[01:31] <SteveA> so, we should say <checkbox ... checked="checked" />
[01:32] <Kinnison> Aah; sabdfl asked for html not xhtml
[01:32] <Kinnison> also I think checked="1" should work
[01:32] <Kinnison> the important thing is the presence of the attribute; not its value
[01:32] <SteveA> checked="I am the lord high executioner" should work
[01:32] <Kinnison> checked="striped"
[01:32] <sabdfl> SteveA: moonlighting again?
[01:32] <sabdfl> lot's of work in baghdad :-0
[01:33] <Kinnison> I watched southpark all too recently
[01:33] <sabdfl> Kinnison: fashion, daaaahling
[01:33] <Kinnison> when stevea said that; my brain rebelled with "but you're not mr Garrison"
[01:33] <sabdfl> bug assignment report looking MUCH healthier
[01:33] <sabdfl> it even doesn't show you your closed bugs now :-)
[01:33] <Kinnison> yay
[01:33] <Kinnison> I've been finding holes in lucille while writing her tests
[01:34] <Kinnison> oh no, 51 :-)
[01:34] <sabdfl> Kinnison: think gina and nicole are ready for the productoin server yet?
[01:34] <Kinnison> sabdfl: Hmm; Well; gina is doing okay on mawson
[01:35] <Kinnison> sabdfl: I think I need to finish a few more tweaks on lucille and then we can mock up a commandline tool to do the bits of lucille needed for gina's output to make sense in the face of new uploads
[01:35] <Kinnison> sabdfl: then we'll be ready
[01:35] <Kinnison> sabdfl: perhaps we can discuss that on wednesday?
[01:35] <sabdfl> ok
[01:35] <sabdfl> yes
[01:36] <sabdfl> i'd like to have soyuz running in a prodction environment for es-conf
[01:36] <sabdfl> (katie still doing the archive mngmnt, date reflected in soyuz via gina)
[01:37] <Kinnison> Yep
[01:37] <Kinnison> We can do that
[02:07] <Kinnison> I need to start laying down the filesystem layout
[02:07] <Kinnison> assuming DISTROROOT, any objections to the following:
[02:07] <Kinnison> DISTROROOT/<distroname>/{dists, pool}
[02:07] <Kinnison> DISTROROOT/misc/contents.header
[02:08] <Kinnison> DISTROROOT/cache
[02:08] <Kinnison> DISTROROOT/overrides
[02:08] <Kinnison> where the <distroname> subdir is the actual archive and the rest is bookkeeping etc?
[02:18] <elmo> contents.header is obsolete and unused
[02:23] <morgs> SteveA: ping
[02:27] <SteveA> hi morgs
[02:28] <morgs> SteveA: quick question on DOAP: I'm working on importing a huge RDF file from Freshmeat, and I'm wondering how best to do it.
[02:28] <morgs> Looks like DOAP is a close cousin of this RDF file
[02:29] <morgs> and if you have any DOAP importing maybe I could try to transform this file into DOAP?
[02:32] <morgs> SteveA: So who's working on DOAP-related stuff? Should I follow up with cprov?
[02:40] <sabdfl> morgs: we haven't implemented doap, but we've worked closely with the author
[02:40] <sabdfl> in fact, he's likely to integrate a lot of our productseries / productrelease design into the next release of doap
[02:41] <sabdfl> then i will ask you to implement a doap exporter for launchpad, so that people can get doap fragments for any data in launchpad
[02:41] <morgs> sabdfl: sounds good. So I'll carry on with importing RDF from Freshmeat at this stage...
[02:41] <sabdfl> elmo: do you know who wrote debzilla (debbugs to bugzilla importer)?
[02:41] <sabdfl> morgs: yes please
[02:42] <elmo> sabdfl: mdz
[02:42] <sabdfl> where does that code live?
[02:43] <elmo> chinstrap:/home/warthogs/archives/, I think
[02:43] <elmo> james@chinstrap:/home/warthogs/archives/matt.zimmerman@canonical.com--2004 $ ls
[02:43] <elmo> =meta-info  debzilla  germinate
[02:45] <Kinnison> elmo: unused/obsolete?
[02:45] <sabdfl> elmo: tnx :-)
[02:45] <Kinnison> elmo: do we not bother with it in Ubuntu then?
[02:46] <elmo> oh, well, okay, it's not entirely obsolete, but it's pretty broken - it use to have variable substitution done on it, but apt-ftparchive doesn't do that anymore, so the top of the Contents file is broken and has been for like 2-3 years and no one's cared - anyway, never mind me
[02:47] <Kinnison> I imagine we'll just put something there to name the two columns or something for now
[02:50] <Kinnison> Can python do default values to parameters using self?
[02:50] <Kinnison> E.g.
[02:50] <Kinnison> def foo(self, bar = self.bar):
[02:56] <kiko> no
[02:57] <kiko> self is not materialized in that context.
[02:57] <kiko> it's simply a name.
[02:57] <Kinnison> boo hiss :-(
[02:57] <Kinnison> Ta
[02:58] <kiko> use bar=None and if bar is None: bar = self.bar
[02:58] <Kinnison> yeah
[03:25] <SteveA> daf: please ping me when you are around
[03:27] <SteveA> Is it so that an EmailAddress must have a Person ?
[03:27] <SteveA> EmailAddress.personid is non-null
[03:33] <sabdfl> elmo: where can i get a copy of the debbugs db, like the one debzilla uses?
[03:58] <carlos> SteveA: yep, which sense has an email without a person?
[04:08] <daf> SteveA: hi
[04:08] <carlos> BradB: ping
[04:08] <carlos> daf: hey
[04:09] <daf> hi carlos 
[04:10] <BradB> carlos: pong
[04:10] <carlos> BradB: is there any way to get an error with the "set" method of a SQLObject?
[04:10] <BradB> SteveA: Where are we at with giving things absolute URL's? It's taking too much effort currently to followup to a bug.
[04:10] <elmo> sabdfl: AIUI, debzilla uses an rsynced copy of the bugs spool
[04:10] <dilys> Bug 1975 resolved: Create a script that updates the cached statistics data
[04:10] <dilys> https://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=1975
[04:11] <SteveA> BradB: I haven't started work on that yet.
[04:11] <carlos> BradB: It's hard to debug an error there if it does not shows you any warning if you use wrong var names there...
[04:11] <sabdfl> elmo: right, do you know which machine that copy lives on, and can I rsync a copy to my local machine to test with?
[04:11] <SteveA> I have some questions about the set-up on the dogfood server.
[04:11] <sabdfl> BradB: hi!
[04:11] <SteveA> I think we'll want to have a Data.fs ZODB FileStorage on there
[04:11] <sabdfl> daf: hi too!
[04:11] <BradB> sabdfl: hi :)
[04:11] <elmo> sabdfl: the master copy lives on merkel.debian.org
[04:11] <daf> sabdfl: hi
[04:12] <SteveA> because if we do cookie-login and sessions using memorystorage, everyone will be logged out when the server is restarted.
[04:12] <elmo> sabdfl: the copy in the data centre lives on macquarie, I'd imagine - but it's not available publicly
[04:12] <sabdfl> elmo: is a recent copy on chinstrap anywhere? or another machine I have access too?
[04:12] <SteveA> then again, I suppose if it is restarted only daily, perhaps that's not a problem right now.
[04:12] <BradB> carlos: mm, if it lets you pass in kw args for columns that don't exist (which ISTR it does), it's a bug in sqlobject.
[04:12] <SteveA> it might be a bit inconvenient for development, but then, you can use basic auth still for development.
[04:13] <daf> SteveA: if the login form is clever enough, that won't be excessively onerous
[04:13] <sabdfl> elmo: please could you allow me onto macquarie then?
[04:13] <daf> SteveA: i.e if it sends you back to whence you came after you've logged in
[04:13] <SteveA> daf: stub.py and stub.zcml are still in the rosetta package.
[04:13] <BradB> SteveA: any projections on when asking a thing for its absolute url will work?
[04:13] <carlos> BradB: then I detected a bug, where should I report it?
[04:13] <daf> SteveA: removing...
[04:13] <sabdfl> SteveA: to what extent are we protected from form entries like "title; DELETE FROM sourcepackage;"
[04:13] <BradB> carlos: in malone
[04:14] <elmo> sabdfl: done
[04:14] <carlos> ok
[04:14] <sabdfl> elmo: gracias (practising for es-conf :-)
[04:14] <SteveA> BradB: no.  I've been caught up in sorting out auth that I haven't thought about it much yet.
[04:14] <carlos> sabdfl: ;-)
[04:14] <BradB> SteveA: ok
[04:14] <carlos> sabdfl: that + "Donde estn mis pantalones?" is all you need here
[04:14] <carlos> X-)
[04:15] <SteveA> daf: in the c.l.database.person, there's a reference to RosettaEmailAddress
[04:15] <BradB> carlos: oh wait, dude...
[04:15] <SteveA> I doubt that code will work, and I'm sure it isn't being tested
[04:15] <BradB> carlos: i just checked the sqlobject documentation; it's also used for non-db attributes, so it's not a bug.
[04:16] <carlos> BradB: then, we just be really careful with the .set() method :-(
[04:17] <carlos> BradB: is it ok if I put a warning in the wiki?
[04:17] <SteveA> sabdfl: provided people use the sqlobject stuff, then sqlobject always quotes things.
[04:17] <BradB> carlos: if you think it's necessary. i haven't seen other people bring it up.
[04:17] <carlos> BradB: so I suck :-P
[04:18] <daf> SteveA: I'll investigate
[04:18] <BradB> i can see why something like a setColumns would be useful, but, oh well, i can't think about the API for that (set vs. setColumns, etc) at the moment.
[04:18] <sabdfl> wtf is a pantalone?
[04:18] <sabdfl> carlos: ^?
[04:18] <carlos> sabdfl: pants
[04:18] <carlos> :-P
[04:18] <carlos> sabdfl: ask jeff
[04:19] <daf> (trousers)
[04:19] <SteveA> daf and carlos: what remains to be done to get rosetta using the dogfood systems?
[04:19] <sabdfl> elmo: seems I land up in the launchpad directory, with no way to tell macquarie about my authorized_keys?
[04:19] <carlos> sabdfl: you need to see the GUADEC 3 video that Ximian guys did
[04:19] <sabdfl> seems appropriately secure, if it's planned that way :-)
[04:19] <SteveA> I of course mean the rosetta alpha system.
[04:20] <daf> we need to do the main_template override
[04:20] <SteveA> I asked you to do that first of all
[04:20] <SteveA> please do it now
[04:20] <daf> oh, ok
[04:21] <SteveA> what else needs doing?
[04:21] <carlos> daf: the script seems to be working now (I suppose spiv fixed the problem)
[04:21] <elmo> sabdfl: err - huh?  what are you trying to do?
[04:21] <daf> carlos: what script? what problem?
[04:22] <carlos> daf: the script I did on Wednesday to import the old users into dogfood database
[04:22] <daf> carlos: ok
[04:22] <daf> carlos: what was the problem?
[04:22] <carlos> daf: the transaction was never committed
[04:22] <SteveA> daf and carlos: why don't you two have a meeting (perhaps on #canonical-meeting) where the goal is to get a list of absolutely everything left to do so that we can put rosetta alpha on the dogfood server.
[04:22] <SteveA> I want this to be done today.
[04:23] <carlos> it's ok for me
[04:23] <BradB> doh, we can't comment on bugs anymore.
[04:23] <daf> understood
[04:23] <SteveA> that means, we need to carefully think through what needs to be done, and make sure we co-ordinate properly with other people who may need to do stuff for us, or who may be affected by us.
[04:24] <BradB> daf: will dilys see changes in bug status?
[04:25] <daf> BradB: do close events send emails?
[04:25] <BradB> everything sends emails
[04:25] <BradB> so yes
[04:25] <BradB> (except subscribing people)
[04:25] <SteveA> BradB: is it okay if daf looks at this later?
[04:25] <daf> in that case, I can make dilys send closure notfications as soon as I have a test email
[04:26] <SteveA> I really do want the rosetta team to focus on getting the rosetta alpha running on the dogfood server
[04:26] <BradB> SteveA: sure
[04:26] <SteveA> daf: please leave this until later
[04:27] <SteveA> daf and carlos: nothing else, until we're using the dogfood server for rosetta, okay?
[04:27] <daf> ok
[04:27] <BradB> sabdfl: did you remove the test that shows that comments work?
[04:27] <carlos> ok
[04:27] <sabdfl> BradB: i don't think so
[04:28] <BradB> hm, maybe the UI got elided
[04:28] <sabdfl> BradB, daf: i've got a much better "bugs assigned" report over here, will go up with the next dogfood code rev
[04:28] <sabdfl> it actually treats closed bugs as closed :-)
[04:29] <daf> handy :)
[04:29] <BradB> sabdfl: the next revision will include my search widgets, which'll handle that.
[04:29] <BradB> (on the main bug listing)
[04:29] <BradB> filtering on package, product, status and assignee
[04:29] <daf> I have a pending change which tidies up the subjects of bug notifications
[04:30] <daf> I'll try and get that merged soon
[04:30] <sabdfl> BradB: filter the "see all bugs" page?
[04:30] <BradB> sabdfl: yes
[04:31] <sabdfl> BradB: ok, i hope we haven't duplicated too much work, but nonetheless i enjoyed fixing it
[04:31] <BradB> assigned to and submitted by pages will end up being irrelevant. if anything, they'll become links to the main bug listing that have the search criteria preselected.
[04:32] <BradB> the test suite is slipping though :(
[04:33] <BradB> i can't comment on a bug. when i change the status of an assignment i get this weird second widget appearing beside the "Product" input box.
[04:33] <BradB> the second widget being a product dropdown
[04:35] <daf> gaaah, can we fix this arrowBlank.gif thing once and for all?
[04:42] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: Finished the statistics update code (Closes: #1975) (patch-783)
[04:49] <sabdfl> daf: i'll do it
[04:49] <daf> sabdfl: great
[04:59] <SteveA> BradB: I have a failing malone page test in my tree, and I'm having difficulty seeing what's wrong with it.
[05:01] <SteveA> aw crap, they pass now...
[05:01] <Kinnison> yay, a schroedinger bug
[05:01] <Kinnison> don't observe it failing or it'll change
[05:01] <Kinnison> bwuahahaha
[05:10] <SteveA> test_on_merge.py is stalling for me
[05:11] <SteveA>   File "./test_on_merge.py", line 47, in main
[05:11] <SteveA>     errlines = err.readlines()
[05:11] <SteveA> KeyboardInterrupt
[05:11] <SteveA> make: *** [check]  Error 1
[05:11] <SteveA> who added the popen2 stuff to it?
[05:11] <SteveA> by reversing the reading of error and out streams, it runs again
[05:12] <carlos> SteveA: I have some code that uses popen2 but not sure if it's related...
[05:12] <carlos> SteveA: do you know the file?
[05:13] <SteveA> test_on_merge.py
[05:13] <carlos> directly in that file?
[05:13] <SteveA> hmm, it doesn't run again.  stalled again.
[05:13] <carlos> then it's not my fault
[05:14] <SteveA> ok
[05:24] <SteveA> that's much better
[05:32] <SteveA> hmm, except that one of andrew's xmlrpc tests is hanging now.
[05:33] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: Small updates to the sample data (patch-784)
[05:40] <Kinnison> apt-ftparchive calls components 'sections'
[05:41] <elmo> yeah, it's neat isn't it
[05:41] <Kinnison> elmo: how did you stay sane coding for this stuff?
[05:41] <Kinnison> Oh hang on; are you sane?
[05:42] <elmo> not really
[05:43] <Kinnison> Heh
[05:47] <sabdfl> sanest damn wallbuster i know
[05:48] <sabdfl> dudes, 8 hours straight, NOT ONE JELLYBEAN
[05:48] <daf> cold turkey, eh?
[05:50] <sabdfl> whats this likely to do:
[05:50] <sabdfl> for bug in filter(None,map(self.alias_to_bugid,self.bzdb.all_aliases())):
[05:50] <sabdfl> ?
[05:50] <daf> None is the same as "lambda x: True"
[05:51] <sabdfl> sqisuh it different to wiggle?
[05:51] <daf> yes
[05:51] <sabdfl> right
[05:52] <daf> in other words, it should be the same as "for bug in map(self.alias_to_bugid,self.bzdb.all_aliases()):"
[05:52] <daf> what it actually means depends on what self.bzdb.all_aliases() does
[05:57] <sabdfl> right
[05:58] <SteveA> argh
[05:58] <SteveA> I'm going to grep the source for filter and map
[05:59] <BradB> why?
[05:59] <SteveA> because I think some people have used them in the code where there are clearer alternatives
[05:59] <BradB> as long as the tests pass, the code needn't be perfect
[06:00] <SteveA> it needn't be perfect, but it does need to be clear
[06:00] <SteveA> otherwise, people waste time and energy trying to understand obscure code
[06:00] <SteveA> I'd rather it be clear and slightly wrong (with tests passing) than obscure and correct  
[06:01] <SteveA> and I'm afraid "filter(None,map(self.alias_to_bugid,self.bzdb.all_aliases()))" gets a "*    " out of "*****" on my clarity scale.
[06:02] <Kinnison> SteveA: it gets "     " on mine
[06:02] <BradB> i'm not a big fan of cleaning up code that we may well throw out anyway, but oh well
[06:02] <SteveA> if it needs to be thrown out, throw it out
[06:03] <SteveA> if it is in use, make it clear
[06:03] <SteveA> even a comment above it would be an improvement
[06:03] <daf> Kinnison: what do you think of [ self.alias_to_bugid(alias) for alias in self.bzdb.all_aliases() if test(x) ] ?
[06:04] <Kinnison> ** "     "
[06:04] <Kinnison> complicated list comprehension scares me
[06:04] <daf> was that two stars, or none?
[06:04] <daf> oh, minus two? :)
[06:04] <Kinnison> that was minus two :-)
[06:05] <Kinnison> a comprehension of the form [ a for a in l ]  is pretty much the most I ever produce
[06:05] <daf> isn't that the same as "l"?
[06:05] <Kinnison> not if l is a dict
[06:05] <daf> really?
[06:06] <daf> is it like l.keys() or l.values()
[06:06] <daf> ?
[06:06] <Kinnison> keys
[06:06] <elmo> that's a python2.3 ism btw
[06:06] <Kinnison> that iterating a dict gives you the keys?
[06:07] <elmo> bites me all the freaking time - I use it, works on jackass and then promptly blows up on newraff
[06:07] <elmo> Kinnison: yeah
[06:07] <daf> elmo: what does it do in 2.2?
[06:07] <elmo> daf: throws a "dict is not iterable - you LOSER" exception
[06:07] <daf> ah :)
[06:08] <sabdfl> so, are the baz guys going to to a --mao-errors option?
[06:08] <sabdfl> "lying"
[06:08] <sabdfl> "cheating"
[06:08] <sabdfl> "doesn't fit"
[06:09] <daf> "failure to remove conflicts and say that you have done so"
[06:09] <SteveA> daf: have you finished making rosetta use the dogfood server yet?
[06:12] <daf> I've made the code changes, I think
[06:12] <daf> do I have access to the dogfood DB?
[06:13] <SteveA> that's the kind of question I was talking about when I asked you to make a list of all the things you had to consider, and people you had to coordinate with
[06:14] <daf> yes, I should have thought of that
[06:15] <SteveA> back to the planning, then:  update the list of things to do with everything you can think of that needs to be done to achieve the goal.
[06:16] <daf> BradB: around?
[06:18] <BradB> daf: yes
[06:19] <daf> if I'm patching the dogfood db with some user accounts from the alpha, do I need to change launchpad_dogfood, launchpad_dogfood_20041115 or launchpad_dogfood_template?
[06:19] <daf> what's the difference between them?
[06:19] <BradB> daf: you'll have to ask stub. he's grandmaster dogfood.
[06:20] <daf> hmm, he doesn't seem to be around
[06:20] <BradB> nope, but he's the only one that can do anything about it.
[06:20] <daf> not surprising, since it's 4am in Sydney
[06:20] <BradB> heh
[06:25] <daf> SteveA: I think I'll have to wait before stub gets up before doing the user account import
[06:33] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: Enabled cookie-auth, and various other incidental things. (patch-785)
[06:34] <carlos> yahoo!!
[06:34] <carlos> welcome cookie-auth!!
[06:37] <SteveA> ok, time to email the list...
[06:38] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: Large chunks of lucille stuff (patch-786)
[06:43] <Kinnison> poor daf
[06:43] <sabdfl> bring on the cookie monster!
[06:46] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: make Malone notifications consistently use " rather than ' in subjects (patch-787)
[06:48] <daf> oh, poot
[06:48] <daf> did the PQM-hangs-on-empty-merge bug get fixed?
[06:49] <SteveA> firefox says "cookies are delicious delicacies" on the cookie settings UI
[06:54] <SteveA> we are avoiding use of "python:" in page templates, aren't we?
[06:56] <daf> we try
[06:58] <daf> I really don't like writing functions like "def thingyislessthantwo(self): return self.thingy < 2" so I can write 'tal:condition="view/thingyislessthantwo"' rather than 'tal:condition="python: view.thingy < 2"', so I don't
[06:59] <daf> mmm, grammar
[06:59] <SteveA> BradB: file me a bug for doing a form-o-matic helper.  include a couple of examples of what you'd want to say in tal.  it ought to be a quick job.
[06:59] <BradB> quick, like you could have it working by the time i get back from lunch? :P
[06:59] <BradB> i'll file it anyway.
[07:00] <SteveA> now there's a challenge.
[07:00] <SteveA> actually, I was planning to go and visit the gym
[07:00] <SteveA> but, it really is like an hour and a half tops
[07:00] <BradB> "at some point today" would be fantastic :)
[07:01] <SteveA> (provided you know exactly what to do)
[07:01] <SteveA> if the bug is filed with examples of what you need, I'll do it when I return from the gym
[07:02] <BradB> great. i'm writing it up now.
[07:02] <SteveA> cool
[07:04] <carlos> SiteError Error while reporting an error to the ErrorLogging service
[07:04] <carlos> X-)
[07:08] <daf> I think I just hung tla when I fixed my mail
[07:09] <daf> elmo: can you slay PQM, please?
[07:09] <elmo> can you guys either: a) stop breaking PQM, or b) beg/bribe/beat someone into fixing PQM permanently? :P 
[07:09] <daf> lifeless: (b), please
[07:11] <daf> elmo: sorry, it happened because my mail queue got clogged, meaning I inadvertently sent two merge requests simultaneously when I unblocked it
[07:19] <SteveA> carlos: can you mail me that please?
[07:19] <SteveA> the error logging service shouldn't be able to break ;-)
[07:20] <carlos> SteveA: sure
[07:22] <BradB> dilys: are you alive?
[07:22] <BradB> daf: maybe she's dead because of the Owner -> Submitted By renaming?
[07:23] <dilys> BradB: not dead, just resting
[07:23] <BradB> heh
[07:25] <carlos> :-P
[07:25] <Kinnison> gah!
[07:25] <Kinnison> python lets you catch an AssertionError but then blows up anyway
[07:26] <dilys> New Malone bug #47: "All our bug assignments are 'NEW'", submitted by Stuart Bishop
[07:26] <dilys> https://launchpad.ubuntu.com/malone/bugs/47
[07:26] <daf> dilys: well done, dear
[07:26] <dilys> New Malone bug #48: "ZPT needs to make it easy to know if a value is "selected"in a <select>", submitted by Brad Bollenbach
[07:26] <dilys> https://launchpad.ubuntu.com/malone/bugs/48
[07:27] <daf> nobody seems to be closing bugs yet
[07:33] <lulu> night all :o)
[07:33] <Kinnison> night lu
[07:52] <Kinnison> all of it?
[07:52] <carlos> daf: the whole source code? :-P
[07:53] <daf> yes
[07:53] <Kinnison> coo
[07:54] <daf> hmm, perhaps I should grab a copy of sloccount while I'm at it :)
[07:55] <carlos> daf: what are you doing? learning the Ubuntu concept from its source code ? :-D
[07:56] <daf> I'm going to look for bugs
[07:56] <daf> make sure everybody is using apostrophes correctly
[07:57] <daf> hmm, should have made it sort the packages by name before unpacking them
[07:58] <carlos> :-?
[08:00] <daf> proper punctuation is vital to the viability of the distribution
[08:01] <carlos> but what are you reviewing? the package descriptions?
[08:02] <daf> I'm joking :)
[08:02] <daf> I'm actually trying to count the number of messages in Ubuntu
[08:03] <carlos> :-P
[08:04] <daf> oh, this is a 4 processor machine -- should have made the unpack script multi-threaded, too
[08:24] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: prep for malone debsync (patch-788)
[08:46] <carlos> daf: ping
[08:49] <daf> pong
[08:50] <carlos> daf: do you remember? :
[08:50] <carlos> #~ msgid "%d unread"
[08:50] <carlos> #~ msgid_plural "%d unread"
[08:50] <carlos> #~ msgstr[0]  "%d no llegit"
[08:50] <carlos> #~ msgstr[1]  "%d no llegits"
[08:50] <daf> mmm, no
[08:50] <carlos> I'm not sure if I broke it with the table split or we didn't fixed it
[08:50] <carlos> the msgid == msigid_plural
[08:51] <daf> oh
[08:51] <carlos> at this moment the database does not supports it
[08:51] <daf> no?
[08:51] <carlos> daf: no, because a unique key
[08:51] <daf> on?
[08:52] <carlos> psycopg.IntegrityError: ERROR:  duplicate key violates unique constraint "pomsgidsighting_potmsgset_key"
[08:52] <carlos> "pomsgidsighting_potmsgset_key" unique, btree (potmsgset, pomsgid)
[08:53] <carlos> a pomsgidsighting cannot have the same potmsgset and pomsgid 
[08:53] <daf> is fixing it as simple as removing that constraint?
[08:53] <carlos> yep
[08:53] <daf> "cannot have the same potmsgset and pomsgid"?
[08:54] <carlos> I think we agree already on that, that's why I'm not sure if I reintroduced the error
[08:54] <daf> I'm having trouble visualising the problem in terms of the database
[08:54] <carlos> hmmm
[08:56] <carlos> at this moment, a msgid can only be sighted in a potmsgset once per pofile/potfile
[08:56] <carlos> that's normal
[08:56] <carlos> the problem comes when the pluralform uses the same msgid than the singular form
[08:57] <daf> so: one potmsgset, two sightings, one msgid?
[08:57] <carlos> yes
[08:57] <daf> ah, ok
[08:57] <daf> yeah, that constraint is bogus
[08:57] <daf> please file a DB change request
[08:58] <daf> also, did somebody file a schema request for Person.language?
[08:58] <BradB> daf: if it's not in pending, no.
[08:58] <carlos> daf: no, I was wainting for the ok for my patch before doing it
[08:59] <daf> do I need to review something?
[08:59] <carlos> daf: just agree on the proposal patch or just believe in my skills :-P
[09:00] <daf> I do believe in them :)
[09:01] <daf> if you think it's correct, I don't think you should wait for me :)
[09:01] <carlos> ok
[09:02] <carlos> daf: could we use triggers in launchpad?
[09:03] <daf> I don't know, what are they?
[09:03] <carlos> code executed inside postgres
[09:03] <carlos> like events
[09:03] <carlos> to do some task or apply some restrictions
[09:03] <daf> ok
[09:03] <daf> what would we use them for?
[09:04] <carlos> Thinking again about the msgid == msgid_plural thing I don't think we just remove the unique restriction
[09:04] <carlos> removing it we could end with a duplicated msgid
[09:04] <carlos> if we have an error in our code
[09:04] <carlos> not sure if we should care
[09:06] <daf> well
[09:07] <daf> if you can come up with a test that always allows correct date and disallows bad data, I'm all for it :)
[09:08] <carlos> is anything "always" doable? :-P
[09:09] <daf> well, within reason
[09:09] <carlos> daf: ;-)
[09:10] <carlos> BradB: which one is the page about the database changes request?, I don't see it linked from Launchpad wiki page
[09:11] <BradB> DatabaseSchemaChanges
[09:12] <BradB> It's linked from the same place that describes Python style guidelines, how to write unit tests, etc.
[09:12] <carlos> ok
[09:12] <carlos> thanks
[09:23] <BradB> woo!
[09:28] <carlos> daf: patchs ready to be processed by stub
[09:30] <carlos> daf: about the language field in the Person table... I think we will need to add an encoding (inside the language table) for every language if we are going to send localized mails, not sure if UTF-8 will work always, evolution breaks other mailers when sends utf-8 mails
[09:30] <BradB> SteveA: I'm not sure if I produced a good syntax or not for what I want, but for TALES adapter syntax, I have no idea how to say those in English (i.e. TALES adapter semantics are entirely non-obvious to me), so I'm not the one to decide what a good syntax may be using that.
[09:31] <daf> carlos: hmm, I thought it was fairly well-supported these days
[09:31] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: Added two db patches from Rosetta team (patch-789)
[09:31] <carlos> daf: firebird (or whatever it's called now) has problems
[09:31] <carlos> and it's not too old
[09:32] <carlos> if it's not a firebird problem, it's an evolution one...
[09:32] <daf> hmm, I count 77576 messages in Ubuntu, more or less
[09:32] <carlos> only that?
[09:32] <Kinnison> is that all?
[09:32] <daf> yeah, that's what I thought
[09:33] <daf> the biggest one is Evolution
[09:33] <daf> which has 4170 to itself
[09:33] <carlos> about 27729 are from GNOME 2.8
[09:33] <daf> closely followed by 3905 in Gnumeric
[09:33] <carlos> only official GNOME 2.8 modules
[09:33] <daf> carlos: yep
[09:33] <daf> which includes Evo, but not Gnumeric
[09:33] <carlos> hmm, then it makes sense
[09:34] <carlos> right
[09:34] <daf> top 10:
[09:34] <daf> evolution-2.0.2/po/evolution-2.0.pot: 4170
[09:34] <daf> gnumeric-1.2.13/po/gnumeric.pot: 3905
[09:34] <daf> binutils-2.14.90.0.7/gas/po/gas.pot: 2487
[09:34] <daf> gaim-1.0.0/po/gaim.pot: 2213
[09:34] <daf> gimp-2.0.2/po/gimp20.pot: 2198
[09:34] <daf> dia-0.93/po/dia.pot: 1654
[09:34] <daf> nautilus-2.8.1/po/nautilus.pot: 1361
[09:34] <daf> gnome-applets-2.8.1/po/gnome-applets-2.0.pot: 1346
[09:34] <daf> xfsprogs-2.6.18/po/xfsprogs.pot: 1298
[09:34] <daf> glade-2-2.6.0/po/glade-2.0.pot: 1245
[09:34] <carlos> gas?, a compiler has 2487 strings?
[09:35] <carlos> wow
[09:35] <daf> Evolution is "only" a mail client :)
[09:35] <carlos> daf: ;-)
[09:35] <Kinnison> daf: Lies
[09:35] <carlos> but evolution has a big UI
[09:35] <carlos> gas is... just a compiler
[09:36] <Kinnison> assembler
[09:36] <daf> it has lots of error messages :)
[09:36] <daf> and not many interpolations, by the looks of it
[09:37] <daf> oh!
[09:38] <daf> tarballs within tarballs
[09:38] <daf> perhaps I should try running "./debian/rules unpack" in each source directory
[09:39] <Kinnison> Heh
[09:39] <carlos> daf: ;-)
[09:39] <elmo> daf: for total coverage, I'd manually extract *.tar.{.gz,bz2}
[09:40] <elmo> (like, any, under the source tree)
[09:41] <daf> elmo: that's an idea
[09:41] <daf> elmo: I only need an estimate
[09:42] <carlos> daf: with cdbs packages you can use: ./debian/rules apply-patches
[09:43] <carlos> that should do the work
[09:43] <daf> ah, thanks
[09:43] <daf> elmo: hmm, can I have cdbs on rookery?
[09:44] <elmo> gar
[09:44] <carlos> :-P
[09:44] <SteveA> elmo: can I have cddb on maquarie?
[09:44] <elmo> SteveA: err, seriously?
[09:44] <daf> elmo: yeah, it sucks :(
[09:44] <daf> SteveA: is Launhpad gaining another application?
[09:44] <SteveA> yeah, the new part of launchpad to index cds belonging to the free software community
[09:45] <elmo> come again?
[09:45] <carlos> lol
[09:46] <BradB> gullible ain't just a river in egypt
[09:47] <daf> elmo: could I also have dpatch and gnome-pkg-tools?
[09:48] <elmo> adfgui;aigy3487ty34278tyh4ui
[09:48] <carlos> daf: I'm not sure, but I think you can get all that with chroot + fakeroot + debootstrap, right?
[09:48] <daf> carlos: I'm sure I could
[09:48] <daf> -bash: debootstrap: command not found
[09:48] <carlos> X-)
[09:49] <elmo> more to the point debootstrap requires root
[09:49] <elmo> daf: done
[09:49] <daf> elmo: thanks
[09:49] <elmo> let me know when you're done, I don't want to leave this stuff on here
[09:49] <carlos> elmo: fakeroot is not enough?
[09:50] <elmo> no, chroot(2) requires root
[09:50] <carlos> ok
[09:51] <daf> there must be a better way of doing this
[09:51] <elmo> daf: there isn't - we should enforce a policy defined way of getting at the source, it's silly that we don't
[09:51] <daf> I guess an improved package source format would fix it
[09:52] <SteveA> the xml intermediate format we discussed?
[09:52] <daf> or... Unpack-Depends! :)
[09:52] <SteveA> so you can extract stuff on a different machine?
[09:52] <daf> this wouldn't contain the binary date, would it?
[09:52] <daf> * data
[09:52] <carlos> SteveA: do you think launchpad's foaf could be interested on info about people contributions to free software projects?, Some friends are working on tools to extract that information and show some stats from that: http://devel.interactors.coop/projects/cvsanaly/ I think it could be easy to integrate into launchpad
[09:53] <daf> elmo: I suspect your unpack-all-tarballs method would probably have been good enough, actually
[09:54] <SteveA> carlos: the project is called "cvs analy" ?
[09:54] <SteveA> the arch folks would appreciate that
[09:54] <carlos> sabdfl: yeah
[09:54] <carlos> sabdfl: they started with cvs and are moving now to subversion
[09:55] <SteveA> I'm steve!
[09:55] <carlos> upps
[09:55] <SteveA> looks interesting though
[09:55] <carlos> tab autocompletion...
[09:55] <carlos> you know
[09:55] <carlos> :-P
[09:56] <SteveA> BradB: I'm reading through the malone bug now
[09:57] <BradB> ok
[10:01] <SteveA> while eating evening meal
[10:01] <SteveA> what does "dinner" mean in canadian english?
[10:02] <sabdfl> carlos: yes, that would be cool
[10:03] <BradB> SteveA: supper, "tea", :P
[10:03] <SteveA> not lunch then?
[10:03] <BradB> correct
[10:07] <SteveA> a way of saying <pre>some code or traceback</pre> would be really useful for malone
[10:07] <BradB> yeah, hm
[10:08] <BradB> formatting messages is kind of hard
[10:09] <BradB> maybe we could forcefeed ReST to Malone users, i dunno
[10:10] <SteveA> the zope2 collector developers tried various different things
[10:10] <SteveA> structured text was a total failure
[10:10] <SteveA> ReST was deemed too complex
[10:11] <BradB> yes, i would have to agree
[10:11] <SteveA> we ended up with a rule that leading ., " " or ">" in a block makes it preformatted
[10:11] <SteveA> I say "we" but I only mean "we" as a user of the system
[10:12] <carlos> sabdfl, SteveA: The website with sample data seems to be down, I will send you an url to see the kind of data they are collecting when it's fixed.
[10:12] <carlos> dinner time, later!
[10:19] <sabdfl> if __getattr__ exists, is it always used, or only if the attribute does not exist?
[10:20] <Kinnison> only if the attr is not present
[10:20] <Kinnison> (says he by empirical test)
[10:20] <Kinnison> http://rafb.net/paste/results/7QwD1H42.html
[10:22] <daf> 87866
[10:23] <daf> gcc now at top
[10:26] <BradB> sabdfl: Any chance we can get someone (e.g. Steve :P) to fix the diff'ing to account for eliding in page tests? It's probably costing two to three hours per day right now among us.
[10:27] <BradB> s/the diff'ing/the diff output for failures/
[10:27] <sabdfl> BradB: stub or stevea was saying they had a planned solution for that. or was it you?
[10:28] <BradB> I haven't mentioned anything about solving it. I remember SteveA saying something about it before, I think. SteveA?
[10:34] <sabdfl> if i have an email (import email, email.email_from_string(s) etc)
[10:34] <sabdfl> how do i get the body text?
[10:35] <daf> email.get_payload, IRIC
[10:35] <daf> er, IIRC
[10:35] <sabdfl> merci
[10:35] <sabdfl> erc
[10:35] <sabdfl> gracias
[10:35] <daf> de nada
[10:39] <daf> sabdfl: I send Adi my estimate
[10:39] <daf> *sent
[10:40] <sabdfl> daf: thank you
[10:40] <daf> hmm, probably should have CC'd you
[10:40] <sabdfl> we are going to forge ahead with a project to get warty/hoary fully translated into one indigenous SA language
[10:40] <daf> excellent
[10:59] <BradB> SteveA: ping
[11:01] <SteveA> hi
[11:02] <SteveA> BradB: see comment on malone bug 48
[11:03] <BradB> SteveA: did you have a solution for having functional doc tests ignore eliding when reporting diffs on failed tests?
[11:04] <SteveA> no.  but I do have close access to people who maintain the code.
[11:04] <SteveA> BradB: how does the syntax look to you?
[11:06] <BradB> i might call it "browserform" instead of "htmlform", but...
[11:06] <BradB> SteveA: one thing i've always wondered about tales adapters is, how does: request/htmlform:status/selected/all read in english?
[11:06] <BradB> i can't figure out what's adapting what to what there
[11:06] <BradB> ("there" meaning a tales adapter expr in general)
[11:06] <SteveA> how would request/form/foo read in english?
[11:07] <BradB> "the value of field foo, from form form in the request"
[11:07] <SteveA> "from request traverse to form, traverse to foo"
[11:07] <SteveA> let's keep it left-to-right
[11:07] <BradB> SteveA: well, in "foo:bar", what does the ":" mean to foo, and to bar?
[11:07] <SteveA> otherwise we'll confuse ourselves, I think
[11:08] <SteveA> are you happy with "request/form/foo" put into english as "from request traverse to form, traverse to foo" ?
[11:08] <BradB> as someone who's already familiar with the lingo, yeah :)
[11:08] <SteveA> ok
[11:09] <SteveA> so, I can also read "request/form/foo" as:
[11:09] <daf> Malone (or Zope) puts newlines in subjects
[11:09] <daf> is this normal?
[11:09] <daf> I don't think I've seen it before
[11:09] <SteveA>  "from request traverse in the default namespace to 'form', traverse in the default namespace to 'foo'" 
[11:09] <SteveA> BradB: still with me?
[11:09] <daf> elmo: you can get rid of all the stuff you want to get rid of now, by the ay
[11:09] <BradB> yes
[11:10] <SteveA> so, request/htmlform:status/selected/all becomes:
[11:10] <BradB> yeah, i know what you're going to say next then :)
[11:10] <SteveA>  "from reqest traverse in the 'htmlform' namespace to 'status', then traverse to 'selected' in the default namespace, then traverse to 'all' in the default namespace"
[11:10] <BradB> yeah, ok...interesting
[11:11] <SteveA> we can add as many namespaces as we need
[11:11] <SteveA> have you come across the foo/bar/?baz syntax before?
[11:11] <BradB> no, i was *just* about to ask you about that :) i.e. is it canonical?
[11:11] <SteveA> it is standard
[11:12] <SteveA> you can use it in zope2, and no doubt other places where tales is implemented properly
[11:12] <SteveA> it is a very simple form of indirection
[11:12] <SteveA> so, foo/bar/baz means "from foo traverse to bar, traverse to baz"
[11:13] <SteveA> but, foo/bar/?baz means "from foo traverse to 'bar', traverse to the value of the variable 'baz'"
[11:13] <BradB> cool
[11:13] <SteveA> if you want ?baz to be more complex, you need to use a separate tal:define
[11:14] <BradB> in foo/bar:baz though, when you talk about "namespaces" isn't it really that foo is being adapted to a bar, and then baz is an attributed of the adapted thing?
[11:14] <daf> baz:define=""?
[11:14] <BradB> s/attributed/attribute/
[11:15] <daf> I suppose that would stop me typing tla:define=""
[11:16] <SteveA> BradB: you can look at it that way.  That is indeed how I originally looked at it.  I proposed an alternative syntax making that clearer, but ultimately was overruled.
[11:16] <BradB> SteveA: the ordering suggested in your proposal won't work, btw. define is done before repeat.
[11:16] <SteveA> the foo:whatever syntax is supposed to be familiar to users of xml namespaces
[11:17] <SteveA> BradB: right, but simple to fix without altering the nature of the proposed syntax
[11:17] <BradB> in any case, that's probably an implementation detail (the ordering of tal ops, that is)
[11:17] <BradB> SteveA: indeed, indeed. so yeah, i'd say it looks good.
[11:17] <SteveA> it is part of the tal standard
[11:17] <SteveA> ok, cool
[11:17] <BradB> ah yes, that makes it slightly clearer (i.e. the /why/ behind ":")
[11:19] <SteveA> there was a separate proposal for an adapter syntax
[11:19] <SteveA> for saying foo*IWhatever/bar
[11:20] <SteveA> but, that hasn't been decided, and will probably remain as it is, that is, not implemented
[11:43] <sabdfl> does initZopeless use the launchpad_dev db?
[11:44] <sabdfl> i'm trying to create a script to run against the launchpad_dev db, using the canonical.launchpad.database objects
[11:44] <sabdfl> and i'm seeing a weird result
[11:45] <sabdfl> it seems as though it's not seeing records that are in the db
[11:45] <sabdfl> SteveA: around? ^
[11:46] <sabdfl> daf: any idea on initzopeless ^?
[11:49] <daf> hmm, checking...
[11:51] <sabdfl> got it
[11:51] <sabdfl> yes, it uses launchpad_ftest
[11:51] <daf> ah
[11:51] <sabdfl> unless you LP_DBNAME=xxx ./cmd
[11:51] <sabdfl> sorry, should have checked the code myself sooner