summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--freebase/api/session.py5
-rw-r--r--freebase/schema.py1
-rw-r--r--freebase/schema_cmd.py8
-rwxr-xr-xtest/test_freebase.py20
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 = [{