def get_completions(self, stem): b = self.get_unicode() m = import_line_prog.match(b) if m: if not self._module_list_ready: module_lister._make_module_list() self._module_list_ready = True mod = m.group("mod") try: return module_lister.find_modules(mod) except ImportError: pass m = from_line_prog.match(b) if m: mod, name = m.group("mod", "name") try: l = module_lister._packages[mod] except KeyError: try: mod = __import__(mod, self.locals, self.locals, ['']) return [x for x in dir(mod) if x.startswith(name)] except ImportError: pass else: return [x[len(mod) + 1:] for x in l if x.startswith(mod + '.' + name)] try: l = completing_reader.uniqify(self.completer.complete(stem)) return l except (NameError, AttributeError): return []
def _make_module_list_dir(dir, suffs, prefix=''): l = [] for fname in os.listdir(dir): file = os.path.join(dir, fname) if os.path.isfile(file): for suff in suffs: if fname.endswith(suff): l.append( prefix + fname[:-len(suff)] ) break elif os.path.isdir(file) \ and os.path.exists(os.path.join(file, "__init__.py")): l.append( prefix + fname ) _packages[prefix + fname] = _make_module_list_dir( file, suffs, prefix + fname + '.' ) l = uniqify(l) l.sort() return l
def get_completions(self, stem): if len(stem) != self.pos: return [] return cr.uniqify([s for s in self.completions if s.startswith(stem)])