Lines Matching refs:spec

284     spec = spec_from_loader(fullname, self)
287 _exec(spec, module)
290 return _load(spec)
297 if spec := getattr(module, "__spec__", None):
298 return _module_repr_from_spec(spec)
323 A module's spec is the source for information about the module. For
324 data associated with the module, including source, use the spec's
338 `has_location` indicates that a spec's "origin" reflects a location.
348 Packages are simply modules that (may) have submodules. If a spec
350 system will consider modules loaded from the spec as packages.
423 """Return a module spec based on various loader methods."""
454 spec = module.__spec__
458 if spec is not None:
459 return spec
486 spec = ModuleSpec(name, loader, origin=origin)
487 spec._set_fileattr = False if location is None else (origin == location)
488 spec.cached = cached
489 spec.submodule_search_locations = submodule_search_locations
490 return spec
493 def _init_module_attrs(spec, module, *, override=False):
499 module.__name__ = spec.name
504 loader = spec.loader
507 if spec.submodule_search_locations is not None:
513 loader._path = spec.submodule_search_locations
514 spec.loader = loader
517 # spec.has_location is false, this is incorrect for namespace
533 module.__package__ = spec.parent
538 module.__spec__ = spec
543 if spec.submodule_search_locations is not None:
546 module.__path__ = spec.submodule_search_locations
550 if spec.has_location:
553 module.__file__ = spec.origin
558 if spec.cached is not None:
560 module.__cached__ = spec.cached
566 def module_from_spec(spec):
567 """Create a module based on the provided spec."""
570 if hasattr(spec.loader, 'create_module'):
573 module = spec.loader.create_module(spec)
574 elif hasattr(spec.loader, 'exec_module'):
578 module = _new_module(spec.name)
579 _init_module_attrs(spec, module)
583 def _module_repr_from_spec(spec):
585 # We mostly replicate _module_repr() using the spec attributes.
586 name = '?' if spec.name is None else spec.name
587 if spec.origin is None:
588 if spec.loader is None:
591 return '<module {!r} ({!r})>'.format(name, spec.loader)
593 if spec.has_location:
594 return '<module {!r} from {!r}>'.format(name, spec.origin)
596 return '<module {!r} ({})>'.format(spec.name, spec.origin)
600 def _exec(spec, module):
601 """Execute the spec's specified module in an existing module's namespace."""
602 name = spec.name
608 if spec.loader is None:
609 if spec.submodule_search_locations is None:
610 raise ImportError('missing loader', name=spec.name)
612 _init_module_attrs(spec, module, override=True)
614 _init_module_attrs(spec, module, override=True)
615 if not hasattr(spec.loader, 'exec_module'):
616 msg = (f"{_object_name(spec.loader)}.exec_module() not found; "
619 spec.loader.load_module(name)
621 spec.loader.exec_module(module)
625 module = sys.modules.pop(spec.name)
626 sys.modules[spec.name] = module
630 def _load_backward_compatible(spec):
634 spec.loader.load_module(spec.name)
636 if spec.name in sys.modules:
637 module = sys.modules.pop(spec.name)
638 sys.modules[spec.name] = module
642 module = sys.modules.pop(spec.name)
643 sys.modules[spec.name] = module
646 module.__loader__ = spec.loader
652 # spec.submodule_search_paths, we can't necessarily rely
653 # on spec.parent here.
656 module.__package__ = spec.name.rpartition('.')[0]
661 module.__spec__ = spec
666 def _load_unlocked(spec):
668 if spec.loader is not None:
670 if not hasattr(spec.loader, 'exec_module'):
671 msg = (f"{_object_name(spec.loader)}.exec_module() not found; "
674 return _load_backward_compatible(spec)
676 module = module_from_spec(spec)
681 spec._initializing = True
683 sys.modules[spec.name] = module
685 if spec.loader is None:
686 if spec.submodule_search_locations is None:
687 raise ImportError('missing loader', name=spec.name)
690 spec.loader.exec_module(module)
693 del sys.modules[spec.name]
701 module = sys.modules.pop(spec.name)
702 sys.modules[spec.name] = module
703 _verbose_message('import {!r} # {!r}', spec.name, spec.loader)
705 spec._initializing = False
711 def _load(spec):
712 """Return a new module object, loaded by the spec's loader.
720 with _ModuleLockManager(spec.name):
721 return _load_unlocked(spec)
767 spec = cls.find_spec(fullname, path)
768 return spec.loader if spec is not None else None
771 def create_module(spec):
773 if spec.name not in sys.builtin_module_names:
774 raise ImportError('{!r} is not a built-in module'.format(spec.name),
775 name=spec.name)
776 return _call_with_frames_removed(_imp.create_builtin, spec)
828 spec = module.__spec__
829 state = spec.loader_state
833 # Fix up the spec attrs.
838 filename, pkgdir = cls._resolve_filename(origname, spec.name, ispkg)
839 spec.loader_state = type(sys.implementation)(
843 __path__ = spec.submodule_search_locations
847 spec.submodule_search_locations.insert(0, pkgdir)
865 __path__ = spec.submodule_search_locations
872 ) = cls._resolve_filename(state.origname, spec.name, ispkg)
893 assert not spec.has_location
938 spec = spec_from_loader(fullname, cls,
942 spec.loader_state = type(sys.implementation)(
947 spec.submodule_search_locations.insert(0, pkgdir)
948 return spec
963 def create_module(spec):
965 module = _new_module(spec.name)
967 filename = spec.loader_state.filename
977 spec = module.__spec__
978 name = spec.name
1055 """Find a module's spec."""
1074 spec = _find_spec_legacy(finder, name, path)
1075 if spec is None:
1078 spec = find_spec(name, path, target)
1079 if spec is not None:
1086 # We use the found spec since that is the one that
1089 return spec
1092 return spec
1096 return spec
1138 spec = _find_spec(name, path)
1139 if spec is None:
1147 module = _load_unlocked(spec)
1252 spec = globals.get('__spec__')
1254 if spec is not None and package != spec.parent:
1256 f"({package!r} != {spec.parent!r})",
1259 elif spec is not None:
1260 return spec.parent
1309 spec = BuiltinImporter.find_spec(name)
1310 if spec is None:
1312 return _load_unlocked(spec)
1327 # Set up the spec for existing builtin/frozen modules.
1337 spec = _spec_from_module(module, loader)
1338 _init_module_attrs(spec, module)