commit cf046f4ff74ebdff829dbab8c3cf947e0fd6625a Author: Damian Johnson atagar@torproject.org Date: Sat May 23 12:28:15 2015 -0700
Avoid circular import error for the controller
Python, I find your imports confusing. I put 'import stem.connection' at the end of control.py to avoid this (seems to work for the descriptors), but evidently didn't work. A simple hello-world script...
import stem.control
with stem.control.Controller.from_port() as controller: controller.authenticate() print controller.get_version()
... failed with...
Traceback (most recent call last): File "scrap.py", line 1, in <module> import stem.control File "/home/atagar/Desktop/stem/stem/control.py", line 3647, in <module> import stem.connection File "/home/atagar/Desktop/stem/stem/connection.py", line 202, in <module> def connect(control_port = ('127.0.0.1', 'default'), control_socket = '/var/run/tor/control', password = None, password_prompt = False, chroot_path = None, controller = stem.control.Controller): AttributeError: 'module' object has no attribute 'control' --- stem/control.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/stem/control.py b/stem/control.py index efc0d18..26272fd 100644 --- a/stem/control.py +++ b/stem/control.py @@ -916,6 +916,8 @@ class Controller(BaseController): :raises: :class:`stem.SocketError` if we're unable to establish a connection """
+ import stem.connection + if not stem.util.connection.is_valid_ipv4_address(address): raise ValueError('Invalid IP address: %s' % address) elif not stem.util.connection.is_valid_port(port): @@ -1000,6 +1002,7 @@ class Controller(BaseController): pass-through to :func:`stem.connection.authenticate`. """
+ import stem.connection stem.connection.authenticate(self, *args, **kwargs)
@with_default() @@ -1401,6 +1404,7 @@ class Controller(BaseController): An exception is only raised if we weren't provided a default response. """
+ import stem.connection return stem.connection.get_protocolinfo(self)
@with_default() @@ -3640,8 +3644,3 @@ def _case_insensitive_lookup(entries, key, default = UNDEFINED): return entry
raise ValueError("key '%s' doesn't exist in dict: %s" % (key, entries)) - - -# importing at the end to avoid circular dependency - -import stem.connection
tor-commits@lists.torproject.org