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;
        }
Exemplo n.º 3
0
 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;
     }
 }