def __complete_imports_and_aliases(
        self, prefix: str, name_in_module: Optional[str] = None
    ) -> Iterable[str]:
        """Return an iterable of possible completions matching the given
        prefix from the list of imports and aliased imports. If name_in_module
        is given, further attempt to refine the list to matching names in that
        namespace."""
        imports = self.imports
        aliases = lmap.map(
            {
                alias: imports.entry(import_name)
                for alias, import_name in self.import_aliases
            }
        )

        candidates = filter(
            Namespace.__completion_matcher(prefix), itertools.chain(aliases, imports)
        )
        if name_in_module is not None:
            for _, module in candidates:
                for name in module.__dict__:
                    if name.startswith(name_in_module):
                        yield f"{prefix}/{name}"
        else:
            for candidate_name, _ in candidates:
                yield f"{candidate_name}/"
def __complete_imports_and_aliases ( self , prefix : str , name_in_module : Optional [ str ] = None ) -> Iterable [ str ] : imports = self . imports aliases = lmap . map ( { alias : imports . entry ( import_name ) for alias , import_name in self . import_aliases } ) candidates = filter ( Namespace . __completion_matcher ( prefix ) , itertools . chain ( aliases , imports ) ) if name_in_module is not None : for _ , module in candidates : for name in module . __dict__ : if name . startswith ( name_in_module ) : yield f"{prefix}/{name}" else : for candidate_name , _ in candidates : yield f"{candidate_name}/"
Return an iterable of possible completions matching the given
        prefix from the list of imports and aliased imports. If name_in_module
        is given, further attempt to refine the list to matching names in that
        namespace.