internal IBuiltinsPythonModule CreateBuiltinsModule() { if (BuiltinsModule == null) { // Initialize built-in var moduleName = BuiltinTypeId.Unknown.GetModuleName(_interpreter.LanguageVersion); ModuleCache = new ModuleCache(_interpreter, _services); var modulePath = ModuleCache.GetCacheFilePath(_interpreter.Configuration.InterpreterPath); var b = new BuiltinsPythonModule(moduleName, modulePath, _services); BuiltinsModule = b; Modules[BuiltinModuleName] = new ModuleRef(b); } return(BuiltinsModule); }
public async Task ReloadAsync(CancellationToken cancellationToken = default) { foreach (var uri in Modules .Where(m => m.Value.Value?.Name != BuiltinModuleName) .Select(m => m.Value.Value?.Uri) .ExcludeDefault()) { GetRdt()?.UnlockDocument(uri); } // Preserve builtins, they don't need to be reloaded since interpreter does not change. var builtinsIsCreated = Modules.TryGetValue(BuiltinModuleName, out var builtinsRef); Modules.Clear(); await ReloadSearchPaths(cancellationToken); PathResolver = new PathResolver(Interpreter.LanguageVersion, Root, InterpreterPaths, UserPaths); var addedRoots = new HashSet <string> { Root }; addedRoots.UnionWith(InterpreterPaths); addedRoots.UnionWith(UserPaths); ReloadModulePaths(addedRoots, cancellationToken); if (!builtinsIsCreated) { _builtins = CreateBuiltinsModule(Services, Interpreter, StubCache); builtinsRef = new ModuleRef(_builtins); _builtins.Initialize(); } Modules[BuiltinModuleName] = builtinsRef; AddBuiltinTypesToPathResolver(); }