to do ///// * Create sandbox directory for a distutils packaging of what is in Python 2.7. * Use rpartition for getting the package of a module. + Make sure that an empty string is acceptable for __package__. * Create meta_path importer for sys.path. + Document. * Refactor __import__. + Create a greatest common denominator function for __import__/import_module that takes in an absolute module name and performs the import. - Needs of __import__ * Figure out caller's package. * Import module. * Set __package__. * Figure out what module to return. - Needs of import_module * Resolve name/level. * Import module. + Use GCD import for __import__. + Use GCD import for import_module. * Implement PEP 302 protocol for loaders (should just be a matter of testing). + Built-in. + Frozen. + Extension. + Source/bytecode. * Public API left to expose (w/ docs!) + abc - Finder * find_module - Loader * load_module - (?) Importer(Finder, Loader) - ResourceLoader(Loader) * get_data - InspectLoader(Loader) * is_package * get_code * get_source - (?) SourceLoader(ResourceLoader) * source_path * bytecode_path * write_bytecode + util - get_module decorator (new name) - check_name decorator (new name) - resolve_name + machinery - (?) Chained path hook/finder - (?) FileFinder - Extensions importers * ExtensionFinder * (?) Loader - Source/bytecode importers * SourceFinder * (?) Loader * Write benchmark suite. * OPTIMIZE! + Fast path absolute name. + Fast path pulling from sys.modules. * Bootstrap importlib as implementation of builtins.__import__ * Replace standard library modules. + imp + py_compile + compileall