def _get_system_ssh_version(): """Return version of ssh available system-wide """ try: out, err = _runner.run('ssh -V'.split(), expect_fail=True, expect_stderr=True) # apparently spits out to err but I wouldn't trust it blindly if err.startswith('OpenSSH'): out = err assert out.startswith('OpenSSH') # that is the only one we care about atm return out.split(' ', 1)[0].rstrip(',.').split('_')[1] except CommandError as exc: lgr.debug("Could not determine version of ssh available: %s", exc_str(exc)) return None
def __getitem__(self, module): # when ran straight in its source code -- fails to discover nipy's version.. TODO #if module == 'nipy': # import pdb; pdb.set_trace() if not isinstance(module, str): modname = module.__name__ else: modname = module module = None # Early returns None so we do not store prev result for them # and allow users to install things at run time, so later check # doesn't pick it up from the _versions if modname not in self._versions: version = None # by default -- not present if modname in self.CUSTOM: try: version = self.CUSTOM[modname]() version = self._deduce_version(version) except Exception as exc: lgr.debug("Failed to deduce version of %s due to %s" % (modname, exc_str(exc))) return None else: if module is None: if modname not in sys.modules: try: module = __import__(modname) except ImportError: lgr.debug("Module %s seems to be not present" % modname) return None except Exception as exc: lgr.warning("Failed to import module %s due to %s", modname, exc_str(exc)) return None else: module = sys.modules[modname] if module: version = self._deduce_version(module) self._versions[modname] = version return self._versions.get(modname, self.UNKNOWN)