private IDictionary <string, IPythonInterpreterFactory> FindFactoriesFromDirectories(params string[] directories) { var factoryMap = new Dictionary <string, IPythonInterpreterFactory>(); try { if (directories != null) { for (int i = 0; i < directories.Length; i++) { var rootDirectoryInfo = new DirectoryInfo(directories[i]); if (rootDirectoryInfo.Exists) { foreach (var dirInfo in rootDirectoryInfo.EnumerateDirectories()) { Version pythonUwpVersion; if (Version.TryParse(dirInfo.Name, out pythonUwpVersion)) { var targetsFile = dirInfo.GetFiles(PythonUwpSdkTargetsFile).FirstOrDefault(); var factoryName = string.Join(" ", rootDirectoryInfo.Name, dirInfo.Name); if (targetsFile != null) { // This will add a new or overwrite factory with new factory found // Ordering of the directories means that the last directory specified will // win the battle of conflicting factory names factoryMap[factoryName] = new PythonUwpInterpreterFactory( new InterpreterConfiguration( pythonUwpVersion.ToString(), factoryName, dirInfo.FullName, targetsFile.FullName, null, null, null, ProcessorArchitecture.None, pythonUwpVersion, InterpreterUIMode.CannotBeDefault | InterpreterUIMode.SupportsDatabase ) ); } } } } } } } catch (IOException) { // IOException is not critical here, just means we cannot interrogate for factories at this point } return(factoryMap); }
private IDictionary<string, IPythonInterpreterFactory> FindFactoriesFromDirectories(params string[] directories) { var factoryMap = new Dictionary<string, IPythonInterpreterFactory>(); try { if (directories != null) { for (int i = 0; i < directories.Length; i++) { var rootDirectoryInfo = new DirectoryInfo(directories[i]); if (rootDirectoryInfo.Exists) { foreach (var dirInfo in rootDirectoryInfo.EnumerateDirectories()) { Version pythonUwpVersion; if (Version.TryParse(dirInfo.Name, out pythonUwpVersion)) { var targetsFile = dirInfo.GetFiles(PythonUwpSdkTargetsFile).FirstOrDefault(); var factoryName = string.Join(" ", rootDirectoryInfo.Name, dirInfo.Name); if (targetsFile != null) { // This will add a new or overwrite factory with new factory found // Ordering of the directories means that the last directory specified will // win the battle of conflicting factory names factoryMap[factoryName] = new PythonUwpInterpreterFactory( new InterpreterConfiguration( dirInfo.FullName, targetsFile.FullName, null, null, null, ProcessorArchitecture.None, pythonUwpVersion, InterpreterUIMode.CannotBeDefault ), factoryName); } } } } } } } catch (IOException) { // IOException is not critical here, just means we cannot interrogate for factories at this point } return factoryMap; }
private bool SetPythonUwpInterpreterFactory(InterpreterConfiguration config) { var factory = Factory as PythonUwpInterpreterFactory; if (factory != null && factory.Configuration.Equals(config)) { // No updates. return false; } else { Factory = new PythonUwpInterpreterFactory(config); return true; } }