/// <summary> /// Returns a sequence of project entries that import the specified /// module. The sequence will be empty if the module is unknown. /// </summary> /// <param name="moduleName"> /// The absolute name of the module. This should never end with /// '__init__'. /// </param> public IEnumerable <IPythonProjectEntry> GetEntriesThatImportModule(string moduleName, bool includeUnresolved) { ModuleReference modRef; var entries = new List <IPythonProjectEntry>(); if (_modules.TryImport(moduleName, out modRef) && modRef.HasReferences) { entries.AddRange(modRef.References.Select(m => m.ProjectEntry).OfType <IPythonProjectEntry>()); } if (includeUnresolved) { // Have to iterate over modules with unresolved imports to find // ephemeral references. lock (_modulesWithUnresolvedImportsLock) { foreach (var module in _modulesWithUnresolvedImports) { if (module.GetAllUnresolvedModules().Contains(moduleName)) { entries.Add(module.ProjectEntry); } } } } return(entries); }
private void LoadKnownTypes() { _itemCache.Clear(); ModuleReference moduleRef; if (Modules.TryImport(_builtinName, out moduleRef)) { _builtinModule = (BuiltinModule)moduleRef.Module; } else { var fallbackDb = PythonTypeDatabase.CreateDefaultTypeDatabase(LanguageVersion.ToVersion()); _builtinModule = _modules.GetBuiltinModule(fallbackDb.GetModule(SharedDatabaseState.BuiltinName2x)); Modules[_builtinName] = new ModuleReference(_builtinModule); } Types = new KnownTypes(this); ClassInfos = (IKnownClasses)Types; _noneInst = (ConstantInfo)GetCached(_nullKey, () => new ConstantInfo(ClassInfos[BuiltinTypeId.NoneType], (object)null)); DoNotUnionInMro = AnalysisSet.Create(new AnalysisValue[] { ClassInfos[BuiltinTypeId.Object], ClassInfos[BuiltinTypeId.Type] }); AddBuiltInSpecializations(); ModuleReference sysModule; if (_modules.TryImport("sys", out sysModule)) { var bm = sysModule.AnalysisModule as BuiltinModule; if (bm != null) { sysModule.Module = new SysModuleInfo(bm); } } }