• Brett Cannon's avatar
    Issues #18088, 18089: Introduce · 0dbb4c7f
    Brett Cannon yazdı
    importlib.abc.Loader.init_module_attrs() and implement
    importlib.abc.InspectLoader.load_module().
    
    The importlib.abc.Loader.init_module_attrs() method sets the various
    attributes on the module being loaded. It is done unconditionally to
    support reloading. Typically people used
    importlib.util.module_for_loader, but since that's a decorator there
    was no way to override it's actions, so init_module_attrs() came into
    existence to allow for overriding. This is also why module_for_loader
    is now pending deprecation (having its other use replaced by
    importlib.util.module_to_load).
    
    All of this allowed for importlib.abc.InspectLoader.load_module() to
    be implemented. At this point you can now implement a loader with
    nothing more than get_code() (which only requires get_source();
    package support requires is_package()). Thanks to init_module_attrs()
    the implementation of load_module() is basically a context manager
    containing 2 methods calls, a call to exec(), and a return statement.
    0dbb4c7f
importlib.h 183 KB