""" Re-implementation of find_module and get_frozen_object from the deprecated imp module. """ import os import importlib.util import importlib.machinery from importlib.util import module_from_spec PY_SOURCE = 1 PY_COMPILED = 2 C_EXTENSION = 3 C_BUILTIN = 6 PY_FROZEN = 7 def find_spec(module, paths): finder = ( importlib.machinery.PathFinder().find_spec if isinstance(paths, list) else importlib.util.find_spec ) return finder(module, paths) def find_module(module, paths=None): """Just like 'imp.find_module()', but with package support""" spec = find_spec(module, paths) if spec is None: raise ImportError("Can't find %s" % module) if not spec.has_location and hasattr(spec, 'submodule_search_locations'): spec = importlib.util.spec_from_loader('__init__.py', spec.loader) kind = -1 file = None static = isinstance(spec.loader, type) if ( spec.origin == 'frozen' or static and issubclass(spec.loader, importlib.machinery.FrozenImporter) ): kind = PY_FROZEN path = None # imp compabilty suffix = mode = '' # imp compatibility elif ( spec.origin == 'built-in' or static and issubclass(spec.loader, importlib.machinery.BuiltinImporter) ): kind = C_BUILTIN path = None # imp compabilty suffix = mode = '' # imp compatibility elif spec.has_location: path = spec.origin suffix = os.path.splitext(path)[1] mode = 'r' if suffix in importlib.machinery.SOURCE_SUFFIXES else 'rb' if suffix in importlib.machinery.SOURCE_SUFFIXES: kind = PY_SOURCE elif suffix in importlib.machinery.BYTECODE_SUFFIXES: kind = PY_COMPILED elif suffix in importlib.machinery.EXTENSION_SUFFIXES: kind = C_EXTENSION if kind in {PY_SOURCE, PY_COMPILED}: file = open(path, mode) else: path = None suffix = mode = '' return file, path, (suffix, mode, kind) def get_frozen_object(module, paths=None): spec = find_spec(module, paths) if not spec: raise ImportError("Can't find %s" % module) return spec.loader.get_code(module) def get_module(module, paths, info): spec = find_spec(module, paths) if not spec: raise ImportError("Can't find %s" % module) return module_from_spec(spec)
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
_distutils | Folder | 0755 |
|
|
_vendor | Folder | 0755 |
|
|
command | Folder | 0755 |
|
|
config | Folder | 0755 |
|
|
extern | Folder | 0755 |
|
|
__init__.py | File | 9 KB | 0644 |
|
_core_metadata.py | File | 8.71 KB | 0644 |
|
_entry_points.py | File | 2.18 KB | 0644 |
|
_imp.py | File | 2.38 KB | 0644 |
|
_importlib.py | File | 1.43 KB | 0644 |
|
_itertools.py | File | 675 B | 0644 |
|
_normalization.py | File | 4.12 KB | 0644 |
|
_path.py | File | 1.03 KB | 0644 |
|
_reqs.py | File | 1.09 KB | 0644 |
|
archive_util.py | File | 7.16 KB | 0644 |
|
build_meta.py | File | 18.23 KB | 0644 |
|
cli-32.exe | File | 11.5 KB | 0644 |
|
cli-64.exe | File | 14 KB | 0644 |
|
cli-arm64.exe | File | 13.5 KB | 0644 |
|
cli.exe | File | 11.5 KB | 0644 |
|
dep_util.py | File | 659 B | 0644 |
|
depends.py | File | 5.45 KB | 0644 |
|
discovery.py | File | 20.65 KB | 0644 |
|
dist.py | File | 36.33 KB | 0644 |
|
errors.py | File | 2.61 KB | 0644 |
|
extension.py | File | 5.46 KB | 0644 |
|
glob.py | File | 4.75 KB | 0644 |
|
gui-32.exe | File | 11.5 KB | 0644 |
|
gui-64.exe | File | 14 KB | 0644 |
|
gui-arm64.exe | File | 13.5 KB | 0644 |
|
gui.exe | File | 11.5 KB | 0644 |
|
installer.py | File | 4.87 KB | 0644 |
|
launch.py | File | 812 B | 0644 |
|
logging.py | File | 1.21 KB | 0644 |
|
modified.py | File | 190 B | 0644 |
|
monkey.py | File | 4.67 KB | 0644 |
|
msvc.py | File | 46.31 KB | 0644 |
|
namespaces.py | File | 3 KB | 0644 |
|
package_index.py | File | 37.45 KB | 0644 |
|
py312compat.py | File | 330 B | 0644 |
|
sandbox.py | File | 14.01 KB | 0644 |
|
script (dev).tmpl | File | 218 B | 0644 |
|
script.tmpl | File | 138 B | 0644 |
|
unicode_utils.py | File | 941 B | 0644 |
|
version.py | File | 161 B | 0644 |
|
warnings.py | File | 3.61 KB | 0644 |
|
wheel.py | File | 8.43 KB | 0644 |
|
windows_support.py | File | 720 B | 0644 |
|