[tor-commits] [stem/master] Adding a 'block' argument to the Query class
atagar at torproject.org
atagar at torproject.org
Sun Aug 4 19:22:05 UTC 2013
commit 5c5c59f1e7b16ed1f7a5131ec072e5646d086e44
Author: Damian Johnson <atagar at torproject.org>
Date: Sun Aug 4 11:38:28 2013 -0700
Adding a 'block' argument to the Query class
I'm finding it to be pretty common to run...
query = Query(my_resource)
query.run(True)
if not query.error:
# do something
else:
# report error
Adding an argument to the Query constructor so we can drop the following run().
---
stem/descriptor/remote.py | 17 +++++++++++------
1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/stem/descriptor/remote.py b/stem/descriptor/remote.py
index 30ac578..23a1f8c 100644
--- a/stem/descriptor/remote.py
+++ b/stem/descriptor/remote.py
@@ -143,17 +143,17 @@ class Query(object):
query = Query(
'/tor/server/all.z',
- descriptor_type = 'server-descriptor 1.0',
+ block = True,
timeout = 30,
)
print "Current relays:"
- try:
- for desc in query.run():
+ if not query.error:
+ for desc in query:
print desc.fingerprint
- except Exception as exc:
- print "Unable to retrieve the server descriptors: %s" % exc
+ else:
+ print "Unable to retrieve the server descriptors: %s" % query.error
... while iterating fails silently...
@@ -216,9 +216,11 @@ class Query(object):
which to parse a :class:`~stem.descriptor.networkstatus.NetworkStatusDocument`
:param bool start: start making the request when constructed (default is **True**)
+ :param bool block: only return after the request has been completed, this is
+ the same as running **query.run(True)** (default is **False**)
"""
- def __init__(self, resource, descriptor_type = None, endpoints = None, retries = 2, fall_back_to_authority = False, timeout = None, start = True, validate = True, document_handler = stem.descriptor.DocumentHandler.ENTRIES):
+ def __init__(self, resource, descriptor_type = None, endpoints = None, retries = 2, fall_back_to_authority = False, timeout = None, start = True, block = False, validate = True, document_handler = stem.descriptor.DocumentHandler.ENTRIES):
if not resource.startswith('/'):
raise ValueError("Resources should start with a '/': %s" % resource)
@@ -252,6 +254,9 @@ class Query(object):
if start:
self.start()
+ if block:
+ self.run(True)
+
def start(self):
"""
Starts downloading the scriptors if we haven't started already.
More information about the tor-commits
mailing list