[tor-commits] [stem/master] system.call() support for a default
atagar at torproject.org
atagar at torproject.org
Thu Jan 3 16:47:15 UTC 2013
commit 76205611acb95231226bf42c4c6b20388ef3cfe7
Author: Damian Johnson <atagar at torproject.org>
Date: Thu Jan 3 08:35:09 2013 -0800
system.call() support for a default
The 'suppress_exc' argument is a relic from long ago when I frequently made
suppression the default in arm. Stem does things better, following "Errors
should never pass silently. Unless explicitly silenced."
A default argument lets us do the same thing as a 'suppress_exc' boolean, but
with more control. It's also more uniform with our controller.
---
stem/__init__.py | 6 ++++++
stem/control.py | 11 ++---------
stem/util/system.py | 13 ++++++-------
3 files changed, 14 insertions(+), 16 deletions(-)
diff --git a/stem/__init__.py b/stem/__init__.py
index 2482299..5fd34ab 100644
--- a/stem/__init__.py
+++ b/stem/__init__.py
@@ -397,6 +397,12 @@ __all__ = [
import stem.util.enum
+# Constant to indicate an undefined argument default. Usually we'd use None for
+# this, but users will commonly provide None as the argument so need something
+# else fairly unique...
+
+UNDEFINED = "<Undefined_ >"
+
class ControllerError(Exception):
"Base error for controller communication issues."
diff --git a/stem/control.py b/stem/control.py
index b1525a9..d8ee940 100644
--- a/stem/control.py
+++ b/stem/control.py
@@ -138,12 +138,11 @@ import stem.response
import stem.socket
import stem.util.connection
import stem.util.enum
+import stem.util.tor_tools
import stem.version
-from stem import CircStatus
-
+from stem import UNDEFINED, CircStatus
from stem.util import log
-import stem.util.tor_tools
# state changes a control socket can have
@@ -177,12 +176,6 @@ EventType = stem.util.enum.UppercaseEnum(
"CIRC_MINOR",
)
-# Constant to indicate an undefined argument default. Usually we'd use None for
-# this, but users will commonly provide None as the argument so need something
-# else fairly unique...
-
-UNDEFINED = "<Undefined_ >"
-
# Configuration options that are fetched by a special key. The keys are
# lowercase to make case insensitive lookups easier.
diff --git a/stem/util/system.py b/stem/util/system.py
index 3c3abf4..0b4427e 100644
--- a/stem/util/system.py
+++ b/stem/util/system.py
@@ -28,6 +28,7 @@ import time
import stem.util.proc
+from stem import UNDEFINED, CircStatus
from stem.util import log
# Mapping of commands to if they're available or not. This isn't always
@@ -552,20 +553,18 @@ def expand_path(path, cwd = None):
return relative_path
-def call(command, suppress_exc = True):
+def call(command, default = UNDEFINED):
"""
Issues a command in a subprocess, blocking until completion and returning the
results. This is not actually ran in a shell so pipes and other shell syntax
are not permitted.
:param str command: command to be issued
- :param bool suppress_exc: if **True** then **None** is returned on failure,
- otherwise this raises the exception
+ :param object default: response if the query fails
- :returns: **list** with the lines of output from the command, **None** in
- case of failure if suppress_exc is **True**
+ :returns: **list** with the lines of output from the command
- :raises: **OSError** if this fails and suppress_exc is **False**
+ :raises: **OSError** if this fails and no default was provided
"""
try:
@@ -589,6 +588,6 @@ def call(command, suppress_exc = True):
except OSError, exc:
log.debug("System call (failed): %s (error: %s)" % (command, exc))
- if suppress_exc: return None
+ if default != UNDEFINED: return default
else: raise exc
More information about the tor-commits
mailing list