From 743b4bd0cd3253fc56ac354cfc7e751f9e90b92e Mon Sep 17 00:00:00 2001 From: nitromaster101 Date: Mon, 13 Jul 2009 17:14:32 +0000 Subject: fix commandline tools git-svn-id: http://freebase-python.googlecode.com/svn/trunk@190 5914aa95-5b3a-0410-a3b5-7b719e7fe9b2 --- freebase/api/session.py | 5 +++++ freebase/schema.py | 1 - freebase/schema_cmd.py | 8 ++++---- test/test_freebase.py | 20 ++++++++++++++++++++ 4 files changed, 29 insertions(+), 5 deletions(-) diff --git a/freebase/api/session.py b/freebase/api/session.py index ac3b5e4..609a64f 100644 --- a/freebase/api/session.py +++ b/freebase/api/session.py @@ -496,6 +496,11 @@ class HTTPMetawebSession(MetawebSession): cursor = True service = '/api/service/mqlread' + if isinstance(sq, (tuple, list)): + if len(sq) > 1: + raise MetawebError("You cannot ask mqlreaditer a query in the form: [{}, {}, ...], just [{}] or {}") + sq = sq[0] + while 1: subq = dict(query=[sq], cursor=cursor, escape=False) if asof: diff --git a/freebase/schema.py b/freebase/schema.py index 459c51a..17f023c 100644 --- a/freebase/schema.py +++ b/freebase/schema.py @@ -326,7 +326,6 @@ def dump_type(s, type_id, follow_types=True): graph = _get_graph(s, types, follow_types) return graph - def restore(s, graph, new_location, ignore_types=None): follow_types = graph.get("__follow_types", True) diff --git a/freebase/schema_cmd.py b/freebase/schema_cmd.py index a4644e8..33ae7ae 100644 --- a/freebase/schema_cmd.py +++ b/freebase/schema_cmd.py @@ -42,7 +42,7 @@ def fb_save_base(): s = HTTPMetawebSession(service_host) - print json.dumps(dump_base(s, args[0]), indent=2) + print >> sys.stdout, json.dumps(dump_base(s, args[0]), indent=2) def fb_save_type(): op = OptionParser(usage='%prog [options] typeid ') @@ -80,7 +80,7 @@ def fb_save_type(): op.error('Too many arguments') s = HTTPMetawebSession(service_host) - print json.dumps(dump_type(s, args[0], options.follow), indent=2) + print >> sys.stdout, json.dumps(dump_type(s, args[0], options.follow), indent=2) def fb_restore(): @@ -142,8 +142,8 @@ def fb_restore(): fg.close() if graphfile == "-": # use stdin graph = json.load(sys.stdin) - print "loaded graph", graph - restore(s, graph, newlocation, ignore_types=None, debug=False) + + restore(s, graph, newlocation, ignore_types=None) def login(api_host, username=None, password=None): diff --git a/test/test_freebase.py b/test/test_freebase.py index d448b39..c872b93 100755 --- a/test/test_freebase.py +++ b/test/test_freebase.py @@ -123,6 +123,26 @@ class TestFreebase(unittest.TestCase): self.assertEqual( 'Sting', result['name']) self.assertEqual('#9202a8c04000641f8000000000092a01', result['guid'][0]['value']) + + def test_mqlreaditer(self): + filmq = [{'id': None, + 'initial_release_date>=': '2009', + 'name': None, + 'type': '/film/film' + }] + r0 = freebase.mqlreaditer(filmq) + r1 = freebase.mqlreaditer(filmq[0]) # The difference between [{}] and []. mqlreaditer should be able to handle both + self.assertNotEqual(r0, None) + self.assertEqual([a for a in r0], [b for b in r1]) + + # and let's test it for mqlread, just in case + # actually, for mqlread, it must be [{}], because there are lots of elements + m0 = freebase.mqlread(filmq) + m1 = lambda : freebase.mqlread(filmq[0]) + self.assertRaises(MetawebError, m1) + self.assertNotEqual(m0, None) + + def test_ridiculously_long_write(self): q = [{ -- cgit v1.3.1