diff --git a/ansible_mitogen/connection.py b/ansible_mitogen/connection.py index 4283ddf9..c80a5393 100644 --- a/ansible_mitogen/connection.py +++ b/ansible_mitogen/connection.py @@ -159,7 +159,6 @@ def _connect_ssh(spec): } } - def _connect_buildah(spec): """ Return ContextService arguments for a Buildah connection. @@ -175,7 +174,6 @@ def _connect_buildah(spec): } } - def _connect_docker(spec): """ Return ContextService arguments for a Docker connection. @@ -727,8 +725,8 @@ class Connection(ansible.plugins.connection.ConnectionBase): ) stack += (CONNECTION_METHOD[spec.transport()](spec),) - if spec.become() and ((spec.become_user() != spec.remote_user()) - or C.BECOME_ALLOW_SAME_USER): + if spec.become() and ((spec.become_user() != spec.remote_user()) or + C.BECOME_ALLOW_SAME_USER): stack += (CONNECTION_METHOD[spec.become_method()](spec),) return stack diff --git a/ansible_mitogen/mixins.py b/ansible_mitogen/mixins.py index dfd2a872..72ff3045 100644 --- a/ansible_mitogen/mixins.py +++ b/ansible_mitogen/mixins.py @@ -92,7 +92,6 @@ class ActionModuleMixin(ansible.plugins.action.ActionBase): that crop up due to this. Mitogen always runs a task completely within the target user account, so it's not a problem for us. """ - def __init__(self, task, connection, *args, **kwargs): """ Verify the received connection is really a Mitogen connection. If not, @@ -186,7 +185,7 @@ class ActionModuleMixin(ansible.plugins.action.ActionBase): return os.path.join( self._connection.get_good_temp_dir(), 'ansible_mitogen_action_%016x' % ( - random.getrandbits(8 * 8), + random.getrandbits(8*8), ) ) diff --git a/ansible_mitogen/planner.py b/ansible_mitogen/planner.py index 028ec69d..8febbdb3 100644 --- a/ansible_mitogen/planner.py +++ b/ansible_mitogen/planner.py @@ -67,7 +67,6 @@ class Invocation(object): Collect up a module's execution environment then use it to invoke target.run_module() or helpers.run_module_async() in the target context. """ - def __init__(self, action, connection, module_name, module_args, task_vars, templar, env, wrap_async, timeout_secs): #: ActionBase instance invoking the module. Required to access some @@ -113,7 +112,6 @@ class Planner(object): file, indicates whether or not it understands how to run the module, and exports a method to run the module. """ - def __init__(self, invocation): self._inv = invocation @@ -205,7 +203,6 @@ class ScriptPlanner(BinaryPlanner): Common functionality for script module planners -- handle interpreter detection and rewrite. """ - def _rewrite_interpreter(self, path): """ Given the original interpreter binary extracted from the script's @@ -327,10 +324,10 @@ class NewStylePlanner(ScriptPlanner): * the module is known to leak like a sieve. """ return ( - super(NewStylePlanner, self).should_fork() - or (self._inv.task_vars.get('mitogen_task_isolation') == 'fork') - or (self._inv.module_name in self.ALWAYS_FORK_MODULES) - or (len(self.get_module_map()['custom']) > 0) + super(NewStylePlanner, self).should_fork() or + (self._inv.task_vars.get('mitogen_task_isolation') == 'fork') or + (self._inv.module_name in self.ALWAYS_FORK_MODULES) or + (len(self.get_module_map()['custom']) > 0) ) def get_search_path(self): diff --git a/ansible_mitogen/strategy.py b/ansible_mitogen/strategy.py index 903c97fb..d82e6112 100644 --- a/ansible_mitogen/strategy.py +++ b/ansible_mitogen/strategy.py @@ -116,7 +116,6 @@ def _patch_awx_callback(): EventContext._local = threading.local() EventContext.add_local = patch_add_local - _patch_awx_callback() @@ -199,7 +198,6 @@ class AnsibleWrappers(object): """ Manage add/removal of various Ansible runtime hooks. """ - def _add_plugin_paths(self): """ Add the Mitogen plug-in directories to the ModuleLoader path, avoiding diff --git a/ansible_mitogen/transport_config.py b/ansible_mitogen/transport_config.py index 21c16a99..aa4a16d0 100644 --- a/ansible_mitogen/transport_config.py +++ b/ansible_mitogen/transport_config.py @@ -325,7 +325,6 @@ class PlayContextSpec(Spec): PlayContext. It is used for normal connections and delegate_to connections, and should always be accurate. """ - def __init__(self, connection, play_context, transport, inventory_name): self._connection = connection self._play_context = play_context @@ -380,9 +379,9 @@ class PlayContextSpec(Spec): def ansible_ssh_timeout(self): return ( - self._connection.get_task_var('ansible_timeout') - or self._connection.get_task_var('ansible_ssh_timeout') - or self.timeout() + self._connection.get_task_var('ansible_timeout') or + self._connection.get_task_var('ansible_ssh_timeout') or + self.timeout() ) def ssh_args(self): @@ -469,8 +468,8 @@ class PlayContextSpec(Spec): def ansible_doas_exe(self): return ( - self._connection.get_task_var('ansible_doas_exe') - or os.environ.get('ANSIBLE_DOAS_EXE') + self._connection.get_task_var('ansible_doas_exe') or + os.environ.get('ANSIBLE_DOAS_EXE') ) @@ -491,7 +490,6 @@ class MitogenViaSpec(Spec): having a configruation problem with connection delegation, the answer to your problem lies in the method implementations below! """ - def __init__(self, inventory_name, host_vars, become_method, become_user, play_context): """ @@ -522,8 +520,8 @@ class MitogenViaSpec(Spec): def transport(self): return ( - self._host_vars.get('ansible_connection') - or C.DEFAULT_TRANSPORT + self._host_vars.get('ansible_connection') or + C.DEFAULT_TRANSPORT ) def inventory_name(self): @@ -532,16 +530,16 @@ class MitogenViaSpec(Spec): def remote_addr(self): # play_context.py::MAGIC_VARIABLE_MAPPING return ( - self._host_vars.get('ansible_ssh_host') - or self._host_vars.get('ansible_host') - or self._inventory_name + self._host_vars.get('ansible_ssh_host') or + self._host_vars.get('ansible_host') or + self._inventory_name ) def remote_user(self): return ( - self._host_vars.get('ansible_ssh_user') - or self._host_vars.get('ansible_user') - or C.DEFAULT_REMOTE_USER + self._host_vars.get('ansible_ssh_user') or + self._host_vars.get('ansible_user') or + C.DEFAULT_REMOTE_USER ) def become(self): @@ -549,9 +547,9 @@ class MitogenViaSpec(Spec): def become_method(self): return ( - self._become_method - or self._host_vars.get('ansible_become_method') - or C.DEFAULT_BECOME_METHOD + self._become_method or + self._host_vars.get('ansible_become_method') or + C.DEFAULT_BECOME_METHOD ) def become_user(self): @@ -559,21 +557,21 @@ class MitogenViaSpec(Spec): def become_pass(self): return optional_secret( - self._host_vars.get('ansible_become_password') - or self._host_vars.get('ansible_become_pass') + self._host_vars.get('ansible_become_password') or + self._host_vars.get('ansible_become_pass') ) def password(self): return optional_secret( - self._host_vars.get('ansible_ssh_pass') - or self._host_vars.get('ansible_password') + self._host_vars.get('ansible_ssh_pass') or + self._host_vars.get('ansible_password') ) def port(self): return ( - self._host_vars.get('ansible_ssh_port') - or self._host_vars.get('ansible_port') - or C.DEFAULT_REMOTE_PORT + self._host_vars.get('ansible_ssh_port') or + self._host_vars.get('ansible_port') or + C.DEFAULT_REMOTE_PORT ) def python_path(self): @@ -586,15 +584,15 @@ class MitogenViaSpec(Spec): def private_key_file(self): # TODO: must come from PlayContext too. return ( - self._host_vars.get('ansible_ssh_private_key_file') - or self._host_vars.get('ansible_private_key_file') - or C.DEFAULT_PRIVATE_KEY_FILE + self._host_vars.get('ansible_ssh_private_key_file') or + self._host_vars.get('ansible_private_key_file') or + C.DEFAULT_PRIVATE_KEY_FILE ) def ssh_executable(self): return ( - self._host_vars.get('ansible_ssh_executable') - or C.ANSIBLE_SSH_EXECUTABLE + self._host_vars.get('ansible_ssh_executable') or + C.ANSIBLE_SSH_EXECUTABLE ) def timeout(self): @@ -603,9 +601,9 @@ class MitogenViaSpec(Spec): def ansible_ssh_timeout(self): return ( - self._host_vars.get('ansible_timeout') - or self._host_vars.get('ansible_ssh_timeout') - or self.timeout() + self._host_vars.get('ansible_timeout') or + self._host_vars.get('ansible_ssh_timeout') or + self.timeout() ) def ssh_args(self): @@ -613,19 +611,19 @@ class MitogenViaSpec(Spec): mitogen.core.to_text(term) for s in ( ( - self._host_vars.get('ansible_ssh_args') - or getattr(C, 'ANSIBLE_SSH_ARGS', None) - or os.environ.get('ANSIBLE_SSH_ARGS') + self._host_vars.get('ansible_ssh_args') or + getattr(C, 'ANSIBLE_SSH_ARGS', None) or + os.environ.get('ANSIBLE_SSH_ARGS') # TODO: ini entry. older versions. ), ( - self._host_vars.get('ansible_ssh_common_args') - or os.environ.get('ANSIBLE_SSH_COMMON_ARGS') + self._host_vars.get('ansible_ssh_common_args') or + os.environ.get('ANSIBLE_SSH_COMMON_ARGS') # TODO: ini entry. ), ( - self._host_vars.get('ansible_ssh_extra_args') - or os.environ.get('ANSIBLE_SSH_EXTRA_ARGS') + self._host_vars.get('ansible_ssh_extra_args') or + os.environ.get('ANSIBLE_SSH_EXTRA_ARGS') # TODO: ini entry. ), ) @@ -635,8 +633,8 @@ class MitogenViaSpec(Spec): def become_exe(self): return ( - self._host_vars.get('ansible_become_exe') - or C.DEFAULT_BECOME_EXE + self._host_vars.get('ansible_become_exe') or + C.DEFAULT_BECOME_EXE ) def sudo_args(self): @@ -696,6 +694,6 @@ class MitogenViaSpec(Spec): def ansible_doas_exe(self): return ( - self._host_vars.get('ansible_doas_exe') - or os.environ.get('ANSIBLE_DOAS_EXE') + self._host_vars.get('ansible_doas_exe') or + os.environ.get('ANSIBLE_DOAS_EXE') ) diff --git a/mitogen/parent.py b/mitogen/parent.py index 56290905..a9bc9e4f 100644 --- a/mitogen/parent.py +++ b/mitogen/parent.py @@ -327,7 +327,6 @@ def popen(**kwargs): is invoked in the child. """ real_preexec_fn = kwargs.pop('preexec_fn', None) - def preexec_fn(): if _preexec_hook: _preexec_hook() @@ -421,7 +420,7 @@ def _acquire_controlling_tty(): def _linux_broken_devpts_openpty(): """ - # 462: On broken Linux hosts with mismatched configuration (e.g. old + #462: On broken Linux hosts with mismatched configuration (e.g. old /etc/fstab template installed), /dev/pts may be mounted without the gid= mount option, causing new slave devices to be created with the group ID of the calling process. This upsets glibc, whose openpty() is required by @@ -452,7 +451,7 @@ def _linux_broken_devpts_openpty(): # TTY. Otherwise when we close the FD we get killed by the kernel, and # the child we spawn that should really attach to it will get EPERM # during _acquire_controlling_tty(). - slave_fd = os.open(pty_name, os.O_RDWR | os.O_NOCTTY) + slave_fd = os.open(pty_name, os.O_RDWR|os.O_NOCTTY) return master_fd, slave_fd except OSError: if master_fd is not None: @@ -640,7 +639,7 @@ class TimerList(object): def get_timeout(self): """ Return the floating point seconds until the next event is due. - + :returns: Floating point delay, or 0.0, or :data:`None` if no events are scheduled. @@ -692,7 +691,6 @@ class PartialZlib(object): A full compression costs ~6ms on a modern machine, this method costs ~35 usec. """ - def __init__(self, s): self.s = s if sys.version_info > (2, 5): @@ -842,7 +840,6 @@ class Argv(object): """ Wrapper to defer argv formatting when debug logging is disabled. """ - def __init__(self, argv): self.argv = argv @@ -869,7 +866,6 @@ class CallSpec(object): """ Wrapper to defer call argument formatting when debug logging is disabled. """ - def __init__(self, func, args, kwargs): self.func = func self.args = args @@ -879,8 +875,8 @@ class CallSpec(object): bits = [self.func.__module__] if inspect.ismethod(self.func): im_self = getattr(self.func, IM_SELF_ATTR) - bits.append(getattr(im_self, '__name__', None) - or getattr(type(im_self), '__name__', None)) + bits.append(getattr(im_self, '__name__', None) or + getattr(type(im_self), '__name__', None)) bits.append(self.func.__name__) return u'.'.join(bits) @@ -918,13 +914,13 @@ class PollPoller(mitogen.core.Poller): # TODO: no proof we dont need writemask too _readmask = ( - getattr(select, 'POLLIN', 0) - | getattr(select, 'POLLHUP', 0) + getattr(select, 'POLLIN', 0) | + getattr(select, 'POLLHUP', 0) ) def _update(self, fd): - mask = (((fd in self._rfds) and self._readmask) - | ((fd in self._wfds) and select.POLLOUT)) + mask = (((fd in self._rfds) and self._readmask) | + ((fd in self._wfds) and select.POLLOUT)) if mask: self._pollobj.register(fd, mask) else: @@ -1047,8 +1043,8 @@ class EpollPoller(mitogen.core.Poller): def _control(self, fd): mitogen.core._vv and IOLOG.debug('%r._control(%r)', self, fd) - mask = (((fd in self._rfds) and select.EPOLLIN) - | ((fd in self._wfds) and select.EPOLLOUT)) + mask = (((fd in self._rfds) and select.EPOLLIN) | + ((fd in self._wfds) and select.EPOLLOUT)) if mask: if fd in self._registered_fds: self._epoll.modify(fd, mask) @@ -1081,8 +1077,8 @@ class EpollPoller(mitogen.core.Poller): self._wfds.pop(fd, None) self._control(fd) - _inmask = (getattr(select, 'EPOLLIN', 0) - | getattr(select, 'EPOLLHUP', 0)) + _inmask = (getattr(select, 'EPOLLIN', 0) | + getattr(select, 'EPOLLHUP', 0)) def _poll(self, timeout): the_timeout = -1 @@ -1253,7 +1249,6 @@ class LogProtocol(LineLoggingProtocolMixin, mitogen.core.DelimitedProtocol): LogProtocol takes over this FD and creates log messages for anything written to it. """ - def on_line_received(self, line): """ Read a line, decode it as UTF-8, and log it. @@ -1267,7 +1262,6 @@ class MitogenProtocol(mitogen.core.MitogenProtocol): Extend core.MitogenProtocol to cause SHUTDOWN to be sent to the child during graceful shutdown. """ - def on_shutdown(self, broker): """ Respond to the broker's request for the stream to shut down by sending @@ -1430,29 +1424,29 @@ class Connection(object): # "[1234 refs]" during exit. @staticmethod def _first_stage(): - R, W = os.pipe() - r, w = os.pipe() + R,W=os.pipe() + r,w=os.pipe() if os.fork(): - os.dup2(0, 100) - os.dup2(R, 0) - os.dup2(r, 101) + os.dup2(0,100) + os.dup2(R,0) + os.dup2(r,101) os.close(R) os.close(r) os.close(W) os.close(w) if sys.platform == 'darwin' and sys.executable == '/usr/bin/python': sys.executable += sys.version[:3] - os.environ['ARGV0'] = sys.executable - os.execl(sys.executable, sys.executable + '(mitogen:CONTEXT_NAME)') - os.write(1, 'MITO000\n'.encode()) - C = _(os.fdopen(0, 'rb').read(PREAMBLE_COMPRESSED_LEN), 'zip') - fp = os.fdopen(W, 'wb', 0) + os.environ['ARGV0']=sys.executable + os.execl(sys.executable,sys.executable+'(mitogen:CONTEXT_NAME)') + os.write(1,'MITO000\n'.encode()) + C=_(os.fdopen(0,'rb').read(PREAMBLE_COMPRESSED_LEN),'zip') + fp=os.fdopen(W,'wb',0) fp.write(C) fp.close() - fp = os.fdopen(w, 'wb', 0) + fp=os.fdopen(w,'wb',0) fp.write(C) fp.close() - os.write(1, 'MITO001\n'.encode()) + os.write(1,'MITO001\n'.encode()) os.close(2) def get_python_argv(self): @@ -1508,7 +1502,7 @@ class Connection(object): def get_preamble(self): suffix = ( - '\nExternalContext(%r).main()\n' % + '\nExternalContext(%r).main()\n' %\ (self.get_econtext_config(),) ) partial = get_core_source_partial() @@ -1615,13 +1609,13 @@ class Connection(object): if self._reaper: return - # kill: # Avoid killing so child has chance to write cProfile data self._reaper = Reaper( broker=self._router.broker, proc=self.proc, kill=not ( - (self.detached and self.child_is_immediate_subprocess) - or self._router.profiling + (self.detached and self.child_is_immediate_subprocess) or + # kill: # Avoid killing so child has chance to write cProfile data + self._router.profiling ), # Don't delay shutdown waiting for a detached child, since the # detached child may expect to live indefinitely after its parent @@ -1717,7 +1711,6 @@ class ChildIdAllocator(object): Allocate new context IDs from a block of unique context IDs allocated by the master process. """ - def __init__(self, router): self.router = router self.lock = threading.Lock() @@ -1816,7 +1809,6 @@ class CallChain(object): # chain.reset() automatically invoked. """ - def __init__(self, context, pipelined=False): self.context = context if pipelined: @@ -2004,9 +1996,9 @@ class Context(mitogen.core.Context): def __eq__(self, other): return ( - isinstance(other, mitogen.core.Context) - and (other.context_id == self.context_id) - and (other.router == self.router) + isinstance(other, mitogen.core.Context) and + (other.context_id == self.context_id) and + (other.router == self.router) ) def __hash__(self): @@ -2091,7 +2083,6 @@ class RouteMonitor(object): :data:`None` in the master process, or reference to the parent context we should propagate route updates towards. """ - def __init__(self, router, parent=None): self.router = router self.parent = parent @@ -2176,9 +2167,9 @@ class RouteMonitor(object): """ for stream in self.router.get_streams(): if target_id in stream.protocol.egress_ids and ( - (self.parent is None) - or (self.parent.context_id != stream.protocol.remote_id) - ): + (self.parent is None) or + (self.parent.context_id != stream.protocol.remote_id) + ): self._send_one(stream, mitogen.core.DEL_ROUTE, target_id, None) def notice_stream(self, stream): @@ -2348,7 +2339,6 @@ class Router(mitogen.core.Router): l = mitogen.core.Latch() mitogen.core.listen(stream, 'disconnect', l.put) - def disconnect(): LOG.debug('Starting disconnect of %r', stream) stream.on_disconnect(self.broker) @@ -2458,7 +2448,7 @@ class Router(mitogen.core.Router): name=name, method_name=method_name, kwargs=mitogen.core.Kwargs(kwargs), - ) + ) if resp['msg'] is not None: raise mitogen.core.StreamError(resp['msg']) @@ -2679,7 +2669,6 @@ class PopenProcess(Process): :param subprocess.Popen proc: The subprocess. """ - def __init__(self, proc, stdin, stdout, stderr=None): super(PopenProcess, self).__init__(proc.pid, stdin, stdout, stderr) #: The subprocess. @@ -2695,7 +2684,6 @@ class ModuleForwarder(object): forwarding the request to our parent context, or satisfying the request from our local Importer cache. """ - def __init__(self, router, parent_context, importer): self.router = router self.parent_context = parent_context diff --git a/mitogen/ssh.py b/mitogen/ssh.py index 244766c5..7a494ed3 100644 --- a/mitogen/ssh.py +++ b/mitogen/ssh.py @@ -241,8 +241,8 @@ class Connection(mitogen.parent.Connection): because it must interactively accept host keys or type a password. """ return ( - self.options.check_host_keys == 'accept' - or self.options.password is not None + self.options.check_host_keys == 'accept' or + self.options.password is not None ) def create_child(self, **kwargs): @@ -267,8 +267,8 @@ class Connection(mitogen.parent.Connection): bits += ['-l', self.options.username] if self.options.port is not None: bits += ['-p', str(self.options.port)] - if self.options.identities_only and (self.options.identity_file - or self.options.password): + if self.options.identities_only and (self.options.identity_file or + self.options.password): bits += ['-o', 'IdentitiesOnly yes'] if self.options.identity_file: bits += ['-i', self.options.identity_file] diff --git a/mitogen/sudo.py b/mitogen/sudo.py index 8c733d6f..a1a7b8af 100644 --- a/mitogen/sudo.py +++ b/mitogen/sudo.py @@ -114,10 +114,10 @@ SUDO_OPTIONS = [ #(False, 'bool', '--background', '-b') #(False, 'str', '--close-from', '-C') #(False, 'str', '--login-class', 'c') - (True, 'bool', '--preserve-env', '-E'), + (True, 'bool', '--preserve-env', '-E'), #(False, 'bool', '--edit', '-e') #(False, 'str', '--group', '-g') - (True, 'bool', '--set-home', '-H'), + (True, 'bool', '--set-home', '-H'), #(False, 'str', '--host', '-h') (False, 'bool', '--login', '-i'), #(False, 'bool', '--remove-timestamp', '-K') @@ -146,10 +146,8 @@ SUDO_OPTIONS = [ class OptionParser(optparse.OptionParser): def help(self): self.exit() - def error(self, msg): self.exit(msg=msg) - def exit(self, status=0, msg=None): msg = 'sudo: ' + (msg or 'unsupported option') raise mitogen.core.StreamError(msg) @@ -169,7 +167,7 @@ def parse_sudo_flags(args): parser = make_sudo_parser() opts, args = parser.parse_args(args) if len(args): - raise mitogen.core.StreamError('unsupported sudo arguments:' + str(args)) + raise mitogen.core.StreamError('unsupported sudo arguments:'+str(args)) return opts