public static KnownTypes Create(PythonAnalyzer state, IBuiltinPythonModule fallback) { var res = new KnownTypes(); var interpreter = state.Interpreter; for (int value = 0; value < res._types.Length; ++value) { IPythonType type; try { type = interpreter.GetBuiltinType((BuiltinTypeId)value); } catch (KeyNotFoundException) { type = null; } if (type == null) { type = (IPythonType)fallback.GetAnyMember(((BuiltinTypeId)value).GetTypeName(state.LanguageVersion)); Debug.Assert(type != null); } res._types[value] = type; } res.SetClassInfo(state); return(res); }
public KnownTypes(PythonAnalyzer state) { ITypeDatabaseReader fallbackDb = null; IBuiltinPythonModule fallback = null; int count = (int)BuiltinTypeIdExtensions.LastTypeId + 1; _types = new IPythonType[count]; _classInfos = new BuiltinClassInfo[count]; var interpreter = state.Interpreter; for (int value = 0; value < count; ++value) { try { _types[value] = interpreter.GetBuiltinType((BuiltinTypeId)value); } catch (KeyNotFoundException) { if (fallback == null) { var tempDb = PythonTypeDatabase.CreateDefaultTypeDatabase(state.LanguageVersion.ToVersion()); fallbackDb = (ITypeDatabaseReader)tempDb; fallback = tempDb.BuiltinModule; } _types[value] = fallback.GetAnyMember(fallbackDb.GetBuiltinTypeName((BuiltinTypeId)value)) as IPythonType; } if (_types[value] != null) { _classInfos[value] = state.GetBuiltinType(_types[value]); } } }
public PythonTypeDatabase CloneWithNewBuiltins(IBuiltinPythonModule newBuiltins) { var newDb = new PythonTypeDatabase(_factory, null, this); newDb._sharedState.BuiltinModule = newBuiltins; return(newDb); }
public static KnownTypes CreateDefault(PythonAnalyzer state, IBuiltinPythonModule fallback) { var res = new KnownTypes(); for (int value = 0; value < res._types.Length; ++value) { res._types[value] = (IPythonType)fallback.GetAnyMember( ((BuiltinTypeId)value).GetTypeName(state.LanguageVersion) ); Debug.Assert(res._types[value] != null); } res.SetClassInfo(state); return(res); }
public void Initialize(PythonAnalyzer state) { if (_analyzer != null) { _analyzer.SearchPathsChanged -= Analyzer_SearchPathsChanged; } _analyzer = state; if (state != null) { lock (_userSearchPathsLock) { _userSearchPaths = state.GetSearchPaths(); } state.SearchPathsChanged += Analyzer_SearchPathsChanged; var bm = state.BuiltinModule; if (!string.IsNullOrEmpty(bm?.Name)) { _builtinModule = state.BuiltinModule.InterpreterModule as IBuiltinPythonModule; _modules[state.BuiltinModule.Name] = state.BuiltinModule.InterpreterModule; } } }
public FallbackBuiltinPythonType(IBuiltinPythonModule module, BuiltinTypeId typeId, string name = null) { DeclaringModule = module; Name = name ?? typeId.GetModuleName((DeclaringModule as FallbackBuiltinModule)?.LanguageVersion ?? PythonLanguageVersion.None); TypeId = typeId; }
public PythonTypeDatabase CloneWithNewBuiltins(IBuiltinPythonModule newBuiltins) { var newDb = new PythonTypeDatabase(_factory, null, this); newDb._sharedState.BuiltinModule = newBuiltins; return newDb; }
internal void LoadDatabase(string databaseDirectory) { var addedModules = new Dictionary <string, IMember>(); if (_dbDir == null) { _dbDir = databaseDirectory; } if (_builtinModule == null) { _builtinModule = MakeBuiltinModule(databaseDirectory); } _modules[_builtinName] = _builtinModule; if (_isDefaultDb && _langVersion.Major == 3) { _modules[BuiltinName2x] = _builtinModule; } foreach (var file in Directory.GetFiles(databaseDirectory)) { if (!file.EndsWith(".idb", StringComparison.OrdinalIgnoreCase) || file.IndexOf('$') != -1) { continue; } else if (String.Equals(Path.GetFileNameWithoutExtension(file), _builtinName, StringComparison.OrdinalIgnoreCase)) { continue; } else if (_isDefaultDb && String.Equals(Path.GetFileNameWithoutExtension(file), BuiltinName2x, StringComparison.OrdinalIgnoreCase)) { continue; } string modName = Path.GetFileNameWithoutExtension(file); if (_isDefaultDb && _langVersion.Major == 3) { // aliases for 3.x when using the default completion DB switch (modName) { case "cPickle": modName = "_pickle"; break; case "thread": modName = "_thread"; break; } } addedModules[modName] = _modules[modName] = new CPythonModule(this, modName, file, false); } foreach (var keyValue in addedModules) { List <Action <IMember> > fixups; if (_moduleFixups.TryGetValue(keyValue.Key, out fixups)) { _moduleFixups.Remove(keyValue.Key); foreach (var fixup in fixups) { fixup(keyValue.Value); } } } }
internal void LoadDatabase(string databaseDirectory) { var addedModules = new Dictionary<string, IMember>(); if (_dbDir == null) { _dbDir = databaseDirectory; } if (_builtinModule == null) { _builtinModule = MakeBuiltinModule(databaseDirectory); } _modules[_builtinName] = _builtinModule; if (_isDefaultDb && _langVersion.Major == 3) { _modules[BuiltinName2x] = _builtinModule; } foreach (var file in Directory.GetFiles(databaseDirectory)) { if (!file.EndsWith(".idb", StringComparison.OrdinalIgnoreCase) || file.IndexOf('$') != -1) { continue; } else if (String.Equals(Path.GetFileNameWithoutExtension(file), _builtinName, StringComparison.OrdinalIgnoreCase)) { continue; } else if (_isDefaultDb && String.Equals(Path.GetFileNameWithoutExtension(file), BuiltinName2x, StringComparison.OrdinalIgnoreCase)) { continue; } string modName = Path.GetFileNameWithoutExtension(file); if (_isDefaultDb && _langVersion.Major == 3) { // aliases for 3.x when using the default completion DB switch (modName) { case "cPickle": modName = "_pickle"; break; case "thread": modName = "_thread"; break; } } addedModules[modName] = _modules[modName] = new CPythonModule(this, modName, file, false); } foreach (var keyValue in addedModules) { List<Action<IMember>> fixups; if (_moduleFixups.TryGetValue(keyValue.Key, out fixups)) { _moduleFixups.Remove(keyValue.Key); foreach (var fixup in fixups) { fixup(keyValue.Value); } } } }
public void Initialize(PythonAnalyzer state) { _builtins = state.BuiltinModule.InterpreterModule as IBuiltinPythonModule; }