MCPcopy Create free account
hub / github.com/RT-Thread/env-windows / ImpLoader

Class ImpLoader

tools/python-3.11.9-amd64/Lib/pkgutil.py:269–366  ·  view source on GitHub ↗

PEP 302 Loader that wraps Python's "classic" import algorithm

Source from the content-addressed store, hash-verified

267
268
269class ImpLoader:
270 """PEP 302 Loader that wraps Python's "classic" import algorithm
271 """
272 code = source = None
273
274 def __init__(self, fullname, file, filename, etc):
275 warnings.warn("This emulation is deprecated and slated for removal in "
276 "Python 3.12; use 'importlib' instead",
277 DeprecationWarning)
278 _import_imp()
279 self.file = file
280 self.filename = filename
281 self.fullname = fullname
282 self.etc = etc
283
284 def load_module(self, fullname):
285 self._reopen()
286 try:
287 mod = imp.load_module(fullname, self.file, self.filename, self.etc)
288 finally:
289 if self.file:
290 self.file.close()
291 # Note: we don't set __loader__ because we want the module to look
292 # normal; i.e. this is just a wrapper for standard import machinery
293 return mod
294
295 def get_data(self, pathname):
296 with open(pathname, "rb") as file:
297 return file.read()
298
299 def _reopen(self):
300 if self.file and self.file.closed:
301 mod_type = self.etc[2]
302 if mod_type==imp.PY_SOURCE:
303 self.file = open(self.filename, 'r')
304 elif mod_type in (imp.PY_COMPILED, imp.C_EXTENSION):
305 self.file = open(self.filename, 'rb')
306
307 def _fix_name(self, fullname):
308 if fullname is None:
309 fullname = self.fullname
310 elif fullname != self.fullname:
311 raise ImportError("Loader for module %s cannot handle "
312 "module %s" % (self.fullname, fullname))
313 return fullname
314
315 def is_package(self, fullname):
316 fullname = self._fix_name(fullname)
317 return self.etc[2]==imp.PKG_DIRECTORY
318
319 def get_code(self, fullname=None):
320 fullname = self._fix_name(fullname)
321 if self.code is None:
322 mod_type = self.etc[2]
323 if mod_type==imp.PY_SOURCE:
324 source = self.get_source(fullname)
325 self.code = compile(source, self.filename, 'exec')
326 elif mod_type==imp.PY_COMPILED:

Callers 1

find_moduleMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected