/srv/irclogs.ubuntu.com/2010/06/23/#bzr.txt

lifelessI'd like a python2to2and300:00
lifelessjam: ^00:00
lifelessmgz: ok, I'm looking at trunk failures now00:00
lifelessmgz: while you're fixing shiftjis00:01
lifelessmgz: care to being in that __init__ guard I sketched, too ?00:01
mgzyup, will do. want the straight up must-be-unicode version?00:02
lifelessyeah00:02
jamlifeless: /me is long overdue for leaving00:02
jamMaybe i'll chat later00:02
lifelessI think that that is what my analysis said would wokr00:02
lifelessjam: ok, catch you around00:02
lifelessoh, and don't get me started on what PQM is going to need to test 2.4 *and* 300:03
lifelessshudder00:04
lifelessbabune ftw00:04
lifelessok, the detailsProvided stuff is james_w's patch00:04
james_wnot py3k compatible?00:05
lifelessjames_w: nope, and I didn't even think to try, it looked like such a no-brainer00:05
lifelessjames_w: have a look at the pastebin, ignore the two shiftjis failures00:05
james_wlifeless: did you see my testr MP? (I'm not sure whether MPs actually reach the people I want them to)00:07
lifelessjames_w: yes; uhm00:07
lifelessI was tired00:07
lifelessso, I don't want to block you; but there is a bug open about that command already00:07
james_wnp, just wanted to know it was in a queue somewhere00:07
lifelessI'd like to fix both00:07
james_wthe bug opened by me?00:07
lifelessthe bug thats open is that default_test_id_list is handled oddl00:07
lifelessby me00:07
lifelessI want to be able to say, in .testr.conf for loom00:08
lifelessI want to be able to describe the default tests to run00:08
lifelessand IDOPTION to expand default_test_id_list via the normal IDOPTION expansion00:08
lifelessor somethin00:09
lifelessanyhow, that use case and yours are very tightly coupled00:09
james_wok00:09
lifelessand I think your simply-bail approach conflicts with what I want which is kindof to filter more tightly00:09
lifelessbut still keep the original filter00:10
lifelessactually, thats it - in english00:10
james_wbug 531666 ?00:11
ubot5Launchpad bug 531666 in Testrepository "IDOPTION needs exploring (affected: 1, heat: 2)" [Medium,Triaged] https://launchpad.net/bugs/53166600:11
lifelessI want to be able to say, for a bzr plugin 'this is how you trigger the default set of tests for the plugin', 'this is how you run a human reduced set for the plugin', 'this is how you run a precise list' and (probably) 'this is how you turn off testr managing the list of tests'00:11
james_wmakes sense00:12
lifeless-- foo bar baz00:13
lifelessis already supported I think00:13
lifelesswhich isn't enough to turn off supplied by default parameters.00:14
lifelessanyhow - thats where I'm at, if you wanted to bring all that together that would be awesome00:14
lifelessif not00:14
lifelessI'll happily take something that fits clearly into that space, which I don't think your current patch does00:14
lifelessjames_w: ah iteritems00:15
mgzlifeless: test fix and __init__ method pushed00:15
james_wit's probably near impossible to come up with good names for the options in the config00:15
james_wlifeless: it's gone in 3?00:15
lifelessjames_w: yes00:16
james_wthose tests have very poor failure modes, I found that when I was writing the code00:16
lifelessjames_w: just use items() in 2.x code everywhere00:16
lifelessyeah00:16
lifelessI noticed ;)00:16
james_wnatural given what they are doing, but...00:16
lifelessewll00:16
lifelesscan be improved00:16
james_wok, want an MP for that, or can you just JFDI, as I'm about to head to bed00:16
lifelesssome of the hook stuff added snice the core was written could make bits better already00:17
lifelessjames_w: for 3.1? JFDI'd already00:17
james_wthanks00:17
lifelessno prob00:17
lifelessI should have caught that at merge time - mea culpa00:17
lifelesssleep well00:17
james_wthanks00:18
james_wnight all00:18
mgzare well all passing happy now?00:20
james_wlifeless: for testr, I don't get where my patch is different to the behaviour it has now for $IDOPTION. I think this is because I've never really understood the options for .testr.conf and just cargo-culted. I think it's a problem area as many people will struggle to understand it, but I don't have good ideas for fixing it right now.00:20
lifelessjames_w: I will look more closely; probably while at pycon I'll get some personal time00:23
lifelessjames_w: I have a backlog at the moment - subunit patches, this unicode stuff in testtools - so not obviously right-or-wrong stuff gets queued a little00:24
lifelessmgz: yes, clean bill of health on 3.x00:24
lifelessand on 200:24
mkanatjam: I'm on now, if you wanted to debug the meliae stuff.00:30
lifelessmgz: btw testtools also sorts its NEWS file within sections00:32
mgzah, oh, hadn't noticed00:32
mgzeverything was beginning with T00:32
lifelessand P and J :P00:32
mgzand... J is before P!00:32
mgzso it's already mis-sorted00:32
lifelessyes, but thats me failing.00:33
lifeless:>00:33
lifelessmgz: so, you've changed the copyright on a file00:34
lifelessmgz: which is ok - you're contributing this as MIT ?00:34
mgzI did, it seems like the copyright assignment thing isn't happening to me, and the year needed updating anyway00:34
mgzbut I certainly submit as-per the licence00:35
lifelessgreat00:35
lifeless__all__ should be sorted too, just like imports00:35
lifeless(I'm doing this as I note things)00:35
mgz(with minor worries about Python licence derivation)00:35
lifelessbah, it is, diff confused me00:36
mgzah, there might be one import line that's missorted I spotted the other day and forgot to fix00:36
lifelessis ascii(foo) safe on arbitrart objects00:36
mgzseems to be00:37
mgz>>> ascii(object())00:37
mgz'<object object at 0x00C39298>'00:37
lifelessthat is scary00:37
lifelessscary scary scary00:37
lifelesstell me about this hunk00:37
lifeless     def _u(s):00:38
lifeless-        return unicode(s, "latin-1")00:38
lifeless+        """Use _u('\u1234') over u'\u1234' to avoid Python 3 syntax error"""00:38
lifeless+        return (s.replace("\\", "\\\\").replace("\\\\u", "\\u")00:38
lifeless+            .replace("\\\\U", "\\U").decode("unicode-escape"))00:38
mgzehehe, yeah00:38
mgzthis is where just using u"" would be soooo nice00:38
mgzI reason that that code is correct as follows00:39
mgzinput is an arbitrary bytestring00:39
mgzwe double escape the escape character00:39
mgzwe then roll that back for the two kinds of unicode escape00:39
mgzso, we now have a string with no escape sequences, except unicode ones00:40
lifelessso this is the 'string is unicode==False' case00:40
lifelessperhaps the docstring means 'to avoid Python 2 syntax errors' ?00:41
mgzyeah, and it's only for testing-testing code00:41
mgzno, the problem is you can't just use u"\u1234" in Python 300:41
mgzso the only 2+3 source compatible way to use unicode is... never to use unicode escapes in literals00:42
lifelessyour example seems to be a noop00:42
lifelesswhich leave me horribly confused.00:42
mgz_u('\u1234') -> u'\u1234' (2) or -> '\u1234' (3)00:43
mgzit is horribly confusing, which I blame on the porting strategy00:43
lifelessso the old _u didn't honour unicode escapes00:44
lifelessit required a latin-1 [the file encoding] encoded unicode string00:44
mgznope, it basically didn't work for anything but the bottom 256 codepoints00:44
mgzright.00:44
lifelessso your doc string really means00:45
lifeless'manually handle unicode escapes provided in the string because we cannot use the 'u' prefix on python 3.00:46
lifeless'00:46
mgzIt's test-instructional, "do this or you break Python 3"00:46
mgzyeah.00:46
lifelesswell, we need _u() out side of tests00:46
lifelessso it I think its worth having it be _good_00:47
mgzwell, it's not currently used outside tests, but if you can word the hack better go for it.00:47
mgzmost of testtools can rely on Python 2 upcasting ascii str to unicode00:48
mgzand never use unicode literals00:48
lifeless     def _u(s):00:50
lifeless-        return unicode(s, "latin-1")00:50
lifeless+        """Implement a function version of the 'u' prefix.00:50
lifeless+00:50
lifeless+        This is needed becayse the u prefix isn't usable in python3.00:50
lifeless+00:50
lifeless+        To migrate code that was written as u'\u1234' in Python 2 to 2+3 change00:50
lifeless+        it to be _u('\u1234'). The Python 3 interpreter will decode it00:50
lifeless+        appropriately and the no-op _u for Python 3 lets it through, in Python00:50
lifeless+        2 we then call unicode-escape in the _u function.00:50
lifeless+        """00:50
lifeless+        # The double replace mangling going on prepares the string for00:50
lifeless+        # unicode-escape - \foo is preserved, \u and \U are decoded.00:51
lifeless+        return (s.replace("\\", "\\\\").replace("\\\\u", "\\u")00:51
lifeless+            .replace("\\\\U", "\\U").decode("unicode-escape"))00:51
lifelessmgz: we can't rely on upcasting, because it can go so horribly wrong.00:51
lifelessI'm going to make that a __literal and use it for _u in both 2 and 300:52
mgzhehe, yeah, that docstring covers it. one of the reasons I didn't write it initally was because it would end up five times bigger than the code00:52
mgznitpick: you don't need 'Implement' at the start00:52
lifelesstrue00:53
mgzanyway, this is a poster child for where 2to3 works better than source-compat (there are cases in the reverse as well)00:54
lifelesspep 257 needs a refresh for300:56
mgzXXX Mention docstrings of 2.2 properties <- if that's not done yet, might be a while coming00:56
lifelessyeah00:57
lifelessgutworth probably should see this changed version00:58
lifelesswhat about00:59
lifeless+        # GZ 2010-06-16: Python 3 StringIO ends up here, but probably needs00:59
lifeless+        #                different handling as it doesn't want bytestrings00:59
mgzno code is actually passing a StringIO object into that function (unless some testtools user has replaced sys.stdout with one prior to using the test runner), so it's a drawback, but not an exercised one01:00
lifelessand I don't quite understand what the sys.version_info block that makes a new stream of the same class, actually does.01:00
lifelessmgz: runner or result ?01:00
mgzTestToolsTestRunner01:01
lifelessmgz: so it doesn't matter right now, but when pqm does to 301:01
lifelessit uses subunit01:01
lifelesswhich uses testtools01:01
lifelessand it formats into a stringio for handing off to email01:01
lifeless:>01:01
lifelessWill you follow up later on this ?01:02
mgzthe new stream of the same class thing is in lieu of just doing `stream.errors = "replace"`01:02
mgz^yup, there are still some things to poke here, I've got some expectedfailures and a skipped test01:03
mgzgenerally, # GZ comments are things that I intend to delete when I fix them01:05
lifelessright01:08
lifelessI was checking you were planning on continuing to scratch01:09
lifelessthat this was a stepping stone not a result01:09
lifelessthis worries me01:09
lifeless+def _exception_to_text(evalue):01:09
lifeless,,,01:09
lifeless+    except:01:09
lifeless+        pass01:09
lifelesswhy not be a little more precise ?01:10
mgzit's bad, but it's what traceback._some_str does01:10
mgzI have a shelve thingy which adds an `isbaseexception` function and reraises those01:11
mgzbut behaviour on Python 3 will still be, KeyboardInterrupt during Exception.__str__? eat it.01:11
lifeless        list = ['Traceback (most recent call last):\n']01:12
lifeless->01:12
lifeless        list = [_u('Traceback (most recent call last):\n')]01:12
mgzgets upcast safely, it's fine.01:12
lifelessI have two reasons for doing that01:12
lifelessfirstly, because if there *is* a bug that lets things go wrong, it won't help as it is01:13
lifelesssecondly, I want to be able to look at a string and go 'its not a function parameter to control behaviour' -> must have _b or _u01:13
lifelessmgz: also, naughty01:15
lifelessbytes is a classname01:15
mgzha. habit, I often use that.01:15
mgzat least it wasn't added as a keyword in 301:16
lifelessme too, I'm trying to fix myself01:16
lifelesslist = [] is a bit weird too01:16
mgzI do see the value in clearly documenting what should be a unicode object, but as we've just seen _u is not overhead-free01:16
lifelessperformance wise ?01:16
mgz^blame the traceback module, I'd love to have a less-weird way to write out all the logic in this function01:17
lifelessoh, and 2 lines of VWS between functions please01:18
lifelessPEP801:18
mgzwasn't that just classes?01:18
lifelesstop level 'things'01:18
lifelessSeparate top-level function and class definitions with two blank lines.01:19
lifelessmethods are single lines01:19
lifelesslook under "Blank Lines' in the pep01:19
mgzso it does.01:19
mgzI've been doing one line between related-but-not-class-method functions01:20
lifelessits ok01:20
lifelessI'm not terribly concerned, fixing where I notice, and signalling back to get better input in future ;)01:21
lifelessI'm not convinced that:01:22
lifeless+    else:01:22
lifeless+        # For Python 2, need to decode components of traceback according to01:22
lifeless..01:22
lifeless+        del __F, __M, __f, __g, __m01:22
lifelessis shorter than copying the method.01:22
mgzit's not.01:22
mgzthat import sorting thing I mentioned, testtools/content.py - changed TestResult to import from testtools not unittest, but didn't then sort it right01:22
lifelessdone01:22
mgz^one of the reasons I didn't copy the method was though we can doing MIT->Python to put testtools things in core, I was unsure how far we could do Python->MIT01:23
lifelessit looks like its *just* shorter01:23
lifelessthan 2.701:23
lifelessoh, fairly safely I should think01:23
lifelessI'll let it in01:24
mgzwell, I doubt anyone will actually care, but I didn't want to create problems01:24
lifelessjml: ^ if you go blind, blame me and w'ell pull it out01:24
lifelessmgz: very considerate.01:24
lifeless(seriously)01:24
lifelessuhm01:25
lifelessyour 3.1 _StringException has no __str__ now01:25
lifelessis that deliberate?01:26
mgzyup.01:26
lifeless*blink* why ?01:26
mgzthe Exception.__str__ method does the right thing.01:26
mgzunless we *intend* to pass extra arguments then ignore them01:26
lifelessno, thats fine, citation needed ;)01:26
lifelessI'll add01:26
lifelessmore style things01:28
lifelessclass foo01:28
lifeless"""docs"""01:28
lifeless\n01:28
lifelessdef stuff01:28
mgzwhere's that?01:29
lifelesstest_compat01:30
lifelessshould _disabled_test_string_exception be a skip ?01:30
mgzah yes, whoopsie.01:30
mgzit's fine as a no-run, I intend to fix... whatever bug number that was... soonish01:31
lifelessits a shame we need temp files01:33
lifelessrather than just calling into compile()01:33
lifelessI guess there are dragons there01:33
lifelessbut I can live with the slower test suite01:34
lifelesslanded01:34
mgztemp files are a clean-ish way of doing this, and not too much of a slowdown01:34
lifelessi absolute times, no, but relative it was shocking :)01:34
lifelessnow01:35
lifeless-> #subunit01:35
mgzheh, yes, perhaps I'm too used to bzr tests building whole working trees each test01:35
lifelessalso undesirable01:37
lifelessbut a little harder to fix comprehensively01:37
mgzI'll add looking at making some of them just use compile to my list01:38
lifelessidle priority01:39
lifelessits not a functional issue01:39
mgzthe ones where it most needs a directory system are the filesystem encoding ones and now reading back for syntax errors, the rest might be avoidable without hurting coverage01:39
pooliehi all01:41
mgzhey poolie.01:41
lifelessmorning poolie01:49
pooliehi lifeless01:51
lifelessI think I started one of those long threads we dread this morning :) - sorry !  [python 3]01:52
pooliemm, i've seen worse :)01:52
lifelessits only just beginning :>01:52
mgzit doesn't help that you started everyone off confused about what the goal was01:52
pooliei actually looked at running with -3 a while ago when i added http://doc.bazaar.canonical.com/bzr.dev/developers/code-style.html#python-versions to the docs01:52
lifelessmgz: if you're going to accidentally start a long confused thread, do it well!01:53
mgzhad you put "I think source-compatible is the way to go, not 2to3, because..." at the top, would have saved six or so messages01:53
lifelessah, thats where the python version is documented01:53
lifelessI filed a bug that is mostly-fixed already; neat.01:53
lifelesshowever we don't expose that to our users yet, I don't think.01:54
lifelessmgz: well, hindsight01:54
mgzindeed.01:54
mgzblast, no more pending pqm patches with commit messages, can't test feed-pqm change lets me enter my email password on the terminal01:55
lifelessmgz: pastebinit ?01:59
mgz!pastebin02:00
ubot5For posting multi-line texts into the channel, please use http://paste.ubuntu.com | To post !screenshots use http://tinyurl.com/imagebin | !pastebinit to paste directly from command line | Make sure you give us the URL for your paste - see also the channel topic.02:00
mgzhttp://paste.ubuntu.com/453676/02:00
mgzsomething along those lines?02:01
lifelesshah, cute02:03
lifelessyes02:03
jammgz: except you now also need to catch the returned object and call obj.__exit__()02:03
jamhi lifeless02:03
lifelessyea02:04
lifelessper my mail to the list and the initialize docstring in trunk02:04
lifelesspoolie: I'm popping up to rangiora to drop stuff that needs to be looked after while we're in .au02:05
lifelesspoolie: I'll be 2-3mumble hours02:05
lifelesspoolie: if there is anything urgent, lets do it now, otherwise see you in a bit02:06
lifelessmgz: you can play with ~lifeless/bzr/encoding-option/+merge/2812602:07
mgzhave to set a commit message on it?02:08
poolielifeless: ok np02:08
poolieyou could do some bug triage if you run out of patches02:09
mgzokay, that seems to work.02:13
lifelesspoolie: sure thing, I wish I could do that via mail02:15
poolie.. and you could if i finished the dkim thing and got it deployed?02:15
lifelesspoolie: I think its deeper than that02:19
lifelesspoolie: because I use google apps02:19
lifelessnot gmail per se02:19
poolieoh and they don't sign it02:19
poolieok02:19
lifelessso I need to also find out how to make them sign that02:19
poolieyou could gpg sign it02:19
lifelessIf I switch back to evo02:19
lifelessusing the google imap service02:20
lifelessthat will work02:20
lifelessOr if I use firefox rather than chrome there is some magical gmail gpg extension I found but haven't used.02:20
lifelessits all a bit of a mess02:20
lifelessI have a deeper question02:20
lifeless'why do we care so much'02:21
lifelesswhats the risk02:21
lifelessfor setting a bit on an email02:21
lifelessor the approved flag on an MP02:21
lifelessthe 'queue to PQM' one I would worry more02:21
lifelessand 'do stuff with builders'02:21
pooliei agree02:22
lifelessif someone forges something02:22
lifelessrollback the change - make *that* a secured, but possible operation.02:22
lifelessand blacklist em02:22
poolieadding pointless comments to bugs is roughly as disruptive as changing their state02:23
lifeless*possibly* whitelist google/yahoo/msn email providers as being rasonably authoritative etc02:23
lifelessanyhow, must go, and we're in complete agreement here I think ;)02:23
lifelesssorry, got sucked into replying02:42
lifeless*now I go*02:42
pooliemgz, thanks for the hydrazine patch02:49
mgzgetting it setup and working wasn't as bad as Alexander was fearing the other day02:50
mgz...I really should be getting to bed though ;)02:51
pooliemgz if i'd done it i probably would have just required 2.203:20
poolieit's a pretty nerdy tool03:20
* fullermd blinks.03:21
fullermdMonkeypatch the compiler to twist the syntax on older interpreter versions?!03:21
fullermdDid I miss the decision to rewrite in Perl?   :p03:21
=== parthm_ is now known as parthm
=== replicant is now known as hazmat
lifeless_back06:25
=== lifeless_ is now known as lifeless
lifelessmmm deep winter - totally dark here, now07:08
pooliethanks to russel for the light relief :)07:08
lifeless;)07:08
lifelessI'm going to get fully packed, taxi or whatever organised07:11
lifelessthen do some bugs for us07:11
lifelessit looks like the hotel wifi is a 3g dongle07:12
pooliehm07:12
lifelessso I might visit you as much as you are comfy with07:12
poolieas in, they give you a dongle07:12
lifelessyeah07:12
poolieor they have one thing shared for everyone07:12
lifelessthey give out a dongle07:13
pooliei've seen worse07:13
lifelessindeed07:13
lifelessspiv: I get asked about python3 2-3 times a month, in various fora07:19
=== davidstrauss_ is now known as davidstrauss
spivlifeless: interesting!07:27
lifelessI think so07:43
lifelessIts usually phrased as 'when do you think bzr will be python 3 ready'07:44
lifelessand I usually say 'some years'07:44
lifelessand explain the issues07:44
poolieis this more of a question about py3 or about bzr? :)07:44
lifelessI don't know07:44
lifelessits a good question to ask07:44
lifelesssome of the folk are python-heads07:44
pooliemine, or theirs?07:44
spivWhy do they care, I wonder?  Are they interested in using bzrlib?07:44
spivOr do they routinely ask which version gcc was used to compile their kernel too? ;)07:45
lifelesspoolie: I think its a good question to ask about whether they are asking because of python 3 interests, or bzr interests.07:45
pooliemm07:45
poolieit reminds me a bit of ipv607:45
poolieit will probably happen  faster07:45
lifelesspoolie: and see, its been a smashing success!07:45
pooliebut my impression was that most people were doing it for the sake of doing it07:46
lifelessthere are, I think, broadly three groups07:46
lifelessof questions, not people07:46
lifelessmmm07:46
lifelessmotivations for questions07:46
lifelessone set turns up when talking about performance07:46
lifelessfor instance, allison randall was one of the recent folk to ask about bzr python3 readiness07:47
lifelessshe of pynie, python-3-on-parrot fame07:47
lifelessand she was saying that pynie is something like 10 times faster07:47
poolie?07:47
lifelessanother set is the pure ecosystem stuff07:47
poolienm, i didn't think it was that much  faster07:48
lifelessfolk interested in python3 readiness in a general sense, or in what we think of python3 - 'oh, you can't use it yet? why not? ...'07:48
poolieperhaps on some microbenchmark07:48
lifelesspoolie: perhaps; I don't know.07:48
lifelesspoolie: can't really assess though at the moment ;)07:48
lifelessand thirdly, yes there are folk querying whether they can use python3 to do their thing, and know thye want bzrlib (or vice versa, have python3 investment, want to know if bzrlib works for them)07:49
vilahi all07:51
pooliehi there vila07:53
poolielifeless: for me the deadline is when ubuntu decides to make 3 the only option, or the default07:54
pooliei don't think they will remove 2 for a while07:54
lifelesspoolie: I'm sure they won't07:54
pooliebut it might become the default soon07:54
lifelessif barry has anything to do with it :)07:54
lifelesspoolie: so, I'm going to land https://code.edge.launchpad.net/~lifeless/bzr/encoding-option/+merge/28126 - my tweaked version; ok ? [asking as per your please-dont-land-my-stuff request]07:55
poolieyes, thanks07:55
lifelesshttps://code.edge.launchpad.net/bzr/+merges really wants an 'any unmerged-unrejected' status option07:57
lifelessor a set of checkboxes rather than a dropdown07:57
lifelesswhat do you think ?07:57
* poolie looks07:58
* poolie used bzr builddeb in mild anger today08:04
lifelessmgz: when you get up; if you could comment on https://code.edge.launchpad.net/~lovesyao/bzr/windows-utf8/+merge/1806 - that might be nice. If the approach is sensible it seems a small effort to put it in the right place.08:08
lifelesspoolie: mentioning it here because the audience is slightly smaller than the list08:26
pooliewhich bit?08:27
lifelesspoolie: one thing you seem to be not acking in the py3 thread, is the 'fact|rumour|well established myth' that 2to3 is really '2.6to3'08:27
poolieoh ok08:27
lifelessIf you have acked that, I'm sorry for mentioning it.08:27
poolieno, i didn't specifically08:28
pooliethe only specific cases turned out not to be true08:28
poolieotoh i'm quite prepared to believe there are some cases that are problematic08:28
lifelessok, cool08:30
lifelessI mention this because it affects the range of options in a very significant way08:30
lifelessbut, enough said08:30
lifelesswe're in broad agreement on initial steps08:30
pooliein looking at the changes that 2to3 makes08:32
pooliei can't see anything where the 2.x version is both relevant to us and not available in 2.408:33
pooliei may very well be wrong08:33
poolieif it turns out not to work, we'll have to try something else08:33
lifelessI filed this - https://bugs.edge.launchpad.net/launchpad-code/+bug/59743108:36
ubot5Launchpad bug 597431 in Launchpad Bazaar Integration "cannot set/remove prerequisite branch after creation of merge proposal (dup-of: 596796)" [Undecided,New]08:36
ubot5Launchpad bug 596796 in Launchpad Bazaar Integration "Can't add an pre-req branch to an existing MP (affected: 2, heat: 95)" [Undecided,Invalid]08:36
lifelesswhich was apparently a dup of an invalid bug08:37
lifelesswhich was filed separately08:37
lifelessI'm a bit concerned that good intentions are leading to a pretty crufty UI08:37
lifelessso I'm calling this to your attention to get another opinion08:37
lifelessanother case of the 'drop 2.5 and below' meme as related to py3 compat - I'm trying to hunt it down. http://lucumr.pocoo.org/2008/12/7/porting-to-python-3:-dos-and-donts08:38
pooliemm there's another one "python3 is a ghetto"08:39
pooliethat the recommended way of using 2to3 is going to encourage people to stay there08:40
lifelessTerry Reedy claims on http://www.pubbs.net/200901/python/13302-2to3-help.html that his understanding is that 2to3 can convert 2.5->3.0 but not in a way that keeps working on 2.5, but it can do that if you start with 2.6.08:46
lifelesswhich seems confused.08:46
lifelessanyway08:46
lifelessenough of this08:46
lifelesspoolie: if you had a comment about that bug, that would be nice.08:47
pooliethat might be part of the confusion08:48
pooliei don't intend to feed the output into py2.408:48
poolieheh08:49
pooliethat transcript is pretty funny08:49
lifelessyeah08:49
lifelessI was about to close it up top08:49
lifelessbut didn't08:49
spivI'd be amazed if people thought a "2to3" tool is intended to produce output suitable for 2!  But I could just be easily amazed :)08:49
poolie> If you want to do a one-time conversion, then 2.5 to 3.0 is fine.08:49
pooliethat's my understanding too08:49
poolieuh, considering he starts out by typing shell commands into the python prompt, the bar is pretty low08:50
pooliewhat a time sync08:52
poolie*sink08:52
lifelessyes. I blame guido.08:52
poolieactually i meant the profusion of misguided advice08:58
pooliere https://code.edge.launchpad.net/~lovesyao/bzr/windows-utf8/+merge/180608:58
pooliei can believe there's a bug there08:58
pooliethe patch itself is a bit weird08:58
poolieit would be nice to see some reproduction instructions08:59
lifelessyeah08:59
lifelessI hope mgz can shed light on it08:59
lifelessas he has all the equipment08:59
lifelessand I know his shiftjis encoding works :)08:59
pooliere prerequisite branches09:00
pooliethere is a difference between "this builds on X" and "this supersedes X"09:00
pooliei think prereqs are meant to express the first09:00
pooliepeople might of course forget to add the prereq when they create the mp09:00
poolieso it would be nice to be forgiving and let them change it later09:01
poolieaaron seems to have the approach that mps should be locked after creation09:02
pooliewhich seems a bit weird09:02
lifelessright, adding a prereq for our use case discussed recently is a hack09:02
lifeless-but-09:02
lifelessyou may realise that you have two things after the fact09:03
lifelessand split them up09:03
lifelessor as you say just make a mistake09:03
poolieright09:03
lifelessAaron links through to a bug that says precisely that things should be locked, citing an unexplained security concern.09:03
poolieistm that there is a rule "mps should not change drastically while they're under consideration"09:03
spivWell, I guess changing the pre-req should also change the diff to review.09:03
poolieand "you should be clear what the vote applies to"09:03
lifelessspiv: so does 'push' :>09:04
pooliebut the first should be enforced by humans more than code09:04
lifelessspiv: and neither email the reviewers.09:04
poolieand perhaps they should only be locked at the moment they're queued09:04
lifelesspoolie: yes, thats my stance09:04
spivSpecifically, you could have a pre-req that hides some revisions that add bad code.09:04
spivBut, you can do that already09:04
lifelesspoolie: thank you for the second opinion09:04
spivSo I don't quite follow abentley's concern either.09:04
lifelessspiv: right; in fact with a prereq you would say 'cannot queue, pre-req X is not approved to queue'09:05
spivRight.09:05
spivHmm, so a scenario that is sort of plausible is initially having a pre-req on a MP that hides some bad revisions.  Then reviewers review the good parts and approve, then the MP is modified to remove the pre-req and stays apparently approved.09:06
spivBut if you take a "once overall status is approved the MP is locked" approach then changing the pre-req like that would at worst knock it out of approved.09:07
lifelesswhats the weather like in sdyney atm09:07
lifelessspiv: agreed09:07
spivWeather applet says 14C, rain showers ;)09:08
lifelessso please do subscribe to the bug09:08
spivWhich sounds about right to me.09:08
lifelessand help me tease this apart09:08
poolieaccurate09:08
pooliequite wet here09:08
lifelessI'd hate for us to have a lot of machinery and complexity driving an odd user experience09:08
spivWell, I'll let abentley explain his concern first, rather than distract the bug itself with my speculation about his concern.09:08
lifelessurls changing09:08
lifelessetc09:08
lifelessspiv: sure09:08
pooliei suspect we need some use cases or something at a higher level than bugs09:09
pooliechanging user model is hard to negotiate through bugs09:09
* spiv makes sure he is subscribed to that bug09:09
=== oubiwann is now known as oubiwann-away
=== oubiwann-away is now known as oubiwann
vilalifeless: loom test failure, reno 115 for loom and bzr.dev revno 5317: AttributeError: 'RemoteBranch' object has no attribute '_set_last_loom'09:29
lifelessvila: what test ?09:29
vilalifeless: paste coming just a sec09:30
vilalifeless: http://paste.ubuntu.com/453808/09:30
vilaargh, forget the noise at the beginning, look at the last run09:31
lifelessI see it too09:31
lifelessis it new ?09:32
vilalifeless: starting at line 65 with BZR_PLUGIN_PATH=-site BZR_PLUGINS_AT=loom@${HOME}/.bazaar/plugins/loom ./bzr selftest -s bt.per_branch -s bt.per_interbranch09:32
vilabzr selftest: /home/vila/src/bzr/trunk/bzr09:32
lifelessvila: happy to fix it tomorrow09:33
vilalifeless: I encounter it yesterday but I thought I was out of date, so pretty new finally (after your patch for interbranch anyway)09:33
vilalifeless: ok, want a bug ?09:33
lifelessmeh09:33
lifelessno need09:33
vilacool09:33
mgzpoolie: ha! press ganged to hydrazine. sorry I went to bed before I could do the push.09:34
vilanot ablocker but pretty annoying as working *in* a loom requires that the plugin is active or the test suite fails (for 'bzr version' tests or something that needs to use the current bzr src branch)09:34
mgzpoolie: I know it's a dev tool, but as my main bzr is still pre-2.2 and lifeless has only *just* changed the init mechanism again, I had motivation to cover all angles09:35
vilalifeless: so whether or not I activate the plugin I can't get clean runs :-/09:35
pooliemgz no problem at all09:35
poolieif someone's using it with pre-2.2 i'm quite happy to add the support09:35
mgzlifeless: I'd forgotten about that branch, but was thinking of that sort of approach just the other day when doing bzr-grep stuff for parthm09:36
mgzdoing colour for windows, and doing the kind of console size change detection that vila nearly killed us all with means you need a console handle09:37
mgzso was going to find some time to investigate doing a custon ui object based on the win console stuff09:37
vilamgz: thanks for the credit !!! :-P09:37
mgz:D09:37
mgzwould be something like having a curses of TextUIFactory09:38
lifelessvila: its important to me that loom work09:38
lifelessvila: this week is pp week, so a different focus09:38
lifelessvila: but that will be very shallow09:38
lifelessvila: there will be a missing unwrap_branch or similar09:39
vilalifeless: sure, no worries, I've got a workaround: http://paste.ubuntu.com/453812/09:39
vilalifeless: may be not the right solution but unblocks me09:39
lifelessvila: loom side of the fix pushed.09:43
lifelessvila: you get to fix the bzr test :P09:43
vilaHa ! I hadn't thought about that one: paramiko use threads internally, exceptions can occur there but *can't* be caught...09:43
pooliewow, "Mojibake" leads into a world of distraction :)09:44
vilalifeless: you rock ! ... let me look09:44
lifelesspoolie: distractapedia ?09:45
pooliemm09:45
mgzlifeless: so, the basic idea of the lovesyao/ branch seems reasonable to me, but the duplicating bits from ctypes.wintypes, not checking for errors, replacing std streams, and putting it in the bzr script are all wrong09:45
lifelessmgz: ok, thats progress - thanks.09:46
mgzfor instance, apply that patch, then try and redirect bzr output to file, get nothing09:47
Mezhmmles...09:47
Mezbzr packaging is dodgy in lucid.09:47
MezI've installed under ubuntu-minimal - and it's throwing errors about missing _md5 in hashlib09:48
Mezah, actually, this is hardy :(09:48
lifelessMez: python-minimal isn't supported by anything - the package description says so :)09:51
pooliemgz: i agree09:52
Mezlifeless: *shrugs* then maybe ubuntu-minimal shouldnt use it.09:53
lifelessI agree09:53
MezI can't even do-release-upgrade with it09:53
mgzif there's another surge of interest about getting colour in core, I'll bump trying out a winconsole based ui factory up my list of fun things to try09:54
Mezwhat's the correct package for python?09:54
lifelessmgz: I was just trawling stale patches09:54
lifelessMez: python09:54
Mezwhich is apparently already installed...09:55
mgzit was a timely reminder, I punted on looking at it a few weeks back on bzr-grep09:55
lifelessor python2.5 / python2.6 etc09:55
lifelessMez: thats interesting09:55
MezImportError: no module named _md509:56
jpds1/1109:56
vilalifeless: meh, your fix is even more work for me than my workaround and looks suspicously hard to fix :-) So I think I'll stay with my workaround :)10:01
poolievila, re configs10:01
pooliei think the thing to do is to lock for the whole transaction but not make it too long10:02
pooliewe might need to look into what bzr-svn is writing into those files10:02
vilafor context: bug #52557110:03
ubot5Launchpad bug 525571 in Launchpad Bazaar Integration "No locking when updating files in ~/.bazaar (affected: 6, heat: 45)" [High,Triaged] https://launchpad.net/bugs/52557110:03
lifelessvila: your workaround fails to write a loom file10:04
lifelessvila: it creates corrupt looms and will really hurt you10:04
lifelessvila: so I recommend you don't.10:04
lifelessvila: to fix it, the bzr test just needs to relax a little.10:04
vilalifeless: only if there are no threads right ?10:04
lifelessvila: no, your workaround simply fails to write it.10:04
lifelessvila: possibly it writes it in some cases, I'm tired.10:05
lifelessvila: anyhow, definitely not mergable, because an empty loom is still meant to have a valid loom file.10:05
vilalifeless: sure, but I can't afford a failing test suite *right now* and for a couple of hours, so I'll stick with that, I'll check the loom state very thoroughly meanwhile10:06
spivI think the right fix is to add a _ensure_real helper to the Inter object for _set_loom_state, like it does for other things already.10:21
spivAlthough that may trip some HPSS call count assertions.10:22
lifelessspiv: thats what unwrap branch is and does10:23
spivlifeless: yeah, that's the one10:23
lifelessspiv: and the failure vila references is the extra get10:23
spivAh, good.  For some values of "good" :)10:24
lifeless'yes we have no bananas'10:24
poolieheh, i just had a cute failure in lp code10:47
poolieor bug, rather10:47
poolie        self.assertTrue(principal.person.preferredemail.email, 'foo.bar@canonical.com')10:47
poolieobvious once you see it10:47
poolienot so great that it passes10:47
mgzshould be assertEqual?10:49
poolieit should10:49
=== radoe_ is now known as radoe
exarkunbzr: ERROR: [Error 145] The directory is not empty: u'C:/Users/exarkun/twistedbot/windows7-64-py2.6-select/Twisted/.bzr/checkout/limbo/new-7/words'13:20
exarkunWhen running "bzr checkout svn://...."13:21
spivexarkun: ooh, wacky13:28
spivexarkun: bug report, please :/13:28
spivexarkun: often problems with temporary files on Windows are related to virus scanners keeping files open at inconvenient moments, interfering with attempts to delete or even rename them... possibly that's involved here?13:30
exarkunMaybe if there's something that comes with Windows 7, I don't know13:30
exarkunI don't think there's anything extra installed13:30
spiv(.bzr/checkout/limbo is a temporary directory for assembling files for the checkout)13:31
spivThat's what I feared :/13:31
spivMake sure to include the traceback from the .bzr.log, hopefully it will provide an extra clue.13:32
exarkunThat would involve being able to get files off of a Windows machine... I have no idea how to do that.13:33
spiv:(13:34
spivPerhaps add -Derror to the command line the build slave runs?13:34
spivThat will cause bzr to always dump a traceback if it exits with an error code.\13:35
exarkunCan't add arbitrary arguments to bzr command lines without modifying buildbot slave code13:35
spivvila: remember that paramiko bug?  https://code.edge.launchpad.net/~spiv/+archive/packaging-test13:36
spivexarkun: oh right, it's all software.  Everything is terrible :(13:36
spivvila: please install that on your lucid build slave13:37
spivvila: and undo whatever hack you did to hide the corresponding test failure13:37
vilaspiv: will look into it !13:40
vilaspiv: the hack was just to blacklist the test with -x :-)13:40
vilaspiv: so I can just add this ppa to my /etc/apt/sources.list right ?  Would a newer version packaged for lucid override that in due time ?13:42
spivvila: apt-add-repository ppa:spiv/packaging-test13:43
vilayeah, better, it adds the key too right ?13:43
spivvila: a newer version in lucid should override it if I didn't screw up the version on my package, yes :)13:43
spivRight.13:43
* vila boots the slave13:44
vilaspiv: it gets flagged as not authenticated :-/13:46
vilaspiv: not a problem for me but you may want to investigate13:46
spivoh boo.13:46
maxbspiv: Likely just Launchpad taking a bit of time to generate the key13:56
vilaspiv: test suite passing on lucid, test whitelisted again :) Well done13:58
spivvila: suite, I mean, sweet!  Thanks :)13:59
spivmaxb: well, luckily I'm unlikely to care about it tonight13:59
maxbspiv: It has fixed itself already13:59
spivmaxb: so if the problem fixes itself by magic then that's great :)13:59
vilaspiv: if you're bored, on hadry, we know have repeated failure for http://babune.ladeuil.net:24842/job/selftest-hardy/lastFailedBuild/testReport/bzrlib.tests.test_sftp_transport/SSHVendorBadConnection/test_bad_connection_ssh/ :-P14:00
spivmaxb: excellent :)14:00
vilahardly hadry, most probably hardy14:00
spivvila: bored?  Unlikely :)14:00
vila:-D14:00
spivvila: but in case *you* are... https://bugs.edge.launchpad.net/bzr/+bug/52263714:00
ubot5Launchpad bug 522637 in Bazaar "BzrCheckError: Cannot add revision(s) to repository: missing referenced chk root keys (affected: 10, heat: 54)" [High,Confirmed]14:00
vilaspiv: I thought you were so happy to reproduce that one locally ?14:01
spivvila: I'm happy, but also haven't yet had the time to dig into it at all14:01
vilabut bored, me ? I wish :)14:01
rbriggsatuiowawill a successful pull look the same as a merge + commit in the bzr history?14:31
spivrbriggsatuiowa: not quite14:32
spivmerge + commit makes a new revision, with two parent revisions: your prev revision, the merged revision.14:33
spivWhereas with a successful pull your local branch is simply updated to have its latest revision be the same as the latest revision as you are pulling from.  No new revisions are created that didn't already exist.14:34
rbriggsatuiowaspiv: so pull revision history will be slightly more readable?14:35
spivIn either case, the full history that you had previously and that the other branch will both be present.14:35
spivDepends on what you think makes a history readable :)14:35
spivAnd perhaps on which tools you use to look at the history.14:35
=== oubiwann is now known as oubiwann-away
spivBy default "bzr log" will only show "mainline" revisions, so a revision that merged 10 revs from another branch only takes up one entry.14:36
spivOr maybe you'd rather look at history with a GUI like "bzr qlog"...14:37
rbriggsatuiowaspiv: looking at what --include-merges looks like for both ...14:37
spivThere's not one right answer, it's a matter of what works for you :)14:37
spivIf you have time to experiment a little, then I recommend doing that and see what you like.14:38
rbriggsatuiowaspiv: I like the idea of pull slightly better - I'm trying to script some stuff out and pull seems nice in that if they haven't diverged I can just pull in - otherwise I'll bring the two branches up manually14:38
spivOtherwise, "pull when you can and merge when you can't" is likely to be a good default for you.14:39
rbriggsatuiowaspiv: sweet - thanks for your help14:39
spivYou're welcome.14:39
=== nlisgo_ is now known as nlisgo
exarkunI'm not sure I understand what this is showing me, <http://pastebin.com/h3cb0fyL>, particularly wrt _zippath.py15:10
exarkunI think that should be a rename from zippath.py, not an add15:10
exarkunHm.  It seems to be because when I did "bzr up-thread" I ended up with a pending merge for some reason.15:14
exarkunBut I didn't do anything that should require merging, I just added a new file15:15
spivIf the thread you are in has revisions not in the next thread, and you do up-thread, then it does that merge15:18
exarkunI wish it were more visible :(15:19
spivThe behaviour of up-thread in bzr-loom trunk has changed recently to make this a little more automatic, and I think more improvements are planned to cut down unnecessary merges.15:19
spivFile a bug, lifeless has been spending some time polishing looms recently.15:19
exarkuneverything else related to looms is really awesome, though15:21
jamspiv: what are you still doing up? :)15:25
jammorning vila15:26
vilamorning jam !15:26
vilaexarkun: you may want to look at --auto or even upgrade to the loom trunk (which requires bzr.dev currently though) where --auto is now the default15:28
vilaexarkun: with the latests version I intensively use 'bzr switch' and 'bzr up-thread [thread]' to work on the right thread when needed15:28
vilalatest versionS15:29
exarkunHmm 'bzr switch'15:29
vilajam: did you read the IRC logs from a couple of days ago (I think it was this week) where we discussed the update_copyright bug that update the copyright line without checking if the current committer is really the one doing the change ?15:30
jamvila: I did not, but I don't really care :)15:30
vilajam: which is the case I encounter when using looms and pulling new changes from bzr.dev and merging via up-thread15:31
jamthe point is to get the copyright lines correct15:31
jamit doesn't matter if *vila* changed the file15:31
jamit still needs an updated copyright line15:31
jamvila: that behavior is ~ intentional15:31
vilajam: right, you need to read the logs for different points of view :)15:31
jamvila: so... the only reason I don't update every file from the beginning, is because a file that is not otherwise modified, shouldn't end up modified just to update the copyright15:34
jamotherwise15:34
jamif the person had set the right copyright date15:34
jam*when they modified the file*15:34
jamthen my plugin would be a no-op15:34
jamotherwise, the copyright line is *currently wrong and should be fixed*15:35
vilaby who ?15:35
jamnow, there are cases where somebody did the modification in 2005, and you are just now merging it15:35
jamvila: does it matter who updates it?15:35
jamas long as the line is corret15:35
jamcorrect15:35
spivjam: I'm not really awake15:35
jamspiv: kisses to little Vincent15:35
jamspiv: and sleep well15:36
vilalifeless argued that pqm shouldn't be the one hence update_copyright shouldn't be installed there15:36
spivjam: but if I were, I'd say "but what about someone that makes a commit when their system clock is in the wrong year?" :P15:36
jamspiv: it would still get recorded in bzr with the wrong year15:37
vilaby extension, someone *merging* a change shouldn't update the copyright line either15:37
jamand update-copyright will then spit out the wrong year at a later time anyway15:37
jamhaving the wrong year is going to give wrong info for all sorts of reasons15:37
spivjam: other idea I had recently:15:37
jamvila: so... if you merge bzr.dev, the code is currently wrong (because some copyright headers haven't been updated)15:37
jamit is certainly possible that we should just spin on bzr.dev and get it right15:37
spivjam: it would be cute to keep copyright out of the files in the repo, and use content filters to add it to trees.15:37
jamrather than having your merges do it15:37
jamhowever15:38
jamyou should still get *convergence*15:38
vilajam: I'm already sold on convergence you know :)15:38
spivjam: thanks for the kind wishes15:39
spivg'night all!15:39
vilaI'd just mention the discussion about making the plugin less eager which will only *slow* down the convergence :)15:39
jamspiv: content filters would be interesting, I don't fully understand why you're required to have Copyright header in every file, etc.15:39
jamvila: I disagree15:39
jamthe plugin shouldn't be touching much if someone has already run it15:40
vilajam: but if you want to review https://code.edge.launchpad.net/~vila/bzr/cleanup/+merge/28306, convergence will happen faster :-P15:40
jamif you really want it, write a patch that includes an iter_changes() against all parents but the first, and omit files that seem changed in the first, are not actually according to the latter.15:40
vilajam: well, fixing that bug could certainly rally more users and converge faster then :)15:40
jamvila: meh15:41
jamI think the current semantics are correct15:41
jamI can't force an update in the branch you merged *from*15:41
jamso I might as well do it in the one you merged *to*15:41
jamvila: your diff is not ready yet15:41
vilajam: you can start by reading the commit messages :)15:42
vilateasing you :)15:42
jamvila: *way* to verbose15:42
jamyour commit comments are 4 screens15:42
jam(and poorly wrapped for some reason)15:42
vilaurgh, damn lp15:43
jamahh, if I make my screen full-width15:43
jamit gets slightly better15:43
jamit seems there is a column forcing early wrapping15:43
jamwhich is pretty ugly.15:43
vilaindeed, 80 columns ftw !15:43
jamvila: tbh, I find your style of log messages to be overly verbose.15:48
jamand hard to read15:48
jamI would rather more of a summary, and less of a line-by-line what changed15:48
jammaybe that's just me15:48
jam(having the filenames also makes it harder to read, because I have to mentally filter out stuff)15:48
jamThen again, if I ever go back years later, maybe I'd rather the extra detail15:49
vilathat's the gnu ChangLog style and we are a GNU project :-) Just focus of the first paragraph which is generally a summary15:49
vilaIt's part of my workflow and help verify my commits and it often helped catch typos or errors,15:50
jamvila: well, if launchpad formatted the page correctly, it might be easier. I assume things are indented, etc, appropriately?15:50
vilait also triggers some last minute fixes which were wrong though :)15:50
vilathey are wrapped to fit the 80 (surely less) on word boundaries which isn't always ideal when long identifiers are present.15:51
vilaBut overall since we have a hierarchical history in bzr.dev you rarely encounter them unless you dig for a specific point, and in this case *I* am happy to find the details ;)15:52
jamsure15:54
jambut I do try to read your logs sometimes, and am often put off from doing so15:54
jamjust letting you know15:54
jamyou certainly don't have to change15:54
jam*more* commits with terser info might work better :)15:54
vilayup, I keep trying :)15:55
jamit certainly is an argument for per-file commit messages15:55
JoshBrownWhen branching, where do you normally put the new branch relative to the main branch?16:34
vilaJoshBrown: it depends of your workflow, but I never put a branch *inside* another branch,16:38
vilaJoshBrown: if you intend to work on many branches for the same project, you want to use a shared repository,16:38
vilaJoshBrown: from there, you're free to define any hierarchy *under* the shared repo,16:38
vilaJoshBrown: if you have a few branches, just put them there, if you have more, group them into some topic folder (bugs, experimental, cleanup, whatever),16:39
vilaJoshBrown: when a branch use a shared repo, bzr will walk up the file system hierarchy to find the repo, so use any intermediate level you see fit16:40
JoshBrownThanks, I wondered what a repo was, and that answers my question perfectly :)16:42
vilaJoshBrown: a repo is where all the revisions are stored, a branch is merely a pointer to the tip (the most recent revision)16:43
jamvila: I don't know what you did, but the diff *still* isn't available16:44
vilaJoshBrown: a so-called "stand alone" branch has its own private repo, you can use 'bzr reconfigure' to change16:44
vilajam: *I* did as usual, blame lp :) I've noticed the diff wasn't still there but really nothing different from my side I can think of, I even exported my loom to ensure I'm dealing with regular branches16:45
vilajam: just clicked the resubmit button...16:46
vilaI just...16:46
JoshBrownvila: Ahh, I thought bazaar was 'distributed' as in every branch was completely separate. Now you've explained it, it makes way more sense. Thanks!16:46
jamvila: well, now you're *really* going to piss lp off :)16:46
vilajam: :)16:47
vilaJoshBrown: being distributed doesn't forbid sharing locally :)16:47
JoshBrownvila: Yeah, I see that now - I'm glad bazaar isn't as wasteful as I thought.16:49
=== nlisgo_ is now known as nlisgo
=== beuno is now known as beuno-lunch
PhoenixzI have an open source project on launchpad. I use this project as a framework for another project at the company where I work for. Now, I don't want to mix the stuff from this company in the open source project, but every now and then, this implementation here makes me find bugs in the open source framework. I fix them in this project, and I want to merge the fixes back to the open source project, but WITHOUT the company specific implementation..17:44
PhoenixzI figured I'd just do a merge from the company project to the open source project, remove the company specific stuff, and commit, push back.. I did that and it looks okay to me17:45
Phoenixzbut now when I do a push to launchpad, it starts sending megabytes of data to launchpad (the company project has various large images).. What went wrong here?17:45
PhoenixzThe WT looks good, has only the framework + its fixes.. when using bzr ls, I also only see the correct files, even in older revisions..17:48
PhoenixzSo where do these megabytes of data come from if I can't find them in my repo, and AFAIK, they never got in there in the first place?17:49
jamvila: quick question, is GnuChangeLog specific that everything is left aligned? It seems to me that you should be indenting17:57
jamI'll also note that "bzr log --gnu-changelog" puts the file content *before* the summary17:57
vilajam: I'm unclear on that since bzr log indent again so I de-dent before committing...17:58
jamnot sure who is wrong17:58
vilawow, I'll need to have a look at that...17:58
jamvila: http://paste.ubuntu.com/454019/17:59
jamas an example of what would be nicer *to me*17:59
vilahmm, so --gnu-changelog outputs exactly what I have in my ChangeLog files (which I use as buffers before committing)17:59
jamvila: 'bzr log --gnu-changelog -v'18:00
jamthe --verbose is necessary to get the list of files18:00
jamlook more at bzr.dev than your log18:00
jamsince you already format specifically18:00
jamhttp://www.gnu.org/prep/standards/html_node/Style-of-Change-Logs.html#Style-of-Change-Logs18:01
jamshows pretty clearly that you *don't* indent a subsection18:01
jamshame18:01
vilaI see, no, it's different, hmm, interesting issue, -gnu-changelog try to simulate the fact that someone have entered a single comment for *all* files, which indeed totally fail in my case since I entered comments for each file18:02
vilajam: no shame, that's because it's colorized in all good editors so you don't need indentations :-P18:02
jamof course, the overall ChangeLog design is very lisp-ish with its choice of () on *everything*18:03
vilabut there seem to be far too may empty lines there18:03
jamvila: 'bzr log | vim' isn't colorized at all18:03
jamI *can* end up doing "set ft=changelog" which does help a fair bit18:03
jamthough basically by allowing me to ignore everything that I mentioned is too verbose18:04
jam(it shows in blue, and I can just skip over all of it easily)18:04
vilabzr log --gnu-changelog -n0 -l18 -v > ChangeLog-2 C-x C-f ChangeLog-2 ... colorized :)18:04
=== beuno-lunch is now known as beuno
jamsure, but C-x C-f ...18:05
jamand/or explicit naming of the content18:05
vilaavailable in all good editors I said... oh come on, I just did the simplest here, let see...18:05
jamI'll also note that it borks all the other entries18:06
jam(mbp) test that kerberos isn't loaded (Martin Pool) shows up as all-blue18:06
jam(note no --gnu-changelog)18:06
vilaC-SPC M-| bzr log --gnu-changelog -n0 -l18 -v M-x change-log-mode18:06
jamanyway, I can do something like that to make it easier to read your stuff18:06
vilacool :)18:06
jamI don't really feel that I *like* it18:06
jambut at least I don't just auto-skip everything you've writetn18:07
jamwritten18:07
vilaha, some perl motto applies here: be strict in what you produce but tolerant in what you accept,18:07
vilalet's both medidate on that :-)18:07
vila(i.e. I'll try to to more commits and less verbose ones :)18:08
vilayeah toto my dear friend, NOT, to do18:08
jamvila: I've found that being tolerant in what you accept leads to people being loose in what they generate. Witness HTML non-strictness and 'bug-compatible' behavior :)18:09
vilahehe18:09
vilayeah GIGO: Garbage In Garbage Out18:09
vilaI found the above a bit derogatory and lately I'm more inclined to call it: Better Input Means Better Output18:10
viladunno, the acronym sounds sexier...18:10
=== oubiwann-away is now known as oubiwann
jam:)18:16
jamvila: also note our failure to roundtrip revisions with '\r' in them which broke some mysql revs, etc.18:16
jamanyway18:17
jamI mostly wanted to let you know that I do find your log messages hard to read, and they don't really play nicely with other tools (like launchpad).18:17
jamI think there is a reasonable request to make per-file commit messages more fully supported18:17
jamin which case you can do the formatting such that --gnu-changelog output gives you what you really want18:18
jamand we could do something like a commit --file importer18:18
jamthat could convert ChangeLog formatting into the appropriate bzr internal structure18:18
jamvila: oh, and 2+hrs later, still no dif18:19
jamdiff18:19
jamdefinitely something broken18:19
vilayup, I had a vague plan for that18:19
vilayes, I raised the issue in #launchpad-code but no answer :-/18:19
vilaand that's the same for my other threads too,18:20
vilabut lp seems to suffer from some problems too so that may just be a transient issue...18:21
jamvila: you shouldn't be working now anyway, thanks for at least putting up with my gripes :)18:23
vilanoted, I'll finish submitting my threads hoping for lp to finally update the diffs... (only 2 left)18:24
jamso, I don't think your changes to osutils are really correct18:25
jamin that we just do "foo = ntpath.foo" anyway18:25
jamand I *think* you might have regressed some of the shutil stuff18:25
jamwhere we could have lazily imported rmtree18:25
jamand not triggered an import of shutil until someone actually calls rmtree18:25
jam(that might not be in lazy form, though)18:26
jamI remember working on that, I don't know what the current state is18:26
vilajam: hmm, then we'll need to define proper wrappers to delay the import instead of relying on symbol aliasing18:31
vilaor finally cleanup osutils....18:31
jamvila: what is wrong with lazy_import as a wrapper here, given that it... works18:32
jamjust comment that specific one with why we do it18:32
jamyou *can* add a "def rmtree(*args, **kwargs): return shutil.rmtree(*args, **kwargs)"18:32
jambut it seems a bit pessimistic18:33
jamif it makes you feel better, you can do it, though18:33
jamcertainly in that file, lazy-importing something whose attribute you access is certainly a loss18:33
jamfor readability, and probably even runtime (as you have at least 1 indirection that you always pay)18:33
vilaI don't remember why I fixed that one this way, probably because I didn't understood the intent, I can revert that as well adding a 'lazily' in the comment to clarify18:34
jamvila: so most of the "from transport import get_transport" changes to "transport.get_transport" changes seem fine (though monkey-patching a function in the test suite at that level is a bit ugly.)18:34
jamI don't fully understand the http protocol stuff18:35
jamand especially why it is mixed in with these other changes18:35
vilabecause it cleans up some bugs in the parametrisation without really changing anything else18:36
vilawell, bugs about not respecting the parametrisation will be more correct18:36
vilathe http protocol is the parameter that decides which server should be used18:36
vila1.0 no threads for requests, 1.1 a thread by request (well really a connection)18:37
jamvila: I find test_http.load_tests() very hard to read. It is often unclear to me what tests are being multiplexed18:38
jam(x, y = split_suite_by_condition() is x or y the one that matched)18:38
jamand why are we splitting and multiplexing these one way, and these another18:38
jama comment is probably warranted18:38
jam# TestHTTPTransportRegistration should be tested against all transports, but all other tests should only be parameterized by protocol18:39
jamor something like that18:39
jamor maybe just clarifying18:39
jam# some tests test the transport implementation, so we multiply for urllib and pycurl18:39
jam# other tests only parameterize on HTTP 1.0 vs 1.118:40
jammaybe it is just me, but doing it all via isinstance checks seems bad form18:40
jamversus, say creating a per_http_transport and per_http_protocol files18:40
jamyou don't have to do it18:41
jamjust observations about my confusion trying to read (and in the future support) this code18:41
exarkunI made a loom, and then I pushed, and then I recorded, and then I pushed again and nothing happened.18:41
vilaisinstance() makes load_tests() simpler since many test classes can inherit from a base with common parameters18:42
exarkunSo now my loom is permanently available only in my one working copy?18:42
jamexarkun: I don't know the specifics, but possibly doing one more commit + record + push will make a difference18:42
vilaexarkun: a related bug has been fixed really recently about that18:42
jamvila: so it would probably take at least 1hr for me to actually understand load_tests18:43
jamif not longer18:43
jamI don't know if we could do better18:43
jambut as it stands, it is pretty bad18:43
jamThat doesn't even count understanding *why* the tests are split as such, just to figure out "ok, *these* tests are parameterized *this* way"18:43
jamI *think* splitting it such that all tests in a single file are parameterized identically would help18:44
jambut I know there is a fair amount of 'chaining' (some get X, some get X & Y, some get XYZ, etc)18:44
jamat least the tests are reasonably fast :)18:45
jam(without pycurl, 414 tests in 14s)18:45
vilanah, split extract the relevant tests for each kind of parametrization, there are several layers but roughly that's pycurl/urllib http-1.0/1.1 then there are the various auth ones... hmm, yeah 2.000 lines already, wow I didn't realize that...18:45
vilajam: hehe, and there are some TODO at the top of the file :)18:47
jamwell at a minimum it should have a 'per_' in the name18:47
jamsince that is how we identify interface testing18:47
vilayup18:47
vilaI'm about to finish, can you copy/paste all of that in the review or should I search my log tomorrow ?18:48
jamvila: anyway, looks fine to land18:48
jamyou didn't introduce the test_http bogosity (in this patch at least :)18:48
jamI'll file a bug18:48
vilahehe not in this patch, but I'm certainly responsible for load_tests() there :-)18:48
jam*dammit*18:49
vilaand I keep using it as the most complex parametrization function to copy from :-)18:49
jamhit ^L to go to the URL bar in Firefox, but was in Pidgin so it destroyed my backlog18:49
vilaAAArgh18:49
jam*me* really doesn't like ^L in pidgin18:49
jam(used to bite me a lot more when I had to hit ^L in gvim to refresh because of display bugs)18:50
vilaremind me of C-w closing windows instead of cutting the selection :-/18:50
jamvila: do you know how often irclogs.ubuntu.com updates?18:51
vilano, but I'd say hourly18:51
jamhttp://irclogs.ubuntu.com/2010/06/23/%23bzr.txt is missing the last hour or 218:51
exarkunI did another commit, then a record, then a push.  But it made no difference. :/18:52
vilajam: http://paste.ubuntu.com/454047/ is that enough ?18:53
jamI think bug 597791 is a reasonable summary without it18:53
ubot5Launchpad bug 597791 in Bazaar "test_http load_tests is overly complex and hard to understand (affected: 1, heat: 6)" [Wishlist,Confirmed] https://launchpad.net/bugs/59779118:54
jamI don't really like the summary line, but meh18:54
jamvila: what is your merge proposal page18:54
vilawhich one  ? >-/18:55
jamfound it18:56
jamhttps://code.edge.launchpad.net/~vila/bzr/cleanup/+merge/2831518:56
jamanyway,18:56
jamBB:tweak18:56
jamneeds osutils fixed, but everything else looks ok18:56
jamvila: so reading through http://irclogs.ubuntu.com/2010/06/18/%23bzr.html18:59
jamthere is, indeed, a small whole that lifeless is correct about18:59
jamhowever18:59
jamit is a fairly small edge case, in that the chance of landing something that requires no actual changes years after it was originally done is small (but not 0)19:00
jama bigger issue19:00
jamis that he seems to feel that if he didn't get the copyright line correct, then I shouldn't make it correct19:00
jamand I disagree19:00
jamand changing that line requires *someone* to commit a change19:00
jamwhich affects that line19:00
jam(if you base it purely on the history of the content changes)19:01
jamso unless you update the plugin to say "only include copyright years for file content that is not in a comment"19:01
jamor some other such thing, I think it is a rather good approximation of correctness19:01
jamwhich is *far* better than what we have done manually19:02
jam(so yes, it may get some edge cases wrong, we currently get the *bulk* of cases wrong doing it manually)19:02
jamugh, lifeless is not logged in to read this in his backlog19:05
vilaright, I think the issue was about me asking to install it on pqm which was a bit too much :)19:08
jamvila: I disagree, and I'm posting to the mailing list about it19:08
vilaI'm off now, it's way too late and family is waiting, see you19:08
vilajam: cool19:08
jamPeng: any chance you could help me a bit with bug #441125?19:26
ubot5Launchpad bug 441125 in Bazaar "bzr: ERROR: exceptions.KeyError: ('makefile.am-20080508221105-rbs9wugi1qq76gcs-2', 'scott@netsplit.com-20090702173125-4nayj8jp8h4f8jnq') (affected: 1, heat: 15)" [High,Confirmed] https://launchpad.net/bugs/44112519:26
maxbWhat could possibly cause a pack to be in obsolete_packs but still listed in pack-names?20:29
jelmermaxb: XFS?20:31
jelmermaxb: (just guessing)20:32
maxb... on launchpad20:32
jelmerno idea in that case20:32
jammaxb: there were some bugs about concurrent updates and autopacking, etc. The ones I know of were fixed, and I didn't think they included that failure20:59
jelmer'evening jam21:00
jammaxb: http://tinyurl.com/27nb3jj21:01
jamis a search on Launchpad that might help21:01
pooliegood morning23:40
* jelmer waves23:43

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