[00:02] <mkanat> I wish I had a meliae for Perl. :-|
[00:06] <mgz> I wish there was one and only one python memory tool instead of the five or so currently used
[00:06] <mkanat> Well, at least they are reasonable and sane.
[00:07] <lifeless> mgz: there is only one.... worth knowing
[00:07] <lifeless> mgz: I've done subunit and testtools releases.
[00:07] <lifeless> mgz: is that thread fully pulled on now ?
[00:08] <mgz> I believe so. Got some updates for bzr, but that wants to lag a bit anyway.
[00:10] <mgz> bug 582113 and some other misc testtools regressions that I've still not got round to filing, then maybe followup for Parth and Alexander who got stuck on writing unicode tests prviously
[00:10] <mgz> ^fix that by using testtools bits rather than unittest bits
[00:11] <lifeless> lets nuke the use of WritelnDecorator too
[00:11] <mgz> right. it's a fantasically pointless class.
[00:11] <lifeless> its surprising for new players
[00:11] <mgz> anyway, we want testtools runner and texttestresult
[00:11] <mgz> which avoids the issues with 2.7
[06:25] <lifeless> any reviewers around ?
[06:48] <mneptok> The plot was thin, and the actors seemed both disinterested and wooden. A script rewrite is in order.
[06:48] <lifeless> well roughly
[06:53] <lifeless> turns out that using bzrlib.lsprof.profile in a threaded app is a little .. risky
[07:38] <lifeless> https://code.edge.launchpad.net/~lifeless/bzr/lsprof_lockout/+merge/29165 is the result
[07:54] <mgz> risky as well as being pointless as per bug 579185?
[07:56] <lifeless> shrug
[07:56] <lifeless> that is fixable - I thought GaryvdM had a fix pending in fact
[07:56] <lifeless> mgz: but since you are here, you can review my patches ;)
[07:56] <mgz> didn't look easy to do cleanly when we looked at it, but part of that was just the display of the results
[07:58] <mgz> the locking you've added looks sane to me, but I don't understand the actual problem
[07:58] <lifeless> minimally showing them as separate top level entry points would be better than nothing
[07:58] <lifeless> we call threading.setprofile
[07:58] <lifeless> thats a 'change a global
[07:58] <lifeless> so when 579185 is fixed
[07:58] <lifeless> say you have a threaded webapp - I dunno, a wsgi server, or launchpad, or whatever.
[07:59] <lifeless> if in two threads at once you do 'profile(sublayer, args)'
[07:59] <lifeless> the second entrant to profiler.start()
[07:59] <lifeless> will override threading.setprofile
[07:59] <lifeless> new threads started by *either* request
[07:59] <lifeless> will get collected to the second entrant.
[08:00] <lifeless> also new threads started after either exit will not get collected at all because we reset the profile function for new threads to None
[08:02] <mgz> ah, right, I get it, thanks.
[08:05] <mgz> seems like threading._profile_hook should really be thread-local
[08:05] <lifeless> so new threads would use a trampoline to pass it on each time as well
[08:05] <lifeless> and you'd get a graph of threads with it set appropriately? Yes.
[08:06] <lifeless> that would be nice.
[08:06] <mgz> yup. your fix looks good, I'll just test it here.
[08:06] <lifeless> thanks
[08:07] <lifeless> have I mentioned I hate distutils ?
[08:07] <mgz> who doesn't?
[08:07] <lifeless> tar tzf ../testtools-0.9.4.tar.gz | grep compat
[08:07] <lifeless> I hate setuptools/distribute more
[08:07] <mgz> likewise.
[08:08] <lifeless> |o/
[08:08] <mgz> distutils is just messy and barely documented. setuputils is actively evil.
[08:08] <mgz> *setuptools
[08:09] <lifeless> god, why isn't it finding it
[08:10] <mgz> hmm, interesting
[08:10] <mgz>     return _win32_fixdrive(mkdtemp(*args, **kwargs).replace('\\', '/'))
[08:10] <mgz> RuntimeError: maximum recursion depth exceeded
[08:10] <mgz> wonder what the *top* of that stack was
[08:11] <lifeless> \o/
[08:11] <lifeless> I'm fairly sure thats not my patch :>
[08:11] <lifeless> IMBW
[08:11] <mgz> I'll try dev and see if it's a recent thing there
[08:12] <mgz> yup, it's on dev... gra.
[08:13] <lifeless> ><
[08:13] <lifeless> have you perhaps looked into how distutils finds files before ?
[08:13] <mgz> ooh, I just upgraded testtools yesterday
[08:14] <lifeless> mgz: teehee
[08:14] <mgz> wonder if it's related to that rather than a bzrlib change... hope not.
[08:15] <lifeless> ok, MANIFEST existing messes setup.py up.
[08:15] <lifeless> ><
[08:16] <mgz> nope, regression from r5326 - sorry vila
[08:16] <lifeless>  /o\
[08:17] <mgz> the problem with tests... need them to be static to be reliable, but then they become full of cruft and bad examples
[08:17] <lifeless> well
[08:18] <lifeless> I don't really care about old cruft badness; I care about performance and maintainability.
[08:18] <lifeless> Folk that use tests as examples of production code are being optimistic IME.
[08:18] <mgz> the problem with that is expecting new contributors to write tests when bzr has changed style substantively several times across its lifetime
[08:19] <lifeless> and new tests have fluent folk reviewing, so at most a little rework happens when someone copies.
[08:19] <lifeless> which the reviewer can usually trivially do.
[08:19] <mgz> I'm still not sure how to write a bunch of things I'd like to be testing... and I quite like tests
[08:19] <lifeless> mgz: yeah, there is some overhead there, but new contributor % vs total-test-base-size  :>
[08:19] <lifeless> mgz: just ask !
[08:20] <mgz> okay, poping the stack, need to check your lsprof ones still
[08:21] <mgz> passes with 5326 merged out.
[08:25] <lifeless> today is yak shaving day.
[08:25] <lifeless>  /o\
[08:27] <lifeless> james_w: if you're up, have you looked into bug 588060 any further? I'm hitting it now with a fairly simple rename (util.py -> compat.py in testtools)
[08:33] <mgz> okay, fixing osutils is easy, though I'm a little confused as to what vila was trying to change there
[08:35] <mgz> ah, I see, ugly lazy import interaction
[08:36] <mgz> and mostly pointless, I don't think you can even do `bzr rocks` without importing tempfile
[08:36] <lifeless> lazy import is a bit overused as a tool
[08:36] <mgz> osutils should just... not shadow things in the os module, it's bad, wrong, and confusing
[08:37] <lifeless> no real opinion either way here
[08:37] <lifeless> OT1H the function names are well defined and we do supply less broken versions
[08:37] <lifeless> OTOH they are shadowing the real ones.
[08:40] <mgz> well, it's better than monkey patching ntpath at least, but what, off the top of your head, is the difference between os.rename and osutils.rename for instance?
[08:41] <lifeless> handles open files
[08:41] <lifeless> that one is more questionable
[08:44] <mgz> ...think I'll keep this a one-line fix, rather than trying to make the code sane
[08:44] <lifeless> :>
[08:48] <lifeless> that reminds me
[08:48] <lifeless> have you seen withhacks? I think you'll appreciate the evilness
[08:48] <lifeless> mgz: ^
[08:50] <mgz> ah, no, but... I've seen the sort of things ruby people do
[08:50] <lifeless> http://pypi.python.org/pypi/withhacks
[08:50] <mgz> using with to create tree structures like html DOMs and anything else they want an indent for
[09:01] <mgz> okay, that really is quite horrid. the javascript-style with is bad enough, but the xargs class is just... insane
[09:01] <mgz> why would anyone ever think doing that is a good idea...
[09:03] <mgz> one thing I would like the with statement for (and I'm not all that keen on it, it's a whoops-we-screwed-up-scoping-originally type modification like the javascript 'let')
[09:03] <mgz> is lazy imports.
[09:03] <mgz> could do lazy imports with with, and then not have any of that string parsing mess
[09:11] <lifeless> mgz: there was a thread on that on python-ideas just recently
[09:12] <mgz> I stopped reading python-ideas shortly after it was created
[09:12] <lifeless> :)
[09:12] <mgz> seemed like python-shutup-and-get-off-dev, has it improved?
[09:13] <mgz> what was the thread subject?
[09:14] <lifeless> looking
[09:16] <lifeless> explicitation lines
[09:19] <mgz> reading.
[09:25] <mgz> seems very alien for python (and not just because of the french word)...
[09:26] <mgz> using to just being able to read forwards, rather than in every direction at once as per functional languages
[09:26] <mgz> *used
[09:27] <fax8> hi guys, I've checked out from a .htaccess password protected directory repository. Now each time I bzr up it asks me the username/password twice.. is this a bug?
[09:27] <mgz> yes.
[09:29] <fax8> ok, I'm on bzr 2.1.2.. new versions fixes that?
[09:31] <lifeless> I've not heard of the bug before
[09:31] <mgz> trying to find bug, but I might have hallucinated it.
[09:32] <lifeless> I'd check you have your authentication.conf setup correctly.
[09:33] <lifeless> mgz: set a message on your installer merge... and land it:)
[09:33] <lifeless> mgz: you can use lp-propose -m to set the message when you create it
[09:34] <mgz> fax8: other thing you can try is -Dhttp and look at the log
[09:34] <mgz> have I got perms to land on the installer project lifeless?
[09:35] <lifeless> mgz: you put a merge up for bzr
[09:35] <lifeless> mgz: you would for the installers if you joined ~bzr no ~bzr-core, I think.
[09:35] <mgz> oh, that bit, doh.
[09:36] <mgz> ...maybe I should join ~bzr, given yesterday
[09:37] <mgz> poking bzr lead to changes across three different projects
[09:40] <fax8> here is the log http://pastebin.com/wfPS3VmQ
[09:41] <fax8> I'm still not too bzr savy to understand what's happening there
[09:41] <vila> mgz: Was your fix a one-line change to use tempfile.mkdtemp instead of mkdtemp ?
[09:41]  * vila passing around *very* briefly
[09:42] <mgz> it was: https://code.launchpad.net/~gz/bzr/win32_mkdtemp_infinite_recursion/+merge/29166
[09:42] <mgz> fax8: so, the thing that jumps out there is the 401-401-401-200 sequence
[09:43] <mgz> *401-404-401-200
[09:43] <fax8> ok, what should I do?
[09:43] <vila> SHUDDER, introduced after a review tweak :-( And as such not tested on babune :-( :-(
[09:43] <lifeless> vila: regressions hide around every change
[09:44] <vila> which is daunting as this was part of an effort to make the test suite *pass* on windows :-(
[09:44] <vila> lifeless: yeah, I don't run enough tests...
[09:45] <mgz> to avoid it for the moment you can probably put the password in authentication.conf as lifeless suggested earlier
[09:45] <mgz> I'll have a go at repoing here later.
[09:45]  * vila goes back tightening his hanging rope
[09:45] <mgz> fax8: `bzr help authentication`
[09:47] <mgz> what was I doing... oh yeah, commit message
[09:47] <vila> mgz: was it at least caught by a fialing test ?
[09:47] <mgz> it made the whole test suite blow up.
[09:47]  * vila put the rope aside
[09:48] <vila> mgz: sorry for that and thanks for the fish^H^Hx
[09:55] <mgz> ...launchpad doesn't seem to have a way of unproposing yourself of a team
[10:04] <mneptok> mgz: did you mistakenly try to join worldcup-fr?
[10:04]  * mneptok woggles an eyebrow at all the French present
[10:04] <mgz> heh
[10:06] <GaryvdM> Hi all
[10:07] <mgz> morning gary.
[10:09] <GaryvdM> mgz: Any luck with removing the win32 installer stuff out of setup.py?
[10:10] <mgz> ha, I'm too smart to launch on that one ;)
[10:11] <GaryvdM> mgz: I think I'm going to have to add to if for launchpadlib, and it feels wrong putting it in to bzr.dev/setup.py....
[10:11] <GaryvdM> s/if/it
[10:12] <lifeless> GaryvdM: to shave the yak, or yak the shave?
[10:13] <mgz> yeah, half the file is qbzr/tbzr/py2exe already... needs doing, just a little painful
[10:13] <lifeless> the question to ask is
[10:13] <lifeless> 'if someone is installing directly from source, do they need this'
[10:14] <lifeless> if the answer is yes, do it in setup.py (or something imported into setup.py)
[10:15] <GaryvdM> I feel the answer is no.
[10:15] <lifeless> then do it outside of setup.py
[10:16] <lifeless> whatever is in setup.py is irrelevant at this point :)
[10:31] <mgz> on the fax8 http auth problem from earlier, does this (typing guest/password as prompted):
[10:31] <mgz> bzr branch http://float.endofinternet.org/bazaar/testauth
[10:31] <mgz> also prompt twice for everyone else?
[10:32] <mgz> there are a lot variables with bzr and http
[10:37] <lifeless> twice
[10:37] <lifeless> love the domain
[10:38] <mgz> thanks, I'll poke around later and see if I can find the problem.
[11:45] <lifeless> mtaylor: https://code.edge.launchpad.net/~lifeless/bzr-builddeb/trunk/+merge/29167
[11:45] <lifeless> we'll want to port the basic support for this to bzrtools too
[11:50] <lifeless_> 20:44 < lifeless> mtaylor: https://code.edge.launchpad.net/~lifeless/bzr-builddeb/trunk/+merge/29167
[11:50] <lifeless_> 20:44 < lifeless> we'll want to port the basic support for this to bzrtools too
[12:00] <lifeless> now where was I
[12:00] <lifeless> thats right, merge-upstreaming
[12:06] <iocor> is it possible to get the changes to file contents from a TransformPreview object?
[12:08] <lifeless> should be possible
[12:08] <lifeless> I think it offers the tree interface
[12:08] <lifeless> and thus tree.get_file(file_id) -> file contents
[12:10] <iocor> .get_preview_tree.get_file(file_id).read()?
[12:10] <lifeless> yea
[12:11] <iocor> thanks
[12:32] <iocor> lifeless: how would I do the same thing post-commit? (I'm using a builder to do the commit)
[12:32] <lifeless> I need a little more context to help
[12:34] <iocor> lifeless: so I'm looking to get all the file contents of all the files in my branch after a commit
[12:36] <lifeless> are you using the API ?
[12:37] <lifeless> or command line
[12:40] <lifeless> ....and packages for testtools and subunit uploaded to debian.
[12:40] <iocor> bzrlib
[12:40] <lifeless> so, you have two options
[12:40] <lifeless> a post comit hook
[12:40] <lifeless> or after calling commit, you can obtain the revision tree from the repository for the committed revision
[12:41] <lifeless> revid = tree.commit(..)
[12:41] <lifeless> revtree = tree.branch.repository.revision_tree(revid)
[12:41] <lifeless> revtree.lock_read()
[12:41] <lifeless> revtree.get_file(fileid)
[12:41] <lifeless> etc
[12:42] <GaryvdM> mgz: I've managed to move the py2exe code to it's own file in bzr-windows-installers. It feels a bit hackey. Maybe you could take a look, tell me what you think. http://bazaar.launchpad.net/~garyvdm/bzr-windows-installers/maybe/annotate/head:/build_bzr_py2exe.py
[12:44] <GaryvdM> Let me see if I can build an installer with it...
[13:11] <iocor> ok, I have the following code: http://dpaste.com/214454/ and the following trace: http://dpaste.com/214456/. For some reason post-commit the file hasn't changed even though the TransformPreview contains a change to the repo. Why is this?
[14:06] <fbond> nit
[14:07] <fbond> (Sorry, empathy window stole my keyboard focus.)
[18:34] <PrinceAMD> hi guys, does bzr make 2 copies of images when a client do a fetch/checkout, i'm using svn right now, and if my image folder has 100 images inside .svn it has the same so it uses 2x the space
[18:58] <jam> PrinceAMD: no
[18:58] <jam> it will have a compressed copy in the local repository, but it doesn't need the pristine copy that svn uses
[19:01] <PrinceAMD> ok jam , also image does not compress that well, so i might end up with same result
[19:05] <jam> PrinceAMD: there will be a fair amount of 'it depends' involved.
[19:05] <jam> such as, you could do a lightweight checkout
[19:05] <jam> or if you have a shared repo, there is only 1 copy across all your branches, etc.
[19:09] <PrinceAMD> hm.. lightweight checkout looks nice, i'll test it
[19:19] <GaryvdM> Hi jam.
[23:10] <lifeless> mgz: small meta: when commenting on bugs, be lovely if you can triage at the same time.
[23:10] <lifeless> you don't have too, and perhaps you usually do - if either apply just ignore me :)
[23:20] <mgz> GaryvdM: the py2exe move looks pretty good to me, surely it's not that easy though :)
[23:21] <mgz> lifeless: I don't have perms. well, I can confirm, and assign to myself, but I can't set prio or any of the rest
[23:21] <lifeless> garh
[23:21] <lifeless> ok
[23:21] <lifeless> so I can add you to bzr; want to be in there ? cost: lots of mail. pros: no more process friction.
[23:21] <mgz> I was looking at that this morning
[23:22] <mgz> the main is gmail won't let you filter on X-Launchpad-Message-Rationale
[23:22] <mgz> +pain
[23:22] <lifeless> oh
[23:22] <mgz> so, it'd probably nuke my nice orderly mailinglist account
[23:22] <lifeless> I filter on the rationale paragraph at the bottom of the mail
[23:23] <lifeless> 'because you are a member of' :P
[23:23] <mgz> ah, the "You received this bug notification because..."
[23:23] <lifeless> you can also do a direct subscription in LP
[23:23] <mgz> that sounds like it'd work
[23:23] <lifeless> and then turn off things
[23:23] <lifeless> e.g. don't care about mac installers? subscribe to that with a no-mail subscription
[23:25] <lifeless> mgz: your mkdtemp patch needs landing :)
[23:26] <mgz> hm, this might be a bug, it seems "because you are a member of..." overrides "because you are a direct subscriber..."
[23:26] <mgz> don't want to archive bugs I actually filed
[23:27] <lifeless> so this is something deryck is very interested in
[23:27] <lifeless> they are overhauling the bugs subscription stuff at the moment.
[23:32] <lifeless> I can has review? https://code.edge.launchpad.net/~lifeless/bzr/loomsupport/+merge/29139
[23:33] <mgz> me no know looms 'm 'fraid
[23:33] <mgz> ah, you're just deleting something. and... is adding the matchers there serving any purpose?
[23:38] <lifeless> oh! oversight
[23:38] <lifeless> I was going to make the same change I made a few revisions earlier to per_interbranch
[23:38] <lifeless> where the test is duplicated
[23:38] <lifeless> I changed my mind.
[23:42] <mgz> ...either I'm going mad, or there's no way to add the "inbox" label back to a thread with the basic gmail web interface
[23:43] <lifeless_> o/~ I hate huawei E160's o/~
[23:43] <lifeless_> 08:38 < lifeless> oh! oversight
[23:43] <lifeless_> 08:38 < lifeless> I was going to make the same change I made a few revisions earlier to per_interbranch
[23:43] <lifeless_> 08:38 < lifeless> where the test is duplicated
[23:43] <lifeless_> 08:38 < lifeless> I changed my mind.
[23:44] <mgz> Isee.
[23:45] <lifeless_> (changed and deleted instead)
[23:58] <mgz> does per_interbranch cover what per_branch is testing anyway?