[00:16] <StevenK> Failed example:
[00:16] <StevenK>     print concrete_one_zero.files[0].libraryfile.read()
[00:16] <StevenK> Differences (ndiff with -expected +actual):
[00:16] <StevenK>     + None
[00:16] <StevenK> :-(
[00:21] <StevenK> wgrant: From what I can see, everything should be okay, but why does read() return None :-(
[00:26] <wgrant> StevenK: You sure you opened it? You might even need to call read() on the object that gets returned from open()
[00:26] <StevenK> read() will autoopen
[00:26] <StevenK> (And autoclose, which is handy)
[00:27] <wgrant> StevenK: Is it using a real librarian?
[00:27] <wgrant> If you break in the test, can you see the file?
[00:27] <wgrant> Have you checked the librarian log?
[00:27] <StevenK> It's a doctest, breaking is hard
[00:28] <lifeless> you could fix that
[00:28] <StevenK> pdb inside a doctest has always broken
[00:28] <StevenK> And the only way I know to fix it is to destroy all doctests
[00:29] <wgrant> It'll break
[00:29] <wgrant> It just won't have useful context
[00:29] <wgrant> You can still poke around outside it
[00:31] <StevenK> (Pdb) p self._datafile
[00:31] <StevenK> <lp.services.librarian.client._File object at 0x10489890>
[00:31] <StevenK> (Pdb) p self._datafile.read()
[00:31] <StevenK> 'None'
[00:31] <wgrant> Did that make a request to the librarian?
[00:31] <wgrant> Can you seek?
[00:31] <wgrant> What does it mean for it to return None?
[00:31] <StevenK> *** ForbiddenAttribute: ForbiddenAttribute('seek', <lp.services.librarian.client._File object at 0x10489890>)
[00:32] <StevenK> wgrant: Ah, but it isn't None, it's the string None
[00:32] <wgrant> Ah, true
[00:33] <wgrant> So maybe your code is buggy :)
[00:33] <StevenK> Yes, I'm checking
[00:34] <StevenK> (Pdb) p fs['file_content']
[00:34] <StevenK> MiniFieldStorage('file_content', 'first attachment file content \xff')
[00:34] <StevenK> (Pdb) p fs['file_content'].file
[00:34] <StevenK> None
[00:42] <StevenK> wgrant: http://pastebin.ubuntu.com/1618379/
[00:42] <StevenK> wgrant: Does that address your concerns?
[00:43] <wgrant> StevenK: Can you confirm that the test fails if you go back to the code that I reverted?
[00:43] <wgrant> ie. without the reretrieval
[00:43] <StevenK> I have already confirmed before I pasted the diff
[00:43] <wgrant> Great
[00:43] <wgrant> Sounds reasonable, then
[00:45] <StevenK> wgrant: I thought those were your two concerns? A XXX in the function itself, and a test
[00:52] <StevenK> wgrant: The MP is updated
[01:03] <wgrant> StevenK: Looking
[01:07] <wgrant> StevenK: Oh
[01:07] <wgrant> StevenK: What about signature_content?
[01:08] <StevenK> I think that one is immune
[01:08] <StevenK> Let me check
[01:11] <StevenK> In [6]: l.files[0].signature.read()
[01:11] <StevenK> Out[6]: '-----BEGIN PGP...
[01:11] <StevenK> It's ASCII-armored, so coercing to unicode will not negatively impact it
[01:12] <StevenK> In [8]: f = open('/tmp/f.tar.gz.asc').read()
[01:12] <StevenK> In [9]: lfa == f
[01:12] <StevenK> Out[9]: True
[01:13] <wgrant> StevenK: Yeah, but still
[01:14] <wgrant> ASCII-armored sigs are designed to survive exactly this sort of thing, but we should probably apply this hack to all lazr.restful file inputs
[01:14] <lifeless> you could fix zope.
[01:14]  * lifeless waits for the laughter
[01:14] <wgrant> s/laughter/stabbage/
[01:16] <StevenK> wgrant: http://pastebin.ubuntu.com/1618447/
[01:18] <wgrant> StevenK: :)
[01:19] <StevenK> I can add a \xff to the signature content if you wish
[01:20] <StevenK> Just to be sure
[01:21] <wgrant> Might as well
[01:21]  * wgrant lunches
[02:48] <StevenK> wgrant: Back from lunch?
[02:53] <wgrant> StevenK: Yeah
[02:53] <StevenK> wgrant: Should I take the Branch:+register-merge critical?
[02:54] <wgrant> StevenK: Worth a try
[02:55] <StevenK> wgrant: So the method to find a branch needs a rewrite and new indicies?
[02:55] <wgrant> StevenK: Don't think of it as a rewrite and new indices
[02:55] <wgrant> Think of it as a redesign approximately from scratch
[02:55] <wgrant> It may or may not need new indices
[02:56] <wgrant> But the search method needs to be rethought with performance over more than 1000 branches in mind
[06:19] <StevenK> wgrant: https://code.launchpad.net/~stevenk/launchpad/destroy-private-projects-feature-flags/+merge/147022
[06:27] <wgrant> StevenK: r=me
[06:27] <StevenK> wgrant: And my QA is done
[06:27] <StevenK> wgrant: You want a NDT?
[06:28] <wgrant> StevenK: Please :)
[06:28] <wgrant> The indices are there now
[06:28] <wgrant> So we should be good to go
[06:30] <StevenK> And kills 4 criticals
[06:30] <StevenK> You have a lock on LPS?
[06:33] <wgrant> StevenK: Apparently. It's yours
[06:33] <wgrant> I sadly can't really close the vocab critical
[06:33] <wgrant> It's still pretty awful for bad names
[06:33] <wgrant> Depending on the number of builds
[06:33] <StevenK> Aww
[07:41] <StevenK> wgrant: Are you going to land 7?
[07:46] <wgrant> StevenK: Not just yet
[07:46] <wgrant> Going to wait and see if the world ends
[07:46] <StevenK> Fair enough
[07:46] <wgrant> It's still safe to back out the ndt at this point.
[07:46] <StevenK> Mmmm, 7 is the point of no return
[07:46] <wgrant> Exactly
[07:47] <StevenK> It's probably landable and deployable tomorrow
[07:47] <wgrant> That's the plan
[07:47] <StevenK> It's a good plan
[07:47] <wgrant> Hm, I should fix tuolumne
[08:48] <adeuring> good morning
[09:06] <jtv> Good morning adeuring
[09:07] <adeuring> hi jtv!
[09:08] <jtv> Nice weather today.  Let me just check if any of my mangoes are ripe yet.
[09:45] <lifeless> hi
[09:45] <lifeless> where should stale vcs mirrors be reported these days
[09:46] <lifeless> https://code.launchpad.net/~testing-cabal/testtools/trunk only tracks up to the 24th jan
[09:47] <lifeless> there have been 27 or so commits since spread over the interveneing period
[09:47]  * wgrant guesses it's a https github import
[09:47] <wgrant> Indeed it is
[09:51] <jml> wgrant: is there an open bug re that?
[09:52] <wgrant> jml: Yes
[09:53] <jml> wgrant: got it. ta.
[09:54] <wgrant> https://bugs.launchpad.net/bugs/1072461
[09:54] <_mup_> Bug #1072461: Code import from github does not take latest commits <code-import> <git> <Launchpad itself:Triaged> < https://launchpad.net/bugs/1072461 >
[15:07] <slank> Is there a way to get a list of branches for a user/project via the api? I'd like to grab the equivalient of code.lp.n/~user/project
[16:51] <james_w> slank: I don't know of a way to do that without filtering client side
[16:52] <slank> james_w: that's probably ok. perhaps there's a way to get branches for a user? I haven't found that either.
[16:53] <james_w> slank: user.getBranches()
[16:53] <james_w> slank: I can't link directly, but the second "Custom GET method" under https://launchpad.net/+apidoc/devel.html#person
[16:55] <slank> james_w: ah. thanks!