[tor-commits] [stem/master] Conforming to E701 (multiple statements on one line)

atagar at torproject.org atagar at torproject.org
Mon Jan 7 09:08:00 UTC 2013


commit 1eed64be89d0cf0382234786c020ab4760a4e8e4
Author: Damian Johnson <atagar at torproject.org>
Date:   Mon Jan 7 00:00:20 2013 -0800

    Conforming to E701 (multiple statements on one line)
    
    Well, that took a while.
---
 run_tests.py                                  |   18 +++-
 stem/connection.py                            |  118 ++++++++++++++-------
 stem/control.py                               |  124 +++++++++++++++-------
 stem/descriptor/__init__.py                   |   25 +++--
 stem/descriptor/extrainfo_descriptor.py       |   52 ++++++---
 stem/descriptor/networkstatus.py              |   52 +++++++---
 stem/descriptor/reader.py                     |   49 ++++++---
 stem/descriptor/router_status_entry.py        |   68 +++++++++---
 stem/descriptor/server_descriptor.py          |   69 ++++++++----
 stem/exit_policy.py                           |   23 +++--
 stem/process.py                               |   36 +++++--
 stem/response/__init__.py                     |   13 ++-
 stem/response/events.py                       |    4 +-
 stem/response/getconf.py                      |    3 +-
 stem/socket.py                                |   53 +++++++---
 stem/util/conf.py                             |   55 +++++++---
 stem/util/connection.py                       |   10 ++-
 stem/util/enum.py                             |    3 +-
 stem/util/log.py                              |   33 ++++--
 stem/util/proc.py                             |   47 ++++++---
 stem/util/str_tools.py                        |   15 ++-
 stem/util/system.py                           |   72 +++++++++----
 stem/util/term.py                             |    7 +-
 stem/util/tor_tools.py                        |    4 +-
 stem/version.py                               |   32 ++++--
 test/check_whitespace.py                      |    6 +-
 test/integ/connection/authentication.py       |   45 +++++---
 test/integ/connection/connect.py              |    6 +-
 test/integ/control/base_controller.py         |   24 +++--
 test/integ/control/controller.py              |  145 +++++++++++++++++--------
 test/integ/descriptor/extrainfo_descriptor.py |    4 +-
 test/integ/descriptor/networkstatus.py        |    8 +-
 test/integ/descriptor/reader.py               |   45 ++++++--
 test/integ/descriptor/server_descriptor.py    |    4 +-
 test/integ/process.py                         |   22 +++--
 test/integ/response/protocolinfo.py           |   12 ++-
 test/integ/socket/control_message.py          |   15 ++-
 test/integ/socket/control_socket.py           |   18 ++-
 test/integ/version.py                         |    6 +-
 test/mocking.py                               |   47 ++++++---
 test/output.py                                |   30 ++++--
 test/prompt.py                                |    8 +-
 test/runner.py                                |   26 ++++--
 test/unit/descriptor/router_status_entry.py   |    3 +-
 test/unit/exit_policy/policy.py               |    3 +-
 test/unit/util/system.py                      |    6 +-
 46 files changed, 1029 insertions(+), 439 deletions(-)

diff --git a/run_tests.py b/run_tests.py
index c17898b..f9b18fc 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -208,7 +208,9 @@ def load_user_configuration(test_config):
           sys.exit(1)
         else:
           target_config = test_config.get("target.config", {}).get(target)
-          if target_config: arg_overrides[target_config] = "true"
+          
+          if target_config:
+            arg_overrides[target_config] = "true"
     elif opt in ("-l", "--test"):
       arg_overrides["argument.test"] = arg
     elif opt in ("-l", "--log"):
@@ -304,7 +306,8 @@ if __name__ == '__main__':
   our_level = stem.util.log.logging_level(CONFIG["argument.log"])
   info_level = stem.util.log.logging_level(stem.util.log.INFO)
   
