Mercurial > repos > guerler > hhblits
comparison lib/python3.8/site-packages/setuptools/_imp.py @ 0:9e54283cc701 draft
"planemo upload commit d12c32a45bcd441307e632fca6d9af7d60289d44"
| author | guerler | 
|---|---|
| date | Mon, 27 Jul 2020 03:47:31 -0400 | 
| parents | |
| children | 
   comparison
  equal
  deleted
  inserted
  replaced
| -1:000000000000 | 0:9e54283cc701 | 
|---|---|
| 1 """ | |
| 2 Re-implementation of find_module and get_frozen_object | |
| 3 from the deprecated imp module. | |
| 4 """ | |
| 5 | |
| 6 import os | |
| 7 import importlib.util | |
| 8 import importlib.machinery | |
| 9 | |
| 10 from .py34compat import module_from_spec | |
| 11 | |
| 12 | |
| 13 PY_SOURCE = 1 | |
| 14 PY_COMPILED = 2 | |
| 15 C_EXTENSION = 3 | |
| 16 C_BUILTIN = 6 | |
| 17 PY_FROZEN = 7 | |
| 18 | |
| 19 | |
| 20 def find_spec(module, paths): | |
| 21 finder = ( | |
| 22 importlib.machinery.PathFinder().find_spec | |
| 23 if isinstance(paths, list) else | |
| 24 importlib.util.find_spec | |
| 25 ) | |
| 26 return finder(module, paths) | |
| 27 | |
| 28 | |
| 29 def find_module(module, paths=None): | |
| 30 """Just like 'imp.find_module()', but with package support""" | |
| 31 spec = find_spec(module, paths) | |
| 32 if spec is None: | |
| 33 raise ImportError("Can't find %s" % module) | |
| 34 if not spec.has_location and hasattr(spec, 'submodule_search_locations'): | |
| 35 spec = importlib.util.spec_from_loader('__init__.py', spec.loader) | |
| 36 | |
| 37 kind = -1 | |
| 38 file = None | |
| 39 static = isinstance(spec.loader, type) | |
| 40 if spec.origin == 'frozen' or static and issubclass( | |
| 41 spec.loader, importlib.machinery.FrozenImporter): | |
| 42 kind = PY_FROZEN | |
| 43 path = None # imp compabilty | |
| 44 suffix = mode = '' # imp compability | |
| 45 elif spec.origin == 'built-in' or static and issubclass( | |
| 46 spec.loader, importlib.machinery.BuiltinImporter): | |
| 47 kind = C_BUILTIN | |
| 48 path = None # imp compabilty | |
| 49 suffix = mode = '' # imp compability | |
| 50 elif spec.has_location: | |
| 51 path = spec.origin | |
| 52 suffix = os.path.splitext(path)[1] | |
| 53 mode = 'r' if suffix in importlib.machinery.SOURCE_SUFFIXES else 'rb' | |
| 54 | |
| 55 if suffix in importlib.machinery.SOURCE_SUFFIXES: | |
| 56 kind = PY_SOURCE | |
| 57 elif suffix in importlib.machinery.BYTECODE_SUFFIXES: | |
| 58 kind = PY_COMPILED | |
| 59 elif suffix in importlib.machinery.EXTENSION_SUFFIXES: | |
| 60 kind = C_EXTENSION | |
| 61 | |
| 62 if kind in {PY_SOURCE, PY_COMPILED}: | |
| 63 file = open(path, mode) | |
| 64 else: | |
| 65 path = None | |
| 66 suffix = mode = '' | |
| 67 | |
| 68 return file, path, (suffix, mode, kind) | |
| 69 | |
| 70 | |
| 71 def get_frozen_object(module, paths=None): | |
| 72 spec = find_spec(module, paths) | |
| 73 if not spec: | |
| 74 raise ImportError("Can't find %s" % module) | |
| 75 return spec.loader.get_code(module) | |
| 76 | |
| 77 | |
| 78 def get_module(module, paths, info): | |
| 79 spec = find_spec(module, paths) | |
| 80 if not spec: | |
| 81 raise ImportError("Can't find %s" % module) | |
| 82 return module_from_spec(spec) | 
