Hi Matt,
If you look at the BQApi, for example the image pixels class in bqclass.py you'll see it uses session from comm.py:
session.c.fetch (url, path=path)
comm.py is where all the communication is. It simply uses python requests library like this for blobs:
self.c.fetch(url, path=path )
That .c in the session is the BQServer which is basically requests Session with authentication bolted on. You can see that for XML it looks something like this:
r = self.c.fetch(url, headers = {'Content-Type':'text/xml', 'Accept':'text/xml'})
return self.factory.string2etree(r)
here r is the response from that request. Basically you can use the fetch directly on the session and not to pass a path argument and you will get your bytes back. Now, how to reshape them into your numpy array that is a part of your task:)
-d