-  if our_level <= info_level: test.output.print_config(test_config)
+  if our_level <= info_level:
+    test.output.print_config(test_config)
   
   error_tracker = test.output.ErrorTracker()
   output_filters = (
@@ -388,7 +391,9 @@ if __name__ == '__main__':
           skip_targets.append(target)
     
     for target in integ_run_targets:
-      if target in skip_targets: continue
+      if target in skip_targets:
+        continue
+      
       error_tracker.set_category(target)
       
       try:
@@ -486,8 +491,11 @@ if __name__ == '__main__':
       print
   
   runtime = time.time() - start_time
-  if runtime < 1: runtime_label = "(%0.1f seconds)" % runtime
-  else: runtime_label = "(%i seconds)" % runtime
+  
+  if runtime < 1:
+    runtime_label = "(%0.1f seconds)" % runtime
+  else:
+    runtime_label = "(%i seconds)" % runtime
   
   if testing_failed or error_tracker.has_error_occured():
     test.output.print_line("TESTING FAILED %s" % runtime_label, *ERROR_ATTR)
diff --git a/stem/connection.py b/stem/connection.py
index 737776f..0291a82 100644
--- a/stem/connection.py
+++ b/stem/connection.py
@@ -188,10 +188,13 @@ def _connect(control_socket, password, chroot_path, controller):
     else:
       return controller(control_socket)
   except MissingPassword:
-    assert password is None, "BUG: authenticate raised MissingPassword despite getting one"
+    if password is None:
+      raise ValueError("BUG: authenticate raised MissingPassword despite getting one")
     
-    try: password = getpass.getpass("Controller password: ")
-    except KeyboardInterrupt: return None
+    try:
+      password = getpass.getpass("Controller password: ")
+    except KeyboardInterrupt:
+      return None
     
     return _connect(control_socket, password, chroot_path, controller)
   except AuthenticationFailure, exc:
@@ -352,7 +355,8 @@ def authenticate(controller, password = None, chroot_path = None, protocolinfo_r
   
   # iterating over AuthMethods so we can try them in this order
   for auth_type in (AuthMethod.NONE, AuthMethod.PASSWORD, AuthMethod.SAFECOOKIE, AuthMethod.COOKIE):
-    if not auth_type in auth_methods: continue
+    if not auth_type in auth_methods:
+      continue
     
     try:
       if auth_type == AuthMethod.NONE:
@@ -437,16 +441,22 @@ def authenticate_none(controller, suppress_ctl_errors = True):
     
     # if we got anything but an OK response then error
     if str(auth_response) != "OK":
-      try: controller.connect()
-      except: pass
+      try:
+        controller.connect()
+      except:
+        pass
       
       raise OpenAuthRejected(str(auth_response), auth_response)
   except stem.ControllerError, exc:
-    try: controller.connect()
-    except: pass
+    try:
+      controller.connect()
+    except:
+      pass
     
-    if not suppress_ctl_errors: raise exc
-    else: raise OpenAuthRejected("Socket failed (%s)" % exc)
+    if not suppress_ctl_errors:
+      raise exc
+    else:
+      raise OpenAuthRejected("Socket failed (%s)" % exc)
 
 def authenticate_password(controller, password, suppress_ctl_errors = True):
   """
@@ -493,8 +503,10 @@ def authenticate_password(controller, password, suppress_ctl_errors = True):
     
     # if we got anything but an OK response then error
     if str(auth_response) != "OK":
-      try: controller.connect()
-      except: pass
+      try:
+        controller.connect()
+      except:
+        pass
       
       # all we have to go on is the error message from tor...
       # Password did not match HashedControlPassword value value from configuration...
@@ -505,11 +517,15 @@ def authenticate_password(controller, password, suppress_ctl_errors = True):
       else:
         raise PasswordAuthRejected(str(auth_response), auth_response)
   except stem.ControllerError, exc:
-    try: controller.connect()
-    except: pass
+    try:
+      controller.connect()
+    except:
+      pass
     
-    if not suppress_ctl_errors: raise exc
-    else: raise PasswordAuthRejected("Socket failed (%s)" % exc)
+    if not suppress_ctl_errors:
+      raise exc
+    else:
+      raise PasswordAuthRejected("Socket failed (%s)" % exc)
 
 def authenticate_cookie(controller, cookie_path, suppress_ctl_errors = True):
   """
@@ -564,8 +580,10 @@ def authenticate_cookie(controller, cookie_path, suppress_ctl_errors = True):
     
     # if we got anything but an OK response then error
     if str(auth_response) != "OK":
-      try: controller.connect()
-      except: pass
+      try:
+        controller.connect()
+      except:
+        pass
       
       # all we have to go on is the error message from tor...
       # ... Authentication cookie did not match expected value.
@@ -577,11 +595,15 @@ def authenticate_cookie(controller, cookie_path, suppress_ctl_errors = True):
       else:
         raise CookieAuthRejected(str(auth_response), cookie_path, False, auth_response)
   except stem.ControllerError, exc:
-    try: controller.connect()
-    except: pass
+    try:
+      controller.connect()
+    except:
+      pass
     
-    if not suppress_ctl_errors: raise exc
-    else: raise CookieAuthRejected("Socket failed (%s)" % exc, cookie_path, False)
+    if not suppress_ctl_errors:
+      raise exc
+    else:
+      raise CookieAuthRejected("Socket failed (%s)" % exc, cookie_path, False)
 
 def authenticate_safecookie(controller, cookie_path, suppress_ctl_errors = True):
   """
@@ -651,10 +673,13 @@ def authenticate_safecookie(controller, cookie_path, suppress_ctl_errors = True)
     authchallenge_response = _msg(controller, "AUTHCHALLENGE SAFECOOKIE %s" % client_nonce_hex)
     
     if not authchallenge_response.is_ok():
-      try: controller.connect()
-      except: pass
+      try:
+        controller.connect()
+      except:
+        pass
       
       authchallenge_response_str = str(authchallenge_response)
+      
       if "Authentication required." in authchallenge_response_str:
         raise AuthChallengeUnsupported("SAFECOOKIE authentication isn't supported", cookie_path)
       elif "AUTHCHALLENGE only supports" in authchallenge_response_str:
@@ -666,17 +691,23 @@ def authenticate_safecookie(controller, cookie_path, suppress_ctl_errors = True)
       else:
         raise AuthChallengeFailed(authchallenge_response, cookie_path)
   except stem.ControllerError, exc:
-    try: controller.connect()
-    except: pass
+    try:
+      controller.connect()
+    except:
+      pass
     
-    if not suppress_ctl_errors: raise exc
-    else: raise AuthChallengeFailed("Socket failed (%s)" % exc, cookie_path, True)
+    if not suppress_ctl_errors:
+      raise exc
+    else:
+      raise AuthChallengeFailed("Socket failed (%s)" % exc, cookie_path, True)
   
   try:
     stem.response.convert("AUTHCHALLENGE", authchallenge_response)
   except stem.ProtocolError, exc:
-    if not suppress_ctl_errors: raise exc
-    else: raise AuthChallengeFailed("Unable to parse AUTHCHALLENGE response: %s" % exc, cookie_path)
+    if not suppress_ctl_errors:
+      raise exc
+    else:
+      raise AuthChallengeFailed("Unable to parse AUTHCHALLENGE response: %s" % exc, cookie_path)
   
   expected_server_hash = stem.util.connection.hmac_sha256(
     SERVER_HASH_CONSTANT,
@@ -689,18 +720,25 @@ def authenticate_safecookie(controller, cookie_path, suppress_ctl_errors = True)
     client_hash = stem.util.connection.hmac_sha256(
       CLIENT_HASH_CONSTANT,
       cookie_data + client_nonce + authchallenge_response.server_nonce)
+    
     auth_response = _msg(controller, "AUTHENTICATE %s" % (binascii.b2a_hex(client_hash)))
   except stem.ControllerError, exc:
-    try: controller.connect()
-    except: pass
+    try:
+      controller.connect()
+    except:
+      pass
     
-    if not suppress_ctl_errors: raise exc
-    else: raise CookieAuthRejected("Socket failed (%s)" % exc, cookie_path, True, auth_response)
+    if not suppress_ctl_errors:
+      raise exc
+    else:
+      raise CookieAuthRejected("Socket failed (%s)" % exc, cookie_path, True, auth_response)
   
   # if we got anything but an OK response then err
   if not auth_response.is_ok():
-    try: controller.connect()
-    except: pass
+    try:
+      controller.connect()
+    except:
+      pass
     
     # all we have to go on is the error message from tor...
     # ... Safe cookie response did not match expected value
@@ -841,10 +879,14 @@ def _expand_cookie_path(protocolinfo_response, pid_resolver, pid_resolution_arg)
   if cookie_path and not os.path.isabs(cookie_path):
     try:
       tor_pid = pid_resolver(pid_resolution_arg)
-      if not tor_pid: raise IOError("pid lookup failed")
+      
+      if not tor_pid:
+        raise IOError("pid lookup failed")
       
       tor_cwd = stem.util.system.get_cwd(tor_pid)
-      if not tor_cwd: raise IOError("cwd lookup failed")
+      
+      if not tor_cwd:
+        raise IOError("cwd lookup failed")
       
       cookie_path = stem.util.system.expand_path(cookie_path, tor_cwd)
     except IOError, exc:
diff --git a/stem/control.py b/stem/control.py
index fc4af05..feb7834 100644
--- a/stem/control.py
+++ b/stem/control.py
@@ -426,7 +426,8 @@ class BaseController(object):
       for listener, spawn in self._status_listeners:
         if listener != callback:
           new_listeners.append((listener, spawn))
-        else: is_changed = True
+        else:
+          is_changed = True
       
       self._status_listeners = new_listeners
       return is_changed
@@ -577,7 +578,8 @@ class BaseController(object):
         event_message = self._event_queue.get_nowait()
         self._handle_event(event_message)
       except Queue.Empty:
-        if not self.is_alive(): break
+        if not self.is_alive():
+          break
         
         self._event_notice.wait()
         self._event_notice.clear()
@@ -656,8 +658,10 @@ class Controller(BaseController):
   def close(self):
     # making a best-effort attempt to quit before detaching the socket
     if self.is_alive():
-      try: self.msg("QUIT")
-      except: pass
+      try:
+        self.msg("QUIT")
+      except:
+        pass
     
     super(Controller, self).close()
   
@@ -703,7 +707,9 @@ class Controller(BaseController):
       is_multiple = False
       params = set([params])
     else:
-      if not params: return {}
+      if not params:
+        return {}
+      
       is_multiple = True
       params = set(params)
     
@@ -718,14 +724,17 @@ class Controller(BaseController):
         # the geoip database already looks to be unavailable - abort the request
         if default == UNDEFINED:
           raise stem.ProtocolError("Tor geoip database is unavailable")
-        else: return default
+        else:
+          return default
     
     # if everything was cached then short circuit making the query
     if not params:
       log.trace("GETINFO %s (cache fetch)" % " ".join(reply.keys()))
       
-      if is_multiple: return reply
-      else: return reply.values()[0]
+      if is_multiple:
+        return reply
+      else:
+        return reply.values()[0]
     
     try:
       response = self.msg("GETINFO %s" % " ".join(params))
@@ -766,8 +775,10 @@ class Controller(BaseController):
       
       log.debug("GETINFO %s (failed: %s)" % (" ".join(params), exc))
       
-      if default == UNDEFINED: raise exc
-      else: return default
+      if default == UNDEFINED:
+        raise exc
+      else:
+        return default
   
   def get_version(self, default = UNDEFINED):
     """
@@ -795,8 +806,10 @@ class Controller(BaseController):
       
       return self._request_cache["version"]
     except Exception, exc:
-      if default == UNDEFINED: raise exc
-      else: return default
+      if default == UNDEFINED:
+        raise exc
+      else:
+        return default
   
   def get_socks_listeners(self, default = UNDEFINED):
     """
@@ -845,8 +858,10 @@ class Controller(BaseController):
       
       return [(addr, int(port)) for (addr, port) in proxy_addrs]
     except Exception, exc:
-      if default == UNDEFINED: raise exc
-      else: return default
+      if default == UNDEFINED:
+        raise exc
+      else:
+        return default
   
   def get_protocolinfo(self, default = UNDEFINED):
     """
@@ -870,8 +885,10 @@ class Controller(BaseController):
     try:
       return stem.connection.get_protocolinfo(self)
     except Exception, exc:
-      if default == UNDEFINED: raise exc
-      else: return default
+      if default == UNDEFINED:
+        raise exc
+      else:
+        return default
   
   def get_server_descriptor(self, relay, default = UNDEFINED):
     """
@@ -903,8 +920,10 @@ class Controller(BaseController):
       desc_content = self.get_info(query)
       return stem.descriptor.server_descriptor.RelayDescriptor(desc_content)
     except Exception, exc:
-      if default == UNDEFINED: raise exc
-      else: return default
+      if default == UNDEFINED:
+        raise exc
+      else:
+        return default
   
   def get_server_descriptors(self, default = UNDEFINED):
     """
@@ -930,7 +949,8 @@ class Controller(BaseController):
       for desc in stem.descriptor.server_descriptor.parse_file(StringIO.StringIO(desc_content)):
         yield desc
     except Exception, exc:
-      if default == UNDEFINED: raise exc
+      if default == UNDEFINED:
+        raise exc
       else:
         if entry is not None:
           for entry in default:
@@ -967,8 +987,10 @@ class Controller(BaseController):
       desc_content = self.get_info(query)
       return stem.descriptor.router_status_entry.RouterStatusEntryV2(desc_content)
     except Exception, exc:
-      if default == UNDEFINED: raise exc
-      else: return default
+      if default == UNDEFINED:
+        raise exc
+      else:
+        return default
   
   def get_network_statuses(self, default = UNDEFINED):
     """
@@ -1000,7 +1022,8 @@ class Controller(BaseController):
       for desc in desc_iterator:
         yield desc
     except Exception, exc:
-      if default == UNDEFINED: raise exc
+      if default == UNDEFINED:
+        raise exc
       else:
         if entry is not None:
           for entry in default:
@@ -1104,7 +1127,9 @@ class Controller(BaseController):
     
     # remove strings which contain only whitespace
     params = filter(lambda entry: entry.strip(), params)
-    if params == []: return {}
+    
+    if params == []:
+      return {}
     
     # translate context sensitive options
     lookup_params = set([MAPPED_CONFIG_KEYS.get(entry, entry) for entry in params])
@@ -1154,8 +1179,10 @@ class Controller(BaseController):
     except stem.ControllerError, exc:
       log.debug("GETCONF %s (failed: %s)" % (" ".join(lookup_params), exc))
       
-      if default != UNDEFINED: return dict((param, default) for param in params)
-      else: raise exc
+      if default != UNDEFINED:
+        return dict((param, default) for param in params)
+      else:
+        raise exc
   
   def _get_conf_dict_to_response(self, config_dict, default, multiple):
     """
@@ -1467,15 +1494,19 @@ class Controller(BaseController):
       * :class:`stem.InvalidArguments` if features passed were invalid
     """
     
-    if isinstance(features, str): features = [features]
+    if isinstance(features, str):
+      features = [features]
+    
     response = self.msg("USEFEATURE %s" % " ".join(features))
     stem.response.convert("SINGLELINE", response)
     
     if not response.is_ok():
       if response.code == "552":
         invalid_feature = []
+        
         if response.message.startswith("Unrecognized feature \""):
           invalid_feature = [response.message[22:response.message.find("\"", 22)]]
+        
         raise stem.InvalidArguments(response.code, response.message, invalid_feature)
       
       raise stem.ProtocolError("USEFEATURE provided an invalid response code: %s" % response.code)
@@ -1505,8 +1536,10 @@ class Controller(BaseController):
       
       raise ValueError("Tor presently does not have a circuit with the id of '%s'" % circuit_id)
     except Exception, exc:
-      if default == UNDEFINED: raise exc
-      else: return default
+      if default == UNDEFINED:
+        raise exc
+      else:
+        return default
   
   def get_circuits(self, default = UNDEFINED):
     """
@@ -1530,8 +1563,10 @@ class Controller(BaseController):
       
       return circuits
     except Exception, exc:
-      if default == UNDEFINED: raise exc
-      else: return default
+      if default == UNDEFINED:
+        raise exc
+      else:
+        return default
   
   def new_circuit(self, path = None, purpose = "general", await_build = False):
     """
@@ -1609,9 +1644,15 @@ class Controller(BaseController):
           raise stem.InvalidRequest(512, "EXTENDCIRCUIT requires the path prior to version %s" % path_opt_version)
       
       args = [circuit_id]
-      if isinstance(path, str): path = [path]
-      if path: args.append(",".join(path))
-      if purpose: args.append("purpose=%s" % purpose)
+      
+      if isinstance(path, str):
+        path = [path]
+      
+      if path:
+        args.append(",".join(path))
+      
+      if purpose:
+        args.append("purpose=%s" % purpose)
       
       response = self.msg("EXTENDCIRCUIT %s" % " ".join(args))
       stem.response.convert("SINGLELINE", response)
@@ -1710,8 +1751,10 @@ class Controller(BaseController):
       
       return streams
     except Exception, exc:
-      if default == UNDEFINED: raise exc
-      else: return default
+      if default == UNDEFINED:
+        raise exc
+      else:
+        return default
   
   def attach_stream(self, stream_id, circuit_id, exiting_hop = None):
     """
@@ -1730,7 +1773,10 @@ class Controller(BaseController):
     """
     
     query = "ATTACHSTREAM %s %s" % (stream_id, circuit_id)
-    if exiting_hop: query += " HOP=%s" % exiting_hop
+    
+    if exiting_hop:
+      query += " HOP=%s" % exiting_hop
+    
     response = self.msg(query)
     stem.response.convert("SINGLELINE", response)
     
@@ -1976,5 +2022,7 @@ def _case_insensitive_lookup(entries, key, default = UNDEFINED):
         if entry.lower() == key.lower():
           return entry
   
-  if default != UNDEFINED: return default
-  else: raise ValueError("key '%s' doesn't exist in dict: %s" % (key, entries))
+  if default != UNDEFINED:
+    return default
+  else:
+    raise ValueError("key '%s' doesn't exist in dict: %s" % (key, entries))
diff --git a/stem/descriptor/__init__.py b/stem/descriptor/__init__.py
index ed52b42..0dba96c 100644
--- a/stem/descriptor/__init__.py
+++ b/stem/descriptor/__init__.py
@@ -196,7 +196,8 @@ def _read_until_keywords(keywords, descriptor_file, inclusive = False, ignore_fi
   content = None if skip else []
   ending_keyword = None
   
-  if isinstance(keywords, str): keywords = (keywords,)
+  if isinstance(keywords, str):
+    keywords = (keywords,)
   
   if ignore_first:
     first_line = descriptor_file.readline()
@@ -211,7 +212,9 @@ def _read_until_keywords(keywords, descriptor_file, inclusive = False, ignore_fi
       break
     
     line = descriptor_file.readline()
-    if not line: break  # EOF
+    
+    if not line:
+      break  # EOF
     
     line_match = KEYWORD_LINE.match(line)
     
@@ -314,27 +317,35 @@ def _get_descriptor_components(raw_contents, validate, extra_keywords = ()):
     # ... and server descriptors end with an extra newline. But other documents
     # don't say how blank lines should be handled so globally ignoring them.
     
-    if not line: continue
+    if not line:
+      continue
     
     # Some lines have an 'opt ' for backward compatibility. They should be
     # ignored. This prefix is being removed in...
     # https://trac.torproject.org/projects/tor/ticket/5124
     
-    if line.startswith("opt "): line = line[4:]
+    if line.startswith("opt "):
+      line = line[4:]
     
     line_match = KEYWORD_LINE.match(line)
     
     if not line_match:
-      if not validate: continue
+      if not validate:
+        continue
+      
       raise ValueError("Line contains invalid characters: %s" % line)
     
     keyword, value = line_match.groups()
-    if value is None: value = ''
+    
+    if value is None:
+      value = ''
     
     try:
       block_contents = _get_pseudo_pgp_block(remaining_lines)
     except ValueError, exc:
-      if not validate: continue
+      if not validate:
+        continue
+      
       raise exc
     
     if keyword in extra_keywords:
diff --git a/stem/descriptor/extrainfo_descriptor.py b/stem/descriptor/extrainfo_descriptor.py
index 7ea457c..2c14c92 100644
--- a/stem/descriptor/extrainfo_descriptor.py
+++ b/stem/descriptor/extrainfo_descriptor.py
@@ -158,7 +158,8 @@ def parse_file(descriptor_file, validate = True):
     
     if extrainfo_content:
       yield RelayExtraInfoDescriptor("".join(extrainfo_content), validate)
-    else: break  # done parsing file
+    else:
+      break  # done parsing file
 
 def _parse_timestamp_and_interval(keyword, content):
   """
@@ -180,7 +181,9 @@ def _parse_timestamp_and_interval(keyword, content):
     raise ValueError("Malformed %s line: %s" % (keyword, line))
   
   timestamp_str, interval, remainder = content_match.groups()
-  if remainder: remainder = remainder[1:]  # remove leading space
+  
+  if remainder:
+    remainder = remainder[1:]  # remove leading space
   
   if not interval.isdigit():
     raise ValueError("%s line's interval wasn't a number: %s" % (keyword, line))
@@ -430,7 +433,9 @@ class ExtraInfoDescriptor(stem.descriptor.Descriptor):
         extra_info_comp = value.split()
         
         if len(extra_info_comp) < 2:
-          if not validate: continue
+          if not validate:
+            continue
+          
           raise ValueError("Extra-info line must have two values: %s" % line)
         
         if validate:
@@ -527,8 +532,10 @@ class ExtraInfoDescriptor(stem.descriptor.Descriptor):
         if value:
           for entry in value.split(","):
             if not "=" in entry:
-              if validate: raise ValueError(error_msg)
-              else: continue
+              if validate:
+                raise ValueError(error_msg)
+              else:
+                continue
             
             status, count = entry.split("=", 1)
             
@@ -562,7 +569,9 @@ class ExtraInfoDescriptor(stem.descriptor.Descriptor):
         # "<keyword>" num%
         
         try:
-          if not value.endswith("%"): raise ValueError()
+          if not value.endswith("%"):
+            raise ValueError()
+          
           percentage = float(value[:-1]) / 100
           
           # Bug lets these be above 100%, however they're soon going away...
@@ -593,7 +602,8 @@ class ExtraInfoDescriptor(stem.descriptor.Descriptor):
               
               entries.append(float(entry))
             except ValueError:
-              if validate: raise ValueError("Non-numeric entry in %s listing: %s" % (keyword, line))
+              if validate:
+                raise ValueError("Non-numeric entry in %s listing: %s" % (keyword, line))
         
         if keyword == "cell-processed-cells":
           self.cell_processed_cells = entries
@@ -636,7 +646,8 @@ class ExtraInfoDescriptor(stem.descriptor.Descriptor):
             self.dir_stats_end = timestamp
             self.dir_stats_interval = interval
         except ValueError, exc:
-          if validate: raise exc
+          if validate:
+            raise exc
       elif keyword == "conn-bi-direct":
         # "conn-bi-direct" YYYY-MM-DD HH:MM:SS (NSEC s) BELOW,READ,WRITE,BOTH
         
@@ -655,7 +666,8 @@ class ExtraInfoDescriptor(stem.descriptor.Descriptor):
           self.conn_bi_direct_write = int(stats[2])
           self.conn_bi_direct_both = int(stats[3])
         except ValueError, exc:
-          if validate: raise exc
+          if validate:
+            raise exc
       elif keyword in ("read-history", "write-history", "dirreq-read-history", "dirreq-write-history"):
         # "<keyword>" YYYY-MM-DD HH:MM:SS (NSEC s) NUM,NUM,NUM,NUM,NUM...
         try:
@@ -685,7 +697,8 @@ class ExtraInfoDescriptor(stem.descriptor.Descriptor):
             self.dir_write_history_interval = interval
             self.dir_write_history_values = history_values
         except ValueError, exc:
-          if validate: raise exc
+          if validate:
+            raise exc
       elif keyword in ("exit-kibibytes-written", "exit-kibibytes-read", "exit-streams-opened"):
         # "<keyword>" port=N,port=N,...
         
@@ -695,13 +708,16 @@ class ExtraInfoDescriptor(stem.descriptor.Descriptor):
         if value:
           for entry in value.split(","):
             if not "=" in entry:
-              if validate: raise ValueError(error_msg)
-              else: continue
+              if validate:
+                raise ValueError(error_msg)
+              else:
+                continue
             
             port, stat = entry.split("=", 1)
             
             if (port == 'other' or stem.util.connection.is_valid_port(port)) and stat.isdigit():
-              if port != 'other': port = int(port)
+              if port != 'other':
+                port = int(port)
               port_mappings[port] = int(stat)
             elif validate:
               raise ValueError(error_msg)
@@ -727,8 +743,10 @@ class ExtraInfoDescriptor(stem.descriptor.Descriptor):
         if value:
           for entry in value.split(","):
             if not "=" in entry:
-              if validate: raise ValueError(error_msg)
-              else: continue
+              if validate:
+                raise ValueError(error_msg)
+              else:
+                continue
             
             locale, count = entry.split("=", 1)
             
@@ -807,7 +825,9 @@ class RelayExtraInfoDescriptor(ExtraInfoDescriptor):
       value, block_contents = values[0]
       
       line = "%s %s" % (keyword, value)  # original line
-      if block_contents: line += "\n%s" % block_contents
+      
+      if block_contents:
+        line += "\n%s" % block_contents
       
       if keyword == "router-signature":
         if validate and not block_contents:
diff --git a/stem/descriptor/networkstatus.py b/stem/descriptor/networkstatus.py
index 2bdfbc4..28537c2 100644
--- a/stem/descriptor/networkstatus.py
+++ b/stem/descriptor/networkstatus.py
@@ -303,7 +303,10 @@ class NetworkStatusDocumentV2(NetworkStatusDocument):
     document_content += "\n" + document_file.read()
     
     entries = stem.descriptor._get_descriptor_components(document_content, validate)
-    if validate: self._check_constraints(entries)
+    
+    if validate:
+      self._check_constraints(entries)
+    
     self._parse(entries, validate)
   
   def _parse(self, entries, validate):
@@ -311,11 +314,15 @@ class NetworkStatusDocumentV2(NetworkStatusDocument):
       value, block_contents = values[0]
       
       line = "%s %s" % (keyword, value)  # original line
-      if block_contents: line += "\n%s" % block_contents
+      
+      if block_contents:
+        line += "\n%s" % block_contents
       
       if keyword == "network-status-version":
         if not value.isdigit():
-          if not validate: continue
+          if not validate:
+            continue
+          
           raise ValueError("Network status document has a non-numeric version: %s" % line)
         
         self.version = int(value)
@@ -326,7 +333,9 @@ class NetworkStatusDocumentV2(NetworkStatusDocument):
         dir_source_comp = value.split()
         
         if len(dir_source_comp) < 3:
-          if not validate: continue
+          if not validate:
+            continue
+          
           raise ValueError("The 'dir-source' line of a v2 network status document must have three values: %s" % line)
         
         if validate:
@@ -569,7 +578,9 @@ class _DocumentHeader(object):
           version, flavor = value, None
         
         if not version.isdigit():
-          if not validate: continue
+          if not validate:
+            continue
+          
           raise ValueError("Network status document has a non-numeric version: %s" % line)
         
         self.version = int(version)
@@ -663,11 +674,14 @@ class _DocumentHeader(object):
         # Parameters ::= Parameter | Parameters SP Parameter
         
         # should only appear in consensus-method 7 or later
+        
         if validate and not self.meets_consensus_method(7):
           raise ValueError("A network status document's 'params' line should only appear in consensus-method 7 or later")
         
         # skip if this is a blank line
-        if value == "": continue
+        
+        if value == "":
+          continue
         
         self.params.update(_parse_int_mappings(keyword, value, validate))
         
@@ -769,7 +783,9 @@ class _DocumentFooter(object):
       elif keyword == "directory-signature":
         for sig_value, block_contents in values:
           if not sig_value.count(" ") in (1, 2) or not block_contents:
-            if not validate: continue
+            if not validate:
+              continue
+            
             raise ValueError("Authority signatures in a network status document are expected to be of the form 'directory-signature [METHOD] FINGERPRINT KEY_DIGEST\\nSIGNATURE', got:\n%s\n%s" % (sig_value, block_contents))
           
           if sig_value.count(" ") == 1:
@@ -872,7 +888,9 @@ def _parse_int_mappings(keyword, value, validate):
       results[entry_key] = entry_value
       seen_keys.append(entry_key)
     except ValueError, exc:
-      if not validate: continue
+      if not validate:
+        continue
+      
       raise ValueError("Unable to parse network status document's '%s' line (%s): %s'" % (keyword, exc, value))
   
   return results
@@ -999,7 +1017,9 @@ class DirectoryAuthority(stem.descriptor.Descriptor):
         dir_source_comp = value.split(" ")
         
         if len(dir_source_comp) < 6:
-          if not validate: continue
+          if not validate:
+            continue
+          
           raise ValueError("Authority entry's 'dir-source' line must have six values: %s" % line)
         
         if validate:
@@ -1139,7 +1159,9 @@ class KeyCertificate(stem.descriptor.Descriptor):
         # "dir-key-certificate-version" version
         
         if not value.isdigit():
-          if not validate: continue
+          if not validate:
+            continue
+          
           raise ValueError("Key certificate has a non-integer version: %s" % line)
         
         self.version = int(value)
@@ -1150,7 +1172,9 @@ class KeyCertificate(stem.descriptor.Descriptor):
         # "dir-address" IPPort
         
         if not ':' in value:
-          if not validate: continue
+          if not validate:
+            continue
+          
           raise ValueError("Key certificate's 'dir-address' is expected to be of the form ADDRESS:PORT: %s" % line)
         
         address, dirport = value.split(':', 1)
@@ -1255,7 +1279,9 @@ class DocumentSignature(object):
       return 1
     
     for attr in ("identity", "key_digest", "signature"):
-      if getattr(self, attr) > getattr(other, attr): return 1
-      elif getattr(self, attr) < getattr(other, attr): return -1
+      if getattr(self, attr) > getattr(other, attr):
+        return 1
+      elif getattr(self, attr) < getattr(other, attr):
+        return -1
     
     return 0
diff --git a/stem/descriptor/reader.py b/stem/descriptor/reader.py
index d47a5ed..9f9f505 100644
--- a/stem/descriptor/reader.py
+++ b/stem/descriptor/reader.py
@@ -173,7 +173,8 @@ def load_processed_files(path):
     for line in input_file.readlines():
       line = line.strip()
       
-      if not line: continue  # skip blank lines
+      if not line:
+        continue  # skip blank lines
       
       if not " " in line:
         raise TypeError("Malformed line: %s" % line)
@@ -208,8 +209,11 @@ def save_processed_files(path, processed_files):
   # makes the parent directory if it doesn't already exist
   try:
     path_dir = os.path.dirname(path)
-    if not os.path.exists(path_dir): os.makedirs(path_dir)
-  except OSError, exc: raise IOError(exc)
+    
+    if not os.path.exists(path_dir):
+      os.makedirs(path_dir)
+  except OSError, exc:
+    raise IOError(exc)
   
   with open(path, "w") as output_file:
     for path, timestamp in processed_files.items():
@@ -243,8 +247,10 @@ class DescriptorReader(object):
   """
   
   def __init__(self, target, follow_links = False, buffer_size = 100, persistence_path = None):
-    if isinstance(target, str): self._targets = [target]
-    else: self._targets = target
+    if isinstance(target, str):
+      self._targets = [target]
+    else:
+      self._targets = target
     
     self._follow_links = follow_links
     self._persistence_path = persistence_path
@@ -270,7 +276,8 @@ class DescriptorReader(object):
       try:
         processed_files = load_processed_files(self._persistence_path)
         self.set_processed_files(processed_files)
-      except: pass
+      except:
+        pass
   
   def get_processed_files(self):
     """
@@ -371,10 +378,12 @@ class DescriptorReader(object):
       self._iter_notice.set()
       
       # clears our queue to unblock enqueue calls
+      
       try:
         while True:
           self._unreturned_descriptors.get_nowait()
-      except Queue.Empty: pass
+      except Queue.Empty:
+        pass
       
       self._reader_thread.join()
       self._reader_thread = None
@@ -383,7 +392,8 @@ class DescriptorReader(object):
         try:
           processed_files = self.get_processed_files()
           save_processed_files(self._persistence_path, processed_files)
-        except: pass
+        except:
+          pass
   
   def _read_descriptor_files(self):
     new_processed_files = {}
@@ -419,8 +429,10 @@ class DescriptorReader(object):
         try:
           descriptor = self._unreturned_descriptors.get_nowait()
           
-          if descriptor == FINISHED: break
-          else: yield descriptor
+          if descriptor == FINISHED:
+            break
+          else:
+            yield descriptor
         except Queue.Empty:
           self._iter_notice.wait()
           self._iter_notice.clear()
@@ -431,7 +443,8 @@ class DescriptorReader(object):
         self._handle_file(os.path.join(root, filename), new_processed_files)
         
         # this can take a while if, say, we're including the root directory
-        if self._is_stopped.isSet(): return
+        if self._is_stopped.isSet():
+          return
   
   def _handle_file(self, target, new_processed_files):
     # This is a file. Register its last modified timestamp and check if
@@ -452,7 +465,8 @@ class DescriptorReader(object):
     # Block devices and such are never descriptors, and can cause us to block
     # for quite a while so skipping anything that isn't a regular file.
     
-    if not os.path.isfile(target): return
+    if not os.path.isfile(target):
+      return
     
     # The mimetypes module only checks the file extension. To actually
     # check the content (like the 'file' command) we'd need something like
@@ -483,7 +497,9 @@ class DescriptorReader(object):
       self._notify_read_listeners(target)
       with open(target) as target_file:
         for desc in stem.descriptor.parse_file(target, target_file):
-          if self._is_stopped.isSet(): return
+          if self._is_stopped.isSet():
+            return
+          
           self._unreturned_descriptors.put(desc)
           self._iter_notice.set()
     except TypeError, exc:
@@ -509,7 +525,9 @@ class DescriptorReader(object):
           entry = tar_file.extractfile(tar_entry)
           
           for desc in stem.descriptor.parse_file(target, entry):
-            if self._is_stopped.isSet(): return
+            if self._is_stopped.isSet():
+              return
+            
             self._unreturned_descriptors.put(desc)
             self._iter_notice.set()
           
@@ -521,7 +539,8 @@ class DescriptorReader(object):
     except IOError, exc:
       self._notify_skip_listeners(target, ReadFailed(exc))
     finally:
-      if tar_file: tar_file.close()
+      if tar_file:
+        tar_file.close()
   
   def _notify_read_listeners(self, path):
     for listener in self._read_listeners:
diff --git a/stem/descriptor/router_status_entry.py b/stem/descriptor/router_status_entry.py
index bc6aa46..6e048dd 100644
--- a/stem/descriptor/router_status_entry.py
+++ b/stem/descriptor/router_status_entry.py
@@ -83,7 +83,8 @@ def parse_file(document_file, validate, entry_class, entry_keyword = "r", start_
       yield entry_class(desc_content, validate, *extra_args)
       
       # check if we stopped at the end of the section
-      if ending_keyword in section_end_keywords: break
+      if ending_keyword in section_end_keywords:
+        break
     else:
       break
 
@@ -139,7 +140,10 @@ class RouterStatusEntry(stem.descriptor.Descriptor):
     self._unrecognized_lines = []
     
     entries = stem.descriptor._get_descriptor_components(content, validate)
-    if validate: self._check_constraints(entries)
+    
+    if validate:
+      self._check_constraints(entries)
+    
     self._parse(entries, validate)
   
   def _parse(self, entries, validate):
@@ -427,7 +431,8 @@ def _parse_r_line(desc, value, validate, include_digest = True):
     r_comp.insert(2, None)
   
   if len(r_comp) < 8:
-    if not validate: return
+    if not validate:
+      return
     
     expected_field_count = 'eight' if include_digest else 'seven'
     raise ValueError("%s 'r' line must have %s values: r %s" % (desc._name(), expected_field_count, value))
@@ -446,7 +451,10 @@ def _parse_r_line(desc, value, validate, include_digest = True):
   
   desc.nickname = r_comp[0]
   desc.fingerprint = _decode_fingerprint(r_comp[1], validate)
-  if include_digest: desc.digest = r_comp[2]
+  
+  if include_digest:
+    desc.digest = r_comp[2]
+  
   desc.address = r_comp[5]
   desc.or_port = int(r_comp[6])
   desc.dir_port = None if r_comp[7] == '0' else int(r_comp[7])
@@ -463,7 +471,9 @@ def _parse_a_line(desc, value, validate):
   # example: a [2001:888:2133:0:82:94:251:204]:9001
   
   if not ':' in value:
-    if not validate: return
+    if not validate:
+      return
+    
     raise ValueError("%s 'a' line must be of the form '[address]:[ports]': a %s" % (desc._name(), value))
   
   address, ports = value.rsplit(':', 1)
@@ -481,7 +491,10 @@ def _parse_a_line(desc, value, validate):
     
     if not stem.util.connection.is_valid_port(min_port) or \
        not stem.util.connection.is_valid_port(max_port):
-      if not validate: continue
+      
+      if not validate:
+        continue
+      
       raise ValueError("%s 'a' line had an invalid port range (%s): a %s" % (desc._name(), port_entry, value))
     
     desc.addresses_v6.setdefault(address, []).append((int(min_port), int(max_port)))
@@ -524,10 +537,14 @@ def _parse_w_line(desc, value, validate):
   w_comp = value.split(" ")
   
   if len(w_comp) < 1:
-    if not validate: return
+    if not validate:
+      return
+    
     raise ValueError("%s 'w' line is blank: w %s" % (desc._name(), value))
   elif not w_comp[0].startswith("Bandwidth="):
-    if not validate: return
+    if not validate:
+      return
+    
     raise ValueError("%s 'w' line needs to start with a 'Bandwidth=' entry: w %s" % (desc._name(), value))
   
   for w_entry in w_comp:
@@ -538,13 +555,17 @@ def _parse_w_line(desc, value, validate):
     
     if w_key == "Bandwidth":
       if not (w_value and w_value.isdigit()):
-        if not validate: return
+        if not validate:
+          return
+        
         raise ValueError("%s 'Bandwidth=' entry needs to have a numeric value: w %s" % (desc._name(), value))
       
       desc.bandwidth = int(w_value)
     elif w_key == "Measured":
       if not (w_value and w_value.isdigit()):
-        if not validate: return
+        if not validate:
+          return
+        
         raise ValueError("%s 'Measured=' entry needs to have a numeric value: w %s" % (desc._name(), value))
       
       desc.measured = int(w_value)
@@ -559,7 +580,9 @@ def _parse_p_line(desc, value, validate):
   try:
     desc.exit_policy = stem.exit_policy.MicroExitPolicy(value)
   except ValueError, exc:
-    if not validate: return
+    if not validate:
+      return
+    
     raise ValueError("%s exit policy is malformed (%s): p %s" % (desc._name(), exc, value))
 
 def _parse_m_line(desc, value, validate):
@@ -569,25 +592,32 @@ def _parse_m_line(desc, value, validate):
   m_comp = value.split(" ")
   
   if not (desc.document and desc.document.is_vote):
-    if not validate: return
+    if not validate:
+      return
     
     vote_status = "vote" if desc.document else "<undefined document>"
     raise ValueError("%s 'm' line should only appear in votes (appeared in a %s): m %s" % (desc._name(), vote_status, value))
   elif len(m_comp) < 1:
-    if not validate: return
+    if not validate:
+      return
+    
     raise ValueError("%s 'm' line needs to start with a series of methods: m %s" % (desc._name(), value))
   
   try:
     methods = [int(entry) for entry in m_comp[0].split(",")]
   except ValueError:
-    if not validate: return
+    if not validate:
+      return
+    
     raise ValueError("%s microdescriptor methods should be a series of comma separated integers: m %s" % (desc._name(), value))
   
   hashes = {}
   
   for entry in m_comp[1:]:
     if not '=' in entry:
-      if not validate: continue
+      if not validate:
+        continue
+      
       raise ValueError("%s can only have a series of 'algorithm=digest' mappings after the methods: m %s" % (desc._name(), value))
     
     hash_name, digest = entry.split('=', 1)
@@ -622,7 +652,9 @@ def _decode_fingerprint(identity, validate):
   try:
     identity_decoded = base64.b64decode(identity)
   except TypeError:
-    if not validate: return None
+    if not validate:
+      return None
+    
     raise ValueError("Unable to decode identity string '%s'" % identity)
   
   for char in identity_decoded:
@@ -639,7 +671,9 @@ def _decode_fingerprint(identity, validate):
     fingerprint += hex(ord(char))[2:].zfill(2).upper()
   
   if not stem.util.tor_tools.is_valid_fingerprint(fingerprint):
-    if not validate: return None
+    if not validate:
+      return None
+    
     raise ValueError("Decoded '%s' to be '%s', which isn't a valid fingerprint" % (identity, fingerprint))
   
   return fingerprint
diff --git a/stem/descriptor/server_descriptor.py b/stem/descriptor/server_descriptor.py
index 1ea13a2..037a4bd 100644
--- a/stem/descriptor/server_descriptor.py
+++ b/stem/descriptor/server_descriptor.py
@@ -126,7 +126,8 @@ def parse_file(descriptor_file, validate = True):
       
       descriptor_text = "".join(descriptor_content)
       yield RelayDescriptor(descriptor_text, validate, annotations)
-    else: break  # done parsing descriptors
+    else:
+      break  # done parsing descriptors
 
 class ServerDescriptor(stem.descriptor.Descriptor):
   """
@@ -257,7 +258,9 @@ class ServerDescriptor(stem.descriptor.Descriptor):
     
     self.exit_policy = stem.exit_policy.ExitPolicy(*policy)
     self._parse(entries, validate)
-    if validate: self._check_constraints(entries)
+    
+    if validate:
+      self._check_constraints(entries)
   
   def digest(self):
     """
@@ -292,7 +295,8 @@ class ServerDescriptor(stem.descriptor.Descriptor):
         if " " in line:
           key, value = line.split(" ", 1)
           annotation_dict[key] = value
-        else: annotation_dict[line] = None
+        else:
+          annotation_dict[line] = None
       
       self._annotation_dict = annotation_dict
     
@@ -326,14 +330,18 @@ class ServerDescriptor(stem.descriptor.Descriptor):
       value, block_contents = values[0]
       
       line = "%s %s" % (keyword, value)  # original line
-      if block_contents: line += "\n%s" % block_contents
+      
+      if block_contents:
+        line += "\n%s" % block_contents
       
       if keyword == "router":
         # "router" nickname address ORPort SocksPort DirPort
         router_comp = value.split()
         
         if len(router_comp) < 5:
-          if not validate: continue
+          if not validate:
+            continue
+          
           raise ValueError("Router line must have five values: %s" % line)
         
         if validate:
@@ -360,17 +368,24 @@ class ServerDescriptor(stem.descriptor.Descriptor):
         bandwidth_comp = value.split()
         
         if len(bandwidth_comp) < 3:
-          if not validate: continue
+          if not validate:
+            continue
+          
           raise ValueError("Bandwidth line must have three values: %s" % line)
-        
-        if not bandwidth_comp[0].isdigit():
-          if not validate: continue
+        elif not bandwidth_comp[0].isdigit():
+          if not validate:
+            continue
+          
           raise ValueError("Bandwidth line's average rate isn't numeric: %s" % bandwidth_comp[0])
         elif not bandwidth_comp[1].isdigit():
-          if not validate: continue
+          if not validate:
+            continue
+          
           raise ValueError("Bandwidth line's burst rate isn't numeric: %s" % bandwidth_comp[1])
         elif not bandwidth_comp[2].isdigit():
-          if not validate: continue
+          if not validate:
+            continue
+          
           raise ValueError("Bandwidth line's observed rate isn't numeric: %s" % bandwidth_comp[2])
         
         self.average_bandwidth = int(bandwidth_comp[0])
@@ -395,7 +410,8 @@ class ServerDescriptor(stem.descriptor.Descriptor):
           
           try:
             self.tor_version = stem.version.Version(version_str)
-          except ValueError: pass
+          except ValueError:
+            pass
       elif keyword == "published":
         # "published" YYYY-MM-DD HH:MM:SS
         
@@ -458,7 +474,9 @@ class ServerDescriptor(stem.descriptor.Descriptor):
         try:
           self.uptime = int(value)
         except ValueError:
-          if not validate: continue
+          if not validate:
+            continue
+          
           raise ValueError("Uptime line must have an integer value: %s" % value)
       elif keyword == "contact":
         self.contact = value
@@ -484,23 +502,31 @@ class ServerDescriptor(stem.descriptor.Descriptor):
           line = "%s %s" % (keyword, entry)
           
           if not ":" in entry:
-            if not validate: continue
-            else: raise ValueError("or-address line missing a colon: %s" % line)
+            if not validate:
+              continue
+            else:
+              raise ValueError("or-address line missing a colon: %s" % line)
           
           div = entry.rfind(":")
           address, ports = entry[:div], entry[div + 1:]
           is_ipv6 = address.startswith("[") and address.endswith("]")
-          if is_ipv6: address = address[1:-1]  # remove brackets
+          
+          if is_ipv6:
+            address = address[1:-1]  # remove brackets
           
           if not ((not is_ipv6 and stem.util.connection.is_valid_ip_address(address)) or
                  (is_ipv6 and stem.util.connection.is_valid_ipv6_address(address))):
-            if not validate: continue
-            else: raise ValueError("or-address line has a malformed address: %s" % line)
+            if not validate:
+              continue
+            else:
+              raise ValueError("or-address line has a malformed address: %s" % line)
           
           for port in ports.split(","):
             if not stem.util.connection.is_valid_port(port):
-              if not validate: break
-              else: raise ValueError("or-address line has malformed ports: %s" % line)
+              if not validate:
+                break
+              else:
+                raise ValueError("or-address line has malformed ports: %s" % line)
             
             self.address_alt.append((address, int(port), is_ipv6))
       elif keyword in ("read-history", "write-history"):
@@ -525,7 +551,8 @@ class ServerDescriptor(stem.descriptor.Descriptor):
             self.write_history_interval = interval
             self.write_history_values = history_values
         except ValueError, exc:
-          if validate: raise exc
+          if validate:
+            raise exc
       else:
         self._unrecognized_lines.append(line)
     
diff --git a/stem/exit_policy.py b/stem/exit_policy.py
index 9b0a111..56c68dc 100644
--- a/stem/exit_policy.py
+++ b/stem/exit_policy.py
@@ -171,11 +171,14 @@ class ExitPolicy(object):
       display_ports, skip_ports = [], set()
       
       for rule in self._get_rules():
-        if not rule.is_address_wildcard(): continue
-        elif rule.is_port_wildcard(): break
+        if not rule.is_address_wildcard():
+          continue
+        elif rule.is_port_wildcard():
+          break
         
         for port in xrange(rule.min_port, rule.max_port + 1):
-          if port in skip_ports: continue
+          if port in skip_ports:
+            continue
           
           # if accept + white-list or reject + blacklist then add
           if rule.is_accept == is_whitelist:
@@ -447,9 +450,11 @@ class ExitPolicyRule(object):
       address_type = self.get_address_type()
       
       if stem.util.connection.is_valid_ip_address(address):
-        if address_type == AddressType.IPv6: return False
+        if address_type == AddressType.IPv6:
+          return False
       elif stem.util.connection.is_valid_ipv6_address(address, allow_brackets = True):
-        if address_type == AddressType.IPv4: return False
+        if address_type == AddressType.IPv4:
+          return False
         
         address = address.lstrip("[").rstrip("]")
       else:
@@ -468,7 +473,9 @@ class ExitPolicyRule(object):
       else:
         comparison_addr_bin = int(stem.util.connection.get_address_binary(address), 2)
         comparison_addr_bin &= self._get_mask_bin()
-        if self._get_address_bin() != comparison_addr_bin: return False
+        
+        if self._get_address_bin() != comparison_addr_bin:
+          return False
     
     if not self.is_port_wildcard():
       if port is None:
@@ -510,7 +517,9 @@ class ExitPolicyRule(object):
       elif address_type == AddressType.IPv6:
         mask = stem.util.connection.get_mask_ipv6(self._masked_bits)
       
-      if not cache: return mask
+      if not cache:
+        return mask
+      
       self._mask = mask
     
     return self._mask
diff --git a/stem/process.py b/stem/process.py
index 4db51d3..e654e85 100644
--- a/stem/process.py
+++ b/stem/process.py
@@ -82,7 +82,9 @@ def launch_tor(tor_cmd = "tor", args = None, torrc_path = None, completion_perce
   
   # starts a tor subprocess, raising an OSError if it fails
   runtime_args, temp_file = [tor_cmd], None
-  if args: runtime_args += args
+  
+  if args:
+    runtime_args += args
   
   if torrc_path:
     if torrc_path == NO_TORRC:
@@ -100,8 +102,10 @@ def launch_tor(tor_cmd = "tor", args = None, torrc_path = None, completion_perce
     def timeout_handler(signum, frame):
       # terminates the uninitialized tor process and raise on timeout
       if temp_file:
-        try: os.remove(temp_file)
-        except: pass
+        try:
+          os.remove(temp_file)
+        except:
+          pass
       
       # We can't kill the subprocess on python 2.5 running Windows without the
       # win32process module...
@@ -126,7 +130,8 @@ def launch_tor(tor_cmd = "tor", args = None, torrc_path = None, completion_perce
     
     # this will provide empty results if the process is terminated
     if not init_line:
-      if timeout: signal.alarm(0)  # stop alarm
+      if timeout:
+        signal.alarm(0)  # stop alarm
       
       # ... but best make sure
       if stem.prereq.is_python_26():
@@ -137,25 +142,32 @@ def launch_tor(tor_cmd = "tor", args = None, torrc_path = None, completion_perce
       raise OSError("Process terminated: %s" % last_problem)
     
     # provide the caller with the initialization message if they want it
-    if init_msg_handler: init_msg_handler(init_line)
+    
+    if init_msg_handler:
+      init_msg_handler(init_line)
     
     # return the process if we're done with bootstrapping
     bootstrap_match = bootstrap_line.search(init_line)
     problem_match = problem_line.search(init_line)
     
     if bootstrap_match and int(bootstrap_match.groups()[0]) >= completion_percent:
-      if timeout: signal.alarm(0)  # stop alarm
+      if timeout:
+        signal.alarm(0)  # stop alarm
       
       if temp_file:
-        try: os.remove(temp_file)
-        except: pass
+        try:
+          os.remove(temp_file)
+        except:
+          pass
       
       return tor_process
     elif problem_match:
       runlevel, msg = problem_match.groups()
       
       if not "see warnings above" in msg:
-        if ": " in msg: msg = msg.split(": ")[-1].strip()
+        if ": " in msg:
+          msg = msg.split(": ")[-1].strip()
+        
         last_problem = msg
 
 def launch_tor_with_config(config, tor_cmd = "tor", completion_percent = 100, init_msg_handler = None, timeout = DEFAULT_INIT_TIMEOUT, take_ownership = False):
@@ -213,8 +225,10 @@ def launch_tor_with_config(config, tor_cmd = "tor", completion_percent = 100, in
     
     return launch_tor(tor_cmd, args, torrc_path, completion_percent, init_msg_handler, timeout, take_ownership)
   finally:
-    try: os.remove(torrc_path)
-    except: pass
+    try:
+      os.remove(torrc_path)
+    except:
+      pass
 
 def _get_pid():
   return str(os.getpid())
diff --git a/stem/response/__init__.py b/stem/response/__init__.py
index 388d755..dbf50f9 100644
--- a/stem/response/__init__.py
+++ b/stem/response/__init__.py
@@ -137,7 +137,8 @@ class ControlMessage(object):
     """
     
     for code, _, _ in self._parsed_content:
-      if code == "250": return True
+      if code == "250":
+        return True
     
     return False
   
@@ -367,7 +368,9 @@ class ControlLine(str):
     """
     
     with self._remainder_lock:
-      if self.is_empty(): raise IndexError("no remaining content to parse")
+      if self.is_empty():
+        raise IndexError("no remaining content to parse")
+      
       key_match = KEY_ARG.match(self._remainder)
       
       if not key_match:
@@ -411,8 +414,10 @@ def _parse_entry(line, quoted, escaped):
     next_entry, remainder = remainder[1:end_quote], remainder[end_quote + 1:]
   else:
     # non-quoted value, just need to check if there's more data afterward
-    if " " in remainder: next_entry, remainder = remainder.split(" ", 1)
-    else: next_entry, remainder = remainder, ""
+    if " " in remainder:
+      next_entry, remainder = remainder.split(" ", 1)
+    else:
+      next_entry, remainder = remainder, ""
   
   if escaped:
     for esc_sequence, replacement in CONTROL_ESCAPES.items():
diff --git a/stem/response/events.py b/stem/response/events.py
index 7ba077f..51aa3d2 100644
--- a/stem/response/events.py
+++ b/stem/response/events.py
@@ -103,7 +103,9 @@ class Event(stem.response.ControlMessage):
               raise stem.ProtocolError("The %s value should be quoted, but didn't have an ending quote: %s" % (attr_name, self))
             
             attr_values.append(positional.pop(0))
-            if attr_values[-1].endswith('"'): break
+            
+            if attr_values[-1].endswith('"'):
+              break
           
           attr_value = " ".join(attr_values)[1:-1]
         else:
diff --git a/stem/response/getconf.py b/stem/response/getconf.py
index bf16ec1..c8b7da3 100644
--- a/stem/response/getconf.py
+++ b/stem/response/getconf.py
@@ -22,7 +22,8 @@ class GetConfResponse(stem.response.ControlMessage):
     self.entries = {}
     remaining_lines = list(self)
     
-    if self.content() == [("250", " ", "OK")]: return
+    if self.content() == [("250", " ", "OK")]:
+      return
     
     if not self.is_ok():
       unrecognized_keywords = []
diff --git a/stem/socket.py b/stem/socket.py
index 4dca361..b23b247 100644
--- a/stem/socket.py
+++ b/stem/socket.py
@@ -75,12 +75,17 @@ class ControlSocket(object):
     
     with self._send_lock:
       try:
-        if not self.is_alive(): raise stem.SocketClosed()
+        if not self.is_alive():
+          raise stem.SocketClosed()
+        
         send_message(self._socket_file, message, raw)
       except stem.SocketClosed, exc:
         # if send_message raises a SocketClosed then we should properly shut
         # everything down
-        if self.is_alive(): self.close()
+        
+        if self.is_alive():
+          self.close()
+        
         raise exc
   
   def recv(self):
@@ -102,7 +107,9 @@ class ControlSocket(object):
         
         socket_file = self._socket_file
         
-        if not socket_file: raise stem.SocketClosed()
+        if not socket_file:
+          raise stem.SocketClosed()
+        
         return recv_message(socket_file)
       except stem.SocketClosed, exc:
         # If recv_message raises a SocketClosed then we should properly shut
@@ -168,7 +175,8 @@ class ControlSocket(object):
       # longer alive it'll be safe to acquire the recv lock because recv()
       # calls no longer block (raising SocketClosed instead).
       
-      if self.is_alive(): self.close()
+      if self.is_alive():
+        self.close()
       
       with self._recv_lock:
         self._socket = self._make_socket()
@@ -200,20 +208,26 @@ class ControlSocket(object):
         # if we haven't yet established a connection then this raises an error
         # socket.error: [Errno 107] Transport endpoint is not connected
         
-        try: self._socket.shutdown(socket.SHUT_RDWR)
-        except socket.error: pass
+        try:
+          self._socket.shutdown(socket.SHUT_RDWR)
+        except socket.error:
+          pass
         
         # Suppressing unexpected exceptions from close. For instance, if the
         # socket's file has already been closed then with python 2.7 that raises
         # with...
         # error: [Errno 32] Broken pipe
         
-        try: self._socket.close()
-        except: pass
+        try:
+          self._socket.close()
+        except:
+          pass
       
       if self._socket_file:
-        try: self._socket_file.close()
-        except: pass
+        try:
+          self._socket_file.close()
+        except:
+          pass
       
       self._socket = None
       self._socket_file = None
@@ -290,7 +304,8 @@ class ControlPort(ControlSocket):
     self._control_addr = control_addr
     self._control_port = control_port
     
-    if connect: self.connect()
+    if connect:
+      self.connect()
   
   def get_address(self):
     """
@@ -341,7 +356,8 @@ class ControlSocketFile(ControlSocket):
     super(ControlSocketFile, self).__init__()
     self._socket_path = socket_path
     
-    if connect: self.connect()
+    if connect:
+      self.connect()
   
   def get_socket_path(self):
     """
@@ -395,7 +411,8 @@ def send_message(control_file, message, raw = False):
     * :class:`stem.SocketClosed` if the socket is known to be shut down
   """
   
-  if not raw: message = send_formatting(message)
+  if not raw:
+    message = send_formatting(message)
   
   try:
     control_file.write(message)
@@ -441,7 +458,8 @@ def recv_message(control_file):
   logging_prefix = "Error while receiving a control message (%s): "
   
   while True:
-    try: line = control_file.readline()
+    try:
+      line = control_file.readline()
     except AttributeError:
       # if the control_file has been closed then we will receive:
       # AttributeError: 'NoneType' object has no attribute 'recv'
@@ -501,7 +519,8 @@ def recv_message(control_file):
       # get a line with just a period
       
       while True:
-        try: line = control_file.readline()
+        try:
+          line = control_file.readline()
         except socket.error, exc:
           prefix = logging_prefix % "SocketClosed"
           log.info(prefix + "received an exception while mid-way through a data reply (exception: \"%s\", read content: \"%s\")" % (exc, log.escape(raw_content)))
@@ -520,7 +539,9 @@ def recv_message(control_file):
         
         # lines starting with a period are escaped by a second period (as per
         # section 2.4 of the control-spec)
-        if line.startswith(".."): line = line[1:]
+        
+        if line.startswith(".."):
+          line = line[1:]
         
         # appends to previous content, using a newline rather than CRLF
         # separator (more conventional for multi-line string content outside
diff --git a/stem/util/conf.py b/stem/util/conf.py
index 0166ad9..57f1fda 100644
--- a/stem/util/conf.py
+++ b/stem/util/conf.py
@@ -169,11 +169,15 @@ class _SyncListener(object):
   def update(self, config, key):
     if key in self.config_dict:
       new_value = config.get(key, self.config_dict[key])
-      if new_value == self.config_dict[key]: return  # no change
+      
+      if new_value == self.config_dict[key]:
+        return  # no change
       
       if self.interceptor:
         interceptor_value = self.interceptor(key, new_value)
-        if interceptor_value: new_value = interceptor_value
+        
+        if interceptor_value:
+          new_value = interceptor_value
       
       self.config_dict[key] = new_value
 
@@ -219,7 +223,9 @@ def get_config(handle):
   :param str handle: unique identifier used to access this config instance
   """
   
-  if not handle in CONFS: CONFS[handle] = Config()
+  if not handle in CONFS:
+    CONFS[handle] = Config()
+  
   return CONFS[handle]
 
 def parse_enum(key, value, enumeration):
@@ -265,7 +271,9 @@ def parse_enum_csv(key, value, enumeration, count = None):
   """
   
   values = [val.upper().strip() for val in value.split(',')]
-  if values == ['']: return []
+  
+  if values == ['']:
+    return []
   
   if count is None:
     pass  # no count validateion checks to do
@@ -415,7 +423,10 @@ class Config(object):
         
         # strips any commenting or excess whitespace
         comment_start = line.find("#")
-        if comment_start != -1: line = line[:comment_start]
+        
+        if comment_start != -1:
+          line = line[:comment_start]
+        
         line = line.strip()
         
         # parse the key/value pair
@@ -463,7 +474,8 @@ class Config(object):
         for entry_key in sorted(self.keys()):
           for entry_value in self.get_value(entry_key, multiple = True):
             # check for multi line entries
-            if "\n" in entry_value: entry_value = "\n|" + entry_value.replace("\n", "\n|")
+            if "\n" in entry_value:
+              entry_value = "\n|" + entry_value.replace("\n", "\n|")
             
             output_file.write('%s %s\n' % (entry_key, entry_value))
   
@@ -535,16 +547,21 @@ class Config(object):
     
     with self._contents_lock:
       if isinstance(value, str):
-        if not overwrite and key in self._contents: self._contents[key].append(value)
-        else: self._contents[key] = [value]
+        if not overwrite and key in self._contents:
+          self._contents[key].append(value)
+        else:
+          self._contents[key] = [value]
         
-        for listener in self._listeners: listener(self, key)
+        for listener in self._listeners:
+          listener(self, key)
       elif isinstance(value, (list, tuple)):
         if not overwrite and key in self._contents:
           self._contents[key] += value
-        else: self._contents[key] = value
+        else:
+          self._contents[key] = value
         
-        for listener in self._listeners: listener(self, key)
+        for listener in self._listeners:
+          listener(self, key)
       else:
         raise ValueError("Config.set() only accepts str, list, or tuple. Provided value was a '%s'" % type(value))
   
@@ -588,21 +605,27 @@ class Config(object):
     
     is_multivalue = isinstance(default, (list, tuple, dict))
     val = self.get_value(key, default, is_multivalue)
-    if val == default: return val  # don't try to infer undefined values
+    
+    if val == default:
+      return val  # don't try to infer undefined values
     
     if isinstance(default, bool):
-      if val.lower() == "true": val = True
-      elif val.lower() == "false": val = False
+      if val.lower() == "true":
+        val = True
+      elif val.lower() == "false":
+        val = False
       else:
         log.debug("Config entry '%s' is expected to be a boolean, defaulting to '%s'" % (key, str(default)))
         val = default
     elif isinstance(default, int):
-      try: val = int(val)
+      try:
+        val = int(val)
       except ValueError:
         log.debug("Config entry '%s' is expected to be an integer, defaulting to '%i'" % (key, default))
         val = default
     elif isinstance(default, float):
-      try: val = float(val)
+      try:
+        val = float(val)
       except ValueError:
         log.debug("Config entry '%s' is expected to be a float, defaulting to '%f'" % (key, default))
         val = default
diff --git a/stem/util/connection.py b/stem/util/connection.py
index 3b16c1f..6892bed 100644
--- a/stem/util/connection.py
+++ b/stem/util/connection.py
@@ -39,10 +39,13 @@ def is_valid_ip_address(address):
   :returns: **True** if input is a valid IPv4 address, **False** otherwise
   """
   
-  if not isinstance(address, str): return False
+  if not isinstance(address, str):
+    return False
   
   # checks if theres four period separated values
-  if address.count(".") != 3: return False
+  
+  if address.count(".") != 3:
+    return False
   
   # checks that each value in the octet are decimal values between 0-255
   for entry in address.split("."):
@@ -110,7 +113,8 @@ def is_valid_port(entry, allow_zero = False):
     
     entry = int(entry)
   
-  if allow_zero and entry == 0: return True
+  if allow_zero and entry == 0:
+    return True
   
   return entry > 0 and entry < 65536
 
diff --git a/stem/util/enum.py b/stem/util/enum.py
index e07772d..d22cd22 100644
--- a/stem/util/enum.py
+++ b/stem/util/enum.py
@@ -73,7 +73,8 @@ class Enum(object):
         key, val = entry, stem.util.str_tools.to_camel_case(entry)
       elif isinstance(entry, tuple) and len(entry) == 2:
         key, val = entry
-      else: raise ValueError("Unrecognized input: %s" % args)
+      else:
+        raise ValueError("Unrecognized input: %s" % args)
       
       keys.append(key)
       values.append(val)
diff --git a/stem/util/log.py b/stem/util/log.py
index c2f7912..14b09df 100644
--- a/stem/util/log.py
+++ b/stem/util/log.py
@@ -78,7 +78,8 @@ DEDUPLICATION_MESSAGE_IDS = set()
 # http://docs.python.org/release/3.1.3/library/logging.html#configuring-logging-for-a-library
 
 class _NullHandler(logging.Handler):
-  def emit(self, record): pass
+  def emit(self, record):
+    pass
 
 if not LOGGER.handlers:
   LOGGER.addHandler(_NullHandler())
@@ -99,8 +100,10 @@ def logging_level(runlevel):
   :param stem.util.log.Runlevel runlevel: runlevel to be returned, no logging if **None**
   """
   
-  if runlevel: return LOG_VALUES[runlevel]
-  else: return logging.FATAL + 5
+  if runlevel:
+    return LOG_VALUES[runlevel]
+  else:
+    return logging.FATAL + 5
 
 def escape(message):
   """
@@ -146,12 +149,24 @@ def log_once(message_id, runlevel, message):
     log(runlevel, message)
 
 # shorter aliases for logging at a runlevel
-def trace(message): log(Runlevel.TRACE, message)
-def debug(message): log(Runlevel.DEBUG, message)
-def info(message): log(Runlevel.INFO, message)
-def notice(message): log(Runlevel.NOTICE, message)
-def warn(message): log(Runlevel.WARN, message)
-def error(message): log(Runlevel.ERROR, message)
+
+def trace(message):
+  log(Runlevel.TRACE, message)
+
+def debug(message):
+  log(Runlevel.DEBUG, message)
+
+def info(message):
+  log(Runlevel.INFO, message)
+
+def notice(message):
+  log(Runlevel.NOTICE, message)
+
+def warn(message):
+  log(Runlevel.WARN, message)
+
+def error(message):
+  log(Runlevel.ERROR, message)
 
 class LogBuffer(logging.Handler):
   """
diff --git a/stem/util/proc.py b/stem/util/proc.py
index 05a7ff0..436e061 100644
--- a/stem/util/proc.py
+++ b/stem/util/proc.py
@@ -52,8 +52,10 @@ IS_PROC_AVAILABLE, SYS_START_TIME, SYS_PHYSICAL_MEMORY = None, None, None
 CLOCK_TICKS = None
 
 # os.sysconf is only defined on unix
-try: CLOCK_TICKS = os.sysconf(os.sysconf_names["SC_CLK_TCK"])
-except AttributeError: pass
+try:
+  CLOCK_TICKS = os.sysconf(os.sysconf_names["SC_CLK_TCK"])
+except AttributeError:
+  pass
 
 Stat = stem.util.enum.Enum(
   ("COMMAND", "command"), ("CPU_UTIME", "utime"),
@@ -148,9 +150,11 @@ def get_cwd(pid):
   start_time, parameter = time.time(), "cwd"
   proc_cwd_link = "/proc/%s/cwd" % pid
   
-  if pid == 0: cwd = ""
+  if pid == 0:
+    cwd = ""
   else:
-    try: cwd = os.readlink(proc_cwd_link)
+    try:
+      cwd = os.readlink(proc_cwd_link)
     except OSError:
       exc = IOError("unable to read %s" % proc_cwd_link)
       _log_failure(parameter, exc)
@@ -196,7 +200,9 @@ def get_memory_usage(pid):
   """
   
   # checks if this is the kernel process
-  if pid == 0: return (0, 0)
+  
+  if pid == 0:
+    return (0, 0)
   
   start_time, parameter = time.time(), "memory usage"
   status_path = "/proc/%s/status" % pid
@@ -253,16 +259,23 @@ def get_stats(pid, *stat_types):
   results = []
   for stat_type in stat_types:
     if stat_type == Stat.COMMAND:
-      if pid == 0: results.append("sched")
-      else: results.append(stat_comp[1])
+      if pid == 0:
+        results.append("sched")
+      else:
+        results.append(stat_comp[1])
     elif stat_type == Stat.CPU_UTIME:
-      if pid == 0: results.append("0")
-      else: results.append(str(float(stat_comp[13]) / CLOCK_TICKS))
+      if pid == 0:
+        results.append("0")
+      else:
+        results.append(str(float(stat_comp[13]) / CLOCK_TICKS))
     elif stat_type == Stat.CPU_STIME:
-      if pid == 0: results.append("0")
-      else: results.append(str(float(stat_comp[14]) / CLOCK_TICKS))
+      if pid == 0:
+        results.append("0")
+      else:
+        results.append(str(float(stat_comp[14]) / CLOCK_TICKS))
     elif stat_type == Stat.START_TIME:
-      if pid == 0: return get_system_start_time()
+      if pid == 0:
+        return get_system_start_time()
       else:
         # According to documentation, starttime is in field 21 and the unit is
         # jiffies (clock ticks). We divide it for clock ticks, then add the
@@ -288,7 +301,8 @@ def get_connections(pid):
   :raises: **IOError** if it can't be determined
   """
   
-  if pid == 0: return []
+  if pid == 0:
+    return []
   
   # fetches the inode numbers for socket file descriptors
   start_time, parameter = time.time(), "process connections"
@@ -384,7 +398,9 @@ def _decode_proc_address_encoding(addr):
 
 def _is_float(*value):
   try:
-    for v in value: float(v)
+    for v in value:
+      float(v)
+    
     return True
   except ValueError:
     return False
@@ -411,7 +427,8 @@ def _get_lines(file_path, line_prefixes, parameter):
     proc_file, results = open(file_path), {}
     
     for line in proc_file:
-      if not remaining_prefixes: break  # found everything we're looking for
+      if not remaining_prefixes:
+        break  # found everything we're looking for
       
       for prefix in remaining_prefixes:
         if line.startswith(prefix):
diff --git a/stem/util/str_tools.py b/stem/util/str_tools.py
index b1e854d..443bd4f 100644
--- a/stem/util/str_tools.py
+++ b/stem/util/str_tools.py
@@ -62,9 +62,12 @@ def to_camel_case(label, divider = "_", joiner = " "):
   
   words = []
   for entry in label.split(divider):
-    if len(entry) == 0: words.append("")
-    elif len(entry) == 1: words.append(entry.upper())
-    else: words.append(entry[0].upper() + entry[1:].lower())
+    if len(entry) == 0:
+      words.append("")
+    elif len(entry) == 1:
+      words.append(entry.upper())
+    else:
+      words.append(entry[0].upper() + entry[1:].lower())
   
   return joiner.join(words)
 
@@ -95,8 +98,10 @@ def get_size_label(byte_count, decimal = 0, is_long = False, is_bytes = True):
   :returns: **str** with human readable representation of the size
   """
   
-  if is_bytes: return _get_label(SIZE_UNITS_BYTES, byte_count, decimal, is_long)
-  else: return _get_label(SIZE_UNITS_BITS, byte_count, decimal, is_long)
+  if is_bytes:
+    return _get_label(SIZE_UNITS_BYTES, byte_count, decimal, is_long)
+  else:
+    return _get_label(SIZE_UNITS_BITS, byte_count, decimal, is_long)
 
 def get_time_label(seconds, decimal = 0, is_long = False):
   """
diff --git a/stem/util/system.py b/stem/util/system.py
index a3a4c5f..acba9c1 100644
--- a/stem/util/system.py
+++ b/stem/util/system.py
@@ -104,7 +104,8 @@ def is_available(command, cached=True):
     PATH, **False** otherwise
   """
   
-  if " " in command: command = command.split(" ")[0]
+  if " " in command:
+    command = command.split(" ")[0]
   
   if command in SHELL_COMMANDS:
     # we can't actually look it up, so hope the shell really provides it...
@@ -116,7 +117,9 @@ def is_available(command, cached=True):
     cmd_exists = False
     for path in os.environ["PATH"].split(os.pathsep):
       cmd_path = os.path.join(path, command)
-      if is_windows(): cmd_path += ".exe"
+      
+      if is_windows():
+        cmd_path += ".exe"
       
       if os.path.exists(cmd_path) and os.access(cmd_path, os.X_OK):
         cmd_exists = True
@@ -198,7 +201,9 @@ def get_pid_by_name(process_name):
     
     if results and len(results) == 1:
       pid = results[0].strip()
-      if pid.isdigit(): return int(pid)
+      
+      if pid.isdigit():
+        return int(pid)
   
   # attempts to resolve using pidof, failing if:
   # - we're running on bsd (command unavailable)
@@ -212,7 +217,9 @@ def get_pid_by_name(process_name):
     
     if results and len(results) == 1 and len(results[0].split()) == 1:
       pid = results[0].strip()
-      if pid.isdigit(): return int(pid)
+      
+      if pid.isdigit():
+        return int(pid)
   
   # attempts to resolve using ps, failing if:
   # - system's ps variant doesn't handle these flags (none known at the moment)
@@ -237,7 +244,9 @@ def get_pid_by_name(process_name):
       
       if results and len(results) == 2:
         pid = results[1].strip()
-        if pid.isdigit(): return int(pid)
+        
+        if pid.isdigit():
+          return int(pid)
     
     if is_bsd():
       # bsd variant of ps
@@ -249,7 +258,9 @@ def get_pid_by_name(process_name):
         
         if len(results) == 1 and len(results[0].split()) > 0:
           pid = results[0].split()[0]
-          if pid.isdigit(): return int(pid)
+          
+          if pid.isdigit():
+            return int(pid)
   
   # resolves using lsof which works on both Linux and BSD, only failing if:
   # - lsof is unavailable (not included by default on OpenBSD)
@@ -270,7 +281,9 @@ def get_pid_by_name(process_name):
     
     if results and len(results) == 1:
       pid = results[0].strip()
-      if pid.isdigit(): return int(pid)
+      
+      if pid.isdigit():
+        return int(pid)
   
   log.debug("failed to resolve a pid for '%s'" % process_name)
   return None
@@ -324,7 +337,9 @@ def get_pid_by_port(port):
       if len(results) == 1 and len(results[0].split()) == 7:
         results = results[0].split()[6]  # process field (ex. "7184/tor")
         pid = results[:results.find("/")]
-        if pid.isdigit(): return int(pid)
+        
+        if pid.isdigit():
+          return int(pid)
   
   # attempts to resolve using sockstat, failing if:
   # - sockstat doesn't accept the -4 flag (BSD only)
@@ -358,7 +373,9 @@ def get_pid_by_port(port):
       
       if len(results) == 1:
         pid = results[0].split()[2]
-        if pid.isdigit(): return int(pid)
+        
+        if pid.isdigit():
+          return int(pid)
   
   # resolves using lsof which works on both Linux and BSD, only failing if:
   # - lsof is unavailable (not included by default on OpenBSD)
@@ -388,7 +405,9 @@ def get_pid_by_port(port):
       
       if len(results) == 1:
         pid = results[0].split()[1]
-        if pid.isdigit(): return int(pid)
+        
+        if pid.isdigit():
+          return int(pid)
   
   return None  # all queries failed
 
@@ -423,7 +442,9 @@ def get_pid_by_open_file(path):
     
     if results and len(results) == 1:
       pid = results[0].strip()
-      if pid.isdigit(): return int(pid)
+      
+      if pid.isdigit():
+        return int(pid)
   
   return None  # all queries failed
 
@@ -438,8 +459,10 @@ def get_cwd(pid):
   
   # try fetching via the proc contents if it's available
   if stem.util.proc.is_available():
-    try: return stem.util.proc.get_cwd(pid)
-    except IOError: pass
+    try:
+      return stem.util.proc.get_cwd(pid)
+    except IOError:
+      pass
   
   # Fall back to a pwdx query. This isn't available on BSD.
   logging_prefix = "get_cwd(%s):" % pid
@@ -485,7 +508,8 @@ def get_cwd(pid):
       # p2683
       # n/proc/2683/cwd (readlink: Permission denied)
       
-      if not " " in lsof_result: return lsof_result
+      if not " " in lsof_result:
+        return lsof_result
     else:
       log.debug("%s we got unexpected output from lsof: %s" % (logging_prefix, results))
   
@@ -513,7 +537,9 @@ def get_bsd_jail_id(pid):
   
   if ps_output and len(ps_output) == 2 and len(ps_output[1].split()) == 1:
     jid = ps_output[1].strip()
-    if jid.isdigit(): return int(jid)
+    
+    if jid.isdigit():
+      return int(jid)
   
   os_name = platform.system()
   if os_name == "FreeBSD":
@@ -549,7 +575,9 @@ def expand_path(path, cwd = None):
     relative_path = os.path.expanduser(relative_path)
   else:
     # relative path, expand with the cwd
-    if not cwd: cwd = os.getcwd()
+    
+    if not cwd:
+      cwd = os.getcwd()
     
     # we'll be dealing with both "my/path/" and "./my/path" entries, so
     # cropping the later
@@ -597,10 +625,14 @@ def call(command, default = UNDEFINED):
     elif stderr:
       log.trace(trace_prefix + ", stderr:\n%s" % stderr)
     
-    if stdout: return stdout.splitlines()
-    else: return []
+    if stdout:
+      return stdout.splitlines()
+    else:
+      return []
   except OSError, exc:
     log.debug("System call (failed): %s (error: %s)" % (command, exc))
     
-    if default != UNDEFINED: return default
-    else: raise exc
+    if default != UNDEFINED:
+      return default
+    else:
+      raise exc
diff --git a/stem/util/term.py b/stem/util/term.py
index 05b51e3..d77fccf 100644
--- a/stem/util/term.py
+++ b/stem/util/term.py
@@ -84,8 +84,11 @@ def format(msg, *attr):
     encoding = FG_ENCODING.get(text_attr, encoding)
     encoding = BG_ENCODING.get(text_attr, encoding)
     encoding = ATTR_ENCODING.get(text_attr, encoding)
-    if encoding: encodings.append(encoding)
+    
+    if encoding:
+      encodings.append(encoding)
   
   if encodings:
     return (CSI % ";".join(encodings)) + msg + RESET
-  else: return msg
+  else:
+    return msg
diff --git a/stem/util/tor_tools.py b/stem/util/tor_tools.py
index d7a785a..3f15eb2 100644
--- a/stem/util/tor_tools.py
+++ b/stem/util/tor_tools.py
@@ -47,7 +47,9 @@ def is_valid_fingerprint(entry, check_prefix = False):
   if not isinstance(entry, str):
     return False
   elif check_prefix:
-    if not entry or entry[0] != "$": return False
+    if not entry or entry[0] != "$":
+      return False
+    
     entry = entry[1:]
   
   return bool(FINGERPRINT_PATTERN.match(entry))
diff --git a/stem/version.py b/stem/version.py
index bf8c32c..76b8a88 100644
--- a/stem/version.py
+++ b/stem/version.py
@@ -125,9 +125,14 @@ class Version(object):
       # The patch and status matches are optional (may be None) and have an extra
       # proceeding period or dash if they exist. Stripping those off.
       
-      if patch: patch = int(patch[1:])
-      if status: status = status[1:]
-      if extra: extra = extra[2:-1]
+      if patch:
+        patch = int(patch[1:])
+      
+      if status:
+        status = status[1:]
+      
+      if extra:
+        extra = extra[2:-1]
       
       self.major = int(major)
       self.minor = int(minor)
@@ -140,7 +145,8 @@ class Version(object):
         self.git_commit = extra[4:]
       else:
         self.git_commit = None
-    else: raise ValueError("'%s' isn't a properly formatted tor version" % version_str)
+    else:
+      raise ValueError("'%s' isn't a properly formatted tor version" % version_str)
   
   def meets_requirements(self, requirements):
     """
@@ -155,7 +161,8 @@ class Version(object):
       return self >= requirements
     else:
       for rule in requirements.rules:
-        if rule(self): return True
+        if rule(self):
+          return True
       
       return False
   
@@ -178,8 +185,10 @@ class Version(object):
       my_version = max(0, self.__dict__[attr])
       other_version = max(0, other.__dict__[attr])
       
-      if my_version > other_version: return 1
-      elif my_version < other_version: return -1
+      if my_version > other_version:
+        return 1
+      elif my_version < other_version:
+        return -1
     
     # According to the version spec...
     #
@@ -189,9 +198,12 @@ class Version(object):
     my_status = self.status if self.status else ""
     other_status = other.status if other.status else ""
     
-    if my_status > other_status: return 1
-    elif my_status < other_status: return -1
-    else: return 0
+    if my_status > other_status:
+      return 1
+    elif my_status < other_status:
+      return -1
+    else:
+      return 0
 
 class VersionRequirements(object):
   """
diff --git a/test/check_whitespace.py b/test/check_whitespace.py
index d65c5b5..6bbbea4 100644
--- a/test/check_whitespace.py
+++ b/test/check_whitespace.py
@@ -62,7 +62,7 @@ def pep8_issues(base_path = DEFAULT_TARGET):
   #
   #   Someone else can change this if they really care.
   
-  ignored_issues = "E111,E121,W293,E501,E302,E701,E251,E127"
+  ignored_issues = "E111,E121,W293,E501,E302,E251,E127"
   
   issues = {}
   pep8_output = system.call("pep8 --ignore %s %s" % (ignored_issues, base_path))
@@ -92,7 +92,9 @@ def get_issues(base_path = DEFAULT_TARGET):
   issues = {}
   
   for file_path in _get_files_with_suffix(base_path):
-    with open(file_path) as f: file_contents = f.read()
+    with open(file_path) as f:
+      file_contents = f.read()
+    
     lines, file_issues, prev_indent = file_contents.split("\n"), [], 0
     has_with_import, given_with_warning = False, False
     is_block_comment = False
diff --git a/test/integ/connection/authentication.py b/test/integ/connection/authentication.py
index 5396d02..e707b49 100644
--- a/test/integ/connection/authentication.py
+++ b/test/integ/connection/authentication.py
@@ -47,10 +47,14 @@ def _can_authenticate(auth_type):
   if not password_auth and not cookie_auth:
     # open socket, anything but safecookie will work
     return auth_type != stem.connection.AuthMethod.SAFECOOKIE
-  elif auth_type == stem.connection.AuthMethod.PASSWORD: return password_auth
-  elif auth_type == stem.connection.AuthMethod.COOKIE: return cookie_auth
-  elif auth_type == stem.connection.AuthMethod.SAFECOOKIE: return safecookie_auth
-  else: return False
+  elif auth_type == stem.connection.AuthMethod.PASSWORD:
+    return password_auth
+  elif auth_type == stem.connection.AuthMethod.COOKIE:
+    return cookie_auth
+  elif auth_type == stem.connection.AuthMethod.SAFECOOKIE:
+    return safecookie_auth
+  else:
+    return False
 
 def _get_auth_failure_message(auth_type):
   """
@@ -105,7 +109,8 @@ class TestAuthenticate(unittest.TestCase):
     Tests that the authenticate function can authenticate to our socket.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     runner = test.runner.get_runner()
     with runner.get_tor_socket(False) as control_socket:
@@ -117,7 +122,8 @@ class TestAuthenticate(unittest.TestCase):
     Tests that the authenticate function can authenticate via a Controller.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     runner = test.runner.get_runner()
     with runner.get_tor_controller(False) as controller:
@@ -129,7 +135,8 @@ class TestAuthenticate(unittest.TestCase):
     Tests the authenticate function with something like its pydoc example.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     runner = test.runner.get_runner()
     tor_options = runner.get_options()
@@ -166,7 +173,8 @@ class TestAuthenticate(unittest.TestCase):
     Tests the authenticate function's password argument.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     # this is a much better test if we're just using password auth, since
     # authenticate will work reguardless if there's something else to
@@ -204,7 +212,8 @@ class TestAuthenticate(unittest.TestCase):
     individually.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     runner = test.runner.get_runner()
     tor_options = runner.get_options()
@@ -228,7 +237,8 @@ class TestAuthenticate(unittest.TestCase):
     Tests the authenticate_none function.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     auth_type = stem.connection.AuthMethod.NONE
     
@@ -242,7 +252,8 @@ class TestAuthenticate(unittest.TestCase):
     Tests the authenticate_password function.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     auth_type = stem.connection.AuthMethod.PASSWORD
     auth_value = test.runner.CONTROL_PASSWORD
@@ -271,7 +282,8 @@ class TestAuthenticate(unittest.TestCase):
     Tests the authenticate_cookie function.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     auth_value = test.runner.get_runner().get_auth_cookie_path()
     
@@ -295,7 +307,8 @@ class TestAuthenticate(unittest.TestCase):
     value.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     auth_value = test.runner.get_runner().get_test_dir("fake_cookie")
     
@@ -333,7 +346,8 @@ class TestAuthenticate(unittest.TestCase):
     shouldn't exist.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     for auth_type in self.cookie_auth_methods:
       auth_value = "/if/this/exists/then/they're/asking/for/a/failure"
@@ -346,7 +360,8 @@ class TestAuthenticate(unittest.TestCase):
     socket.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     auth_value = test.runner.get_runner().get_torrc_path(True)
     
diff --git a/test/integ/connection/connect.py b/test/integ/connection/connect.py
index fcf55a9..66b793d 100644
--- a/test/integ/connection/connect.py
+++ b/test/integ/connection/connect.py
@@ -23,7 +23,8 @@ class TestConnect(unittest.TestCase):
     Basic sanity checks for the connect_port function.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     runner = test.runner.get_runner()
     
@@ -44,7 +45,8 @@ class TestConnect(unittest.TestCase):
     Basic sanity checks for the connect_socket_file function.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     runner = test.runner.get_runner()
     
diff --git a/test/integ/control/base_controller.py b/test/integ/control/base_controller.py
index d43b009..25af63d 100644
--- a/test/integ/control/base_controller.py
+++ b/test/integ/control/base_controller.py
@@ -41,7 +41,8 @@ class TestBaseController(unittest.TestCase):
     trigger concurrency issues.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     elif stem.util.system.is_mac():
       test.runner.skip(self, "(ticket #6235)")
       return
@@ -58,7 +59,8 @@ class TestBaseController(unittest.TestCase):
     Tests a basic query with the msg() method.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     with test.runner.get_runner().get_tor_socket() as control_socket:
       controller = stem.control.BaseController(control_socket)
@@ -69,7 +71,8 @@ class TestBaseController(unittest.TestCase):
     Tests the msg() method against an invalid controller command.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     with test.runner.get_runner().get_tor_socket() as control_socket:
       controller = stem.control.BaseController(control_socket)
@@ -81,7 +84,8 @@ class TestBaseController(unittest.TestCase):
     Tests the msg() method against a non-existant GETINFO option.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     with test.runner.get_runner().get_tor_socket() as control_socket:
       controller = stem.control.BaseController(control_socket)
@@ -94,7 +98,8 @@ class TestBaseController(unittest.TestCase):
     is a simple attempt to trigger concurrency issues.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     elif stem.util.system.is_mac():
       test.runner.skip(self, "(ticket #6235)")
       return
@@ -133,7 +138,8 @@ class TestBaseController(unittest.TestCase):
     listeners will still receive all of the enqueued events.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     class ControlledListener(stem.control.BaseController):
       """
@@ -188,7 +194,8 @@ class TestBaseController(unittest.TestCase):
     Basic check for get_latest_heartbeat().
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     # makes a getinfo query, then checks that the heartbeat is close to now
     with test.runner.get_runner().get_tor_socket() as control_socket:
@@ -202,7 +209,8 @@ class TestBaseController(unittest.TestCase):
     remove_status_listener() methods.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     state_observer = StateObserver()
     
diff --git a/test/integ/control/controller.py b/test/integ/control/controller.py
index b769fbc..6d91f50 100644
--- a/test/integ/control/controller.py
+++ b/test/integ/control/controller.py
@@ -33,7 +33,8 @@ class TestController(unittest.TestCase):
     Basic sanity check for the from_port constructor.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     if test.runner.Torrc.PORT in test.runner.get_runner().get_options():
       with stem.control.Controller.from_port(control_port = test.runner.CONTROL_PORT) as controller:
@@ -46,7 +47,8 @@ class TestController(unittest.TestCase):
     Basic sanity check for the from_socket_file constructor.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     if test.runner.Torrc.SOCKET in test.runner.get_runner().get_options():
       with stem.control.Controller.from_socket_file(socket_path = test.runner.CONTROL_SOCKET_PATH) as controller:
@@ -60,7 +62,8 @@ class TestController(unittest.TestCase):
     them. Then remove the listeners.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     event_notice1, event_notice2 = threading.Event(), threading.Event()
     event_buffer1, event_buffer2 = [], []
@@ -74,6 +77,7 @@ class TestController(unittest.TestCase):
       event_notice2.set()
     
     runner = test.runner.get_runner()
+    
     with runner.get_tor_controller() as controller:
       controller.add_event_listener(listener1, EventType.BW)
       controller.add_event_listener(listener2, EventType.BW, EventType.DEBUG)
@@ -116,7 +120,8 @@ class TestController(unittest.TestCase):
     then reconnects to tor.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     event_notice = threading.Event()
     event_buffer = []
@@ -126,6 +131,7 @@ class TestController(unittest.TestCase):
       event_notice.set()
     
     runner = test.runner.get_runner()
+    
     with runner.get_tor_controller() as controller:
       controller.add_event_listener(listener, EventType.BW)
       
@@ -192,7 +198,8 @@ class TestController(unittest.TestCase):
     Exercises GETINFO with valid and invalid queries.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     runner = test.runner.get_runner()
     
@@ -231,9 +238,11 @@ class TestController(unittest.TestCase):
     Test that the convenient method get_version() works.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     runner = test.runner.get_runner()
+    
     with runner.get_tor_controller() as controller:
       version = controller.get_version()
       self.assertTrue(isinstance(version, stem.version.Version))
@@ -244,9 +253,11 @@ class TestController(unittest.TestCase):
     Test that the convenient method authenticate() works.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     runner = test.runner.get_runner()
+    
     with runner.get_tor_controller(False) as controller:
       controller.authenticate(test.runner.CONTROL_PASSWORD)
       test.runner.exercise_controller(self, controller)
@@ -256,7 +267,8 @@ class TestController(unittest.TestCase):
     Test that the convenient method protocolinfo() works.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     runner = test.runner.get_runner()
     
@@ -288,12 +300,14 @@ class TestController(unittest.TestCase):
     Exercises GETCONF with valid and invalid queries.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     runner = test.runner.get_runner()
     
     with runner.get_tor_controller() as controller:
       socket = controller.get_socket()
+      
       if isinstance(socket, stem.socket.ControlPort):
         connection_value = str(socket.get_port())
         config_key = "ControlPort"
@@ -352,7 +366,8 @@ class TestController(unittest.TestCase):
     and invalid requests.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     runner = test.runner.get_runner()
     tmpdir = tempfile.mkdtemp()
@@ -425,8 +440,10 @@ class TestController(unittest.TestCase):
     Exercises Controller.load_conf with valid and invalid requests.
     """
     
-    if test.runner.require_control(self): return
-    elif test.runner.require_version(self, stem.version.Requirement.LOADCONF): return
+    if test.runner.require_control(self):
+      return
+    elif test.runner.require_version(self, stem.version.Requirement.LOADCONF):
+      return
     
     runner = test.runner.get_runner()
     
@@ -436,6 +453,7 @@ class TestController(unittest.TestCase):
       try:
         # invalid requests
         self.assertRaises(stem.InvalidRequest, controller.load_conf, "ContactInfo confloaded")
+        
         try:
           controller.load_conf("Blahblah blah")
           self.fail()
@@ -443,6 +461,7 @@ class TestController(unittest.TestCase):
           self.assertEqual(["Blahblah"], exc.arguments)
         
         # valid config
+        
         controller.load_conf(runner.get_torrc_contents() + "\nContactInfo confloaded\n")
         self.assertEqual("confloaded", controller.get_conf("ContactInfo"))
       finally:
@@ -450,7 +469,8 @@ class TestController(unittest.TestCase):
         controller.load_conf(oldconf)
   
   def test_saveconf(self):
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     runner = test.runner.get_runner()
     
@@ -462,6 +482,7 @@ class TestController(unittest.TestCase):
       try:
         controller.set_conf("ContactInfo", "confsaved")
         controller.save_conf()
+        
         with file(runner.get_torrc_path()) as torrcfile:
           self.assertTrue("\nContactInfo confsaved\n" in torrcfile.read())
       finally:
@@ -472,7 +493,9 @@ class TestController(unittest.TestCase):
     """
     Test Controller.get_socks_ports against a running tor instance.
     """
-    if test.runner.require_control(self): return
+    
+    if test.runner.require_control(self):
+      return
     
     runner = test.runner.get_runner()
     
@@ -484,7 +507,8 @@ class TestController(unittest.TestCase):
     Test Controller.enable_feature with valid and invalid inputs.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     runner = test.runner.get_runner()
     
@@ -498,22 +522,26 @@ class TestController(unittest.TestCase):
       
       # the orconn-status results will be empty if we don't have a connection
       if orconn_output == '':
-        if test.runner.require_online(self): return
+        if test.runner.require_online(self):
+          return
       
       self.assertTrue("VERBOSE_NAMES" in controller._enabled_features)
       self.assertRaises(stem.InvalidArguments, controller.enable_feature, ["NOT", "A", "FEATURE"])
+      
       try:
         controller.enable_feature(["NOT", "A", "FEATURE"])
       except stem.InvalidArguments, exc:
         self.assertEqual(["NOT"], exc.arguments)
-      else: self.fail()
+      else:
+        self.fail()
   
   def test_signal(self):
     """
     Test controller.signal with valid and invalid signals.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     with test.runner.get_runner().get_tor_controller() as controller:
       # valid signal
@@ -523,9 +551,12 @@ class TestController(unittest.TestCase):
       self.assertRaises(stem.InvalidArguments, controller.signal, "FOOBAR")
   
   def test_extendcircuit(self):
-    if test.runner.require_control(self): return
-    elif test.runner.require_online(self): return
-    elif test.runner.require_version(self, Requirement.EXTENDCIRCUIT_PATH_OPTIONAL): return
+    if test.runner.require_control(self):
+      return
+    elif test.runner.require_online(self):
+      return
+    elif test.runner.require_version(self, Requirement.EXTENDCIRCUIT_PATH_OPTIONAL):
+      return
     
     with test.runner.get_runner().get_tor_controller() as controller:
       circuit_id = controller.extend_circuit('0')
@@ -544,9 +575,12 @@ class TestController(unittest.TestCase):
     Tests Controller.repurpose_circuit with valid and invalid input.
     """
     
-    if test.runner.require_control(self): return
-    elif test.runner.require_online(self): return
-    elif test.runner.require_version(self, Requirement.EXTENDCIRCUIT_PATH_OPTIONAL): return
+    if test.runner.require_control(self):
+      return
+    elif test.runner.require_online(self):
+      return
+    elif test.runner.require_version(self, Requirement.EXTENDCIRCUIT_PATH_OPTIONAL):
+      return
     
     runner = test.runner.get_runner()
     
@@ -568,9 +602,12 @@ class TestController(unittest.TestCase):
     Tests Controller.close_circuit with valid and invalid input.
     """
     
-    if test.runner.require_control(self): return
-    elif test.runner.require_online(self): return
-    elif test.runner.require_version(self, Requirement.EXTENDCIRCUIT_PATH_OPTIONAL): return
+    if test.runner.require_control(self):
+      return
+    elif test.runner.require_online(self):
+      return
+    elif test.runner.require_version(self, Requirement.EXTENDCIRCUIT_PATH_OPTIONAL):
+      return
     
     runner = test.runner.get_runner()
     
@@ -596,8 +633,10 @@ class TestController(unittest.TestCase):
     Tests Controller.get_streams().
     """
     
-    if test.runner.require_control(self): return
-    elif test.runner.require_online(self): return
+    if test.runner.require_control(self):
+      return
+    elif test.runner.require_online(self):
+      return
     
     host = "38.229.72.14"   # www.torproject.org
     port = 443
@@ -622,8 +661,10 @@ class TestController(unittest.TestCase):
     Tests Controller.close_stream with valid and invalid input.
     """
     
-    if test.runner.require_control(self): return
-    elif test.runner.require_online(self): return
+    if test.runner.require_control(self):
+      return
+    elif test.runner.require_online(self):
+      return
     
     runner = test.runner.get_runner()
     
@@ -647,8 +688,10 @@ class TestController(unittest.TestCase):
       self.assertRaises(stem.InvalidArguments, controller.close_stream, "blarg")
   
   def test_mapaddress(self):
-    if test.runner.require_control(self): return
-    elif test.runner.require_online(self): return
+    if test.runner.require_control(self):
+      return
+    elif test.runner.require_online(self):
+      return
     
     runner = test.runner.get_runner()
     
@@ -675,7 +718,8 @@ class TestController(unittest.TestCase):
     runner = test.runner.get_runner()
     descriptor_path = runner.get_test_dir("cached-descriptors")
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     elif not os.path.exists(descriptor_path):
       test.runner.skip(self, "(no cached descriptors)")
       return
@@ -711,7 +755,8 @@ class TestController(unittest.TestCase):
     
     runner = test.runner.get_runner()
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     with runner.get_tor_controller() as controller:
       count = 0
@@ -725,7 +770,8 @@ class TestController(unittest.TestCase):
         # while to do so).
         
         count += 1
-        if count > 10: break
+        if count > 10:
+          break
   
   def test_get_network_status(self):
     """
@@ -735,7 +781,8 @@ class TestController(unittest.TestCase):
     runner = test.runner.get_runner()
     descriptor_path = runner.get_test_dir("cached-consensus")
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     elif not os.path.exists(descriptor_path):
       test.runner.skip(self, "(no cached descriptors)")
       return
@@ -777,7 +824,8 @@ class TestController(unittest.TestCase):
     
     runner = test.runner.get_runner()
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     with runner.get_tor_controller() as controller:
       count = 0
@@ -787,12 +835,16 @@ class TestController(unittest.TestCase):
         self.assertTrue(desc.nickname is not None)
         
         count += 1
-        if count > 10: break
+        if count > 10:
+          break
   
   def test_attachstream(self):
-    if test.runner.require_control(self): return
-    elif test.runner.require_online(self): return
-    elif test.runner.require_version(self, Requirement.EXTENDCIRCUIT_PATH_OPTIONAL): return
+    if test.runner.require_control(self):
+      return
+    elif test.runner.require_online(self):
+      return
+    elif test.runner.require_version(self, Requirement.EXTENDCIRCUIT_PATH_OPTIONAL):
+      return
     
     circuit_id = None
     
@@ -823,9 +875,12 @@ class TestController(unittest.TestCase):
     Fetches circuits via the get_circuits() method.
     """
     
-    if test.runner.require_control(self): return
-    elif test.runner.require_online(self): return
-    elif test.runner.require_version(self, Requirement.EXTENDCIRCUIT_PATH_OPTIONAL): return
+    if test.runner.require_control(self):
+      return
+    elif test.runner.require_online(self):
+      return
+    elif test.runner.require_version(self, Requirement.EXTENDCIRCUIT_PATH_OPTIONAL):
+      return
     
     runner = test.runner.get_runner()
     with runner.get_tor_controller() as controller:
diff --git a/test/integ/descriptor/extrainfo_descriptor.py b/test/integ/descriptor/extrainfo_descriptor.py
index a2bf144..1293b3c 100644
--- a/test/integ/descriptor/extrainfo_descriptor.py
+++ b/test/integ/descriptor/extrainfo_descriptor.py
@@ -139,7 +139,9 @@ k0d2aofcVbHr4fPQOSST0LXDrhFl5Fqo5um296zpJGvRUeO6S44U/EfJAGShtqWw
     """
     
     # lengthy test and uneffected by targets, so only run once
-    if test.runner.only_run_once(self, "test_cached_descriptor"): return
+    
+    if test.runner.only_run_once(self, "test_cached_descriptor"):
+      return
     
     descriptor_path = test.runner.get_runner().get_test_dir("cached-extrainfo")
     
diff --git a/test/integ/descriptor/networkstatus.py b/test/integ/descriptor/networkstatus.py
index ad2933e..862c166 100644
--- a/test/integ/descriptor/networkstatus.py
+++ b/test/integ/descriptor/networkstatus.py
@@ -21,7 +21,9 @@ class TestNetworkStatus(unittest.TestCase):
     """
     
     # lengthy test and uneffected by targets, so only run once
-    if test.runner.only_run_once(self, "test_cached_consensus"): return
+    
+    if test.runner.only_run_once(self, "test_cached_consensus"):
+      return
     
     consensus_path = test.runner.get_runner().get_test_dir("cached-consensus")
     
@@ -67,7 +69,9 @@ class TestNetworkStatus(unittest.TestCase):
     """
     
     # lengthy test and uneffected by targets, so only run once
-    if test.runner.only_run_once(self, "test_cached_microdesc_consensus"): return
+    
+    if test.runner.only_run_once(self, "test_cached_microdesc_consensus"):
+      return
     
     consensus_path = test.runner.get_runner().get_test_dir("cached-microdesc-consensus")
     
diff --git a/test/integ/descriptor/reader.py b/test/integ/descriptor/reader.py
index 637583e..ba807f0 100644
--- a/test/integ/descriptor/reader.py
+++ b/test/integ/descriptor/reader.py
@@ -64,7 +64,8 @@ def _get_raw_tar_descriptors():
           raw_descriptors.append(entry.read())
           entry.close()
     finally:
-      if tar_file: tar_file.close()
+      if tar_file:
+        tar_file.close()
     
     TAR_DESCRIPTORS = raw_descriptors
   
@@ -240,7 +241,9 @@ class TestDescriptorReader(unittest.TestCase):
     # the saving functionality.
     
     reader = stem.descriptor.reader.DescriptorReader(descriptor_path, persistence_path = persistence_path)
-    with reader: self.assertEqual(1, len(list(reader)))
+    
+    with reader:
+      self.assertEqual(1, len(list(reader)))
     
     # check that we've saved reading example_descriptor
     self.assertTrue(os.path.exists(persistence_path))
@@ -254,7 +257,9 @@ class TestDescriptorReader(unittest.TestCase):
     # descriptor file. This in essence just tests its loading functionality.
     
     reader = stem.descriptor.reader.DescriptorReader(descriptor_path, persistence_path = persistence_path)
-    with reader: self.assertEqual(0, len(list(reader)))
+    
+    with reader:
+      self.assertEqual(0, len(list(reader)))
   
   def test_archived_uncompressed(self):
     """
@@ -299,7 +304,9 @@ class TestDescriptorReader(unittest.TestCase):
     """
     
     # Skip on windows since SIGALRM is unavailable
-    if system.is_windows(): test.runner.skip(self, "(SIGALRM unavailable)")
+    
+    if system.is_windows():
+      test.runner.skip(self, "(SIGALRM unavailable)")
     
     is_test_running = True
     reader = stem.descriptor.reader.DescriptorReader("/usr")
@@ -335,7 +342,9 @@ class TestDescriptorReader(unittest.TestCase):
         expected_results[path] = last_modified
     
     reader = stem.descriptor.reader.DescriptorReader(DESCRIPTOR_TEST_DATA)
-    with reader: list(reader)  # iterates over all of the descriptors
+    
+    with reader:
+      list(reader)  # iterates over all of the descriptors
     
     self.assertEquals(expected_results, reader.get_processed_files())
   
@@ -349,12 +358,14 @@ class TestDescriptorReader(unittest.TestCase):
     reader = stem.descriptor.reader.DescriptorReader(DESCRIPTOR_TEST_DATA)
     reader.register_skip_listener(skip_listener.listener)
     
-    with reader: list(reader)  # iterates over all of the descriptors
+    with reader:
+      list(reader)  # iterates over all of the descriptors
     
     self.assertEqual(4, len(skip_listener.results))
     
     for skip_path, skip_exception in skip_listener.results:
-      if skip_path.endswith(".swp"): continue  # skip vim temp files
+      if skip_path.endswith(".swp"):
+        continue  # skip vim temp files
       
       if not os.path.basename(skip_path) in ("riddle", "tiny.png", "vote", "new_metrics_type"):
         self.fail("Unexpected non-descriptor content: %s" % skip_path)
@@ -378,7 +389,9 @@ class TestDescriptorReader(unittest.TestCase):
     reader.set_processed_files(initial_processed_files)
     
     self.assertEquals(initial_processed_files, reader.get_processed_files())
-    with reader: list(reader)  # iterates over all of the descriptors
+    
+    with reader:
+      list(reader)  # iterates over all of the descriptors
     
     self.assertEquals(1, len(skip_listener.results))
     
@@ -405,7 +418,9 @@ class TestDescriptorReader(unittest.TestCase):
       skip_listener = SkipListener()
       reader = stem.descriptor.reader.DescriptorReader(test_path)
       reader.register_skip_listener(skip_listener.listener)
-      with reader: list(reader)  # iterates over all of the descriptors
+      
+      with reader:
+        list(reader)  # iterates over all of the descriptors
       
       self.assertEqual(1, len(skip_listener.results))
       
@@ -437,7 +452,9 @@ class TestDescriptorReader(unittest.TestCase):
       skip_listener = SkipListener()
       reader = stem.descriptor.reader.DescriptorReader(test_path)
       reader.register_skip_listener(skip_listener.listener)
-      with reader: list(reader)  # iterates over all of the descriptors
+      
+      with reader:
+        list(reader)  # iterates over all of the descriptors
       
       self.assertEqual(1, len(skip_listener.results))
       
@@ -459,7 +476,9 @@ class TestDescriptorReader(unittest.TestCase):
     skip_listener = SkipListener()
     reader = stem.descriptor.reader.DescriptorReader(test_path)
     reader.register_skip_listener(skip_listener.listener)
-    with reader: list(reader)  # iterates over all of the descriptors
+    
+    with reader:
+      list(reader)  # iterates over all of the descriptors
     
     self.assertEqual(1, len(skip_listener.results))
     
@@ -477,7 +496,9 @@ class TestDescriptorReader(unittest.TestCase):
     skip_listener = SkipListener()
     reader = stem.descriptor.reader.DescriptorReader(test_path)
     reader.register_skip_listener(skip_listener.listener)
-    with reader: list(reader)  # iterates over all of the descriptors
+    
+    with reader:
+      list(reader)  # iterates over all of the descriptors
     
     self.assertEqual(1, len(skip_listener.results))
     
diff --git a/test/integ/descriptor/server_descriptor.py b/test/integ/descriptor/server_descriptor.py
index a2ee34a..b6b8e62 100644
--- a/test/integ/descriptor/server_descriptor.py
+++ b/test/integ/descriptor/server_descriptor.py
@@ -147,7 +147,9 @@ Qlx9HNCqCY877ztFRC624ja2ql6A2hBcuoYMbkHjcQ4=
     """
     
     # lengthy test and uneffected by targets, so only run once
-    if test.runner.only_run_once(self, "test_cached_descriptor"): return
+    
+    if test.runner.only_run_once(self, "test_cached_descriptor"):
+      return
     
     descriptor_path = test.runner.get_runner().get_test_dir("cached-descriptors")
     
diff --git a/test/integ/process.py b/test/integ/process.py
index ea8909a..6629575 100644
--- a/test/integ/process.py
+++ b/test/integ/process.py
@@ -45,7 +45,8 @@ class TestProcess(unittest.TestCase):
       test.runner.skip(self, "(unable to kill subprocesses)")
       return
     
-    if test.runner.only_run_once(self, "test_launch_tor_with_config"): return
+    if test.runner.only_run_once(self, "test_launch_tor_with_config"):
+      return
     
     # Launch tor without a torrc, but with a control port. Confirms that this
     # works by checking that we're still able to access the new instance.
@@ -71,7 +72,9 @@ class TestProcess(unittest.TestCase):
       getconf_response = control_socket.recv()
       self.assertEquals("ControlPort=2778", str(getconf_response))
     finally:
-      if control_socket: control_socket.close()
+      if control_socket:
+        control_socket.close()
+      
       _kill_process(tor_process)
   
   def test_launch_tor_with_timeout(self):
@@ -83,7 +86,8 @@ class TestProcess(unittest.TestCase):
       test.runner.skip(self, "(unable to kill subprocesses)")
       return
     
-    if test.runner.only_run_once(self, "test_launch_tor_with_timeout"): return
+    if test.runner.only_run_once(self, "test_launch_tor_with_timeout"):
+      return
     
     runner = test.runner.get_runner()
     start_time = time.time()
@@ -106,8 +110,10 @@ class TestProcess(unittest.TestCase):
     elif not stem.util.system.is_available("sleep"):
       test.runner.skip(self, "('sleep' command is unavailable)")
       return
-    elif test.runner.only_run_once(self, "test_take_ownership_via_pid"): return
-    elif test.runner.require_version(self, stem.version.Requirement.TAKEOWNERSHIP): return
+    elif test.runner.only_run_once(self, "test_take_ownership_via_pid"):
+      return
+    elif test.runner.require_version(self, stem.version.Requirement.TAKEOWNERSHIP):
+      return
     
     # Have os.getpid provide the pid of a process we can safely kill. I hate
     # needing to a _get_pid() helper but after much head scratching I haven't
@@ -148,8 +154,10 @@ class TestProcess(unittest.TestCase):
     connects, then disconnects..
     """
     
-    if test.runner.only_run_once(self, "test_take_ownership_via_controller"): return
-    elif test.runner.require_version(self, stem.version.Requirement.TAKEOWNERSHIP): return
+    if test.runner.only_run_once(self, "test_take_ownership_via_controller"):
+      return
+    elif test.runner.require_version(self, stem.version.Requirement.TAKEOWNERSHIP):
+      return
     
     tor_process = stem.process.launch_tor_with_config(
       tor_cmd = test.runner.get_runner().get_tor_command(),
diff --git a/test/integ/response/protocolinfo.py b/test/integ/response/protocolinfo.py
index 2affe17..623ce48 100644
--- a/test/integ/response/protocolinfo.py
+++ b/test/integ/response/protocolinfo.py
@@ -30,7 +30,8 @@ class TestProtocolInfo(unittest.TestCase):
     connection.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     control_socket = test.runner.get_runner().get_tor_socket(False)
     control_socket.send("PROTOCOLINFO 1")
@@ -58,7 +59,8 @@ class TestProtocolInfo(unittest.TestCase):
     with the 'RELATIVE' target.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     if test.runner.Torrc.PORT in test.runner.get_runner().get_options():
       cwd_by_port_lookup_prefixes = (
@@ -93,7 +95,8 @@ class TestProtocolInfo(unittest.TestCase):
     re-establish it.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     with test.runner.get_runner().get_tor_socket(False) as control_socket:
       for _ in range(5):
@@ -106,7 +109,8 @@ class TestProtocolInfo(unittest.TestCase):
     already disconnected it.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     with test.runner.get_runner().get_tor_socket(False) as control_socket:
       # makes a couple protocolinfo queries outside of get_protocolinfo first
diff --git a/test/integ/socket/control_message.py b/test/integ/socket/control_message.py
index 2a358cb..5c78f1a 100644
--- a/test/integ/socket/control_message.py
+++ b/test/integ/socket/control_message.py
@@ -17,7 +17,8 @@ class TestControlMessage(unittest.TestCase):
     Checks message parsing when we have a valid but unauthenticated socket.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     # If an unauthenticated connection gets a message besides AUTHENTICATE or
     # PROTOCOLINFO then tor will give an 'Authentication required.' message and
@@ -59,7 +60,8 @@ class TestControlMessage(unittest.TestCase):
     Parses the response for a command which doesn't exist.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     with test.runner.get_runner().get_tor_socket() as control_socket:
       control_socket.send("blarg")
@@ -74,7 +76,8 @@ class TestControlMessage(unittest.TestCase):
     Parses the response for a GETINFO query which doesn't exist.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     with test.runner.get_runner().get_tor_socket() as control_socket:
       control_socket.send("GETINFO blarg")
@@ -89,7 +92,8 @@ class TestControlMessage(unittest.TestCase):
     Parses the 'GETINFO config-file' response.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     runner = test.runner.get_runner()
     torrc_dst = runner.get_torrc_path()
@@ -152,7 +156,8 @@ class TestControlMessage(unittest.TestCase):
     Issues 'SETEVENTS BW' and parses a couple events.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     with test.runner.get_runner().get_tor_socket() as control_socket:
       control_socket.send("SETEVENTS BW")
diff --git a/test/integ/socket/control_socket.py b/test/integ/socket/control_socket.py
index 2f2a4e7..13daaf4 100644
--- a/test/integ/socket/control_socket.py
+++ b/test/integ/socket/control_socket.py
@@ -23,7 +23,8 @@ class TestControlSocket(unittest.TestCase):
     Sends multiple requests before receiving back any of the replies.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     runner = test.runner.get_runner()
     tor_version = runner.get_tor_version()
@@ -42,7 +43,8 @@ class TestControlSocket(unittest.TestCase):
     Sends a message after we've closed the connection.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     with test.runner.get_runner().get_tor_socket() as control_socket:
       self.assertTrue(control_socket.is_alive())
@@ -61,7 +63,8 @@ class TestControlSocket(unittest.TestCase):
     call. With a file socket, however, we'll also fail when calling send().
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     with test.runner.get_runner().get_tor_socket() as control_socket:
       control_socket.send("QUIT")
@@ -83,7 +86,8 @@ class TestControlSocket(unittest.TestCase):
     Receives a message after we've closed the connection.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     with test.runner.get_runner().get_tor_socket() as control_socket:
       self.assertTrue(control_socket.is_alive())
@@ -98,7 +102,8 @@ class TestControlSocket(unittest.TestCase):
     end.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     with test.runner.get_runner().get_tor_socket() as control_socket:
       control_socket.send("QUIT")
@@ -117,7 +122,8 @@ class TestControlSocket(unittest.TestCase):
     Checks that we can reconnect, use, and disconnect a socket repeatedly.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     with test.runner.get_runner().get_tor_socket(False) as control_socket:
       for _ in range(10):
diff --git a/test/integ/version.py b/test/integ/version.py
index 9195126..9542c63 100644
--- a/test/integ/version.py
+++ b/test/integ/version.py
@@ -37,7 +37,8 @@ class TestVersion(unittest.TestCase):
     test instance provides.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     runner = test.runner.get_runner()
     system_tor_version = stem.version.get_system_tor_version(runner.get_tor_command())
@@ -49,7 +50,8 @@ class TestVersion(unittest.TestCase):
     we can parse it.
     """
     
-    if test.runner.require_control(self): return
+    if test.runner.require_control(self):
+      return
     
     control_socket = test.runner.get_runner().get_tor_socket()
     control_socket.send("GETINFO version")
diff --git a/test/mocking.py b/test/mocking.py
index ff314ee..1ebe88d 100644
--- a/test/mocking.py
+++ b/test/mocking.py
@@ -193,16 +193,25 @@ NETWORK_STATUS_DOCUMENT_FOOTER = (
 )
 
 def no_op():
-  def _no_op(*args): pass
+  def _no_op(*args):
+    pass
+  
   return _no_op
 
 def return_value(value):
-  def _return_value(*args): return value
+  def _return_value(*args):
+    return value
+  
   return _return_value
 
-def return_true(): return return_value(True)
-def return_false(): return return_value(False)
-def return_none(): return return_value(None)
+def return_true():
+  return return_value(True)
+
+def return_false():
+  return return_value(False)
+
+def return_none():
+  return return_value(None)
 
 def return_for_args(args_to_return_value, default = None, is_method = False):
   """
@@ -266,7 +275,9 @@ def return_for_args(args_to_return_value, default = None, is_method = False):
   return _return_value
 
 def raise_exception(exception):
-  def _raise(*args): raise exception
+  def _raise(*args):
+    raise exception
+  
   return _raise
 
 def support_with(obj):
@@ -425,7 +436,8 @@ def get_all_combinations(attr, include_empty = False):
   # * itertools.product(attr, attr) => all two-element combinations
   # * ... etc
   
-  if include_empty: yield ()
+  if include_empty:
+    yield ()
   
   seen = set()
   for index in xrange(1, len(attr) + 1):
@@ -485,7 +497,9 @@ def get_message(content, reformat = True):
   """
   
   if reformat:
-    if not content.endswith("\n"): content += "\n"
+    if not content.endswith("\n"):
+      content += "\n"
+    
     content = content.replace("\n", "\r\n")
   
   return stem.socket.recv_message(StringIO.StringIO(content))
@@ -547,18 +561,23 @@ def _get_descriptor_content(attr = None, exclude = (), header_template = (), foo
   """
   
   header_content, footer_content = [], []
-  if attr is None: attr = {}
+  
+  if attr is None:
+    attr = {}
+  
   attr = dict(attr)  # shallow copy since we're destructive
   
   for content, template in ((header_content, header_template),
                            (footer_content, footer_template)):
     for keyword, value in template:
-      if keyword in exclude: continue
+      if keyword in exclude:
+        continue
       elif keyword in attr:
         value = attr[keyword]
         del attr[keyword]
       
-      if value is None: continue
+      if value is None:
+        continue
       elif value == "":
         content.append(keyword)
       elif keyword == "onion-key" or keyword == "signing-key" or keyword == "router-signature":
@@ -569,8 +588,10 @@ def _get_descriptor_content(attr = None, exclude = (), header_template = (), foo
   remainder = []
   
   for k, v in attr.items():
-    if v: remainder.append("%s %s" % (k, v))
-    else: remainder.append(k)
+    if v:
+      remainder.append("%s %s" % (k, v))
+    else:
+      remainder.append(k)
   
   return "\n".join(header_content + remainder + footer_content)
 
diff --git a/test/output.py b/test/output.py
index d79db70..cadf071 100644
--- a/test/output.py
+++ b/test/output.py
@@ -37,12 +37,16 @@ LINE_ATTR = {
 }
 
 def print_line(msg, *attr):
-  if CONFIG["argument.no_color"]: print msg
-  else: print term.format(msg, *attr)
+  if CONFIG["argument.no_color"]:
+    print msg
+  else:
+    print term.format(msg, *attr)
 
 def print_noline(msg, *attr):
-  if CONFIG["argument.no_color"]: sys.stdout.write(msg)
-  else: sys.stdout.write(term.format(msg, *attr))
+  if CONFIG["argument.no_color"]:
+    sys.stdout.write(msg)
+  else:
+    sys.stdout.write(term.format(msg, *attr))
 
 def print_divider(msg, is_header = False):
   attr = HEADER_ATTR if is_header else CATEGORY_ATTR
@@ -98,7 +102,9 @@ def apply_filters(testing_output, *filters):
     
     for result_filter in filters:
       line = result_filter(line_type, line)
-      if line is None: break
+      
+      if line is None:
+        break
     
     if line is not None:
       results.append(line)
@@ -110,8 +116,10 @@ def colorize(line_type, line_content):
   Applies escape sequences so each line is colored according to its type.
   """
   
-  if CONFIG["argument.no_color"]: return line_content
-  else: return term.format(line_content, *LINE_ATTR[line_type])
+  if CONFIG["argument.no_color"]:
+    return line_content
+  else:
+    return term.format(line_content, *LINE_ATTR[line_type])
 
 def strip_module(line_type, line_content):
   """
@@ -120,7 +128,10 @@ def strip_module(line_type, line_content):
   """
   
   m = re.match(".*( \(.*?\)).*", line_content)
-  if m: line_content = line_content.replace(m.groups()[0], "", 1)
+  
+  if m:
+    line_content = line_content.replace(m.groups()[0], "", 1)
+  
   return line_content
 
 def align_results(line_type, line_content):
@@ -129,7 +140,8 @@ def align_results(line_type, line_content):
   a bold attribute.
   """
   
-  if line_type == LineType.CONTENT: return line_content
+  if line_type == LineType.CONTENT:
+    return line_content
   
   # strip our current ending
   for ending in LINE_ENDINGS:
diff --git a/test/prompt.py b/test/prompt.py
index 32e75ab..afbd743 100644
--- a/test/prompt.py
+++ b/test/prompt.py
@@ -63,7 +63,9 @@ def stop(prompt = False):
   if tor_pid:
     if prompt:
       response = raw_input("\n" + STOP_CONFIRMATION)
-      if not response.lower() in ("y", "yes"): return
+      
+      if not response.lower() in ("y", "yes"):
+        return
     
     os.kill(tor_pid, signal.SIGTERM)
 
@@ -84,7 +86,9 @@ def controller():
   already running.
   """
   
-  if not is_running(): start()
+  if not is_running():
+    start()
+  
   controller = stem.control.Controller.from_port(control_port = CONTROL_PORT)
   controller.authenticate()
   return controller
diff --git a/test/runner.py b/test/runner.py
index af5ed73..dbfed24 100644
--- a/test/runner.py
+++ b/test/runner.py
@@ -207,7 +207,10 @@ def get_runner():
   """
   
   global INTEG_RUNNER
-  if not INTEG_RUNNER: INTEG_RUNNER = Runner()
+  
+  if not INTEG_RUNNER:
+    INTEG_RUNNER = Runner()
+  
   return INTEG_RUNNER
 
 class _MockChrootFile(object):
@@ -255,7 +258,9 @@ class Runner(object):
     with self._runner_lock:
       # if we're holding on to a tor process (running or not) then clean up after
       # it so we can start a fresh instance
-      if self._tor_process: self.stop()
+      
+      if self._tor_process:
+        self.stop()
       
       test.output.print_line("Setting up a test instance...", *STATUS_ATTR)
       
@@ -273,7 +278,9 @@ class Runner(object):
       
       if CONFIG["integ.target.relative_data_dir"]:
         tor_cwd = os.path.dirname(self._test_dir)
-        if not os.path.exists(tor_cwd): os.makedirs(tor_cwd)
+        
+        if not os.path.exists(tor_cwd):
+          os.makedirs(tor_cwd)
         
         os.chdir(tor_cwd)
         data_dir_path = "./%s" % os.path.basename(self._test_dir)
@@ -330,7 +337,8 @@ class Runner(object):
             os.kill(self._tor_process.pid, signal.SIGTERM)
           else:
             test.output.print_line("failed (unable to call kill() in python 2.5)", *ERROR_ATTR)
-        except OSError: pass
+        except OSError:
+          pass
         
         self._tor_process.communicate()  # blocks until the process is done
       
@@ -508,7 +516,8 @@ class Runner(object):
       control_socket = stem.socket.ControlPort(control_port = CONTROL_PORT)
     elif Torrc.SOCKET in self._custom_opts:
       control_socket = stem.socket.ControlSocketFile(CONTROL_SOCKET_PATH)
-    else: raise TorInaccessable("Unable to connect to tor")
+    else:
+      raise TorInaccessable("Unable to connect to tor")
     
     if authenticate:
       stem.connection.authenticate(control_socket, CONTROL_PASSWORD, self.get_chroot())
@@ -547,7 +556,9 @@ class Runner(object):
       
       tor_version = list(version_response)[0]
       tor_version = tor_version[8:]
-      if " " in tor_version: tor_version = tor_version.split(' ', 1)[0]
+      
+      if " " in tor_version:
+        tor_version = tor_version.split(' ', 1)[0]
       
       return stem.version.Version(tor_version)
     except TorInaccessable:
@@ -575,7 +586,8 @@ class Runner(object):
     with self._runner_lock:
       if self.is_running():
         return self.__dict__[attr]
-      else: raise RunnerStopped()
+      else:
+        raise RunnerStopped()
   
   def _run_setup(self):
     """
diff --git a/test/unit/descriptor/router_status_entry.py b/test/unit/descriptor/router_status_entry.py
index 5d74678..9565702 100644
--- a/test/unit/descriptor/router_status_entry.py
+++ b/test/unit/descriptor/router_status_entry.py
@@ -208,7 +208,8 @@ class TestRouterStatusEntry(unittest.TestCase):
       # is that our validation doesn't catch the new SP restriction on V3
       # entries.
       
-      if value == "": value = None
+      if value == "":
+        value = None
       
       self._expect_invalid_attr(content, "nickname", value)
   
diff --git a/test/unit/exit_policy/policy.py b/test/unit/exit_policy/policy.py
index 12cc52a..dce4cb7 100644
--- a/test/unit/exit_policy/policy.py
+++ b/test/unit/exit_policy/policy.py
@@ -152,7 +152,8 @@ class TestExitPolicy(unittest.TestCase):
         else:
           self.fail()
       except ValueError:
-        if expect_success: self.fail()
+        if expect_success:
+          self.fail()
   
   def test_microdescriptor_attributes(self):
     # checks that its is_accept attribute is properly set
diff --git a/test/unit/util/system.py b/test/unit/util/system.py
index a3c5e5a..e780375 100644
--- a/test/unit/util/system.py
+++ b/test/unit/util/system.py
@@ -82,8 +82,10 @@ def mock_call(base_cmd, responses):
   
   def _mock_call(base_cmd, responses, command):
     if isinstance(responses, list):
-      if base_cmd == command: return responses
-      else: return None
+      if base_cmd == command:
+        return responses
+      else:
+        return None
     else:
       for cmd_completion in responses:
         if command == base_cmd % cmd_completion:





More information about the tor-commits mailing list